<?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>232424</bug_id>
          
          <creation_ts>2021-10-27 23:39:56 -0700</creation_ts>
          <short_desc>Have CachedRawResourceClient and related networking actors use SharedBuffer.</short_desc>
          <delta_ts>2022-01-25 17:08:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=232422</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=230121</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=235615</see_also>
          <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>
          <dependson>233030</dependson>
    
    <dependson>233441</dependson>
    
    <dependson>234724</dependson>
    
    <dependson>234916</dependson>
          <blocked>234713</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>menard</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>toyoshim</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1809583</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-27 23:39:56 -0700</bug_when>
    <thetext>As seen in bug 232422.

By using SharedBuffer with CachedRawResourceClient we could eliminate some unnecessary memory allocation and copies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809584</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-27 23:40:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/84744687&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826264</commentid>
    <comment_count>2</comment_count>
      <attachid>447793</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-22 04:45:59 -0800</bug_when>
    <thetext>Created attachment 447793
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826269</commentid>
    <comment_count>3</comment_count>
      <attachid>447795</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-22 05:06:40 -0800</bug_when>
    <thetext>Created attachment 447795
WIP

fix gtk build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826438</commentid>
    <comment_count>4</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-22 16:24:25 -0800</bug_when>
    <thetext>I think the crash seeing here are similar to those seen in bug 230121.

The underlying vector gets modified. I suspect a call to SharedBuffer::take() in the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826524</commentid>
    <comment_count>5</comment_count>
      <attachid>447868</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-23 03:46:26 -0800</bug_when>
    <thetext>Created attachment 447868
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826539</commentid>
    <comment_count>6</comment_count>
      <attachid>447875</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-23 05:52:22 -0800</bug_when>
    <thetext>Created attachment 447875
WIP

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826540</commentid>
    <comment_count>7</comment_count>
      <attachid>447876</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-23 06:09:22 -0800</bug_when>
    <thetext>Created attachment 447876
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826951</commentid>
    <comment_count>8</comment_count>
      <attachid>447999</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-27 06:12:31 -0800</bug_when>
    <thetext>Created attachment 447999
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826999</commentid>
    <comment_count>9</comment_count>
      <attachid>448015</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-27 17:39:11 -0800</bug_when>
    <thetext>Created attachment 448015
Patch for EWS test (combined)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827009</commentid>
    <comment_count>10</comment_count>
      <attachid>448018</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-27 18:37:36 -0800</bug_when>
    <thetext>Created attachment 448018
Patch For Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827015</commentid>
    <comment_count>11</comment_count>
      <attachid>448022</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-27 19:17:05 -0800</bug_when>
    <thetext>Created attachment 448022
Patch For Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827016</commentid>
    <comment_count>12</comment_count>
      <attachid>448023</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-27 19:18:07 -0800</bug_when>
    <thetext>Created attachment 448023
Patch For EWS (combined patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827146</commentid>
    <comment_count>13</comment_count>
      <attachid>448060</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-28 19:02:09 -0800</bug_when>
    <thetext>Created attachment 448060
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827147</commentid>
    <comment_count>14</comment_count>
      <attachid>448061</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-28 19:03:27 -0800</bug_when>
    <thetext>Created attachment 448061
Patch for EWS testing (combined patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828499</commentid>
    <comment_count>15</comment_count>
      <attachid>448464</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-05 20:04:09 -0800</bug_when>
    <thetext>Created attachment 448464
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828527</commentid>
    <comment_count>16</comment_count>
      <attachid>448464</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-06 01:59:38 -0800</bug_when>
    <thetext>Comment on attachment 448464
Patch

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

&gt; Source/WebCore/Modules/fetch/FetchLoader.cpp:151
&gt; +void FetchLoader::didReceiveData(const SharedBuffer&amp; buffer, bool)

This bool is mysterious.
Ideally, we would remove it, or use a bool enum.

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:454
&gt; +    m_client-&gt;didReceiveData(buffer, false);

It does not seem that we have a case where we call didReceiveData(buffer, true).
Maybe we can just not pass this bool, especially since we probably no longer have -1 as the length in buffer.

&gt; Source/WebCore/workers/WorkerScriptLoader.cpp:218
&gt; +    size_t len = useStrLen ? strlen(reinterpret_cast&lt;const char*&gt;(buffer.data())) : buffer.size();

Can we try removing this -1 code path?

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:1058
&gt; +    size_t len = useStrLen ? strlen(reinterpret_cast&lt;const char*&gt;(buffer.data())) : buffer.size();

Can we try removing this -1 code path?

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp:189
&gt; +    if (!buffer.isEmpty()) {

Should we move that check in forEachSegment?
Or are we expecting that other forEachSegment call sites will not benefit of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828572</commentid>
    <comment_count>17</comment_count>
      <attachid>448488</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-06 05:25:12 -0800</bug_when>
    <thetext>Created attachment 448488
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828608</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-06 07:32:55 -0800</bug_when>
    <thetext>Committed r287684 (245780@main): &lt;https://commits.webkit.org/245780@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448488.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833863</commentid>
    <comment_count>19</comment_count>
      <attachid>448488</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-25 14:19:00 -0800</bug_when>
    <thetext>Comment on attachment 448488
rebase

Aren&apos;t we creating an extra copy of the data whenever we construct the SharedBuffer now? note that the long term place for these didReceiveData() functions was to pass a Span&lt;const uint8_t&gt; (which is nicer to deal with and yet doesn&apos;t create a copy).

Note that this regressed memory (rdar://87830583). It is unclear to me if the issue is due to this extra copying or if there is some other bug. Either way, I do think it is a bad idea to create a copy of the data unconditionally and unnecessarily in many cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833943</commentid>
    <comment_count>20</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-25 17:08:42 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #19)
&gt; Comment on attachment 448488 [details]
&gt; rebase
&gt; 
&gt; Aren&apos;t we creating an extra copy of the data whenever we construct the
&gt; SharedBuffer now? note that the long term place for these didReceiveData()
&gt; functions was to pass a Span&lt;const uint8_t&gt; (which is nicer to deal with and
&gt; yet doesn&apos;t create a copy).

No, the SharedBuffer is wrapping the SharedMemory as it comes from the network process.

There&apos;s no new memory allocation compare to what was there before, only less.

The data is never copied once in the content process, it&apos;s refcounted instead.

&gt; 
&gt; Note that this regressed memory (rdar://87830583). It is unclear to me if
&gt; the issue is due to this extra copying or if there is some other bug. Either
&gt; way, I do think it is a bad idea to create a copy of the data
&gt; unconditionally and unnecessarily in many cases.

we do not create a copy.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447793</attachid>
            <date>2021-12-22 04:45:59 -0800</date>
            <delta_ts>2021-12-22 05:12:12 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-232424-20211222234557.patch</filename>
            <type>text/plain</type>
            <size>235054</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGYzN2E3ZjU5YzQ4OWRj
NTQ0Y2IyZGM2MTIwOTM2YmE1ZWNkZmUyMy4uYTg2ZTU5OWRkODEzZTg4MWE1ZjliMmY1MmUxOTFh
NzcyODE0MzM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NiBAQAorMjAyMS0xMi0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1
ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBtb2RpZnkgYWxsIGRpZFJlY2VpdmVEYXRhIG1ldGhv
ZCBzbyB0aGF0IHRoZXkgbm8gbG9uZ2VyIHVzZSB1aW50OF90L2ludAorICAgICAgICBhbmQgaW5z
dGVhZCB1c2UgU2hhcmVkQnVmZmVyLiBXZSBhbHNvIGRvIHRoZSBzYW1lIGZvciBhbnkgaW50ZXJt
ZWRpYXJpZXMKKyAgICAgICAgdXNlZCBieSB0aGUgdmFyaW91cyBkaWRSZWNlaXZlRGF0YSBpbXBs
ZW1lbnRhdGlvbnMuCisgICAgICAgIFRoaXMgd2lsbCBmYWNpbGl0YXRlIG1vdmluZyBuZXR3b3Jr
aW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLgorICAg
ICAgICBUaGlzIGFsc28gYWxsb3dzIHRvIHJlbW92ZSBzZXZlcmFsIG1lbW9yeSBhbGxvY2F0aW9u
cyBhbmQgY29waWVzLgorICAgICAgICBXZSBjYW4gbm93IGFsc28gY29uc2lkZXIgbW92aW5nIHRo
ZSB1bmRlcmx5aW5nIFNoYXJlZE1lbW9yeSBjcmVhdGVkIGluCisgICAgICAgIHRoZSBjb250ZW50
IHByb2Nlc3MgYWxsIHRoZSB3YXkgdG8gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4gQ292ZXJlZCBieSBhbGwgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpi
bG9iQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxl
bWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVNpbmsuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpt
YXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjphZGREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1p
dHRlZExvYWQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKToKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRh
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGRCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1
dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5SZXNv
dXJjZURhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZl
ckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50
OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJl
dmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lm
Qnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKC1bV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YTpsZW5ndGhS
ZWNlaXZlZDpdKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9h
ZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTIt
MTkgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBw
YWNrIGF1ZGlvIHNhbXBsZXMgd2l0aCBkaXNjb250aW51aXR5IHRvZ2V0aGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGMzYTQ5OTRiOWNjMDg5NmU2MWYwZWE5NjFjYWJlZmM2NThlN2Y4YjcuLjQ2N2MwMDNmODMyOTdm
Y2EwZTg4ZGZiYWEwMmY1ODQwMDYwNzBlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBACisy
MDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
SGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBuZXR3b3JraW5nIGFjdG9y
cyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNv
dXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGlu
Z0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNlbmRCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6bG9hZEJvZHlGcm9tUHJlbG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMu
aW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAg
ICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyk6Cisg
ICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRl
ckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnN0
cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjptYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2
ZUJsb2JDaHVuayk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KToKKwogMjAyMS0xMi0xOSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgY2xpZW50IGxh
eWVyIHBsdW1iaW5nIGZvciBjbGFzc2lmeWluZyBtb2RhbCBjb250YWluZXIgY29udHJvbHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggNTc2ODFiMjFhNzM0MzllOTBiZjIxYmEyNDQ5NTgyNTk3ZTAx
OTk4Mi4uYmIxYzViNTM2YzRmOTkxNWZiYWJkOWFjMzAzN2JjNDQ4Yzc3NDZjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQyNAorICAgICAg
ICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMi0xNCAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTaGFy
ZWRCdWZmZXIgY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5YmRhMjc3
YWEzYmQxY2Q4ODcyMzZlMzU0ZTc0ODZkYjk0ODQyNGY4Li43NmE0OWU4NmM3YzI4NWM4MjYxZmI1
MzA5NGI2NjAxZTNmMjAzYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdv
cmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBy
ZXZpZXdMb2FkZXJDbGllbnQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAg
ICAgICgtW1dlYkZyYW1lIF9jb21taXREYXRhOl0pOgorCiAyMDIxLTEyLTE5ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjbGllbnQgbGF5ZXIg
cGx1bWJpbmcgZm9yIGNsYXNzaWZ5aW5nIG1vZGFsIGNvbnRhaW5lciBjb250cm9scwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRl
eCBjMjMxZjIwN2RhMjVjZDJhMTU4NjBkMjhkYjNjZTE3ZTg1NzU3N2Q1Li5lNjEzYWE1MDlmNzRj
MGRlMGU2ZDM4MzUxOGU1MjZmNzNhYTU4ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMzIwLDEzICszMjAsMTMgQEAg
dm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICB9CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQordm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGlmIChtX3NvdXJjZSkgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoYnVmZmVy
LnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1f
YnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyKTsK
IH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oCmluZGV4IDg3MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAz
Nzc3MmIuLmQ0NjUxYjIzZGE3MWNmOGY0YzhjOTk2NzFkMjI3ZWI1YWM4ZDJhN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQgRmV0Y2hCb2R5Q29uc3VtZXIoVHlw
ZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXIm
KTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KICAg
ICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZ2V0KCkuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5jcHAKaW5kZXggYTYzMzEwOGI1NDc3ODM5M2ZjNTQ3NTAwMzJhOWEyZTg2
YWRlN2ZjYy4uNTM2NjgxNTViZGViYzFhZWYzOWY0ZDk5ZmI5ZGFkYzFlYmVmN2EwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTI5
OCwxMSArMjk4LDEwIEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkK
ICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpibG9i
Q2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEZldGNoQm9keU93
bmVyOjpibG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgQVNTRVJU
KGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKLSAgICBpZiAoIW1f
cmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRh
LCBzaXplKSkpCisgICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5lbnF1ZXVlKGJ1ZmZl
ci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSkKICAgICAgICAgc3RvcCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKaW5kZXggNWNhN2UzOTZj
NDIyNzAxOTM1NmIwODA2ZTRlZWRiZTk1ZTkyOGY0Yi4uODFmZDA2ZWNkZDZmYzM4YzllODU5ODdj
ZWJkZmMxNmRkODZmM2M5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5T3duZXIuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZldGNoTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9y
LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTAwLDcgKzEwMSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICAvLyBCbG9iIGxv
YWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90
KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGJs
b2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0ZhaWxlZCgpOwogICAg
IHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMyw3ICsxMTQsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsg
b3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGJ1
ZmZlcik7IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5h
bDsKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWwgeyBvd25lci5ibG9iTG9hZGluZ1N1
Y2NlZWRlZCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHAKaW5kZXggMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OC4uNGI0
NWJmZDg3NTA0MDZmNmU3ZGE3MThmOTk4MTY5NDcxYTVlODQ1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTE0OCwxMyArMTQ4LDEzIEBAIHZv
aWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKHJl
c3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogdmFsdWUsIGludCBzaXplKQordm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAgICAgaWYgKCFtX2NvbnN1bWVy
KSB7Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBzaXplKTsKKyAgICAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBtX2NvbnN1bWVyLT5hcHBlbmQodmFsdWUsIHNpemUpOworICAgIG1fY29uc3VtZXIt
PmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuaAppbmRleCA0NjEyZDBlMGUzYTdlZmUzMDYwMzk2YjBkNzVhMmZhM2JjNGVk
ZGFkLi41ZWVhZWY4MmQxZGYzZWZjZWQyMTQwMDNkZjUxODg4NzAzNmY5NzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBBUEkuCiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgdXNlU3RyTGVuKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKaW5kZXggZmVkM2U1ZWFlNzFhNTdjOTUyYWExNzFh
ZGNjYmRkOWJkMDQ1ZTc4OS4uMTA5ZTA4ZWNmN2E0N2U3YzAzN2UzMmRjYWFjYWI4NmM4MWMxOGQz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGll
bnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMGU3YjAwNWU4OWEzZDE3NDBiMWNmOWFkZmY4YjRm
MmYyZmM0M2M5OS4uZGNhMGUyMzgyZTMyZmMwMzcyODg3ZmQ0ODUyMTRhMTczMDFiMWJlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0z
NjIsMTIgKzM2MiwxMiBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdQogICAgICAgICByZXNwb25z
ZUNhbGxiYWNrKG1fcmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9p
ZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFt
U291cmNlIHx8IG1fY29uc3VtZURhdGFDYWxsYmFjayk7CiAKICAgICBpZiAobV9jb25zdW1lRGF0
YUNhbGxiYWNrKSB7Ci0gICAgICAgIFNwYW4gY2h1bmsgeyBkYXRhLCBzaXplIH07CisgICAgICAg
IFNwYW4gY2h1bmsgeyBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpIH07CiAgICAgICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
Mzc1LDcgKzM3NSw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgYXV0byYgc291cmNl
ID0gKm1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZTsKIAogICAgIGlmICghc291cmNl
LmlzUHVsbGluZygpKSB7Ci0gICAgICAgIG1fcmVzcG9uc2UuYm9keSgpLmNvbnN1bWVyKCkuYXBw
ZW5kKGRhdGEsIHNpemUpOworICAgICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFw
cGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zODMsNyArMzgzLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGlmICghc291cmNlLmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShkYXRhLCBzaXplKSkpIHsKKyAgICBpZiAoIXNvdXJjZS5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpKSkgewogICAgICAgICBzdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShS
ZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4KIAogdm9pZCBG
ZXRjaFJlc3BvbnNlOjpjb25zdW1lQ2h1bmsoUmVmPEpTQzo6VWludDhBcnJheT4mJiBjaHVuaykK
IHsKLSAgICBib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPmJ5
dGVMZW5ndGgoKSk7CisgICAgYm9keSgpLmNvbnN1bWVyKCkuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBG
ZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFzU3RyZWFtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggNmIwNTA1ZDg4YjEzMmUyOGNiOTU0YWI5
YTBlN2VmZTgxM2Y3MDJhZi4uZjk5MjQ5YzM5ZjlkMGIyZmM4N2EyZjljNDZkNzkzOTI4ODgxNGJm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAg
LTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5h
bDsKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZp
bmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
IGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogCiAgICAgICAgIEZldGNoUmVzcG9uc2UmIG1fcmVzcG9uc2U7CiAgICAgICAgIE5v
dGlmaWNhdGlvbkNhbGxiYWNrIG1fcmVzcG9uc2VDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApp
bmRleCAyN2E2ZDcwMzM0Y2EzMjA2YTk0ZTkxOTk0MzM2MzdjNGEzMDUyZTdkLi5hNjQxZjgxMDdi
NGZkMTc5MTFmZGI5MmJiMzBmNDVlMmU4MmI1MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0x
NzcsMTAgKzE3NywxMCBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogCiAvLyBNQVJLOiAtIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBtX2RhdGEu
YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoYnVmZmVyKTsKIH0K
IAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCBj
ZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlLi4wZDNiZGI3NDlkN2EzMzY4
YjNjYTY4YzIxNzMxNjA1OTE1NDlkMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTExNiw3ICsxMTYs
NyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7
CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVycmlkZXMuCi0gICAgdm9pZCBk
YXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICAvLyBN
b2RlbFBsYXllckNsaWVudCBvdmVycmlkZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggZDUxNzNmYmY4YjQwMzQxYzVj
ZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOS4uZmVlOTg4NDIyMWJiNDNlOGNjMDYyZWFiY2QwYTk5ZWM1
NGMwMzQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJl
ZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCBiN2Y3NWVkYTNiMjMzYjE5YjIwZWQ3
MDQyODk0OWJiMzM1ODk4ZTgxLi43Mzg1MmQ0YzBhZjAzODQ3NWYxNWI2NTQ5ZGM2ODliZjg1NTFi
MjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAg
LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiVGhyZWFk
YWJsZUxvYWRlci5oIgpAQCAtMTYzLDE2ICsxNjQsMTUgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXIKICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIEZpbGVS
ZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKQordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCkKIHsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgQVNTRVJU
KGRhdGFMZW5ndGggPiAwKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSk7CiAKICAgICAvLyBC
YWlsIG91dCBpZiB3ZSBhbHJlYWR5IGVuY291bnRlcmVkIGFuIGVycm9yLgogICAgIGlmIChtX2Vy
cm9yQ29kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGxlbmd0aCA9IGRhdGFMZW5ndGg7
CisgICAgaW50IGxlbmd0aCA9IGJ1ZmZlci5zaXplKCk7CiAgICAgdW5zaWduZWQgcmVtYWluaW5n
QnVmZmVyU3BhY2UgPSBtX3RvdGFsQnl0ZXMgLSBtX2J5dGVzTG9hZGVkOwogICAgIGlmIChsZW5n
dGggPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlbWFpbmluZ0J1ZmZlclNwYWNlKSkgewogICAg
ICAgICAvLyBJZiB0aGUgYnVmZmVyIGhhcyBoaXQgbWF4aW11bSBzaXplLCBpdCBjYW4ndCBiZSBn
cm93biBhbnkgbW9yZS4KQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3Ro
KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZGF0YUxlbmd0aCk7CisgICAgICAgICAgICB1bnNpZ25lZCBuZXdM
ZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBidWZmZXIuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKG5l
d0xlbmd0aCA8IG1fdG90YWxCeXRlcykgewogICAgICAgICAgICAgICAgIGZhaWxlZChOb3RSZWFk
YWJsZUVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDYsNyArMjA2LDcgQEAg
dm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobGVuZ3RoIDw9IDApCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpICsgbV9i
eXRlc0xvYWRlZCwgZGF0YSwgbGVuZ3RoKTsKKyAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+
KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQsIGJ1ZmZlci5kYXRhKCksIGxlbmd0
aCk7CiAgICAgbV9ieXRlc0xvYWRlZCArPSBsZW5ndGg7CiAKICAgICBtX2lzUmF3RGF0YUNvbnZl
cnRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApp
bmRleCA1MzljMjMwNGE4MmU2M2FhZGZlMmM1NjdjOThkMGI4YzY4N2E4ZTlmLi5iN2U1YjQwNTdm
YjIwNmZmMzIzMTU1Y2MwZjE1MDJmY2EyMGQyNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKaW5kZXggMTg3OTNmZjA2NjMzOGZiNjBhMzRkZWM5MDliYzJkZGQyOGJlYWZi
NC4uNTBiYjEzNGZhYzJmM2EzNThjMDJiOGU2OTk0N2Y3ZWE4YTg3OGZlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
QEAgLTYxMywxMCArNjEzLDEwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50CiAgICAgICAgIG5l
dHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShpZGVudGlmaWVy
LCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCi0gICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2
ZURhdGEoaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIGJ1ZmZlciwg
ZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBS
ZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZDI5NTc4MTBkODM4MmM5
MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MS4uODJhY2NlZDIwY2ZkNTEzMWIyNTAyZjA5OWE5YzRm
YTJmZGQ2MTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTkzLDEzICsxOTMsMTMgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShQYWdlJiwgRG9jdW1lbnRM
b2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlKEZyYW1lJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExv
YWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
c3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJj
ZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwgRG9jdW1l
bnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdChXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBT
aGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogCkBAIC00MTQsNyArNDE0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNlKik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlciYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRC
dWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VM
b2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJvbm91
c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC0xMDgyLDE3ICsxMDgyLDE3IEBAIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVhZGFibGVM
b2FkZXJSZXNwb25zZShEb2N1bWVuCiAgICAgICAgIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVy
UmVzcG9uc2VJbXBsKCphZ2VudHMsIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwgaWRlbnRpZmll
cik7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVE
YXRhKEZyYW1lKiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQotICAgICAgICBkaWRSZWNlaXZlRGF0YUlt
cGwoKmFnZW50cywgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwoKmFnZW50cywgaWRlbnRpZmllciwgYnVm
ZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGds
b2JhbFNjb3BlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBnbG9i
YWxTY29wZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lk
KCkpOwotICAgIGRpZFJlY2VpdmVEYXRhSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNj
b3BlKSwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZGF0YUxlbmd0aCk7CisgICAgZGlk
UmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMoZ2xvYmFsU2NvcGUpLCBpZGVudGlm
aWVyLCBidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExv
YWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJlc291cmNlTG9hZGVyKiBy
ZXNvdXJjZUxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCmluZGV4IDM5YjAxMWNmMDZmN2YzODUzMjQzZTBhNzYzYTNiMWQ0NTQ5
MDQxNDkuLjMyOGViZTdlNjQxMTk1ZTVhNDY4NTAyNzU1OTEwZjc4YzQ4YjU4ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAt
OTAsMTAgKzkwLDEwIEBAIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpkYXRhTGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhQnVmZmVyLnNpemUoKTsKIH0K
IAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgbV9kYXRhQnVmZmVyLmFwcGVu
ZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXIuYXBwZW5kKGRhdGEpOwogfQog
CiB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRh
VG9Db250ZW50KCkKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRCdWZmZXJS
ZXNvdXJjZURhdGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSYgcgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VE
YXRhID0gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAgICAgaWYgKCFyZXNv
dXJjZURhdGEpCkBAIC0yMzAsMTUgKzIzMCwxNSBAQCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZQog
ICAgIGlmICghc2hvdWxkQnVmZmVyUmVzb3VyY2VEYXRhKCpyZXNvdXJjZURhdGEpKQogICAgICAg
ICByZXR1cm4gcmVzb3VyY2VEYXRhOwogCi0gICAgaWYgKHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0
aCgpICsgZGF0YUxlbmd0aCA+IG1fbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpCisg
ICAgaWYgKHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0aCgpICsgZGF0YS5zaXplKCkgPiBtX21heGlt
dW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQogICAgICAgICBtX2NvbnRlbnRTaXplIC09IHJl
c291cmNlRGF0YS0+ZXZpY3RDb250ZW50KCk7CiAgICAgaWYgKHJlc291cmNlRGF0YS0+aXNDb250
ZW50RXZpY3RlZCgpKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VEYXRhOwogCi0gICAgaWYgKGVu
c3VyZUZyZWVTcGFjZShkYXRhTGVuZ3RoKSAmJiAhcmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRFdmlj
dGVkKCkpIHsKKyAgICBpZiAoZW5zdXJlRnJlZVNwYWNlKGRhdGEuc2l6ZSgpKSAmJiAhcmVzb3Vy
Y2VEYXRhLT5pc0NvbnRlbnRFdmljdGVkKCkpIHsKICAgICAgICAgbV9yZXF1ZXN0SWRzRGVxdWUu
YXBwZW5kKHJlcXVlc3RJZCk7Ci0gICAgICAgIHJlc291cmNlRGF0YS0+YXBwZW5kRGF0YShkYXRh
LCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgbV9jb250ZW50U2l6ZSArPSBkYXRhTGVuZ3RoOworICAg
ICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSk7CisgICAgICAgIG1fY29udGVudFNp
emUgKz0gZGF0YS5zaXplKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXgg
ZGFhZTVmZTRhMzFlMzE1OTM2Mzc5MDQyM2Y1ZmJkMzM3MGM1Y2QzOS4uYzhjZWQxMmE2NDA3ZmRj
ZDU3NGVjYzJhNzgxOWVkZTY2MzgwM2RhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAgIHNpemVf
dCBkYXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgICAgIHZvaWQgYXBwZW5kRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVu
dCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKQEAgLTE0MSw3ICsxNDEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAgICBJbnNwZWN0b3JQYWdlQWdl
bnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwog
ICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9IGZhbHNlKTsKLSAgICBSZXNv
dXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgUmVzb3Vy
Y2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBtYXliZURlY29kZURhdGFUb0NvbnRl
bnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2Uo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBhZGRS
ZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKaW5kZXggMjIzYTY3NjdiZTI3MWVlNGQyMmRlZDFkNmJlNjBjYTcwNzgx
N2M4MS4uYWYyMzdmNjU0MTU3NjJiOWE2MGRhMGU5Y2NkYjA3NTMwYTU1YmRkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcApAQCAtMTI0LDE1ICsxMjQsMTMgQEAgcHVibGljOgogICAgICAgICBtX2RlY29k
ZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsIHRleHRFbmNv
ZGluZywgdXNlRGV0ZWN0b3IpOwogICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pIG92
ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIWRhdGFMZW5ndGgpCisgICAgICAgIGlmIChidWZm
ZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhTGVu
Z3RoID09IC0xKQotICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0cmxlbihyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7Ci0KLSAgICAgICAgbV9yZXNwb25zZVRleHQuYXBwZW5k
KG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsKKyAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGggPSB1c2VTdHJMZW4gPyBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oYnVmZmVyLmRhdGEoKSkpIDogYnVmZmVyLnNpemUoKTsKKyAgICAgICAgbV9yZXNwb25zZVRl
eHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGRhdGFMZW5ndGgpKTsK
ICAgICB9CiAKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyKSBvdmVycmlkZQpAQCAtNTUwLDkgKzU0OCw4IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
CiAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVx
dWVzdElkLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNl
RGF0YS0+YmFzZTY0RW5jb2RlZCgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVz
b3VyY2VEYXRhLT5oYXNCdWZmZXJlZERhdGEoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gcHJl
dmlvdXNCdWZmZXIgPSBwcmV2aW91c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7Ci0gICAgICAgICAg
ICAgICAgcHJldmlvdXNCdWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7
Ci0gICAgICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURh
dGEocmVxdWVzdElkLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6ICpwcmV2aW91
c0J1ZmZlcikKKyAgICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJl
c291cmNlRGF0YShyZXF1ZXN0SWQsIGVsZW1lbnQuc2VnbWVudC5nZXQoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmlu
ZyhQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6Om1pbWVUeXBlS2V5LCBwcmV2aW91c1Jlc291
cmNlRGF0YS0+bWltZVR5cGUoKSk7CkBAIC01NzQsMjcgKzU3MSwyNyBAQCB2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaQogICAgIC8vIElmIHdlIHJldmFsaWRhdGVkIHRoZSByZXNvdXJjZSBhbmQgZ290
IE5vdCBtb2RpZmllZCwgc2VuZCBjb250ZW50IGxlbmd0aCBmb2xsb3dpbmcgZGlkUmVjZWl2ZVJl
c3BvbnNlCiAgICAgLy8gYXMgdGhlcmUgd2lsbCBiZSBubyBjYWxscyB0byBkaWRSZWNlaXZlRGF0
YSBmcm9tIHRoZSBuZXR3b3JrIHN0YWNrLgogICAgIGlmIChpc05vdE1vZGlmaWVkICYmIGNhY2hl
ZFJlc291cmNlICYmIGNhY2hlZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKQotICAgICAgICBkaWRS
ZWNlaXZlRGF0YShpZGVudGlmaWVyLCBudWxscHRyLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNp
emUoKSwgMCk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCksIGNhY2hlZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9oaWRkZW5S
ZXF1ZXN0SWRlbnRpZmllcnMuY29udGFpbnMoaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChp
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogCi0gICAgaWYgKGRhdGEpIHsKLSAgICAgICAgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNv
dXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIGRhdGFMZW5n
dGgpOworICAgIGlmIChkYXRhLmRhdGEoKSkgeworICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1h
eWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgZGF0YSk7CiAKICAgICAgICAgLy8gRm9yIGEg
c3luY2hyb25vdXMgWEhSLCBpZiB3ZSBkaWRuJ3QgYWRkIGRhdGEgdGhlbiB3ZSBjYW4gYXBwbHkg
aXQgaGVyZSBhcyBiYXNlNjQgZW5jb2RlZCBjb250ZW50LgogICAgICAgICAvLyBPZnRlbiB0aGUg
ZGF0YSBpcyB0ZXh0IGFuZCB3ZSB3b3VsZCBoYXZlIGEgZGVjb2RlciwgYnV0IGZvciBub24tdGV4
dCB3ZSB3b24ndCBoYXZlIGEgZGVjb2Rlci4KICAgICAgICAgLy8gU3luYyBYSFJzIG1heSBub3Qg
aGF2ZSBhIGNhY2hlZCByZXNvdXJjZSwgd2hpbGUgbm9uLXN5bmMgWEhScyB1c3VhbGx5IHRyYW5z
ZmVyIGRhdGEgb3ZlciBvbiBjb21wbGV0aW9uLgogICAgICAgICBpZiAobV9sb2FkaW5nWEhSU3lu
Y2hyb25vdXNseSAmJiByZXNvdXJjZURhdGEgJiYgIXJlc291cmNlRGF0YS0+aGFzQnVmZmVyZWRE
YXRhKCkgJiYgIXJlc291cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSkKLSAgICAgICAgICAgIG1f
cmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoZGF0YSwgZGF0YUxlbmd0aCksIHRydWUpOworICAgICAgICAgICAgbV9yZXNvdXJj
ZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCB0cnVlKTsKICAgICB9CiAKLSAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+ZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wKCksIGRhdGFM
ZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGF0
YVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wKCksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVz
b3VyY2VMb2FkZXIqKQpAQCAtMTI3MSw3ICsxMjY4LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3Bv
bnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJl
YWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJhc2U2
NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7
CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI5Niw5ICsxMjkzLDkgQEAgUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0
V2l0aFJlc3BvbnMKICAgICB9CiAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkcyhXVEZN
b3ZlKGV4cGxpY2l0SGVhZGVycykpOwogICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOwotICAgIGxv
YWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZmZXIgPSBkYXRh
LnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAgbG9hZGVyLT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0o
KSB7CiAgICAgICAgIGlmIChidWZmZXItPnNpemUoKSkKLSAgICAgICAgICAgIGxvYWRlci0+ZGlk
UmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9h
ZFdob2xlUmVzb3VyY2UpOworICAgICAgICAgICAgbG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZm
ZXIsIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogICAgICAgICBs
b2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkpOwogICAgIH0pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuaAppbmRleCA2YmNkODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRhMTQx
M2Q0Li5jYTZmNzRlMWI4Njk4MGY0MGIxNTVkMTNlMTZiNzFhZGZiOTQwNDU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IENh
Y2hlZFJlc291cmNlKik7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNv
dXJjZUxvYWRlciopOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lk
IGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIENhY2hlZFJl
c291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggNDMz
MmQ2OTFiYmY4MjZhN2M4N2VhODNhMzE3ZTk2MTE1YTIwNDk5My4uYTA5ODFhZGQ3OTg1MzJiOTdi
YWE0MDQxMjhiYTM4ODk2ZGFmNjg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJl
c291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUg
PT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8q
IHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9j
bGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAg
IG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVy
LT5tYWtlQ29udGlndW91cygpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VV
UkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKaW5kZXgg
MjE1YzA0ZWM5ODk1ZTlmMWU2ZTE0N2RhODIwOTMwMDk4NTIzOTYyMy4uZmE3YWQzMDM5YTIwNWU5
MDU3MTA4ZjNjNmYzOTI0MTliYzQ2NDdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlckNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBD
b250ZW50RmlsdGVyQ2xpZW50IHsKQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3Qg
PSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVy
KGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1
YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25z
dCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwg
U3Vic3RpdHV0ZURhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAppbmRleCA2YmYzYWMyOTdlYzZiMjYzYTA3ODY0MGJjZjNhZDU3NzlkYjBmZWRiLi5lMzJl
NTE5NjUwNTcwYzY3ZDhmMzg1Yjc5M2E1YjIwZjE2ZTAyZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTQ4Myw4ICs0ODMsOCBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpmaW5pc2hlZExvYWRpbmcoKQogICAgICAgICAvLyBJZiB0aGlzIGlzIGFuIGVtcHR5
IGRvY3VtZW50LCBpdCB3aWxsIG5vdCBoYXZlIGFjdHVhbGx5IGJlZW4gY3JlYXRlZCB5ZXQuIENv
bW1pdCBkdW1teSBkYXRhIHNvIHRoYXQKICAgICAgICAgLy8gRG9jdW1lbnRXcml0ZXI6OmJlZ2lu
KCkgZ2V0cyBjYWxsZWQgYW5kIGNyZWF0ZXMgdGhlIERvY3VtZW50LgogICAgICAgICBpZiAoIW1f
Z290Rmlyc3RCeXRlKQotICAgICAgICAgICAgY29tbWl0RGF0YSgwLCAwKTsKLSAgICAgICAgCisg
ICAgICAgICAgICBjb21taXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworCiAgICAgICAg
IGlmICghZnJhbWVMb2FkZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZnJhbWVM
b2FkZXIoKS0+Y2xpZW50KCkuZmluaXNoZWRMb2FkaW5nKHRoaXMpOwpAQCAtMTE1Nyw5ICsxMTU3
LDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9s
aWN5QWN0aW9uIHBvbGljeSkKICAgICBpZiAoIWlzU3RvcHBpbmcoKSAmJiBtX3N1YnN0aXR1dGVE
YXRhLmlzVmFsaWQoKSAmJiBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkgewogICAgICAgICBhdXRv
IGNvbnRlbnQgPSBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKTsKICAgICAgICAgaWYgKGNvbnRl
bnQgJiYgY29udGVudC0+c2l6ZSgpKSB7Ci0gICAgICAgICAgICBjb250ZW50LT5mb3JFYWNoU2Vn
bWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgIGRhdGFSZWNlaXZlZChz
ZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiAqY29udGVudCkKKyAgICAgICAgICAgICAgICBkYXRh
UmVjZWl2ZWQoZWxlbWVudC5zZWdtZW50LmdldCgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
aXNMb2FkaW5nTWFpblJlc291cmNlKCkpCiAgICAgICAgICAgICBmaW5pc2hlZExvYWRpbmcoKTsK
QEAgLTExNzEsNyArMTE3MCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgfQogfQogCi12b2lkIERvY3Vt
ZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2
b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICAvLyBCb3RoIHVubG9hZGluZyB0aGUgb2xkIHBhZ2UgYW5kIHBhcnNpbmcgdGhlIG5l
dyBwYWdlIG1heSBleGVjdXRlIEphdmFTY3JpcHQgd2hpY2ggZGVzdHJveXMgdGhlIGRhdGFzb3Vy
Y2UKICAgICAvLyBieSBzdGFydGluZyBhIG5ldyBsb2FkLCBzbyByZXRhaW4gdGVtcG9yYXJpbHku
CkBAIC0xMTg2LDcgKzExODUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiAgICAgaWYgKEFyY2hpdmVGYWN0b3J5Ojpp
c0FyY2hpdmVNSU1FVHlwZShyZXNwb25zZSgpLm1pbWVUeXBlKCkpKQogICAgICAgICByZXR1cm47
CiAjZW5kaWYKLSAgICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuY29tbWl0dGVkTG9hZCh0aGlzLCBk
YXRhLCBsZW5ndGgpOworICAgIGZyYW1lTG9hZGVyLT5jbGllbnQoKS5jb21taXR0ZWRMb2FkKHRo
aXMsIGRhdGEpOwogCiAgICAgaWYgKGlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpKQogICAgICAg
ICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKTsKQEAg
LTEyMTUsNyArMTIxNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRVc2VBY3RpdmVTZXJ2
aWNlV29ya2VyRnJvbVBhcmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lCiB9CiAjZW5kaWYKIAot
dm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6
ZV90IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIGlmICghbV9nb3RGaXJzdEJ5dGUpIHsKICAgICAgICAgbV9n
b3RGaXJzdEJ5dGUgPSB0cnVlOwpAQCAtMTMxMywyNCArMTMxMiwyNCBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQog
I2VuZGlmCiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2luZygpKTsKLSAg
ICBtX3dyaXRlci5hZGREYXRhKGJ5dGVzLCBsZW5ndGgpOworICAgIG1fd3JpdGVyLmFkZERhdGEo
ZGF0YSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIERv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAm
cmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwotICAgIGRhdGFSZWNlaXZlZChkYXRhLCBsZW5n
dGgpOworICAgIGRhdGFSZWNlaXZlZChidWZmZXIpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVy
OjpkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgaWYgKG1fY29udGVudEZpbHRlciAm
JiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0
aCkpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51
ZUFmdGVyRGF0YVJlY2VpdmVkKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKQogICAgICAg
ICByZXR1cm47CiAjZW5kaWYKIAotICAgIEFTU0VSVChkYXRhKTsKLSAgICBBU1NFUlQobGVuZ3Ro
KTsKKyAgICBBU1NFUlQoYnVmZmVyLmRhdGEoKSk7CisgICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkp
OwogICAgIEFTU0VSVCghbV9yZXNwb25zZS5pc051bGwoKSk7CiAKICAgICAvLyBUaGVyZSBpcyBh
IGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBiZSBkaXNwYXRjaGVkIGV2ZW4g
d2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCkBAIC0xMzQwLDEyICsxMzM5LDEyIEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KQogI2VuZGlmCiAKICAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxv
YWRlcikKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaXNwYXRjaERpZFJlY2Vp
dmVEYXRhKHRoaXMsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGRh
dGEsIGxlbmd0aCwgLTEpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpc3Bh
dGNoRGlkUmVjZWl2ZURhdGEodGhpcywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJj
ZUxvYWRlciwgYnVmZmVyLCAtMSk7CiAKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5tYWlu
UmVzb3VyY2VEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoLCAtMSwgZmFsc2UpOworICAgIG1fYXBw
bGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChidWZmZXIsIC0xLCBm
YWxzZSk7CiAKICAgICBpZiAoIWlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpKQotICAgICAgICBj
b21taXRMb2FkKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGNvbW1pdExvYWQoYnVmZmVyKTsKIH0K
IAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0dXBGb3JSZXBsYWNlKCkKQEAgLTE2MTQsNyArMTYx
Myw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgbV93
cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJU
KG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0
YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YSgq
bV9wYXJzZWRBcmNoaXZlRGF0YSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTIy
NTcsOCArMjI1Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011
bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7
CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQo
cmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6
ZSgpKTsKKyAgICBjb21taXRMb2FkKG1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpAQCAtMjQx
MCw5ICsyNDA4LDkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5xdWV1ZVNlY3VyaXR5UG9saWN5
VmlvbGF0aW9uRXZlbnQoU2VjdXJpdHlQb2xpY3lWaW9sYXRpb24KIH0KIAogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBzaXplKQordm9pZCBEb2N1
bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgZGF0YVJlY2VpdmVkKGRhdGEsIHNpemUpOworICAgIGRh
dGFSZWNlaXZlZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggMGUwMTJiNjhjMjRiMzM0
ZjkxYzU3MTA1ZjRkMjUyM2Q2MmI0NjcwYS4uYzU3OWJmYjI2MjdiMjVmMGJmNmYzYTBkNGViMDA4
MzM3NTE0YjQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTg2
LDYgKzg2LDcgQEAgY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNsYXNzIFJlc291cmNlTG9hZGVy
OwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlv
bjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3Mg
U3Vic3RpdHV0ZVJlc291cmNlOwogY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOwpAQCAtMzgy
LDcgKzM4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0VGltaW5nKCkgeyBtX2xvYWRUaW1p
bmcgPSB7IH07IH0KIAogICAgIC8vIFRoZSBXZWJLaXQgbGF5ZXIgY2FsbHMgdGhpcyBmdW5jdGlv
biB3aGVuIGl0J3MgcmVhZHkgZm9yIHRoZSBkYXRhIHRvIGFjdHVhbGx5IGJlIGFkZGVkIHRvIHRo
ZSBkb2N1bWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29t
bWl0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
JiBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpIGNvbnN0OwogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
KiBhcHBsaWNhdGlvbkNhY2hlSG9zdFVubGVzc0JlaW5nRGVzdHJveWVkKCkgY29uc3Q7CkBAIC00
ODIsNyArNDgzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tbWl0SWZSZWFkeSgpOwogICAg
IHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHZv
aWQgY29tbWl0TG9hZChjb25zdCB1aW50OF90KiwgaW50KTsKKyAgICB2b2lkIGNvbW1pdExvYWQo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbGVhck1haW5SZXNvdXJjZUxvYWRlcigp
OwogCiAgICAgdm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKQEAgLTQ5OCw3ICs0OTksNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgbWFpblJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFFV
SUNLX0xPT0spCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmV2aWV3UmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKQEAg
LTUwOCwxMyArNTA5LDEzIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNv
dXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNv
bnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2Nr
ZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIGRh
dGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRh
dGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIGJvb2wgbWF5YmVMb2FkRW1w
dHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAppbmRleCBiOWM0MTM1MjU2NzYyNjcyMTkwN2FmMzY2ZGZiMWRlYzc5NGMyNDc0
Li44NjRiNjVhMWQxMTMxZmI2MzcxMjViMTczOTkxZTlkM2UwYTZlNzFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNDM3
LDIwICs0MzcsMjAgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZy
ZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBkaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5p
ZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKG1fcmVz
b3VyY2UtPmlkZW50aWZpZXIoKSwgYnVmZmVyKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCiAgICAgaWYgKG1f
ZGVsYXlDYWxsYmFja3NGb3JJbnRlZ3JpdHlDaGVjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGZhbHNlKTsKIH0KIAogdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IFJlc291cmNlVGltaW5nJiByZXNvdXJjZVRpbWluZykKQEAgLTQ5Mywy
MCArNDkzLDE0IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmCiAKICAgICAgICAgaWYgKG9wdGlv
bnMoKS5maWx0ZXJpbmdQb2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xpY3k6OkRpc2FibGUp
IHsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwg
cmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJl
c291cmNlQnVmZmVyKCkpIHsKLSAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2hTZWdtZW50
KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1f
cmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVEYXRhKCpidWZmZXIsIGZhbHNlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RGVm
YXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRp
ZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJlc3BvbnNlLCBtX29wdGlvbnMuY3JlZGVu
dGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSA/IFJlc291cmNlUmVz
cG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6Ok5vIDogUmVzb3VyY2VSZXNwb25z
ZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzKSk7Ci0gICAgICAgICAgICBpZiAo
YXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewotICAgICAgICAg
ICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21lbnQuZGF0YSgpLCBz
ZWdtZW50LnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkK
KyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlciwgZmFsc2Up
OwogICAgICAgICB9CiAgICAgfQogCkBAIC02NjcsMTEgKzY2MSw4IEBAIHZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBT
ZWN1cml0eUNoCiAgICAgfQogICAgIGRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNw
b25zZSk7CiAKLSAgICBpZiAoZGF0YSkgewotICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudChb
Jl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmll
ciwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgfSk7Ci0gICAgfQor
ICAgIGlmIChkYXRhKQorICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCAqZGF0YSk7
CiAKICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xv
YWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGlt
aW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3Is
IGxvYWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5
TWV0cmljcygpLCByZXNwb25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggZjFmNDFlZTkxZDZj
ZThhMWM1ODYyMzgxN2IzNThmNzc0NjUxZTBhNC4uYzg2YmE3ZjQ1MzgzYjZjMjg2MDAzMmQzYWVi
ZmJhM2UwODYwNzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuaApAQCAtODYsMTQgKzg2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICAgICAgdm9pZCBkYXRhU2Vu
dChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYp
IG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgb3ZlcnJpZGU7CiAgICAgICAgIHZv
aWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNvbnN0IFJlc291cmNlVGltaW5nJik7CiAg
ICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAg
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKICAg
ICAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAK
aW5kZXggYjA0NmVmMGRlMjA0OGVmZDQzMTk3MDI2MjJiOTZhN2RmMmZlYWZhNy4uNGZmOTM4MTgw
ZmRkMjhmYzcxNWQwODg4MTYwOGZjNjI4OTQ5MmU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBEb2N1bWVudFdyaXRl
cjo6cmVwb3J0RGF0YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZXNvbHZl
U3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVpbGQpOwogfQogCi12b2lkIERv
Y3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3Ro
KQordm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSB0byBBU1NFUlQgb25jZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MjcgaGFzIGJlZW4gcmVzb2x2ZWQuCiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Tm90U3RhcnRlZCk7CkBAIC0yNzMs
NyArMjczLDcgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQo
bV9wYXJzZXIpOwotICAgIG1fcGFyc2VyLT5hcHBlbmRCeXRlcygqdGhpcywgYnl0ZXMsIGxlbmd0
aCk7CisgICAgbV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjppbnNlcnREYXRhU3luY2hyb25vdXNs
eShjb25zdCBTdHJpbmcmIG1hcmt1cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmgKaW5kZXggMDcxNzJjOTczOWViNTczNWJjODFmOGRlZjJmYjliMjg1YzI1NGQwYi4uYzBhMzRh
NmI3ZTljZmU5NjQzMDQ1YTk1ZTc5MzIyNTIzNjNiMjY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudFBhcnNlcjsKIGNsYXNzIEZyYW1lOworY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogY2xhc3MgRG9j
dW1lbnRXcml0ZXIgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGJlZ2lu
KCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBVUkwmLCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0
QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSBudWxscHRyKTsKLSAg
ICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAg
IHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGluc2VydERhdGFT
eW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYpOyAvLyBGb3IgYW4gaW50ZXJuYWwgdXNlIG9ubHkg
dG8gcHJldmVudCB0aGUgcGFyc2VyIGZyb20geWllbGRpbmcuCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlbmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA1
NTI1NjJlNTRiYmE1NzNiZWFiMGIyMGZhNjQwNWU5MzNjMWI2ODYyLi4zNzgxZDhkNWRjZDRlYmVm
YTg2ZWM4YTRhMTNjOTljMThjZGExNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcApAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogewogfQogCi12b2lkIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90Kiwg
aW50KQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50
TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjI2OTljOWM1MTgzMmE1YWE4
Yzg5YWJhYjJmZmM3ZTA5ODViZmMwMC4uMTE2YTE3ZDFmNWM5ZTY0N2UxZjE0MWExMDA4NmIwNzk4
MzkzZjNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNs
aWVudC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNl
TXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENv
bnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlcios
IGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1
bWVudExvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNo
ZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgZmluYWw7CiAKICAgICBSZXNvdXJjZUVycm9yIGNh
bmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNmM1ZWUzYTliMzFhZThiODRkYjkyMGI2
NmViZjIxNGYyNmVjOWFkNi4uYzQ0NmRmYmRjMGE5ZWM4NWNiZDE0NDhhMGNhYmU0MWRkNjA2Nzk0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xNjg1LDcgKzE2ODUs
NyBAQCBib29sIEZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTChVUkwmIHVybCwg
Tm9kZSYgaW5pdGlhdG9yTm9kZSkKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRp
ZmllcjsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVlc3RGcm9tRGVsZWdhdGUo
cmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmlu
Z0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVx
dWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygpLCAtMSwgU3RyaW5nKCkpLCAwLCAt
MSwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIFJlc291cmNl
UmVzcG9uc2UodXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpKSwgbnVsbHB0ciwgLTEsIGVycm9y
KTsKIAogICAgIHVybCA9IHJlcXVlc3QudXJsKCk7CiAKQEAgLTIwODUsOCArMjA4NSw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUpOwogCiAgICAgICAgIC8vIFNlbmQg
cmVtYWluaW5nIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBtYWluIHJlc291cmNlLgotICAgICAgICBu
b3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIu
Z2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UoKSwKLSAgICAgICAgICAgIG51bGxwdHIsIHN0YXRpY19jYXN0PGludD4obV9k
b2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSksIDAsIG1h
aW5SZXNvdWNlRXJyb3IpOworICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIs
IG1haW5SZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwgbnVsbHB0ciwgc3RhdGlj
X2Nhc3Q8aW50PihtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExl
bmd0aCgpKSwgbWFpblJlc291Y2VFcnJvcik7CiAKICAgICAgICAgVmVjdG9yPFJlZjxGcmFtZT4+
IHRhcmdldEZyYW1lczsKICAgICAgICAgdGFyZ2V0RnJhbWVzLmFwcGVuZChtX2ZyYW1lKTsKQEAg
LTIxMzIsNyArMjEzMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9h
ZCgpCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3Jl
IHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAg
ICAgICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5n
IHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgICAgICAgICAvLyBD
b3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KLSAgICAgICAgICAgIG5v
dGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5n
ZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIDAsIHN0YXRpY19jYXN0PGludD4o
cmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBlcnJvcik7CisgICAgICAgICAg
ICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2Fk
ZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNlLCBudWxscHRyLCBzdGF0aWNf
Y2FzdDxpbnQ+KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgZXJyb3IpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFdoeSBvbmx5IHRoaXMgZnJhbWUgYW5kIG5vdCBw
YXJlbnQgZnJhbWVzPwpAQCAtMzE2MCw3ICszMTU5LDggQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmUKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0
aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0
TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6Ok5vKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBy
ZXF1ZXN0LCByZXNwb25zZSwgZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHIsIGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwLCAtMSwgZXJyb3IpOworCisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBy
ZXF1ZXN0LCByZXNwb25zZSwgZGF0YSwgLTEsIGVycm9yKTsKICAgICByZXR1cm4gaWRlbnRpZmll
cjsKIH0KIApAQCAtMzY0MSw3ICszNjQxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZGVkUmVz
b3VyY2VGcm9tTWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXIKIAog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNvdXJjZS5yZXNwb25zZSgpOwogICAg
IHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok1lbW9yeUNhY2hl
KTsKLSAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1l
bnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLCAwLCByZXNv
dXJjZS5lbmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7CisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBu
ZXdSZXF1ZXN0LCByZXNwb25zZSwgbnVsbHB0ciwgcmVzb3VyY2UuZW5jb2RlZFNpemUoKSwgZXJy
b3IpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjphcHBseVVzZXJBZ2VudElmTmVlZGVkKFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFiYzEyODk4ZDEyMzY1Mi4uODA5
MTBmYWU1Yjg3ZDVhNjMxYTY2ODQzMGMxOWViODQyMDRiZjI2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJQ
YWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTIxNCw3ICsyMTUsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9IDA7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5n
KERvY3VtZW50TG9hZGVyKikgPSAwOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9i
YWxIaXN0b3J5KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDVkMTIwZTI0N2FjMjYyNzExNjFkZTBkYzUyMzAyNGRjOGRlMzRkNjku
LjFhMTdhNzBmYTU4YzcyMjhmNjM4OTM1OWRkMGQzMzlkMGUwNWNkMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIzMSwxMyArMjMxLDEz
IEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgq
dGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIE1lZGlhUmVz
b3VyY2U6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7
CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBp
ZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEs
IGRhdGFMZW5ndGgpOworICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBidWZm
ZXIpOwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggZmY2YzI4ODcxMDA4
OGY0YjA1NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NS4uN2I1NTc3MjBlZjA1MzNmYmFhMjI2NTY1Mzhl
ZmRkOTZmNjE3OWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxv
YWRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVy
cmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRS
ZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3Qq
LCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5jcHAKaW5kZXggNjA0M2FjOWJlMjY3ZWE0ZmJjNzFlMTExOGI5MDc5MTU1ZTM5
MTUwMy4uNWNhYWRmNjI5YzcwYWUwODZiNzdiZDcyY2QyODY3NTM2YjhmYTk3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3Bw
CkBAIC0xNDEsMzAgKzE0MSwxNCBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgIH0pOwog
fQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKLSAgICBkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
Ci17Ci0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBh
eWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgaWYgKG1fY2xp
ZW50KSB7Ci0gICAgICAgIGlmIChidWZmZXIpIHsKLSAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFj
aFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZURhdGEodGhpcywgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YSh0aGlzLCBkYXRhLCBsZW5ndGgpOwotICAgIH0KKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIpOwogCi0gICAg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBXVEZN
b3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBk
YXRhUGF5bG9hZFR5cGUpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuaAppbmRleCBiNTE3NGVkYzk0Yjk5MjM5MDIwNWYwZmFkNDUyZWE1YWMzODc4OTM4Li4x
ZWM3ZDYxZTNhMTc1YzIyYjU1ODc1OGQzN2VkMGM1NWJlNWYxM2JmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtMzYsMTIg
KzM2LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIHsgfQog
ICAgIHZpcnR1YWwgYm9vbCB3YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpAQCAtNjIsOCArNjMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNr
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5k
bGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBA
IC03NCw4ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLQogICAgIHZvaWQgbm90aWZ5
RG9uZSgpOwogCiAgICAgV2Vha1B0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudD4g
bV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
Tm90aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVy
LmNwcAppbmRleCAxNDdiNDVlMDY0MzgxMjI3YjA1MjIwNjQ0MTg1MjNjMDc5ZjY0ZDE0Li43YzJh
YjI5MTA3MWRiYzM0NzI3NWRjZThkMzc5N2QyNDY3ODQxNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogI2lmIFVTRShR
VUlDS19MT09LKQogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgpAQCAtNzgsMTIgKzc5LDEyIEBAIHZv
aWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
ciogbG9hZGVyLCBjb25zdCBSZXNvCiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgciwgbG9hZGVyKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVE
YXRhKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBh
Z2UoKSkKLSAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNyZW1lbnRQcm9ncmVzcyhsb2FkZXIt
PmlkZW50aWZpZXIoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIHBhZ2UtPnByb2dyZXNzKCkuaW5j
cmVtZW50UHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGJ1ZmZlci5zaXplKCkpOwogCi0g
ICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRl
ci0+aWRlbnRpZmllcigpLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRl
ci0+aWRlbnRpZmllcigpLCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciogbG9hZGVy
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTE1OSwx
MyArMTYwLDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2
ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlCiAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLCBpZGVudGlmaWVy
LCBsb2FkZXIsIHIsIHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgLy8gTm90aWZ5aW5nIHRoZSBGcmFt
ZUxvYWRlckNsaWVudCBtYXkgY2F1c2UgdGhlIGZyYW1lIHRvIGJlIGRlc3Ryb3llZC4KICAgICBS
ZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQo
KS5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgZGF0
YUxlbmd0aCk7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2Vp
dmVDb250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgYnVmZmVyLnNpemUoKSk7CiAKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKCZtX2ZyYW1lLCBpZGVu
dGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSgmbV9mcmFtZSwgaWRlbnRpZmllciwg
YnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZp
ZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKQEAg
LTE4Niw3ICsxODcsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZh
aWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cgogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJhbWUsIGxvYWRlciwgaWRlbnRpZmll
ciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5n
RGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNz
YWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIC8v
IElmIHRoZSByZXF1ZXN0IGlzIG51bGwsIHdpbGxTZW5kUmVxdWVzdCBjYW5jZWxsZWQgdGhlIGxv
YWQuIFdlIHNob3VsZAogICAgIC8vIG9ubHkgZGlzcGF0Y2ggZGlkRmFpbExvYWRpbmcgaW4gdGhp
cyBjYXNlLgpAQCAtMTk5LDggKzIwMCw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNl
bmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsCiAgICAg
aWYgKCFyZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9u
c2UobG9hZGVyLCBpZGVudGlmaWVyLCByZXNwb25zZSk7CiAKLSAgICBpZiAoZGF0YUxlbmd0aCA+
IDApCi0gICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLCBpZGVudGlmaWVyLCBk
YXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgaWYgKGJ1ZmZlciAmJiBi
dWZmZXItPnNpemUoKSkKKyAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXIsIGlk
ZW50aWZpZXIsICpidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKIAogICAgIGlmIChlcnJvci5p
c051bGwoKSkgewogICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAppbmRleCA0ZGJkNGNj
NDlkNjUwNDIxMTg0ZTYwYzI0ZGQ3MTRkY2JlMGJkYjBkLi5mNjQyNWJhN2JlOWZmMjZlOTlmN2Jl
N2NjMzJhOGU1ZGZiYjAwZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkTm90aWZpZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBSZXNvdXJjZUxvYWROb3Rp
ZmllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVzb3VyY2VMb2FkTm90aWZpZXIpOwpA
QCAtNTUsMTggKzU2LDE4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVy
KiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZUVycm9yJik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVy
KiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwog
ICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxv
YWRlciogPSBudWxscHRyKTsKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1l
bnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lk
IGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsK
ICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIHZvaWQgc2Vu
ZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBzZW5kUmVtYWluaW5nRGVs
ZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxj
b25zdCBTaGFyZWRCdWZmZXI+LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKIAogcHJpdmF0ZToKICAgICBGcmFtZSYgbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDZkZWJiMjU4OGEzZTgyYjIxYzYxZDdlOGYz
NmU0ZjRiYmJhMjVlNjAuLjY2NDdjMjcwODExODBlYmNlYzJiNWNhMjlmZDYwYjcyM2FiNjQ4MzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjk5LDkgKzI5
OSw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKCkKIAogICAgICAgICBhdXRv
IGRhdGFTaXplID0gZGVjb2RlUmVzdWx0LT5kYXRhLnNpemUoKTsKICAgICAgICAgUmVzb3VyY2VS
ZXNwb25zZSBkYXRhUmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2Uo
dXJsLCBkZWNvZGVSZXN1bHQudmFsdWUoKSk7Ci0gICAgICAgIHRoaXMtPmRpZFJlY2VpdmVSZXNw
b25zZShkYXRhUmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgZGF0YVNpemUsIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRl
Y29kZVJlc3VsdC0+ZGF0YSkpXSgpIG11dGFibGUgeworICAgICAgICB0aGlzLT5kaWRSZWNlaXZl
UmVzcG9uc2UoZGF0YVJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIGRhdGFTaXplLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkZWNvZGVSZXN1bHQtPmRhdGEpKV0oKSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMtPnJlYWNo
ZWRUZXJtaW5hbFN0YXRlKCkgJiYgZGF0YVNpemUgJiYgbV9yZXF1ZXN0Lmh0dHBNZXRob2QoKSAh
PSAiSEVBRCIpCi0gICAgICAgICAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3Zl
KGRhdGEpLCBkYXRhU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLT5kaWRSZWNlaXZlQnVmZmVyKGRhdGEsIGRhdGFTaXplLCBEYXRhUGF5bG9hZFdo
b2xlUmVzb3VyY2UpOwogCiAgICAgICAgICAgICBpZiAoIXRoaXMtPnJlYWNoZWRUZXJtaW5hbFN0
YXRlKCkpIHsKICAgICAgICAgICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNz
OwpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1
YnN0aXR1dGVSZXNvdXJjZSgpCiAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKIHsKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CkBA
IC0zMzYsMTAgKzMzNiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZyYWdtCiAgICAgaWYgKGRhdGFQ
YXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLnJlc2V0KCk7CiAKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0
YS5hcHBlbmQoKmJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBl
bmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoYnVmZmVyKTsKIH0K
IAogY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNl
RGF0YSgpIGNvbnN0CkBAIC01MzksNyArNTM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIsIENvbXBsZXRpb25IYW4K
ICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlUmVzcG9uc2UodGhp
cywgbV9yZXNwb25zZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkK
IHsKICAgICAvLyBUaGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYXJlIG5vdCBxdWl0ZSB2YWxpZCBo
ZXJlLCBzaW5jZSBhIHN1YmNsYXNzCiAgICAgLy8gbWlnaHQgb3ZlcnJpZGUgZGlkUmVjZWl2ZURh
dGEgaW4gYSB3YXkgdGhhdCBpbnZhbGlkYXRlcyB0aGVtLiBUaGlzCkBAIC01NDcsMzAgKzU0NCwy
MiBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbAogICAgIC8vIEFTU0VSVChjb24gPT0gY29ubmVj
dGlvbik7CiAgICAgLy8gQVNTRVJUKCFtX3JlYWNoZWRUZXJtaW5hbFN0YXRlKTsKIAotICAgIGRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxl
bmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKKyAgICBkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5j
b2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9h
ZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewotICAgIGRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0
YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotICAgIC8vIFRoaXMgbWV0aG9k
IHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ci4KLSAgICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYgIWxlbmd0aCkpOwotCiAgICAgLy8g
UHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFs
IHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRl
cmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KICAgICBS
ZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYWRkRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgYnVmZmVyLmdldCgpLCBkYXRhUGF5bG9hZFR5cGUpOworICAg
IGFkZEJ1ZmZlcihidWZmZXIsIGRhdGFQYXlsb2FkVHlwZSk7CiAKICAgICAvLyBGSVhNRTogSWYg
d2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24n
dCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1
dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNl
LgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAg
IGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpT
ZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVy
KCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGlj
X2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLCBz
dGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3Jr
TG9hZE1ldHJpY3MpCkBAIC03MjksMTQgKzcxOCwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2Um
JgogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCwgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIGRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVj
ZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZEJ5dGVzKTsKKyAgICBkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3MGVhMjIwZGMxN2M3
Mzc2ZWQ2NjBmYTdhNjFhODRlMzFjMzM0Y2JiLi4wOWIxMTkzMDJkNmNjZmMyMDFjYWUyMDlkMGY1
MjFiMmE4MTQyNTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAt
MTA3LDggKzEwNyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFj
ayk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRl
c1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY3LDggKzE2Nyw2IEBAIHByb3RlY3RlZDoK
IAogICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9jYW5jZWxsYXRpb25T
dGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIAog
ICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kp
IHsgbV9vcHRpb25zLnJlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQb2xpY3k7IH0KICAgICBSZWZl
cnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5yZWZl
cnJlclBvbGljeTsgfQogCkBAIC0xOTIsNyArMTkwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKIAotICAgIHZvaWQgYWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBhZGRCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVS
TCgpOwogICAgIHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIApAQCAtMjAyLDggKzIwMCw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VI
YW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSos
IFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNv
dXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3Vy
Y2VIYW5kbGUqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDM3ZDBiYjgyMWFiZDg2YTliNTYwNmUxMjdlZmM5NDEyYTUxYmIxYTku
Ljk3MmYyYWYyMjYwM2Y0MjRjZDg3NzVmNTkxMDEwZTJkNzY5MzhhMDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTE4LDMyICs1MTgsMTUgQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlUG9saWN5KCkKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlm
IChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIuZ2V0KCkpIHsKLSAgICAgICAg
aWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCkpCisgICAgICAg
IGlmIChwcmV2aWV3TG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKLSAgICBkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0jaWYg
VVNFKFFVSUNLX0xPT0spCi0gICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xv
YWRlci5nZXQoKSkgewotICAgICAgICBpZiAocHJldmlld0xvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZl
cihidWZmZXIuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0g
ICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVu
Y29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewog
ICAgIEFTU0VSVChtX3Jlc291cmNlKTsKIAogICAgIGlmIChtX3Jlc291cmNlLT5yZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwICYmICFtX3Jlc291cmNlLT5zaG91bGRJZ25vcmVIVFRQ
U3RhdHVzQ29kZUVycm9ycygpKQpAQCAtNTU1LDEzICs1MzgsMTMgQEAgdm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoLAogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZl
cmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KICAg
ICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIu
Y29weVJlZigpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKKyAgICBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBk
YXRhUGF5bG9hZFR5cGUpOwogCiAgICAgaWYgKCFtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkK
ICAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVm
ZmVyLm1ha2VDb250aWd1b3VzKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCA4MzJjOWYwZTczZDM4NDY0YTc5NWY0MDM4NjBmNzlj
MzRlNzNiYzdmLi4zZGJkNTMzOGFmZTQ5YjQ3ODU3ZDUzNDA5Nzg4NzUyZWFhMWFlZDRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzMsOCArNzMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcg
bG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAg
ICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2woY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmlu
Zz4gY2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291
cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQg
bm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggY2YyZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3
NDQxMDc0MmEwZC4uM2QxOTI4NjJmMjc3MjliMmYzOGRiNTRiZDgzNjc5OTUyNWMwMTlkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzgsNyArMzgs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZTsgfQogICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVm
IHsgKm1fZGF0YS5nZXQoKSB9KTsgfQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9p
ZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIHsgbV9kYXRhLmFwcGVuZChidWZm
ZXIpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCmluZGV4IDg0ZDc5YjBjOTlk
ZjEwZDk5MzgwYjg0ODMxNzM3MWJjMWU4NTczYmYuLmNlZjBjOGYxZjE3ZDBmNTc2NTlhMzU0MWI1
NGY2Mzg5OTA2NGIxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVM
b2FkZXJDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNl
VGltaW5nOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8s
IHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sIC8qIHVzZVN0ckxl
biAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFRpbWluZyhjb25zdCBSZXNv
dXJjZVRpbWluZyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaAppbmRleCA0MmFlNjQ5MDlhNWUwZmU0NGM2YTVlMDA2
MGQ1OGM5NjRlYzU2MDUxLi5mMzZhMmQ0MDdhZjg4MTU5MDQyODY2Yjg1ZTllMDE4NjFkYWFjNzI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNs
aWVudFdyYXBwZXIuaApAQCAtNjYsMTAgKzY2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgIH0K
IAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgYm9vbCB1c2VTdHJMZW4pCiAgICAgewogICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCB1c2VTdHJMZW4pOwogICAgIH0K
IAogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcAppbmRleCBkZmY4OTcwMWM5MzliYzczYzM3MDMyYWQ5YzQyYWQyMDYzMjZhZDZlLi43
ZjY2ODM1Y2I1NDliNTUwMWE5MmNmNzA1ZGMxZWJiYjMxM2FlYWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0yMzEsMTQgKzIz
MSwxMyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcgogICAgIH0sIG1fdGFza01vZGUpOwogfQog
Ci12b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pCiB7Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcihkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVu
dFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdvcmtlclJlcXVlc3RJ
ZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29ya2VyQ2xpZW50V3Jh
cHBlciB9LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZp
ZXIsIGJ1ZmZlciA9IFJlZiB7IGJ1ZmZlciB9LCB1c2VTdHJMZW5dIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFs
U2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwotICAgICAgICBwcm90
ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlk
UmVjZWl2ZURhdGEoYnVmZmVyLCB1c2VTdHJMZW4pOwogICAgICAgICBpZiAoaXM8V29ya2VyR2xv
YmFsU2NvcGU+KGNvbnRleHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdv
cmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAg
ICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwg
YnVmZmVyKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggNzIzYjQ1NmVjOGU5ZTMwNmZjMThj
YzhmMzZkZTZkY2Q4YWUzMDQ3MC4uMzM5ZDZmNDczMTBhMWVkMjg5MDM2YWQwYTQwNGYzOGE3YTI2
ODYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5oCkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gQWxsIGV4ZWN1dGVk
IG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50
KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCBkYXRhTGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBi
b29sKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoVGltaW5nKGNvbnN0
IFJlc291cmNlVGltaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA1MTk3OGY0MTIz
ODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRlNWQ4NWE3Li5lZDc1NjY1MjZiMmQ3ZWZiZjFjNTE3MDIw
OTVhODc5YmFmNTY5NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29s
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja0Zvck1haW5FcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCosIGlu
dCwgbG9uZyBsb25nLCBib29sKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291
cmNlRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZywgYm9vbCkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuaAppbmRleCBiOTYzNTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNkZjcyMzY3
MmEwLi5kMmFlYWVjM2UxNGM2M2JjYmY2MDFlOWFhZjAyNGMxZjllYzQ3NmRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
aApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3Vy
Y2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3Vic3RpdHV0ZURhdGEmKTsKICAgICB2b2lkIG1h
eWJlTG9hZE1haW5SZXNvdXJjZUZvclJlZGlyZWN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1
YnN0aXR1dGVEYXRhJik7CiAgICAgYm9vbCBtYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAg
dm9pZCBtYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSk7CisgICAg
dm9pZCBtYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSk7CiAgICAgdm9pZCBmaW5pc2hl
ZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKICAgICB2b2lkIGZhaWxlZExvYWRpbmdNYWluUmVzb3Vy
Y2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCAyYmIzZmU3NWI5OTc3ZTgzMzIyYWUy
NTgwZjcyMTJlZTViZjIxNjEwLi4yNTZlODliMjExYjM4YjJkMjFkY2Q2NjU3ODI2OWU2NjA3MzY3
MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsMTAgQEAgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNv
dXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIo
UmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5k
RGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAg
ICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFu
ZERhdGEocmVzcG9uc2UoKSwgUmVmUHRyIHsgJmRhdGEoKSB9KTsKKyAgICBlbHNlCisgICAgICAg
IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0Yzcx
MjkyNi4uNTRmZWVkMmNhNjQxMmI0NTIwOTg3MGM3NzM0MzYwOWQ4NTA5Yjc3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk5LDkgKzk5LDkgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLAogICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlID0gQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOjpjcmVhdGUobV9yZXNvdXJjZS0+dXJsKCksIHJlc3BvbnNlLCBtX3R5cGUp
OwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UtPmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVx
dWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuaAppbmRleCAwMmQ3YWQ5N2EyOGQ0N2MzZmFiNWUzYmFiMDdlYmU5YjA2OWUy
MzJkLi4wYjI5NjI4OGYzMWE0MzI1ZDQ4NDlhNDQyZThhZTYwMmMxNzMxOTI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAg
ICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA5NDYyNzk1MjBkMGRhNDQ2
MjJjNmFjZDM2NjYyMjg4MTA1ZTgxOTYyLi4xZjBjYjhhZWRlMTcwNTFiMjY2N2RlNzIzNzZlZjJm
ZDFiZjA2MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFn
ZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1h
Z2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAg
IHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKQEAgLTU1OCwxNSArNTU4LDE1IEBAIEVu
Y29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIHVwZGF0ZUJ1ZmZlcklu
dGVybmFsKGRhdGEpOworICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9p
ZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKLSAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsKLSAgICBDYWNoZWRSZXNvdXJjZTo6
dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOworICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGJ1ZmZl
cik7CisgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBD
YWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDA4M2Y5MmY4ODgyNzZlZWRhODk5MTIwMzFk
MjQ0OWE5NjhlMjY1ZDkuLmRlNDQxMjAzYTg2MGQyYTJjZGYzYTM0NTA1YzFhMTIyZWQxZTk4MzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjgsNyAr
MTI4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRh
SWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAg
dm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJ
bWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgdXBkYXRlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBk
YXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9yKENh
Y2hlZFJlc291cmNlOjpTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAKQEAgLTE2OSw3ICsxNjksNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IElu
dFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7
CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKaW5kZXggNzFlMTYwODJmZmU2NTVkMTExZjE2OTkwZDEyMzA1MzViZWFjYmY5NS4uNzA4
MjlmNzU2MzUzODEyNTg2NmYzNDRjOWJlNWZkMWNmMzdmODE1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCwxMiArNDgs
MTIgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9y
SWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0
YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxT
aGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVu
dGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsKICAgICBzaXpl
X3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKLSAgICBpZiAoIWRhdGEgfHwg
ZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKKyAgICBpZiAoZGF0YS5zaXplKCkg
PD0gcHJldmlvdXNEYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOworICAgIHJldHVy
biBkYXRhLmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICAgICAgcHJldmlvdXNE
YXRhU2l6ZSArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogCiAgICAgICAgIFNldEZvclNjb3Bl
PGJvb2w+IG5vdGlmeVNjb3BlKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnksIHRydWUpOwotICAg
ICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS5kYXRhKCks
IGluY3JlbWVudGFsRGF0YS5zaXplKCkpOworICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1Jl
Y2VpdmVkKGluY3JlbWVudGFsRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CiAgICAgfQogICAg
IHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKIApAQCAtODksMTEgKzg5LDExIEBAIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9O
b3RCdWZmZXJEYXRhKTsKLSAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGRhdGEsIGxl
bmd0aCk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAg
ICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGJ1ZmZlcik7CisgICAgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCkBAIC0xMTAsOSArMTEwLDkgQEAgdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdAogICAgICAgICBpZiAoZGF0YSkgewogICAgICAgICAgICAgaWYgKGRhdGEgIT0g
bV9kYXRhLmdldCgpKQogICAgICAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7Ci0gICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJ
bmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVt
ZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoKm1fZGF0YSkpIHsKICAg
ICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAg
ICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCks
IGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRz
RGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fZGF0YSA9IG51bGxw
dHI7CkBAIC0xMzAsMTUgKzEzMCwxNSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0CiAgICAgfQog
fQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVk
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7Ci0gICAgaWYgKCFsZW5ndGgpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
PENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCi0gICAgICAgIGMtPmRhdGFSZWNlaXZl
ZCgqdGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgYy0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBi
dWZmZXIpOwogfQogCiBzdGF0aWMgdm9pZCBpdGVyYXRlUmVkaXJlY3RzKENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiYmIGhhbmRsZSwgQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQmIGNsaWVudCwgVmVjdG9yPHN0ZDo6cGFpcjxSZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVz
cG9uc2U+PiYmIHJlZGlyZWN0c0luUmV2ZXJzZU9yZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MCwxMCArMTcw
LDEwIEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCYgYykKICAgICAgICAgICAgIGlmICghaGFzQ2xpZW50KCpjbGllbnQpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAg
ICAgICBtX2RhdGEtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAg
ICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogKm1fZGF0YSkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoaGFzQ2xpZW50KCpjbGllbnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2xp
ZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7
Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQtPmRh
dGFSZWNlaXZlZCgqdGhpcywgZWxlbWVudC5zZWdtZW50LmdldCgpKTsKKyAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IGE3ODY1ZjhhZDE3OGFlZmIzMjIwYTU2ZGNmZjE5
NTk5M2NmOTVhZTQuLjM2ZTQ3YTFkYmEyMzEyOGRjNTMwNzNiNzBiNWYzZjg1MzgwNGFlNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBA
IC0yOCw2ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZSBmaW5h
bCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBmaW5h
bDsKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
ZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3Vs
ZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQpAQCAtNjYsOCArNjcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dpdGNoQ2xpZW50c1Rv
UmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVu
Y29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVw
bGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNh
bGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
KSBjb25zdDsKLSAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRC
dWZmZXImKSBjb25zdDsKKyAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29u
c3QgU2hhcmVkQnVmZmVyJik7CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBw
cmV2aWV3UmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNs
aWVudC5oCmluZGV4IDIzZWFiOGRmMjk1OGZmOGI0OWYzNTQ1YjUwODNmZTI5ODllZjEyMjAuLmNk
NjUwYTJmMzEzNmNlOWIyNjJmYmRmYzgyOTI4YmYyMTA3OWZiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oCkBAIC0z
MSw2ICszMSw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNlVGltaW5nOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CkBAIC00Niw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIC8q
IGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZFRp
bWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVRpbWluZyYp
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAppbmRleCA5ZGUwYTA0Y2Q1ZWM1ZjNmYWQyZmIxNmQ3YjMyMmM4NThhMzhhNmIyLi43YjljNjFm
OTY2MTc1NDZiNjZiY2MzYzYzZWNhMGU4NTdlMjYyZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShj
b25zdCB1aW50OF90KiwgdW5zaWduZWQpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBjOTgyZGQ2OTM3YTBi
YzJiZjM4YzQyNjEyNmZmZTZlNzhjNzk2NDc4Li41MzRlMDEyY2M0ZmE1ZGQyYmUxZmQ2ZWVlNWFh
NmFlNGU1ZmFlMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBU
ZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwog
ICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA5NmQ4
OTgyZTkzNTAzNDc2OTZmYzk2OWQ1ODVhYjcwNzVkZTAyMGVkLi5jYTAxOTM0ZDMxYmE1ZDUwOWZl
YmU3ZDJmOTEyMjQ5ZDI3MTI2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtNDcsOCArNDcsNyBAQCBwdWJsaWM6CiAgICAgfkxl
Z2FjeVByZXZpZXdMb2FkZXIoKTsKIAogICAgIGJvb2wgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlkRmluaXNoTG9hZGluZygpOwogICAgIHZv
aWQgZGlkRmFpbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIubW0KaW5kZXggNDg3NTZhMzNiNTg3MmI0NGIyZjBiYTA4NDI0MWY4NmNmYWVi
Y2FhMC4uYTI0YjhjNTlkNDYwYWZmNWUyZmVmODMxOTBjMjA4NjU3MjM2NWQzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjMs
NyArNjMsNyBAQCBzdGF0aWMgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGll
bnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYwogICAgIHJldHVybiBlbXB0eUNsaWVu
dCgpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBp
ZiAobV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNzEsNyArNzEsNyBAQCBib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIExPRyhO
ZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBhcHBlbmRpbmcgYnVmZmVyIHdpdGggc2l6ZSAl
bGQuIiwgYnVmZmVyLnNpemUoKSk7CiAgICAgbV9vcmlnaW5hbERhdGEuYXBwZW5kKGJ1ZmZlcik7
CiAgICAgbV9jb252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNvdXJjZSgpOwotICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGJ1
ZmZlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2Miw4ICsxNjIsNyBAQCB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3
Q29udmVydGVyJiwgY29ucwogICAgIGlmICghbV9oYXNQcm9jZXNzZWRSZXNwb25zZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBkYXRhQ29weSA9IGRhdGEuY29weSgpOwotICAgIHJlc291
cmNlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoZGF0YUNvcHkpLCBkYXRhQ29weS0+
c2l6ZSgpLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICByZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2
ZUJ1ZmZlcihkYXRhLCBkYXRhLnNpemUoKSwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQg
TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmco
UHJldmlld0NvbnZlcnRlciYpCkBAIC0yNDMsMTEgKzI0Miw2IEBAIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VSCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVyIGNyZWF0ZWQgd2l0
aCBwcmV2aWV3IGZpbGUgbmFtZSBcIiVzXCIuIiwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFt
ZSgpLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBy
ZXR1cm4gZGlkUmVjZWl2ZUJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgp
LmdldCgpKTsKLX0KLQogYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiB7CiAgICAgcmV0dXJuICFtX3Nob3VsZERlY2lk
ZVBvbGljeUJlZm9yZUxvYWRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4
IDYwMjYzMWJiN2NkMTA4NjBiMWEzMTIxMDQzYzk3ZDhlZmU0NDc2MWQuLjY3YWM3N2UyYmY3NjEw
NDVjOGMxOGQ1YzdhZGVjN2Y3MzM4YWI3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURl
Y29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KQEAgLTIxMCwxMyArMjExLDEzIEBAIHZvaWQgRXZlbnRTb3VyY2U6
OmRpc3BhdGNoRXJyb3JFdmVudCgpCiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKIH0KIAotdm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sKQogewogICAgIEFTU0VSVCht
X3N0YXRlID09IE9QRU4pOwogICAgIEFTU0VSVChtX3JlcXVlc3RJbkZsaWdodCk7CiAgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9pc1N1c3BlbmRlZEZvckJh
Y2tGb3J3YXJkQ2FjaGUpOwogCi0gICAgYXBwZW5kKG1fcmVjZWl2ZUJ1ZmZlciwgbV9kZWNvZGVy
LT5kZWNvZGUoZGF0YSwgbGVuZ3RoKSk7CisgICAgYXBwZW5kKG1fcmVjZWl2ZUJ1ZmZlciwgbV9k
ZWNvZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpOwogICAgIHBhcnNl
RXZlbnRTdHJlYW0oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCmluZGV4IGQwMTJk
Mzc3ZDE5NzY3NWYwZmUxMTQ1ZjE3MTlmMTdmZGRiZmVhM2IuLmQ2NjJhZTI4MDZmNGIyNDg2N2Iw
MTYwOGUwNGRiYjRmOTdkYmEwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKQEAgLTg0
LDcgKzg0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291
cmNlTG9hZGVySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKaW5kZXggZDM5NjE1Njg4NGI0Yjc5ZTNlNTVkNTY5MWQ3MThjODg3NWZmOWZmNy4uNDAwNGE5
ZDZjMWI0Y2Q1ZWFmNGYzNjI4NzljOGM1ZTYwZDg0MTI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgVmVjdG9yPHVpbnQ4X3Q+
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKIAogICAgIFZlY3Rvcjx1aW50OF90
PiBjb21iaW5lZERhdGE7CiAgICAgaWYgKGhhc09uZVNlZ21lbnQoKSAmJiBzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0
YWJsZURhdGEpKQotICAgICAgICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4Y2hhbmdlKHN0ZDo6Z2V0
PFZlY3Rvcjx1aW50OF90Pj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEp
LCBWZWN0b3I8dWludDhfdD4oKSk7CisgICAgICAgIGNvbWJpbmVkRGF0YSA9IHN0ZDo6ZXhjaGFu
Z2Uoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+Pihjb25zdF9jYXN0PERhdGFTZWdtZW50Jj4obV9z
ZWdtZW50c1swXS5zZWdtZW50LmdldCgpKS5tX2ltbXV0YWJsZURhdGEpLCBWZWN0b3I8dWludDhf
dD4oKSk7CiAgICAgZWxzZQogICAgICAgICBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNE
YXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7CiAKQEAgLTQxMyw3ICs0MTMsNyBAQCBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcigpCiAgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKIH0KIAotU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCitTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKIHsK
ICAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAw
LCBXVEZNb3ZlKHNlZ21lbnQpIH0pOwpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgU2hhcmVkQnVm
ZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKCkKICAgICAgICAgbV9idWZmZXIgPSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYg
c2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9z
aXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShz
aXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkK
QEAgLTYxNyw3ICs2MTcsNyBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0
YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaQogCiBSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QK
IHsKLSAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAg
Y29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwogICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAogICAgICAgICBb
c2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCmluZGV4IGMyN2M5MjY5ZmZlZjI0OWFiNWU4YWJhMjRkNzYyZmM0MGMxYzIz
MDAuLmZhYWMzMmJhZGQ3ZjNlYTBhYjI4MTZmYjQwMDA1MmExMDhhZDJjZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xODMsNyArMTgzLDcgQEAgcHVibGljOgog
CiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVn
aW5Qb3NpdGlvbjsKLSAgICAgICAgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50OworICAgICAgICBj
b25zdCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IHNlZ21lbnQ7CiAgICAgfTsKICAgICB1c2luZyBE
YXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAg
ICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KQEAgLTI1OSw3ICsyNTksNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKICAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcigpKTsKICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIg
KHNpemVvZi4uLihBcmdzKSA9PSAxCi0gICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJn
cywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2Ft
ZV92PEFyZ3MsIFJlZjxjb25zdCBEYXRhU2VnbWVudD4+ICYmLi4uKSkKICAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwpAQCAt
MjY3LDYgKzI2Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIFNoYXJlZEJ1
ZmZlcihjb25zdCBEYXRhU2VnbWVudCYgc2VnbWVudCkKKyAgICAgICAgOiBTaGFyZWRCdWZmZXIo
UmVmPGNvbnN0IERhdGFTZWdtZW50PiB7IHNlZ21lbnQgfSkgeyB9CisKICAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CiAgICAgY29uc3QgY2hhciogZGF0YUFz
Q2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEoKSk7IH0KICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsK
QEAgLTI4Nyw3ICsyOTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZEJ1ZmZlcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKQEAgLTM1
OSw3ICszNjIsNyBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVu
dD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3KFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7IH0KQEAgLTM3MCw3
ICszNzMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4g
Y3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPERh
dGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBt
X3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAg
IGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCA4ODY5MWRjMjU2ZDZkZDZjNDVmNDZlMDE1NDk2NzQyNDVhYTM1MzM3Li5jOTU4Zjg0NGRhYzE0
Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhhODEyOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aApAQCAtNTEsOSArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
dW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIC8v
IFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEsIGxlbmd0aCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSB7IFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJD
b3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBl
YzBhN2FjZjQ3MzI2MWM3NGU3ZWVmZmFkYzljY2MzYzNlNTdmMjI4Li43NzA4YTU4ZDJiNTgwOGI5
NDAwMmQyMDVlOThhMjdiYjJjZTZmMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBX
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpCiB7CiAgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2UpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKaW5kZXgg
Y2RmMTQzZjNjM2NkZTk3MWZkNzlkY2Y3MzI4YmZjZDdiMzI2MDJkYy4uNjI2N2JlMDBjNTRlZTYx
NzAyZmI3N2IyYTVmYjU2N2IyN2ViOWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGY5MjFmM2RhMGU2OWIzMzk5NzdjOWUz
ZTQ5NjY3YTI4ZjVlOTVjYmQuLjcyNjQ3MjVjOGU1NjIyZGYzOGI0NWJjZDk5YWM3ODc1NWI5ZWI4
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENhY2hlZFJhd1Jl
c291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmlu
YWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90
KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQg
ZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKQEAgLTEzMCw3ICsx
MzAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTgogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hl
ZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIENhY2hl
ZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKCZyZXNvdXJjZSA9PSBtX3Jl
c291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkp
CkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQg
bG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBs
b2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVk
KCk7IH0KQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6bG9hZEZpbmlzaGVkKCkKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9p
ZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fYnVmZmVyLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIpOwogICAgIG1f
cGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwCmluZGV4IGJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQyYmU0ZTJiZDEx
YWE4NDMuLmUyM2U5OGQ2MDdhMDAyOTczNmMwMzNlOWQzNDg0NjM3Y2U5MzZmMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwCkBAIC0zNiw5ICszNiwxMCBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3Vy
Y2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVz
b3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDbGll
bnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJl
c291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogYnVmZmVyKQorICAgICAgICBkaWRSZWNlaXZlRGF0YShoYW5k
bGUsIGVsZW1lbnQuc2VnbWVudC5nZXQoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmgKaW5kZXggYzRmMDU0ODVmMjg3MGIxMTZkYTdjNzYwZDNjMGZjZTk2ZWMyYjRhNS4u
ZTQ0MmM5NzM0YzExOTg0OTBhMWM2Y2FjNTc3MjVmZDUxOTZiM2JiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApA
QCAtNDQsMTMgKzQ0LDE0IEBAIE9CSkNfQ0xBU1MgTlNDYWNoZWRVUkxSZXNwb25zZTsKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3Jl
ZGVudGlhbDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBOZXR3b3JrTG9h
ZE1ldHJpY3M7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogZW51bSBDYWNoZVN0b3JhZ2VQb2xpY3kgewogICAgIFN0b3JhZ2VBbGxvd2Vk
LApAQCAtNjUsOSArNjYsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERh
dGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5z
aWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVu
c2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwotICAgIAorICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9j
a2VkKFJlc291cmNlSGFuZGxlKikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRjMDQy
MTBjNWE1MTNhYzNmNTQ3MTQ2ZDlmODVjODJiZDg4MTM3NzYuLjMwYjRiYjBmZGFlZjdhZTJjYzc0
YWM2MDlmN2IwMDk5N2U1YTZkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCkBAIC03MSw5ICs3
MSw5IEBAIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZUFz
eW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
IH0KIAotdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCAvKmVu
Y29kZWREYXRhTGVuZ3RoKi8pCit2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQg
LyplbmNvZGVkRGF0YUxlbmd0aCovKQogewotICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3Ro
KTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQog
CiB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50
LmgKaW5kZXggNjgzOGU5ZDhjZjQzNzk2ZDJmMzk0YmExZjU0ZjA5ZDBiNjdlOGFiZC4uYzRjYjcy
ZGM3YTY1NWZkMzY5NmEzMzNmZTA1Y2RlZDYyOTc2YWZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaApA
QCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKKwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWUgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlKTsg
fQpAQCAtNjYsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3lu
YyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCov
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgU2hhcmVkQnVmZmVyJiwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNF
X0FVVEhfQ0FMTEJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggZmMyNzI1
NDA4OTJiOGUyY2Q3N2RlOGY2ZDllNTRhOGM4YjU5N2Y2MS4uMTk4MTRhMzY1YzlmNjYxYTIxYzIy
OWFkYmQwNDYxMWMyMDk0N2U2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAt
MTMyLDcgKzEzMiw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNl
VG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAKICAgICAgICAgICAgIHNp
emVfdCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlciA9IHN0ZDo6bWluKGJ1ZmZlclZpZXcuc2l6
ZSgpLCByYW5nZS5lbmQgLSBieXRlSW5kZXggKyAxKTsKICAgICAgICAgICAgIGJ5dGVJbmRleCAr
PSBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcjsKLSAgICAgICAgICAgIFt0YXNrIHJlc291cmNl
Om51bGxwdHIgcmVjZWl2ZWREYXRhOlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGJ1ZmZlclZpZXcsIGJ5
dGVzRnJvbVRoaXNWaWV3VG9EZWxpdmVyKS5jcmVhdGVTaGFyZWRCdWZmZXIoKV07CisgICAgICAg
ICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpTaGFyZWRCdWZmZXJEYXRh
VmlldyhidWZmZXJWaWV3LCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcikuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpXTsKICAgICAgICAgfQogICAgICAgICBpZiAoYnl0ZUlu
ZGV4ID49IHJhbmdlLmVuZCkgewogICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2VGaW5pc2hlZDpu
dWxscHRyIG1ldHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CkBAIC0yMzgsNyArMjM4LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikgZmluYWwKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgZmluYWwKICAgICB7CiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCkBA
IC0yNDYsNyArMjQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJh
dG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFwcGVuZChidWZmZXIpOwogICAgICAgICBtX2dlbmVy
YXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCmluZGV4IGY5MDk2ZWUyZTlmMjQyZmYwNGQ3MDVjMmFh
MTA5M2E1NWU1NzM1ZGIuLmVhNGE5YmYyOTc4MjllYmQwMjkxNDc2Y2JmOGE3ZTU0OTQ3MjEyNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCkBAIC0xNTgsNyArMTU4LDcgQEAgV0VCQ09SRV9FWFBP
UlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZCly
ZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVT
ZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZClyZXNv
dXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBy
ZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25z
ZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91
bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcmVz
b3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
c2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVz
cG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpZGF0YTsKKy0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZXRhaW5QdHI8
TlNEYXRhPiYmKWRhdGE7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAo
dm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5t
bQppbmRleCA1ZTJlOGU4ZDlkNzY2NzJhMjQxNGY3NmY1YzA4ZjI1OWUwMjlmNTA0Li4zYzhiZTA4
YzI5MzRlNTRkYTNiNzQ5Y2E2ZGEzNGVkYTk2ZGM5YjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tCkBAIC02MDgsNyArNjA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
KSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0
YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25l
ZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTY1MiwxMyArNjUy
LDEzIEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91bGRDYWNo
ZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0dXJuIFttX3Rhc2sgcmVzb3Vy
Y2U6JnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwogfQogCi12b2lkIFdl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAoIW1fdGFz
aykKICAgICAgICAgcmV0dXJuOwogCi0gICAgW21fdGFzayByZXNvdXJjZTomcmVzb3VyY2UgcmVj
ZWl2ZWREYXRhOldURk1vdmUoYnVmZmVyKV07CisgICAgW21fdGFzayByZXNvdXJjZTomcmVzb3Vy
Y2UgcmVjZWl2ZWREYXRhOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKV07CiB9CiAKIHZvaWQgV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpyZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTkzMSwxNSArOTMxLDE0IEBAIC0g
KEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2Fj
aGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5KCk7CiB9CiAKLS0gKHZvaWQp
cmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhCistICh2b2lkKXJlc291
cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmV0YWlu
UHRyPE5TRGF0YT4mJilkYXRhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291
cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxl
Z2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdU
Rk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKLSAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0
ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CisgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291
bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gW2RhdGEgbGVuZ3RoXTsKICAgICAgICAgaWQ8TlNVUkxTZXNz
aW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVn
YXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0
YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFz
azpkaWRSZWNlaXZlRGF0YTopXSkKLSAgICAgICAgICAgIFtkYXRhRGVsZWdhdGUgVVJMU2Vzc2lv
bjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uIGRhdGFUYXNrOihOU1VS
TFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkUmVjZWl2ZURhdGE6bnNEYXRh
LmdldCgpXTsKKyAgICAgICAgICAgIFtkYXRhRGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNz
aW9uICopc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRh
VGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkUmVjZWl2ZURhdGE6ZGF0YS5nZXQoKV07CiAgICAg
fV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAxZjRhMTkzMTMzMTJj
NWRkNmE0OGFkNTMzOWRmZDJjM2I1ZGVjMjU3Li4wZmU2NWEyOWU2MzYxNmRiNDJmN2M5ZWExZDE4
NTIyMWMyMDA0MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zMSwxMiAr
MzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gewog
cHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1
bHQ7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0K
aW5kZXggMzE1ZTA2NTE1MzBkY2RiMDI4MDE2NTRiNzU3ZDgxNDczYzIwZmQzMC4uYWU3MTU1ZWNl
ZjM1ZDNlMTg4OGQ5MTY1NjQ1N2UzODExNTlkZjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpAQCAtMzAw
LDcgKzMwMCw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVj
dGlvbiBkaWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YSBsCiAgICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTMKICAgICAgICAgLy8g
LTEgbWVhbnMgd2UgZG8gbm90IHByb3ZpZGUgYW55IGRhdGEgYWJvdXQgdHJhbnNmZXIgc2l6ZSB0
byBpbnNwZWN0b3Igc28gaXQgd291bGQgdXNlCiAgICAgICAgIC8vIENvbnRlbnQtTGVuZ3RoIGhl
YWRlcnMgb3IgY29udGVudCBzaXplIHRvIHNob3cgdHJhbnNmZXIgc2l6ZS4KLSAgICAgICAgbV9o
YW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSwgLTEpOworICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRp
ZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwg
LTEpOwogICAgIH07CiAKICAgICBbc2VsZiBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6V1RGTW92
ZSh3b3JrKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAw
OGQwNTdiYmI1ZjE3YzIwNDViZmY5MDZmZjVhZGE4NWYxMDQyOTMwLi5hMzJhZmY2ZWZlMWUwZGFi
MTljNWRiMWZlYjNiNzY3ZmUzNjBhNmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKQEAgLTU0Niw5ICs1NDYsOCBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFn
ZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIEFTU0VSVChsb2Fk
ZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8vIERvY3VtZW50TG9hZGVyIHNob3VsZCBoYXZl
IGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgpLgogICAgICAgICBsb2FkZXIuYWN0aXZlRG9j
dW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiKTsKICAg
ICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgp
KTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1bWVudAotICAgICAgICBkYXRhKCktPmZvckVhY2hT
ZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICBsb2FkZXIuYWN0aXZlRG9j
dW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5z
aXplKCkpOwotICAgICAgICB9KTsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogKmRhdGEo
KSkKKyAgICAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5h
ZGREYXRhKGVsZW1lbnQuc2VnbWVudC5nZXQoKSk7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1
bWVudExvYWRlcigpLT53cml0ZXIoKS5lbmQoKTsKIAogICAgICAgICBmcmFtZS5kb2N1bWVudCgp
LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA4MmEyYThjNGIx
OGFjY2U3OThiMjdjMmM4ZDAwOTU4OWZmNzVjYmE4Li40ZThhYjc4MWE0MDYxYWIxOGM1MDMzNzNi
ZGEzOGY2YzU1ZDhhMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuY3BwCkBAIC0xMTUsMTIgKzExNSwxMiBAQCB2b2lkIFdvcmtlckZvbnRM
b2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgUgogICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogfQogCi12b2lkIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgpCit2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAgICAgaWYgKG1fZXJyb3JPY2N1
cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVu
Z3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV29ya2VyRm9udExv
YWRSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGRh
YjczZmM3YjFhOTNlZDRlM2ZlYjMxZDY3MDk4ZDk5YjUxNzZhMzkuLjdjYmFhOGU1NTEwYzhjNGZj
YWYyZWI5MmM2ZjczYjNkMmExMmM2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNXb3JrZXJGb250TG9hZFJlcXVlc3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCBiZjVhNDRmZTM0OGQyZmZj
ZTkxNmZiMTk0OTE1ZTY3YmZkYTlhZWMxLi5jZDI2ZWNkNmEzN2E3ZWQzOWZmNzFlZGRhMzVlOGVm
YTkwYjM3YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICAg
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiB9
CiAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuKQordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVzZVN0ckxlbikKIHsKICAgICBpZiAo
bV9mYWlsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMiwxMyArMjEyLDExIEBAIHZvaWQgV29y
a2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuKQogICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRl
KCJ0ZXh0L2phdmFzY3JpcHQiX3MsICJVVEYtOCIpOwogICAgIH0KIAotICAgIGlmICghbGVuKQor
ICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYg
KGxlbiA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEpKTsKIAotICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShk
YXRhLCBsZW4pKTsKKyAgICBzaXplX3QgbGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7Cisg
ICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGxlbikp
OwogfQogCiB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5oCmluZGV4IGVhYWJlMWVhNWQxM2IzM2Y5YzNjYzY2ZGQ0OTU1N2Vi
NjllMzdlZmMuLjBiYzNhMDI1YjM2NzllMjU2MzA4NjI0ZWVlYmE4OWRjY2M0NWM4MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtNzksNyArNzks
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJl
dHVybiBtX2Vycm9yOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJv
b2wgdXNlU3RyTGVuKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGZiYTM2
MzIyYjI5YTZkNWI3OTdiMzllZGMzYzNkMTcxMjRiM2I1YmMuLmNlMzcwOTY4OWQ5ZjA5MjFlMDkw
M2EwMzc3ZGIyNjhhNTQ1MGIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24o
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4m
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCmluZGV4IDliMTEyYjlkYjJjZDg0ZDAzMmY1OWRhZmE4ZThlMzhlMDcw
ZTUzZjcuLmRjM2FlYThjYWQ5ZDA5NmI0MmJjYTY1YjI2MTIzMmYxMzc0M2QxZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTAzNCw3ICsxMDM0LDcgQEAgUmVmPFRl
eHRSZXNvdXJjZURlY29kZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVEZWNvZGVyKCkgY29uc3QK
ICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVU
Ri04Iik7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBsZW4pCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pCiB7CiAgICAgaWYg
KG1fZXJyb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNTIsMTcgKzEwNTIsMTYgQEAgdm9pZCBY
TUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bikKICAgICBpZiAodXNlRGVjb2RlciAmJiAhbV9kZWNvZGVyKQogICAgICAgICBtX2RlY29kZXIg
PSBjcmVhdGVEZWNvZGVyKCk7CiAKLSAgICBpZiAoIWxlbikKKyAgICBpZiAoYnVmZmVyLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAgbGVu
ID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKKyAgICBzaXpl
X3QgbGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CiAKICAgICBpZiAodXNlRGVjb2RlcikK
LSAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEs
IGxlbikpOworICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNv
ZGUoYnVmZmVyLmRhdGEoKSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBi
aW5hcnkgZGF0YS4KLSAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5kKGRhdGEs
IGxlbik7CisgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChidWZmZXIpOwog
ICAgIH0KIAogICAgIGlmICghbV9lcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aAppbmRleCAyZDEzYmVjMzk0NjQ0OGI5YjRmOTI1ZDMyYmQ4NmJhMmQ4MDM3NzVhLi42YmYxOWY4
MmJkMmZmNzY3MDdkYTQ1NzE0NzUwN2U5OTFkMjQ2NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaApAQCAtMTYyLDcgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhyZWFkYWJs
ZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5
dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgbm90aWZ5SXNEb25lKGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IDYxN2Y0NzY4
OTU2NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJkZjYuLjdmNTEyYzZjMTFhOGU3MTA4Y2YwMDYy
YjU4NGQyN2I1ODkwOGQxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApA
QCAtOTYsMTAgKzk3LDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQodWlu
dDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAgIG1fY2xp
ZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQog
Ci12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2
ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkKLSAgICAg
ICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7CisgICAgICAg
IG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEpOwogfQogCiB2b2lkIFJlbW90ZU1l
ZGlhUmVzb3VyY2U6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZS5oCmluZGV4IDViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJlNzE3MThhMTY3
Mzc1ZTcuLjk1MTA2ZjY3MjI3M2I0NWYwYTI0YTQ3YTFhMmJkZDE0MDllMGY0MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
aApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0d29ya0xv
YWRNZXRyaWNzOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Nyw3ICs1OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQ
b2xpY3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lk
IGRhdGFTZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgYWNjZXNzQ29udHJv
bENoZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxv
YWRGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZp
bmlzaGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
aAppbmRleCA3MWZkMDIyMjliYmIxYzU3MzI2ZmRmY2ZlMjZjMTFmNzYxYWJjZjcyLi4wNTRiODkz
ZTExMTEwZGNmOWE3MDAyNTJmNGY3OTViMDFhNTg3YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaApAQCAt
NjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3Jl
ZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNy
ZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUg
eyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTU4NjA5MWVhMDA0
MWI2ZjE1ODY5ZDQyYmJkYTcyNDMyOTc2OTBlYy4uYmE4ZDA0OGY2NWRjMzM5ODRmMGNkNDc2MzVh
YjkxMDE4NzliZDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTIwLDcgKzEyMCw3
IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5
QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCit2b2lk
IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJl
Y2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCA1MDVhNGVmZTU3MWQ0ODll
NTBhOTg4YmViODE4NWI3ZmVhYjNkYjEwLi4wY2IzMTVmZDhmZjUzMTk5MTU3ZGU3OGY4NDUyZDcx
YzRmNWUyOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03MSw3
ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBS
ZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNo
YWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRM
ZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgK
aW5kZXggNGI5ZWU1NzRiOTJjN2MzNzE3YTRiYzI4MTlhNmJlM2ExOTA2NTcxNS4uZjQ3OWUwOTAy
YjIxNzkyOTU1ZDM3NjgxNGIyMWM4OWZmNTVkYjU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1NlbmQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggOGMx
MDRkODE2MGI3YWFmZDA5OTcxNWRhNmQ0ZTZmN2M0NjM3ZmEwOC4uNjBiNjlhOTM2YmI3OGRmMjUx
MDc0OWM3NTRmZTZhYTIyOTNmZTAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5jcHAKQEAgLTI1NCwxMSArMjU0LDEwIEBAIHZvaWQgTmV0d29ya0xvYWQ6
Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5l
Z290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVz
cG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xv
YWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2Rl
ZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgotICAgIGF1dG8gc2l6
ZSA9IGJ1ZmZlci0+c2l6ZSgpOwotICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVCdWZmZXIo
V1RGTW92ZShidWZmZXIpLCBzaXplKTsKKyAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlQnVm
ZmVyKGJ1ZmZlciwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZENv
bXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBlNmE3NjExNTk2MmI5NjU5ZTdiZmU3
OGM2ZjRkYzZmNTMxMmIzY2JlLi4wZTRjMWFlNDkyM2MzMzdmNWNmOWIwYTQwOGI1YTg4MjI5ZjU5
NjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCkBAIC04
MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0
ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRf
dCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENs
aWVudC5oCmluZGV4IDM0OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1NGQzOWUuLjhh
Mjg1ODI2MTEzZjlkOGVlNjYwZGI2ODhiM2M1MzkzZmY5N2IyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKQEAgLTUxLDcgKzUxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM2YWNjNjMxNDVmNDA1YjE5NTVkMzM1NDBkYWE3MDhm
OWE2MjkzNDEuLmU2ZmQyYWM3MGVjN2UwZTc1OTBhZGUyNzJlMTQyN2ZjZTk2ZGRlNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTg2MywyOSArODYzLDI5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4CiAg
ICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1JlY2VpdmVkKQot
ICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQgcmVj
ZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCk7Ci0gICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGJ1ZmZlci0+c2l6ZSgp
OworICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJl
Y2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpOworICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZmZXIuc2l6ZSgp
OwogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAogICAgIGlmICht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0
aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4g
dGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9
IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JD
YWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQot
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsK
KyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLnNpemUo
KSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblBy
ZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1Mg
WCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KLSAg
ICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgg
Pj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKKyAgICB1
bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0g
MCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXIuc2l6ZSgpOwogCiAgICAgaWYg
KG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLmFwcGVuZChidWZmZXIu
Z2V0KCkpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAg
bV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAg
ICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTEyNzMsNyArMTI3Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdU
aW1lckZpcmVkKCkKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0K
IAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzU3luY2hy
b25vdXMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGNmMTBjZjBlNzFhMWJjNjU1NDBlODdkNmJhNGMxYjlj
ODU2YzBhMWQuLjgxN2FlZjI2YzgzNmMzNGE3ZDQ0ZWU3Y2M5NWVkZDlhMjk4ZDZhNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWxsb3dlZFRvQXNr
VXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fz
a1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCBidWZm
ZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgc2Vu
ZEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVu
Y29kZWREYXRhTGVuZ3RoKTsKIAogICAgIHZvaWQgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7
CiAgICAgdm9pZCBpbnZhbGlkYXRlU2FuZGJveEV4dGVuc2lvbnMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggYmMyYzMzN2U0ZWVlMDFhZjgzZTEzNjcy
MzE3YTlhOWVhYmM3YzZmOC4uZjBlZmQwNGJiMmUxOGY2ZjNjYmMxNjNmYWYyM2RhMDQ2NmJlZTU0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTE3Miw3
ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlzaCh7IH0sIHJl
c3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKQogewogICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmgKaW5kZXggZTc4MDhkOGU2NTU4MmY3OTM4ODgyOGQ1MTc1OGNiMTkzY2Y1NWZjNy4u
YjIyNWM0N2I5NGFmYTBiNDRlZGMyNjcwZGZjNThhZDdhZmM5MTQxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1
aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5k
KSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggMTdkNDc5MDdhM2Y2ZWU1
MmJlNjUwMWQxZGFiMGNhNjA3NTFkNmIwYi4uYWFhZTJiZmJkZjgzYTM5YWNlYzA2M2ZlYjI0NDYx
NmRjODQ4ZWRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVj
b25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb20KICAg
ICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgUHJl
Y29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0VGFzazo6
ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggODU4
MDhlMTIxYjY4Y2E4YjczZTI1MThkMTkzYWIzOTU4MWVhZDFlNy4uOGM2YjBkZWVkNjZjNTEwMTli
ZTg5ODRlZDViODdlMGMxZDc5MGY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0
ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAKaW5kZXgg
MjVkNGUzN2Y5NDU0YmVlMzJmMDRkOGNjOGM0NzFkNWQzZjdlZDgyYi4uOGM4ZGMzNmIxZTUzOTM4
ZjgxZWI0YWJhYWZmMDE5MGYyYjU0ZWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRG93bmxvYWRUYXNrLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRvd25sb2Fk
TWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMu
aCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCkBAIC0xNzMsNyArMTc0
LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpzdGFydCgpCiAgICAgZG93bmxv
YWRQdHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwog
fQogCi12b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgU2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAg
IEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrLmgKaW5kZXggYWI1OWVhZTUyNjY1MzA2MjEyYTI4ZTkzMjNhMmI4YjRmZmUw
Yzc4Zi4uYjg5YWIzZWJkNzYyZjY4MTJhNWU5N2JmZjY5MGJhOTBmMDI1N2ZjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oCkBAIC0zNyw2ICszNyw3IEBACiAK
IG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRC
dWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY2LDcgKzY3LDcgQEAgcHJp
dmF0ZToKICAgICBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrKE5ldHdvcmtTZXNzaW9uJiwgTmV0
d29ya0RhdGFUYXNrQ2xpZW50JiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgRG93bmxvYWRJRCk7CiAKICAgICAvLyBJUEMgTWVzc2FnZQotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBk
aWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2Fn
ZXMuaW4KaW5kZXggMWQzYmZiN2NjMzEwOTc5OWNjODAwMWJiYTcxZDg5YzBmNmYyZDkyZi4uNTBk
MmI0MmE3MWIwZWRhYjc5ZmJjZTlkZGI5ZjE5OTgyZGI1MzU5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9h
ZFRhc2subWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KQEAgLTI0LDcg
KzI0LDcgQEAKIAogbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckRvd25sb2FkVGFzayBOb3RSZWZD
b3VudGVkIHsKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCi0gICAg
RGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZv
cm1EYXRhKElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2goKQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDRlNzkxOWIzZGRj
MDJhZTE0ZDBlZDk2ODRiOGM2OGJiNmYyOGE0MzQuLjFiNzM5YmYxOTg0MGIwZjU4YzA4MWM2ZTk4
ZjhjY2UxNmEzNGE4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgpAQCAtMjI1LDEz
ICsyMjUsMTMgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpwcm9jZXNzUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBib29sIG4KICAgICAgICAgbV9sb2FkZXIuc2V0
UmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50
NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVu
Y29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2lzRG9uZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQVNTRVJUKCFtX3RpbWVvdXRUaW1lciB8fCAhbV90aW1lb3V0VGltZXItPmlzQWN0aXZl
KCkpOwotICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJl
Y2VpdmVEYXRhIHsgZGF0YSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CisgICAgLy8gc2VuZFRvQ2xp
ZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBl
bmNvZGVkRGF0YUxlbmd0aCB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpk
aWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZm9ybURhdGEp
CkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9k
eUZyb21QcmVsb2FkZXIoKQogICAgICAgICAgICAgZGlkRmluaXNoV2l0aE1ldHJpY3MobV9wcmVs
b2FkZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotICAgICAgICBkaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UgeyBjaHVuay0+
ZGF0YSgpLCBjaHVuay0+c2l6ZSgpIH0sIGxlbmd0aCk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRh
KFJlZiB7IGNvbnN0X2Nhc3Q8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciY+KCpjaHVu
aykgfSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmgKaW5kZXggYzM0NTgwMjY3ZmIzMjY5ZTZkY2JkY2VmYzM0ZDA2ODJjNmEwODg2Yy4u
NTIyNWU1NDU5OTk1MWQ4ZjgxYzcwYWY4MmViYmEyNjg5ZTM1MDA2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBJUEMg
ewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVy
ZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTkzLDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFNob3VsZFNldFNvdXJj
ZSA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmlu
aXNoV2l0aE1ldHJpY3MoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCmluZGV4
IDE4ZTYyOWYwZDE0NmVkMmQ0MjlkYjFiYTI4NzAxZTgzZmI5NmU2MmYuLjdkYjUzZTliZDAzODA0
NTQ3M2EyNWFmMzdkNDdjMTk1Nzk1ZTIzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2Vz
IC0+IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgTm90UmVmQ291bnRlZCB7CiAgICAgRGlkRmFpbChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAgRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgp
CisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2goKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggNWQ5YmQzMzMzOTIx
MWNhMWNkNDQ3Yjg3OTJmNTQ2MWVhODdlZGRmNC4uZTU2NTRjYzMxMzliNDlkNjFhOTg1MTNjZDAx
NmJlY2Y3MzliYmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNw
b25zZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFjayhi
dWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAg
ICAgICBtX2JvZHlDYWxsYmFjayhSZWZQdHIgeyAmYnVmZmVyIH0sIHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuaAppbmRleCA2N2FiYzU1YzYwZmYyNGUzOWRkMDRlY2M1MDIxYjYwNWVlOGJlYmIxLi42ZWRi
NTYxOGRjYzQ3YTYxYWQwNzUyMzc4NTQ5OWZlZGUwODQ3YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTQsNyArNTQsNyBA
QCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgp
PjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVz
aW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZv
aWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CkBAIC03MSw3ICs3
MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDdh
MjYyMjE5ZGU3OGIyMzVkMTI1YTkyYjZlMjM2ZDMzMjYyZjdhMjcuLmQ5ZDc0NzUyNTMyZjE4OWVi
MWJlMmMwM2Q3ZTI5ZTg1OWU4OTZlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJlc291cmNlRXJy
b3IgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnByb2Nlc3NSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlmICghbV9yZXNwb25zZUVu
Y29kaW5nLmlzRW1wdHkoKSkKQEAgLTE4Niw4ICsxODYsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4KICAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0
ZSgidGV4dC9qYXZhc2NyaXB0Il9zLCAiVVRGLTgiKTsKICAgICB9CiAKLSAgICBpZiAoYXV0byBz
aXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXIt
PmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOworICAgIGlm
ICghYnVmZmVyLmlzRW1wdHkoKSkgeworICAgICAgICBidWZmZXIuZm9yRWFjaFNlZ21lbnQoWyZd
KGF1dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXIt
PmRlY29kZShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKKyAgICAgICAgfSk7Cisg
ICAgfQogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDQ0ZmMwNjg1ZmEwZmVk
Yzg3NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEuLjdlODE4ZjM0MTNkYTI5Zjg2MWUxMDAzOTkxZThk
NTM4OTIzNDZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRU
b0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
ZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAKaW5kZXggNDFkODIzNTAyNDc0N2I2ZmM0YTNhYzU0OGUxMzM0ZWQ2Y2I1ZWY3YS4uODE0
ZWIzMjBkNGU3NDhhMjlhZTA5MTM1YWZjMWRhNWYzNzUxNWVmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBTcGVjdWxhdGl2
ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNw
b25zZSwgUmUKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAK
LXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lk
IFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQog
ewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0
cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6
ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAg
ICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXIuc2l6ZSgpIDw9
IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLmFwcGVuZChidWZmZXIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmgKaW5kZXggMWI4NDNkYjdlYzI3MGRiOWRhYjllOGEyNWYyYTQ4YThlY2FlMmE4YS4uOWFkY2E2
MDVlNzI4MGJiN2IzNGNlNzQ0ZDg3ODhiYmI0NDg5MjRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmgKaW5kZXggNDE2NjhhNWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVjYTkwN2VkYy4u
MDc3MmFmMWE4NmQyMjQxN2JmMTFmMTZiZDZiN2I1ODBmZTU3YTdhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TTXV0YWJsZVVSTFJlcXVlc3Q7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYyLDcgKzYzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFVSTCYpOwogICAgIHZv
aWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZv
aWQgdHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0KaW5kZXggNDc3MWZkZTkyMGQ2Yjk4ZTgzZmMyOWRkM2FhZjk3YTBhNmQ5YTg4
MC4uNjQ5YjVjYTc4YzY4NzVlY2RlMGQzZDQzNmY5NTkwZGI1MTc5ZDBiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCkBAIC00NDMsMTIgKzQ0MywxMiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29h
OjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcgog
ICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5ldHdvcmtMb2Fk
TWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdv
cmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7Ci0gICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNr
IiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7CisgICAgV1RGRW1pdFNpZ25w
b3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEu
c2l6ZSgpKTsKIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKFdURk1vdmUoZGF0YSkpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEo
ZGF0YSk7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lU
TFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmgKaW5kZXggMTdmMDhjMjhlYTEyNWI1NTA5OTNlZWQyNGQ1OTYzYjg1MTBh
MTE0MS4uZjlmYTIyMTFiNGI3MDdiNWIxNjE4MzUxZTA2ZDYyZGU0MDEwZjQyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMjgsNiArMjgs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTUzLDYg
KzU0LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZm
ZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCisgICAgLy8g
VE9ETyA6IHRob3NlIGNhbiBnbyBhd2F5LgogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAg
c2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkg
OiAwOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1
ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAK
aW5kZXggOWNkZWQ5NjkzNTE1Y2JkYjkyNWY1OTU0YTE2ZjRiYWYwNjdhMzE2Mi4uNmMxOWJjOWJh
YjY0MTAzMzMwMDczYjQxYzVhZTFkOGVkMDFjM2I3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRS
ZWFkZXIuY3BwCkBAIC0xODUsOSArMTg1LDkgQEAgdm9pZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlk
UGFyc2VUcmFja3MoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb24KICAg
ICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYXJz
ZVRyYWNrc0xvY2sgfTsKLSAgICBBU1NFUlQoIW1fcGFyc2VUcmFja3NTdGF0dXMpOwotICAgIEFT
U0VSVChtX2R1cmF0aW9uLmlzSW52YWxpZCgpKTsKLSAgICBBU1NFUlQobV90cmFja1JlYWRlcnMu
aXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fcGFyc2VUcmFja3NTdGF0dXMgfHwgKG1faW5pdCAm
JiBlcnJvckNvZGUpKTsKKyAgICBBU1NFUlQobV9kdXJhdGlvbi5pc0ludmFsaWQoKSB8fCAobV9p
bml0ICYmIGVycm9yQ29kZSkpOworICAgIEFTU0VSVChtX3RyYWNrUmVhZGVycy5pc0VtcHR5KCkg
fHwgKG1faW5pdCAmJiBlcnJvckNvZGUpKTsKIAogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUo
TE9HSURFTlRJRklFUik7CiAgICAgaWYgKGVycm9yQ29kZSkKQEAgLTIyMSw2ICsyMjEsNyBAQCB2
b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpJbml0aWFsaXphdGlvbgogICAgIH0KIAogICAgIG1fcGFyc2VUcmFja3NDb25kaXRp
b24ubm90aWZ5QWxsKCk7CisgICAgbV9pbml0ID0gdHJ1ZTsKIH0KIAogdm9pZCBNZWRpYUZvcm1h
dFJlYWRlcjo6ZGlkUHJvdmlkZU1lZGlhRGF0YShSZWY8TWVkaWFTYW1wbGU+JiYgbWVkaWFTYW1w
bGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJl
YWRlci5oCmluZGV4IDM3ZTRhZDQyNzZiMTJhZDUxNDNkYzIyOGNkZTk0NzYzODdlNWM4ODguLjY1
MDkzZTllNDZiNDBiNWEzOTc2ZmRlZjI5ZTYxM2M2NDUxZjMxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZv
cm1hdFJlYWRlci5oCkBAIC04Nyw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZjxN
ZWRpYVRyYWNrUmVhZGVyPj4gbV90cmFja1JlYWRlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3Bh
cnNlVHJhY2tzTG9jayk7CiAgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAg
Y29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworICAgIGJvb2wgbV9pbml0IHsgZmFsc2UgfTsK
IH07CiAKIGNvbnN0ZXhwciBNZWRpYUZvcm1hdFJlYWRlcjo6V3JhcHBlckNsYXNzIE1lZGlhRm9y
bWF0UmVhZGVyOjp3cmFwcGVyQ2xhc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcAppbmRleCBlMTI2NGNlMjFiYTU3ZjJhNDI3NDhlMzNhMWRhZDg4YTBl
MjU4YmMyLi5kNzY3ZmMwNmIzNmYxNTZmZjMxYzM4M2U2NDNkNDM0NGMyMTdhYWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMTY4LDcgKzE2
OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6
Ok5vbmU7CiB9CiAKLWF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCithdXRvIFdl
YlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSAtPiBFeGNlcHRpb25UeXBlCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApA
QCAtMTg3LDExICsxODcsMTEgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0
YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEUKICAgICBtX2RhdGFT
ZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBtX3N5bmNEYXRhLmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3N5bmNEYXRhLmFwcGVuZChidWZmZXIp
OwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0
YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBi
dWZmZXIuZ2V0KCkpLCBtX3dlYlBhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVy
LT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgYnVmZmVyKSwgbV93ZWJQYWdlSUQp
OwogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggZjZmZjQ2ZWVhNWYyOTBiN2I3ZTNmZTU5
MjFkZjlmMTk0YmFjZDExNy4uYzMyMzA2OWIxY2MwMzFmMDI1YjIyYzg1OWEzNTQxODhmZGQyMzcy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtODMs
NyArODMsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uVHlwZSB3aWxsUGVyZm9ybVJlZGlyZWN0
aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsICBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAg
RXhjZXB0aW9uVHlwZSBkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgRXhjZXB0aW9uVHlwZSBk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAg
IEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRDb21wbGV0ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHN0b3AoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZVByb3h5LmNwcAppbmRleCBiNTEzYTI2ODA4ZWFhMThlMzdmNGZkZjA0YTIzZDI5
NjBiMjczYjJjLi45MjM0YjVjNjUzZjkxZWJhOTEwZmJkZjliZTFlMjJhMDJjMTFjNjc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCkBAIC03MiwyMCArNzIsMTcgQEAgdm9pZCBSZW1v
dGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFTZW50KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIHVuc2lnbmUKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRhU2VudChtX2lkLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNU
b0JlU2VudCksIDApOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJl
Y2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2Vp
dmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5
OjphbGxvY2F0ZShsZW5ndGgpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5
Ojpjb3B5QnVmZmVyKGJ1ZmZlcik7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gc2hhcmVkTWVtb3J5UHRyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHNo
YXJlZE1lbW9yeS0+ZGF0YSgpKTsKLSAgICBtZW1jcHkoc2hhcmVkTWVtb3J5UHRyLCBkYXRhLCBs
ZW5ndGgpOwotCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIHNoYXJlZE1l
bW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
T25seSk7CiAgICAgLy8gVGFrZSBvd25lcnNoaXAgb2Ygc2hhcmVkIG1lbW9yeSBhbmQgbWFyayBp
dCBhcyBtZWRpYS1yZWxhdGVkIG1lbW9yeS4KICAgICBoYW5kbGUudGFrZU93bmVyc2hpcE9mTWVt
b3J5KE1lbW9yeUxlZGdlcjo6TWVkaWEpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGxlbmd0aCkgfSksIDApOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyLnNpemUoKSB9KSwgMCk7CiB9CiAKIHZv
aWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaAppbmRleCA0N2VhODY2NzFiMTNkMTM5
NWMzZGFkOWJkYTc5YWJmNjE2Y2JhMTc5Li45NDk0NjQ1MjJjMjYzZTZhNWU4MDczZjc0ZTlkMjQz
NGJhYTkzOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKSBmaW5hbDsKICAgICB2b2lkIGRhdGFTZW50KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBmaW5hbDsKLSAg
ICB2b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5h
bDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAg
dm9pZCBsb2FkRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAzMTBmY2E3ODc1YzMyYzNjZDc0NzhkYjY0
ZjU5YWMyY2Y1MDE2MzkyLi5lYzI1OTNiMDNlNjM2MmE3MmE0MzQ3ZDQzZGY2YzU3ZDU1ODc4NTY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtS
ZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5o
IgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC0xODksMTYgKzE5MCwxNSBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGJvbwogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlLCBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9p
ZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBp
bnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nl
c3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBzaXplICVsdSBmb3IgJyVz
JyIsIGRhdGEuc2l6ZSgpLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRh
dGEoKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVz
cG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUg
dmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0
Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7
Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJs
ZSB7CisgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlk
ZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIg
PSBkYXRhLmJ1ZmZlcigpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAg
ICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFM
ZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwNyw3ICsy
MDcsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgICAgICBXRUJSRVNPVVJDRUxPQURF
Ul9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEiKTsK
ICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS5zaXplKCk7CiAKLSAgICBtX2NvcmVMb2Fk
ZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIo
KSA/IFJlZiB7ICpkYXRhLmJ1ZmZlcigpIH0gOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlz
aFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmlj
cykKQEAgLTI5NSw3ICsyOTYsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZAogICAgIExPRyhO
ZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3Vy
Y2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEo
KSk7CiAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJj
ZToiKTsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5k
bGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJl
YWJsZVJlc291cmNlIHNlbnQgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzLiIpOwpAQCAtMzEyLDcg
KzMxMyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25z
dCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAKICAgICAvLyBPbmx5IHNlbmQgZGF0
YSB0byB0aGUgZGlkUmVjZWl2ZURhdGEgY2FsbGJhY2sgaWYgaXQgZXhpc3RzLgogICAgIGlmICh1
bnNpZ25lZCBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fY29yZUxvYWRl
ci0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgYnVmZmVyU2l6ZSwg
RGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNl
aXZlRGF0YShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgYnVmZmVyU2l6ZSwgRGF0YVBheWxvYWRX
aG9sZVJlc291cmNlKTsKIAogICAgIGlmICghbV9jb3JlTG9hZGVyKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaAppbmRleCBhMjJlNjJmMjhiNWZhNGNmYzkxYWE1ZTVjZTgyY2EyN2FlMjZhZDUzLi5h
YzU0MjJmYzA2NzEwYmQwZTA4N2UwZjQ0MDllZDk0MDE3YzBjZjE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTM5
LDYgKzM5LDcgQEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgw
LDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0
X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaFJl
c291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lk
IGRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAg
IHZvaWQgZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KaW5kZXggMDJhMTRmNTlhMzA0NzQ0YzJk
MTgzZWE3OWU5OWViYWViNGNmYmJhMi4uZGFhMjRkMjdjNzFhODNjZjdjMGYxNjhkYTI2YTQ5YjQ4
NzY5MjYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAg
bWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZWl2ZXIgewogICAgIFdpbGxT
ZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVj
dFJlc3BvbnNlKQogICAgIERpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc1RvQmVTZW50KQogICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZFJlY2VpdmVEYXRh
KElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQog
ICAgIERpZEZpbmlzaFJlc291cmNlTG9hZChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbmV0
d29ya0xvYWRNZXRyaWNzKQogICAgIERpZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBlcnJvcikKICAgICBEaWRGYWlsU2VydmljZVdvcmtlckxvYWQoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaAppbmRleCA4ZDJjNWYzZTI1Y2ExYTIzNzhlNWUzMDA1ZDc1NDkyYmVh
ZjBiMWVhLi4yYjdlNGQyYzIwZmRkMTk5ODgyNzJkYThiZmNjNWE2MTg2YzZkM2VlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC02
NSw2ICs2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBj
bGFzcyBFbGVtZW50Owogc3RydWN0IFBsdWdpbkluZm87CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTc2LDExICsxNzcsMTEgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJM
LCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsgfQogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50
MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAg
IHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGlu
Zyh1aW50NjRfdCBzdHJlYW1JRCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2
NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxT
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qg
c3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIG1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZp
bmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAg
IHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAg
Ym9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBmaW5hbDsKQEAgLTM2
Miw3ICszNjMsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdl
YkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBm
aW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmlu
YWw7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEZhaWwoV2Vi
Q29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBiNGViMTRmZjU3ZDky
NWJmNzBkOGE1YWRkMGViNTdhNzA5MTM4NWViLi5hMzAwMWQyZWFjZTY2Y2QwMzc4ZWIzYzQyYzA0
NDY4MDBkMGUxODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KQEAgLTk0LDYgKzk0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2Ny
b2xsQW5pbWF0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KQEAgLTExOTEsNyArMTE5Miw3IEBAIHZvaWQgUERGUGx1
Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShOZXRz
Y2FwZVBsdWdJblN0CiAgICAgfQogfQogCi12b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFt
TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciog
bG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgY291bnQpCit2b2lkIFBERlBsdWdpbjo6
UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
aWYgKCFtX3BkZlBsdWdpbikKICAgICAgICAgcmV0dXJuOwpAQCAtMTIwMCw3ICsxMjAxLDcgQEAg
dm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURh
dGEoTmV0c2NhcGVQbHVnSW5TdHJlYW0KICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHJlcXVlc3QtPmFkZERhdGEoZGF0YSwgY291bnQpOworICAgIHJlcXVlc3QtPmFk
ZERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBQREZQbHVnaW46OlBE
RlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJikKQEAgLTE3MTgsMTUgKzE3MTksMTUg
QEAgdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgVVJMJiwgdWludDMyX3QKICAgICAgICAgbV9pc1Bvc3RTY3JpcHQgPSB0cnVl
OwogfQogCi12b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQbHVnaW46
OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbUlELCBzdHJlYW1JRCA9PSBw
ZGZEb2N1bWVudFJlcXVlc3RJRCk7CiAKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRh
ID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAgIENGRGF0YUFwcGVu
ZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnl0ZXMsIGxlbmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5dGVz
ICs9IGxlbmd0aDsKKyAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCksIGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fc3RyZWFtZWRCeXRlcyArPSBidWZmZXIuc2l6
ZSgpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRf
dCBzdHJlYW1JRCkKQEAgLTE3NjMsMTQgKzE3NjQsMTQgQEAgdm9pZCBQREZQbHVnaW46OmVuc3Vy
ZURhdGFCdWZmZXJMZW5ndGgodWludDY0X3QgdGFyZ2V0TGVuZ3RoKQogICAgICAgICBDRkRhdGFJ
bmNyZWFzZUxlbmd0aChtX2RhdGEuZ2V0KCksIHRhcmdldExlbmd0aCAtIGN1cnJlbnRMZW5ndGgp
OwogfQogCi12b2lkIFBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6bWFudWFsU3RyZWFt
RGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFt
X2RhdGEpCiAgICAgICAgIG1fZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAw
KSk7CiAKLSAgICBlbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyArIGxlbmd0
aCk7Ci0gICAgbWVtY3B5KENGRGF0YUdldE11dGFibGVCeXRlUHRyKG1fZGF0YS5nZXQoKSkgKyBt
X3N0cmVhbWVkQnl0ZXMsIGJ5dGVzLCBsZW5ndGgpOwotICAgIG1fc3RyZWFtZWRCeXRlcyArPSBs
ZW5ndGg7CisgICAgZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aChtX3N0cmVhbWVkQnl0ZXMgKyBidWZm
ZXIuc2l6ZSgpKTsKKyAgICBtZW1jcHkoQ0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdl
dCgpKSArIG1fc3RyZWFtZWRCeXRlcywgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Cisg
ICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1ZmZlci5zaXplKCk7CiAKICNpZiBIQVZFKElOQ1JFTUVO
VEFMX1BERl9BUElTKQogICAgIC8vIEtlZXAgb3VyIHJhbmdlcy1sb29rdXAtdGFibGUgY29tcGFj
dCBieSBjb250aW51b3VzbHkgdXBkYXRpbmcgaXRzIGZpcnN0IHJhbmdlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDFkODQ0ODA1ZjRjMTBlOTNmZWRjYWJk
ZWVjMjFkZDM1ZGRmODgyMDIuLmU0ZDYyZjRiZWE5YmZjMmZhODBlZjRkNmU5MGM1Y2NmMDY3OTRm
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC01NCwx
MiArNTQsMTMgQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRWxlbWVudDsKIGNsYXNz
IEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRS
ZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNjcm9sbGJhcjsKLWNsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtMTYwLDcgKzE2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBk
aWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBw
bHVnLWluIHRoYXQgYSBzdHJlYW0gaGFzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2
b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpID0gMDsKQEAgLTE3
Myw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgdGhlIG1hbnVhbCBz
dHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVh
bSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlk
RmluaXNoTG9hZGluZygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNTM0ZGE1MmQ0N2Q2Mjg1MGUyMDVmZjllOTljMzBiMzdk
M2JjYmExMi4uZDZlMDMxZDY1ZWJiNDFkNGNiNGQzZDBjODYzOTY5NzVmNDU3Y2UxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIC8vIE5ldHNjYXBlUGx1Z2luU3RyZWFtTG9hZGVy
Q2xpZW50CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90Kiwg
aW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
YWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciopIG92ZXJyaWRlOwogCkBAIC0yMzUsOSArMjM1LDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpT
dHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNv
bnN0IFIKICAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UobV9zdHJlYW1JRCwgcmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0
ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVu
YW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkKK3ZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fcGx1
Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ5dGVz
LCBsZW5ndGgpOworICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVE
YXRhKG1fc3RyZWFtSUQsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpk
aWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIApAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBt
X3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJl
YW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJz
LCByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3Ojpt
YW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgp
Cit2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlm
IGl0IGZhaWxlZCB0byBpbml0aWFsaXplLgogICAgIGlmICghbV9wbHVnaW4pCkBAIC0zODIsMTEg
KzM4MiwxMSBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0luaXRpYWxpemVk
KSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0
YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFw
cGVuZChieXRlcywgbGVuZ3RoKTsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChi
dWZmZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wbHVnaW4tPm1hbnVhbFN0
cmVhbURpZFJlY2VpdmVEYXRhKGJ5dGVzLCBsZW5ndGgpOworICAgIG1fcGx1Z2luLT5tYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YShidWZmZXIpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRGaW5pc2hMb2FkaW5nKCkKQEAgLTExNzIsOCArMTE3Miw4IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRhLgog
ICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBtX21h
bnVhbFN0cmVhbURhdGEudGFrZSgpOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQg
OiBidWZmZXIuZ2V0KCkpCi0gICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxl
bWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKKyAgICAgICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQorICAgICAgICAgICAgbWFudWFsTG9h
ZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC5nZXQoKSk7CiAgICAgfQogCiAgICAgaWYg
KG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGY2NjMx
MmE4MGFjZDFlMDM1MzEwZGZhYTNhNWYzYTE3YjcyYWFlNTUuLjI1NjE1Y2IzMGYyMjY0NjM5MjQ0
NDg4ZjJiZDdjNDEyMjc5MDc5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNC
ZWluZ0Rlc3Ryb3llZCgpIGNvbnN0IHsgcmV0dXJuICFtX3BsdWdpbiB8fCBtX3BsdWdpbi0+aXNC
ZWluZ0Rlc3Ryb3llZCgpOyB9CiAKICAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgbWFudWFsTG9h
ZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2
b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBtYW51
YWxMb2FkRGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZWU0MGZiOTU4NWU3OWQ4NmIzY2Zk
MmY1NzllZDQ2ZTYxYjllYzYzZS4uMzE0ODJlYjNiMzY4ZDc4YTYxYTdlYzFkMjRjNTk4MTBiYzkx
ZWQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTcyLDcg
KzcyLDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJl
c3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0
Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAg
ICByZXR1cm47CkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAg
ICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7CiAg
ICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPiht
X3Jlc3BvbnNlRGF0YSkpCiAgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoKTsKLSAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNw
b25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBzdGQ6OmdldDxTaGFy
ZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV9pc0Rvd25sb2FkKQotICAgICAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2Vp
dmVEYXRhIHsgYnVmZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUo
KSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVy
LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmll
cik7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLmdldCgpLCBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAg
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6
ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4m
JiBmb3JtRGF0YSkKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4m
CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlk
UmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1faXNEb3dubG9hZCkKLSAgICAgICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0
YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNo
SWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0
PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICBlbHNl
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNo
VGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IGRhdGEsIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRf
dD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVm
ZmVyICwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50
aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZp
bmlzaEJsb2JMb2FkaW5nKCkKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICAgICAg
aWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNd
KGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZl
RGF0YSgqYnVmZmVyLmdldCgpKTsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmNvcHko
KS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAg
ICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGU5ODdlMTlhYzhiNzM4
ODcxYWFkODJiNGIzODU2Mjk2OGEyYjZjOWMuLjc3MmFlZTZmOTdhMDlhMDY2YWMxMTAyZDRjZGUy
NzAxNTJiY2Q4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTUw
LDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8
V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2goKSBmaW5hbDsK
QEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYW51cCgpOwogICAgIAot
ICAgIHZvaWQgZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qp
OworICAgIHZvaWQgZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImKTsKICAg
ICB2b2lkIGRpZEZpbmlzaEJsb2JMb2FkaW5nKCk7CiAKICAgICBzdHJ1Y3QgQmxvYkxvYWRlciBm
aW5hbCA6IFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50IHsKQEAgLTY5LDcgKzY5LDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICAvLyBGZXRjaExvYWRlckNsaWVudCBBUEkKICAgICAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFs
IHsgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKSBmaW5hbCB7IGNsaWVudC0+ZGlkUmVjZWl2ZUJsb2JDaHVuayhkYXRhLCBzaXpl
KTsgfQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkgZmluYWwgeyBjbGllbnQtPmRpZFJlY2VpdmVCbG9iQ2h1bmsoZGF0YSk7IH0KICAgICAgICAg
dm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7
IGNsaWVudC0+ZGlkRmFpbChlcnJvcik7IH0KICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmlu
YWwgeyBjbGllbnQtPmRpZEZpbmlzaEJsb2JMb2FkaW5nKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggMTRhMDgzY2EyMDdhOTA2M2NmODBiMWU3ZTk2NzBhNDg3Y2Y0
ZDM5OS4uZWQ0ZjVkZTlkNWU1NjE4ZDQzMjQ1NTA4MmY1ZGExODhhYmY5YmY0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTUyLDEwICsxMTUyLDEwIEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkKICAgICB3ZWJQ
YWdlLT5kaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudChtX2ZyYW1lKTsKIH0KIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7CiAgICAgaWYgKCFtX3BsdWdpblZpZXcpCi0gICAgICAgIGxvYWRlci0+Y29t
bWl0RGF0YShkYXRhLCBsZW5ndGgpOworICAgICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSk7
CiAKICAgICAvLyBJZiB0aGUgZG9jdW1lbnQgaXMgYSBzdGFuZC1hbG9uZSBtZWRpYSBkb2N1bWVu
dCwgbm93IGlzIHRoZSByaWdodCB0aW1lIHRvIGNhbmNlbCB0aGUgV2ViS2l0IGxvYWQuCiAgICAg
Ly8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgYmUgc2hhcmVkIGFjcm9zcyBhbGwgcG9ydHMuIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzQ4NzYyPi4KQEAgLTExNzcsNyArMTE3Nyw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
Y29uc3QgdWludDhfdCoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9oYXNTZW50UmVz
cG9uc2VUb1BsdWdpblZpZXcgPSB0cnVlOwogICAgIH0KLSAgICBtX3BsdWdpblZpZXctPm1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgpOworICAgIG1fcGx1Z2luVmlldy0+bWFu
dWFsTG9hZERpZFJlY2VpdmVEYXRhKGRhdGEpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggYmI1MjlkM2FlYzRlMmM3NWYxYTdkZTkxYjEwYjU1ODJkNDUy
MmI0Mi4uMWQzMGJjMzkzODNhZmZmMmNhOWMyODc1M2RkMmQ3ZWMyYjI2NDkxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBs
YWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAg
dm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhp
c3RvcnkoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IGEyMDVlMDAxY2E3MTU4MjA5MTNhODFhZTRhODM2NTMwZjlhMGY2NDguLjcyZTM1NTRj
OGUwYWE2OTBhNmVjNTc4MDE3NmYxOWUwYjhkNzBkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJQcmV2aWV3TG9hZGVy
Q2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IFN0cgogCiBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojp+V2ViUHJldmlld0xvYWRlckNsaWVu
dCgpID0gZGVmYXVsdDsKIAotdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFn
ZShtX3BhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaAppbmRleCAwZGMxNjdlNWI3YmMzYjAzZWYzOTMxZWFiMzU2Yzc4Mjc5Mjk1
MjllLi42NDliYzgzMTljMjc4NmYwMWQ2MTdjMTExOTlkYjBjNmMwNzdmYTcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgV2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEZhaWwoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzUGFz
c3dvcmRFbnRyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTQyZWRjNjIzYTRlNjUz
YmIxODhhZWUwNTA2NDRhM2Y0YTAzMmU4OS4uZjg5ZmY3MmEwZDMxYmVjMTFlZjgwMjk3ZWZiYTky
YzJhN2JjNjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKQEAgLTcwNTcsMTIgKzcwNTcsMTIgQEAgdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNr
RGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmQKICAg
ICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHRhc2tJZGVudGlmaWVyLCByZXNwb25z
ZSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYlVS
TFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSkKK3ZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdl
YlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyQ29weSYgZGF0YSkKIHsKICAgICBhdXRvKiBoYW5kbGVyID0gbV9pZGVudGlmaWVyVG9V
UkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuZ2V0KGhhbmRsZXJJZGVudGlmaWVyKTsKICAgICBBU1NF
UlQoaGFuZGxlcik7CiAKLSAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50
aWZpZXIsIGRhdGEuc2l6ZSgpLCBkYXRhLmRhdGEoKSk7CisgICAgaGFuZGxlci0+dGFza0RpZFJl
Y2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLmJ1ZmZlcigpID8gKmRhdGEuYnVmZmVyKCkg
OiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1cmxT
Y2hlbWVUYXNrRGlkQ29tcGxldGUoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxl
cklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTk0YjViOWQ3ZmUzMmYyNGE4NmRhYWFkNDQ4NDJi
MGNkZDBhZWIyZi4uNDg4NjY3MDdjNDYxM2Q5YTdjZDM1MjE1ZGZjYTkyM2M2OTc5YmViOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTg0LDYgKzE4
NCw3IEBAIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7
CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE4OTYsNyArMTg5Nyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB1cmxTY2hlbWVUYXNrV2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJVUkxTY2hlbWVIYW5k
bGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
KT4mJik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYlVS
TFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNw
b25zZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1l
SGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNr
SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCB1cmxTY2hl
bWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5Jik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkQ29tcGxldGUoV2Vi
VVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRp
ZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAg
ICAgdm9pZCBzZXRJc1Rha2luZ1NuYXBzaG90c0ZvckFwcGxpY2F0aW9uU3VzcGVuc2lvbihib29s
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IGIyNzIyOTQ3MWVhZTg2ZWU1OTgxOTgzZGQ1N2I1ZTdhODI5MWNkNGIu
LmJkYTVmNTBhZGQyM2E5Njc0MGU4OWQ3MzNkNzljMTg3ZjA1MmJlMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
NTY0LDcgKzU2NCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50
OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgVVJMU2NoZW1lVGFz
a1dpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRp
ZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcHJvcG9zZWRSZXF1ZXN0KSAtPiAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IGFjdHVhbFJlcXVlc3QpIEFzeW5jCiAgICAgVVJMU2NoZW1lVGFza0RpZFBlcmZv
cm1SZWRpcmVjdGlvbihXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRs
ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCBwcm9wb3NlZFJlcXVlc3QpCiAgICAgVVJMU2NoZW1lVGFza0RpZFJlY2VpdmVS
ZXNwb25zZShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCi0gICAgVVJMU2NoZW1lVGFza0Rp
ZFJlY2VpdmVEYXRhKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxl
cklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRp
ZmllciwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpCisgICAgVVJMU2NoZW1l
VGFza0RpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIg
aGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNr
SWRlbnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEpCiAgICAgVVJMU2NoZW1lVGFz
a0RpZENvbXBsZXRlKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxl
cklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKIAogICAgIFNldElzU3VzcGVuZGVk
KGJvb2wgc3VzcGVuZGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKaW5kZXggNmQ4ZDBjZjI3
ODRlZDMwNTY2MjVjN2Y2ZTg0NmE5M2E3MTFjYmFjZC4uNjE2ZWRhMDhmMGI4ZmNhYjJkNTdmYzQ3
NTMyOTEwN2I4MTVjZDIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCkBAIC05NiwxMyAr
OTYsMTMgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGUKICAgICB0YXNrLT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFz
a0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRl
bnRpZmllciwgc2l6ZV90IHNpemUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpCit2b2lkIFdlYlVSTFNj
aGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQog
ewogICAgIGF1dG8qIHRhc2sgPSBtX3Rhc2tzLmdldCh0YXNrSWRlbnRpZmllcik7CiAgICAgaWYg
KCF0YXNrKQogICAgICAgICByZXR1cm47CiAKLSAgICB0YXNrLT5kaWRSZWNlaXZlRGF0YShzaXpl
LCBkYXRhKTsKKyAgICB0YXNrLT5kaWRSZWNlaXZlRGF0YShkYXRhKTsKIH0KIAogdm9pZCBXZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRDb21wbGV0ZShXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHkuaAppbmRleCA1OGJlY2MxN2I1ZDg1OTg3NDk4ODRkMzAyNTE2
ODljY2NjMTc2OTNmLi5hYjIwYmQ1NzNhYTRhZmMxNTgwNTkwZjI3MDQ2NjMwMDY4Nzc0MGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHkuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBSZXNvdXJjZUVy
cm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB0YXNrRGlkUGVy
Zm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZv
aWQgdGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHRhc2tEaWRS
ZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIHNpemVfdCwgY29u
c3QgdWludDhfdCogZGF0YSk7CisgICAgdm9pZCB0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsK
ICAgICB2b2lkIHRhc2tEaWRDb21wbGV0ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIHRhc2tEaWRTdG9w
TG9hZGluZyhXZWJVUkxTY2hlbWVUYXNrUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKaW5k
ZXggMzYwNmJiZGM2NTIxNWRkY2E5MjYxM2E4MTA3ZGFiMWIxMWVjYjY1Ni4uOWU3MmQ4NGM5N2Rm
NmQyOTcxNGE4M2M1MWFjMTc3NjNlNWZiNjUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCkBAIC0x
NDAsMjEgKzE0MCwyMSBAQCB2b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIH0pOwogfQogCi12
b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEoc2l6ZV90IHNpemUsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEpCit2b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmICghaGFz
TG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb21wbGV0
aW9uSGFuZGxlcikgewogICAgICAgICBXRUJVUkxTQ0hFTUVUQVNLUFJPWFlfUkVMRUFTRV9MT0co
ImRpZFJlY2VpdmVEYXRhOiBSZWNlaXZlZCBkYXRhIGR1cmluZyByZXNwb25zZSBwcm9jZXNzaW5n
LCBxdWV1aW5nIGl0LiIpOwotICAgICAgICBxdWV1ZVRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBkYXRhVmVjdG9yID0gVmVjdG9yIHsgZGF0YSwgc2l6ZSB9XSB7Ci0g
ICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShkYXRhVmVjdG9yLnNpemUoKSwgZGF0YVZlY3Rvci5k
YXRhKCkpOworICAgICAgICBxdWV1ZVRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBkYXRhID0gUmVmIHsgZGF0YSB9XSB7CisgICAgICAgICAgICBkaWRSZWNlaXZlRGF0
YShkYXRhKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSZWYg
cHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0
YShkYXRhLCBzaXplLCAwLCBEYXRhUGF5bG9hZFR5cGU6OkRhdGFQYXlsb2FkQnl0ZXMpOworICAg
IG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgMCwgRGF0YVBheWxvYWRUeXBlOjpE
YXRhUGF5bG9hZEJ5dGVzKTsKICAgICBwcm9jZXNzTmV4dFBlbmRpbmdUYXNrKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRh
c2tQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1l
VGFza1Byb3h5LmgKaW5kZXggNzU1MDg3OTQxODIwZmVlZmM1ZDAxMjcxNThjMDY0Y2UyNThhMDgz
NS4uZWQ5MWYzOGUzYWRkMTNiZTE5Y2IyMTc3ZWQ0NDhmZGQyZmE3OTU0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1By
b3h5LmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NSw3ICs1
Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShzaXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAg
dm9pZCBkaWRDb21wbGV0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggZGYxZjhjZmIxMGIyN2U2MTI5ODU3ZGNhOWQ4MTZh
YmUxODE3MDQ1YS4uNDVlODYwM2VhZWFlODdkOGI0NzI3NDgzOWYxOTQzYWYwZjU1MTY4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
CkBAIC02NzYsNiArNjc2LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gV2ViUHJvY2Vzczo6c291
cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdAogCiB2b2lkIFdlYlByb2Nlc3M6OmluaXRp
YWxpemVTYW5kYm94KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMsIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHNhbmRib3hQ
YXJhbWV0ZXJzKQogeworICAgIHJldHVybjsKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQogICAgIC8vIE5lZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQsIGJlY2F1
c2Ugc2VydmljZSBoYXMgYSBkaWZmZXJlbnQgYnVuZGxlIElELgogICAgIGF1dG8gd2ViS2l0QnVu
ZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdCJd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaApp
bmRleCBhMjU1NjBhMTBjMjg4MmUxYWJkMTc4NDU2OTQ4NmVhMTNlZDg5NmQ0Li4zMjg5YzIzNjI5
YTBkYzMxZmMwYzE5OWVkZjEzMjk3YmVkNjFhMTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1l
ci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCkBAIC03Myw3ICs3NCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHBpbmdM
b2FkQ29tcGxldGUoeyB9LCByZXNwb25zZSk7CiAgICAgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQog
ICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoZXJyb3IpOyB9
CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSopIGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDk1OWQ3NDhiNTZiZTEwNzZiZDk3Nzk5MjJjZDM1
NmQyMWE2ODE3NGUuLjVjZmU5ZjljODQzNzg2NGZiNWZiNTI0MDQ4YjQxZDJmNDEyMGJjN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBIaXN0b3J5
SXRlbTsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBjbGFzcyBXZWJG
cmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PiB7CkBAIC0xNTEsNyArMTUy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZp
bmFsIHsgfQogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAot
ICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVp
bnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAg
dm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxI
aXN0b3J5UmVkaXJlY3RMaW5rcygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpp
bmRleCA0M2U2M2Y0NTYzNDVlY2YxYzkyNGU1Yjc3MmE2ZjU0MTczYTkxNDJiLi44N2E1ZDY1N2Y3
YjczM2QwN2M1ZGI2MDFmNjk4MWY5MDQ5NzcxMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQpAQCAtOTkyLDEwICs5OTIsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRS
ZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgYXV0byBuc0RhdGEgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDps
ZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2
ZWREYXRhOm5zRGF0YS5nZXQoKV07CisgICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWRE
YXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
QEAgLTIwMTIsNyArMjAxMSw3IEBAIFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJl
dGFpblB0cjxOU1N0cmluZz4gbV9maWxlUGF0aDsKICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhh
bmRsZT4gbV9maWxlSGFuZGxlOwogCi0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZm
ZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gZGF0YUFycmF5ID0gYnVm
ZmVyLmNyZWF0ZU5TRGF0YUFycmF5KCk7CiAgICAgICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBp
biBkYXRhQXJyYXkuZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQppbmRleCAwZTA1YjE4ZDY5NjM5ODI4ZDQzM2M0NmQ3OTIxY2Y3MGRlN2RmOWQxLi4y
YTg3NzBkZjgwYmI5ZjcwYzEwYmI5MWY5NTIwZDFlMTljODU5ZDhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTk3Nyw3ICs5NzcsNyBAQCAtICh2
b2lkKV9jb21taXREYXRhOihOU0RhdGEgKilkYXRhCiAgICAgYXV0byogZG9jdW1lbnQgPSBfcHJp
dmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpOwogICAgIGRvY3VtZW50LT5zZXRTaG91bGRDcmVh
dGVSZW5kZXJlcnMoX3ByaXZhdGUtPnNob3VsZENyZWF0ZVJlbmRlcmVycyk7CiAKLSAgICBfcHJp
dmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5jb21taXREYXRhKChj
b25zdCB1aW50OF90KilbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOworICAgIF9wcml2YXRl
LT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERhdGEoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSkpOwogfQogCiBAZW5kCg==
</data>
<flag name="commit-queue"
          id="473518"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447795</attachid>
            <date>2021-12-22 05:06:40 -0800</date>
            <delta_ts>2021-12-23 03:46:19 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-232424-20211223000638.patch</filename>
            <type>text/plain</type>
            <size>240311</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGYzN2E3ZjU5YzQ4OWRj
NTQ0Y2IyZGM2MTIwOTM2YmE1ZWNkZmUyMy4uYTg2ZTU5OWRkODEzZTg4MWE1ZjliMmY1MmUxOTFh
NzcyODE0MzM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NiBAQAorMjAyMS0xMi0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1
ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBtb2RpZnkgYWxsIGRpZFJlY2VpdmVEYXRhIG1ldGhv
ZCBzbyB0aGF0IHRoZXkgbm8gbG9uZ2VyIHVzZSB1aW50OF90L2ludAorICAgICAgICBhbmQgaW5z
dGVhZCB1c2UgU2hhcmVkQnVmZmVyLiBXZSBhbHNvIGRvIHRoZSBzYW1lIGZvciBhbnkgaW50ZXJt
ZWRpYXJpZXMKKyAgICAgICAgdXNlZCBieSB0aGUgdmFyaW91cyBkaWRSZWNlaXZlRGF0YSBpbXBs
ZW1lbnRhdGlvbnMuCisgICAgICAgIFRoaXMgd2lsbCBmYWNpbGl0YXRlIG1vdmluZyBuZXR3b3Jr
aW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLgorICAg
ICAgICBUaGlzIGFsc28gYWxsb3dzIHRvIHJlbW92ZSBzZXZlcmFsIG1lbW9yeSBhbGxvY2F0aW9u
cyBhbmQgY29waWVzLgorICAgICAgICBXZSBjYW4gbm93IGFsc28gY29uc2lkZXIgbW92aW5nIHRo
ZSB1bmRlcmx5aW5nIFNoYXJlZE1lbW9yeSBjcmVhdGVkIGluCisgICAgICAgIHRoZSBjb250ZW50
IHByb2Nlc3MgYWxsIHRoZSB3YXkgdG8gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4gQ292ZXJlZCBieSBhbGwgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpi
bG9iQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxl
bWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVNpbmsuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpt
YXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjphZGREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1p
dHRlZExvYWQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKToKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRh
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGRCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1
dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5SZXNv
dXJjZURhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZl
ckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50
OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJl
dmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lm
Qnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKC1bV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YTpsZW5ndGhS
ZWNlaXZlZDpdKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9h
ZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTIt
MTkgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBw
YWNrIGF1ZGlvIHNhbXBsZXMgd2l0aCBkaXNjb250aW51aXR5IHRvZ2V0aGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGMzYTQ5OTRiOWNjMDg5NmU2MWYwZWE5NjFjYWJlZmM2NThlN2Y4YjcuLjQ2N2MwMDNmODMyOTdm
Y2EwZTg4ZGZiYWEwMmY1ODQwMDYwNzBlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBACisy
MDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
SGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBuZXR3b3JraW5nIGFjdG9y
cyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNv
dXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGlu
Z0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNlbmRCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6bG9hZEJvZHlGcm9tUHJlbG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMu
aW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAg
ICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyk6Cisg
ICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRl
ckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnN0
cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjptYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2
ZUJsb2JDaHVuayk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KToKKwogMjAyMS0xMi0xOSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgY2xpZW50IGxh
eWVyIHBsdW1iaW5nIGZvciBjbGFzc2lmeWluZyBtb2RhbCBjb250YWluZXIgY29udHJvbHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggNTc2ODFiMjFhNzM0MzllOTBiZjIxYmEyNDQ5NTgyNTk3ZTAx
OTk4Mi4uYmIxYzViNTM2YzRmOTkxNWZiYWJkOWFjMzAzN2JjNDQ4Yzc3NDZjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQyNAorICAgICAg
ICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMi0xNCAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTaGFy
ZWRCdWZmZXIgY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5YmRhMjc3
YWEzYmQxY2Q4ODcyMzZlMzU0ZTc0ODZkYjk0ODQyNGY4Li43NmE0OWU4NmM3YzI4NWM4MjYxZmI1
MzA5NGI2NjAxZTNmMjAzYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdv
cmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBy
ZXZpZXdMb2FkZXJDbGllbnQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAg
ICAgICgtW1dlYkZyYW1lIF9jb21taXREYXRhOl0pOgorCiAyMDIxLTEyLTE5ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjbGllbnQgbGF5ZXIg
cGx1bWJpbmcgZm9yIGNsYXNzaWZ5aW5nIG1vZGFsIGNvbnRhaW5lciBjb250cm9scwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRl
eCBjMjMxZjIwN2RhMjVjZDJhMTU4NjBkMjhkYjNjZTE3ZTg1NzU3N2Q1Li5lNjEzYWE1MDlmNzRj
MGRlMGU2ZDM4MzUxOGU1MjZmNzNhYTU4ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMzIwLDEzICszMjAsMTMgQEAg
dm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICB9CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQordm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGlmIChtX3NvdXJjZSkgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoYnVmZmVy
LnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1f
YnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyKTsK
IH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oCmluZGV4IDg3MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAz
Nzc3MmIuLmQ0NjUxYjIzZGE3MWNmOGY0YzhjOTk2NzFkMjI3ZWI1YWM4ZDJhN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQgRmV0Y2hCb2R5Q29uc3VtZXIoVHlw
ZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXIm
KTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KICAg
ICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZ2V0KCkuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5jcHAKaW5kZXggYTYzMzEwOGI1NDc3ODM5M2ZjNTQ3NTAwMzJhOWEyZTg2
YWRlN2ZjYy4uNTM2NjgxNTViZGViYzFhZWYzOWY0ZDk5ZmI5ZGFkYzFlYmVmN2EwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTI5
OCwxMSArMjk4LDEwIEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkK
ICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpibG9i
Q2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEZldGNoQm9keU93
bmVyOjpibG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgQVNTRVJU
KGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKLSAgICBpZiAoIW1f
cmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRh
LCBzaXplKSkpCisgICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5lbnF1ZXVlKGJ1ZmZl
ci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSkKICAgICAgICAgc3RvcCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKaW5kZXggNWNhN2UzOTZj
NDIyNzAxOTM1NmIwODA2ZTRlZWRiZTk1ZTkyOGY0Yi4uODFmZDA2ZWNkZDZmYzM4YzllODU5ODdj
ZWJkZmMxNmRkODZmM2M5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5T3duZXIuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZldGNoTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9y
LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTAwLDcgKzEwMSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICAvLyBCbG9iIGxv
YWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90
KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGJs
b2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0ZhaWxlZCgpOwogICAg
IHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMyw3ICsxMTQsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsg
b3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGJ1
ZmZlcik7IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5h
bDsKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWwgeyBvd25lci5ibG9iTG9hZGluZ1N1
Y2NlZWRlZCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHAKaW5kZXggMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OC4uNGI0
NWJmZDg3NTA0MDZmNmU3ZGE3MThmOTk4MTY5NDcxYTVlODQ1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTE0OCwxMyArMTQ4LDEzIEBAIHZv
aWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKHJl
c3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogdmFsdWUsIGludCBzaXplKQordm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAgICAgaWYgKCFtX2NvbnN1bWVy
KSB7Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBzaXplKTsKKyAgICAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBtX2NvbnN1bWVyLT5hcHBlbmQodmFsdWUsIHNpemUpOworICAgIG1fY29uc3VtZXIt
PmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuaAppbmRleCA0NjEyZDBlMGUzYTdlZmUzMDYwMzk2YjBkNzVhMmZhM2JjNGVk
ZGFkLi41ZWVhZWY4MmQxZGYzZWZjZWQyMTQwMDNkZjUxODg4NzAzNmY5NzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBBUEkuCiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgdXNlU3RyTGVuKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKaW5kZXggZmVkM2U1ZWFlNzFhNTdjOTUyYWExNzFh
ZGNjYmRkOWJkMDQ1ZTc4OS4uMTA5ZTA4ZWNmN2E0N2U3YzAzN2UzMmRjYWFjYWI4NmM4MWMxOGQz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGll
bnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMGU3YjAwNWU4OWEzZDE3NDBiMWNmOWFkZmY4YjRm
MmYyZmM0M2M5OS4uZGNhMGUyMzgyZTMyZmMwMzcyODg3ZmQ0ODUyMTRhMTczMDFiMWJlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0z
NjIsMTIgKzM2MiwxMiBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdQogICAgICAgICByZXNwb25z
ZUNhbGxiYWNrKG1fcmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9p
ZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFt
U291cmNlIHx8IG1fY29uc3VtZURhdGFDYWxsYmFjayk7CiAKICAgICBpZiAobV9jb25zdW1lRGF0
YUNhbGxiYWNrKSB7Ci0gICAgICAgIFNwYW4gY2h1bmsgeyBkYXRhLCBzaXplIH07CisgICAgICAg
IFNwYW4gY2h1bmsgeyBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpIH07CiAgICAgICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
Mzc1LDcgKzM3NSw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgYXV0byYgc291cmNl
ID0gKm1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZTsKIAogICAgIGlmICghc291cmNl
LmlzUHVsbGluZygpKSB7Ci0gICAgICAgIG1fcmVzcG9uc2UuYm9keSgpLmNvbnN1bWVyKCkuYXBw
ZW5kKGRhdGEsIHNpemUpOworICAgICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFw
cGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zODMsNyArMzgzLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGlmICghc291cmNlLmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShkYXRhLCBzaXplKSkpIHsKKyAgICBpZiAoIXNvdXJjZS5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpKSkgewogICAgICAgICBzdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShS
ZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4KIAogdm9pZCBG
ZXRjaFJlc3BvbnNlOjpjb25zdW1lQ2h1bmsoUmVmPEpTQzo6VWludDhBcnJheT4mJiBjaHVuaykK
IHsKLSAgICBib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPmJ5
dGVMZW5ndGgoKSk7CisgICAgYm9keSgpLmNvbnN1bWVyKCkuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBG
ZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFzU3RyZWFtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggNmIwNTA1ZDg4YjEzMmUyOGNiOTU0YWI5
YTBlN2VmZTgxM2Y3MDJhZi4uZjk5MjQ5YzM5ZjlkMGIyZmM4N2EyZjljNDZkNzkzOTI4ODgxNGJm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAg
LTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5h
bDsKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZp
bmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
IGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogCiAgICAgICAgIEZldGNoUmVzcG9uc2UmIG1fcmVzcG9uc2U7CiAgICAgICAgIE5v
dGlmaWNhdGlvbkNhbGxiYWNrIG1fcmVzcG9uc2VDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApp
bmRleCAyN2E2ZDcwMzM0Y2EzMjA2YTk0ZTkxOTk0MzM2MzdjNGEzMDUyZTdkLi5hNjQxZjgxMDdi
NGZkMTc5MTFmZGI5MmJiMzBmNDVlMmU4MmI1MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0x
NzcsMTAgKzE3NywxMCBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogCiAvLyBNQVJLOiAtIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBtX2RhdGEu
YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoYnVmZmVyKTsKIH0K
IAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCBj
ZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlLi4wZDNiZGI3NDlkN2EzMzY4
YjNjYTY4YzIxNzMxNjA1OTE1NDlkMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTExNiw3ICsxMTYs
NyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7
CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVycmlkZXMuCi0gICAgdm9pZCBk
YXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICAvLyBN
b2RlbFBsYXllckNsaWVudCBvdmVycmlkZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggZDUxNzNmYmY4YjQwMzQxYzVj
ZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOS4uZmVlOTg4NDIyMWJiNDNlOGNjMDYyZWFiY2QwYTk5ZWM1
NGMwMzQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJl
ZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCBiN2Y3NWVkYTNiMjMzYjE5YjIwZWQ3
MDQyODk0OWJiMzM1ODk4ZTgxLi43Mzg1MmQ0YzBhZjAzODQ3NWYxNWI2NTQ5ZGM2ODliZjg1NTFi
MjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAg
LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiVGhyZWFk
YWJsZUxvYWRlci5oIgpAQCAtMTYzLDE2ICsxNjQsMTUgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXIKICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIEZpbGVS
ZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKQordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCkKIHsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgQVNTRVJU
KGRhdGFMZW5ndGggPiAwKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSk7CiAKICAgICAvLyBC
YWlsIG91dCBpZiB3ZSBhbHJlYWR5IGVuY291bnRlcmVkIGFuIGVycm9yLgogICAgIGlmIChtX2Vy
cm9yQ29kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGxlbmd0aCA9IGRhdGFMZW5ndGg7
CisgICAgaW50IGxlbmd0aCA9IGJ1ZmZlci5zaXplKCk7CiAgICAgdW5zaWduZWQgcmVtYWluaW5n
QnVmZmVyU3BhY2UgPSBtX3RvdGFsQnl0ZXMgLSBtX2J5dGVzTG9hZGVkOwogICAgIGlmIChsZW5n
dGggPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlbWFpbmluZ0J1ZmZlclNwYWNlKSkgewogICAg
ICAgICAvLyBJZiB0aGUgYnVmZmVyIGhhcyBoaXQgbWF4aW11bSBzaXplLCBpdCBjYW4ndCBiZSBn
cm93biBhbnkgbW9yZS4KQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3Ro
KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZGF0YUxlbmd0aCk7CisgICAgICAgICAgICB1bnNpZ25lZCBuZXdM
ZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBidWZmZXIuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKG5l
d0xlbmd0aCA8IG1fdG90YWxCeXRlcykgewogICAgICAgICAgICAgICAgIGZhaWxlZChOb3RSZWFk
YWJsZUVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDYsNyArMjA2LDcgQEAg
dm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobGVuZ3RoIDw9IDApCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpICsgbV9i
eXRlc0xvYWRlZCwgZGF0YSwgbGVuZ3RoKTsKKyAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+
KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQsIGJ1ZmZlci5kYXRhKCksIGxlbmd0
aCk7CiAgICAgbV9ieXRlc0xvYWRlZCArPSBsZW5ndGg7CiAKICAgICBtX2lzUmF3RGF0YUNvbnZl
cnRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApp
bmRleCA1MzljMjMwNGE4MmU2M2FhZGZlMmM1NjdjOThkMGI4YzY4N2E4ZTlmLi5iN2U1YjQwNTdm
YjIwNmZmMzIzMTU1Y2MwZjE1MDJmY2EyMGQyNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKaW5kZXggMTg3OTNmZjA2NjMzOGZiNjBhMzRkZWM5MDliYzJkZGQyOGJlYWZi
NC4uNTBiYjEzNGZhYzJmM2EzNThjMDJiOGU2OTk0N2Y3ZWE4YTg3OGZlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
QEAgLTYxMywxMCArNjEzLDEwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50CiAgICAgICAgIG5l
dHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShpZGVudGlmaWVy
LCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCi0gICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2
ZURhdGEoaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIGJ1ZmZlciwg
ZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBS
ZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZDI5NTc4MTBkODM4MmM5
MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MS4uODJhY2NlZDIwY2ZkNTEzMWIyNTAyZjA5OWE5YzRm
YTJmZGQ2MTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTkzLDEzICsxOTMsMTMgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShQYWdlJiwgRG9jdW1lbnRM
b2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlKEZyYW1lJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExv
YWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
c3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJj
ZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwgRG9jdW1l
bnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdChXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBT
aGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogCkBAIC00MTQsNyArNDE0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNlKik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlciYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRC
dWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VM
b2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJvbm91
c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC0xMDgyLDE3ICsxMDgyLDE3IEBAIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVhZGFibGVM
b2FkZXJSZXNwb25zZShEb2N1bWVuCiAgICAgICAgIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVy
UmVzcG9uc2VJbXBsKCphZ2VudHMsIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwgaWRlbnRpZmll
cik7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVE
YXRhKEZyYW1lKiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQotICAgICAgICBkaWRSZWNlaXZlRGF0YUlt
cGwoKmFnZW50cywgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwoKmFnZW50cywgaWRlbnRpZmllciwgYnVm
ZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGds
b2JhbFNjb3BlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBnbG9i
YWxTY29wZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lk
KCkpOwotICAgIGRpZFJlY2VpdmVEYXRhSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNj
b3BlKSwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZGF0YUxlbmd0aCk7CisgICAgZGlk
UmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMoZ2xvYmFsU2NvcGUpLCBpZGVudGlm
aWVyLCBidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExv
YWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJlc291cmNlTG9hZGVyKiBy
ZXNvdXJjZUxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCmluZGV4IDM5YjAxMWNmMDZmN2YzODUzMjQzZTBhNzYzYTNiMWQ0NTQ5
MDQxNDkuLjMyOGViZTdlNjQxMTk1ZTVhNDY4NTAyNzU1OTEwZjc4YzQ4YjU4ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAt
OTAsMTAgKzkwLDEwIEBAIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpkYXRhTGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhQnVmZmVyLnNpemUoKTsKIH0K
IAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgbV9kYXRhQnVmZmVyLmFwcGVu
ZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXIuYXBwZW5kKGRhdGEpOwogfQog
CiB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRh
VG9Db250ZW50KCkKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRCdWZmZXJS
ZXNvdXJjZURhdGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSYgcgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VE
YXRhID0gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAgICAgaWYgKCFyZXNv
dXJjZURhdGEpCkBAIC0yMzAsMTUgKzIzMCwxNSBAQCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZQog
ICAgIGlmICghc2hvdWxkQnVmZmVyUmVzb3VyY2VEYXRhKCpyZXNvdXJjZURhdGEpKQogICAgICAg
ICByZXR1cm4gcmVzb3VyY2VEYXRhOwogCi0gICAgaWYgKHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0
aCgpICsgZGF0YUxlbmd0aCA+IG1fbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpCisg
ICAgaWYgKHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0aCgpICsgZGF0YS5zaXplKCkgPiBtX21heGlt
dW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQogICAgICAgICBtX2NvbnRlbnRTaXplIC09IHJl
c291cmNlRGF0YS0+ZXZpY3RDb250ZW50KCk7CiAgICAgaWYgKHJlc291cmNlRGF0YS0+aXNDb250
ZW50RXZpY3RlZCgpKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VEYXRhOwogCi0gICAgaWYgKGVu
c3VyZUZyZWVTcGFjZShkYXRhTGVuZ3RoKSAmJiAhcmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRFdmlj
dGVkKCkpIHsKKyAgICBpZiAoZW5zdXJlRnJlZVNwYWNlKGRhdGEuc2l6ZSgpKSAmJiAhcmVzb3Vy
Y2VEYXRhLT5pc0NvbnRlbnRFdmljdGVkKCkpIHsKICAgICAgICAgbV9yZXF1ZXN0SWRzRGVxdWUu
YXBwZW5kKHJlcXVlc3RJZCk7Ci0gICAgICAgIHJlc291cmNlRGF0YS0+YXBwZW5kRGF0YShkYXRh
LCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgbV9jb250ZW50U2l6ZSArPSBkYXRhTGVuZ3RoOworICAg
ICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSk7CisgICAgICAgIG1fY29udGVudFNp
emUgKz0gZGF0YS5zaXplKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXgg
ZGFhZTVmZTRhMzFlMzE1OTM2Mzc5MDQyM2Y1ZmJkMzM3MGM1Y2QzOS4uYzhjZWQxMmE2NDA3ZmRj
ZDU3NGVjYzJhNzgxOWVkZTY2MzgwM2RhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAgIHNpemVf
dCBkYXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgICAgIHZvaWQgYXBwZW5kRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVu
dCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKQEAgLTE0MSw3ICsxNDEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAgICBJbnNwZWN0b3JQYWdlQWdl
bnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwog
ICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9IGZhbHNlKTsKLSAgICBSZXNv
dXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgUmVzb3Vy
Y2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBtYXliZURlY29kZURhdGFUb0NvbnRl
bnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2Uo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBhZGRS
ZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKaW5kZXggMjIzYTY3NjdiZTI3MWVlNGQyMmRlZDFkNmJlNjBjYTcwNzgx
N2M4MS4uYWYyMzdmNjU0MTU3NjJiOWE2MGRhMGU5Y2NkYjA3NTMwYTU1YmRkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcApAQCAtMTI0LDE1ICsxMjQsMTMgQEAgcHVibGljOgogICAgICAgICBtX2RlY29k
ZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsIHRleHRFbmNv
ZGluZywgdXNlRGV0ZWN0b3IpOwogICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pIG92
ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIWRhdGFMZW5ndGgpCisgICAgICAgIGlmIChidWZm
ZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhTGVu
Z3RoID09IC0xKQotICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0cmxlbihyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7Ci0KLSAgICAgICAgbV9yZXNwb25zZVRleHQuYXBwZW5k
KG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsKKyAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGggPSB1c2VTdHJMZW4gPyBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oYnVmZmVyLmRhdGEoKSkpIDogYnVmZmVyLnNpemUoKTsKKyAgICAgICAgbV9yZXNwb25zZVRl
eHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGRhdGFMZW5ndGgpKTsK
ICAgICB9CiAKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyKSBvdmVycmlkZQpAQCAtNTUwLDkgKzU0OCw4IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
CiAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVx
dWVzdElkLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNl
RGF0YS0+YmFzZTY0RW5jb2RlZCgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVz
b3VyY2VEYXRhLT5oYXNCdWZmZXJlZERhdGEoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gcHJl
dmlvdXNCdWZmZXIgPSBwcmV2aW91c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7Ci0gICAgICAgICAg
ICAgICAgcHJldmlvdXNCdWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7
Ci0gICAgICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURh
dGEocmVxdWVzdElkLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6ICpwcmV2aW91
c0J1ZmZlcikKKyAgICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJl
c291cmNlRGF0YShyZXF1ZXN0SWQsIGVsZW1lbnQuc2VnbWVudC5nZXQoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmlu
ZyhQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6Om1pbWVUeXBlS2V5LCBwcmV2aW91c1Jlc291
cmNlRGF0YS0+bWltZVR5cGUoKSk7CkBAIC01NzQsMjcgKzU3MSwyNyBAQCB2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaQogICAgIC8vIElmIHdlIHJldmFsaWRhdGVkIHRoZSByZXNvdXJjZSBhbmQgZ290
IE5vdCBtb2RpZmllZCwgc2VuZCBjb250ZW50IGxlbmd0aCBmb2xsb3dpbmcgZGlkUmVjZWl2ZVJl
c3BvbnNlCiAgICAgLy8gYXMgdGhlcmUgd2lsbCBiZSBubyBjYWxscyB0byBkaWRSZWNlaXZlRGF0
YSBmcm9tIHRoZSBuZXR3b3JrIHN0YWNrLgogICAgIGlmIChpc05vdE1vZGlmaWVkICYmIGNhY2hl
ZFJlc291cmNlICYmIGNhY2hlZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKQotICAgICAgICBkaWRS
ZWNlaXZlRGF0YShpZGVudGlmaWVyLCBudWxscHRyLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNp
emUoKSwgMCk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCksIGNhY2hlZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9oaWRkZW5S
ZXF1ZXN0SWRlbnRpZmllcnMuY29udGFpbnMoaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChp
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogCi0gICAgaWYgKGRhdGEpIHsKLSAgICAgICAgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNv
dXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIGRhdGFMZW5n
dGgpOworICAgIGlmIChkYXRhLmRhdGEoKSkgeworICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1h
eWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgZGF0YSk7CiAKICAgICAgICAgLy8gRm9yIGEg
c3luY2hyb25vdXMgWEhSLCBpZiB3ZSBkaWRuJ3QgYWRkIGRhdGEgdGhlbiB3ZSBjYW4gYXBwbHkg
aXQgaGVyZSBhcyBiYXNlNjQgZW5jb2RlZCBjb250ZW50LgogICAgICAgICAvLyBPZnRlbiB0aGUg
ZGF0YSBpcyB0ZXh0IGFuZCB3ZSB3b3VsZCBoYXZlIGEgZGVjb2RlciwgYnV0IGZvciBub24tdGV4
dCB3ZSB3b24ndCBoYXZlIGEgZGVjb2Rlci4KICAgICAgICAgLy8gU3luYyBYSFJzIG1heSBub3Qg
aGF2ZSBhIGNhY2hlZCByZXNvdXJjZSwgd2hpbGUgbm9uLXN5bmMgWEhScyB1c3VhbGx5IHRyYW5z
ZmVyIGRhdGEgb3ZlciBvbiBjb21wbGV0aW9uLgogICAgICAgICBpZiAobV9sb2FkaW5nWEhSU3lu
Y2hyb25vdXNseSAmJiByZXNvdXJjZURhdGEgJiYgIXJlc291cmNlRGF0YS0+aGFzQnVmZmVyZWRE
YXRhKCkgJiYgIXJlc291cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSkKLSAgICAgICAgICAgIG1f
cmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoZGF0YSwgZGF0YUxlbmd0aCksIHRydWUpOworICAgICAgICAgICAgbV9yZXNvdXJj
ZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCB0cnVlKTsKICAgICB9CiAKLSAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+ZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wKCksIGRhdGFM
ZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGF0
YVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wKCksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVz
b3VyY2VMb2FkZXIqKQpAQCAtMTI3MSw3ICsxMjY4LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3Bv
bnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJl
YWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJhc2U2
NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7
CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI5Niw5ICsxMjkzLDkgQEAgUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0
V2l0aFJlc3BvbnMKICAgICB9CiAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkcyhXVEZN
b3ZlKGV4cGxpY2l0SGVhZGVycykpOwogICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOwotICAgIGxv
YWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZmZXIgPSBkYXRh
LnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAgbG9hZGVyLT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0o
KSB7CiAgICAgICAgIGlmIChidWZmZXItPnNpemUoKSkKLSAgICAgICAgICAgIGxvYWRlci0+ZGlk
UmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9h
ZFdob2xlUmVzb3VyY2UpOworICAgICAgICAgICAgbG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZm
ZXIsIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogICAgICAgICBs
b2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkpOwogICAgIH0pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuaAppbmRleCA2YmNkODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRhMTQx
M2Q0Li5jYTZmNzRlMWI4Njk4MGY0MGIxNTVkMTNlMTZiNzFhZGZiOTQwNDU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IENh
Y2hlZFJlc291cmNlKik7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNv
dXJjZUxvYWRlciopOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lk
IGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIENhY2hlZFJl
c291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggNDMz
MmQ2OTFiYmY4MjZhN2M4N2VhODNhMzE3ZTk2MTE1YTIwNDk5My4uYTA5ODFhZGQ3OTg1MzJiOTdi
YWE0MDQxMjhiYTM4ODk2ZGFmNjg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJl
c291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUg
PT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8q
IHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9j
bGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAg
IG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVy
LT5tYWtlQ29udGlndW91cygpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VV
UkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKaW5kZXgg
MjE1YzA0ZWM5ODk1ZTlmMWU2ZTE0N2RhODIwOTMwMDk4NTIzOTYyMy4uZmE3YWQzMDM5YTIwNWU5
MDU3MTA4ZjNjNmYzOTI0MTliYzQ2NDdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlckNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBD
b250ZW50RmlsdGVyQ2xpZW50IHsKQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3Qg
PSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVy
KGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1
YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25z
dCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwg
U3Vic3RpdHV0ZURhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAppbmRleCA2YmYzYWMyOTdlYzZiMjYzYTA3ODY0MGJjZjNhZDU3NzlkYjBmZWRiLi5lMzJl
NTE5NjUwNTcwYzY3ZDhmMzg1Yjc5M2E1YjIwZjE2ZTAyZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTQ4Myw4ICs0ODMsOCBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpmaW5pc2hlZExvYWRpbmcoKQogICAgICAgICAvLyBJZiB0aGlzIGlzIGFuIGVtcHR5
IGRvY3VtZW50LCBpdCB3aWxsIG5vdCBoYXZlIGFjdHVhbGx5IGJlZW4gY3JlYXRlZCB5ZXQuIENv
bW1pdCBkdW1teSBkYXRhIHNvIHRoYXQKICAgICAgICAgLy8gRG9jdW1lbnRXcml0ZXI6OmJlZ2lu
KCkgZ2V0cyBjYWxsZWQgYW5kIGNyZWF0ZXMgdGhlIERvY3VtZW50LgogICAgICAgICBpZiAoIW1f
Z290Rmlyc3RCeXRlKQotICAgICAgICAgICAgY29tbWl0RGF0YSgwLCAwKTsKLSAgICAgICAgCisg
ICAgICAgICAgICBjb21taXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworCiAgICAgICAg
IGlmICghZnJhbWVMb2FkZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZnJhbWVM
b2FkZXIoKS0+Y2xpZW50KCkuZmluaXNoZWRMb2FkaW5nKHRoaXMpOwpAQCAtMTE1Nyw5ICsxMTU3
LDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9s
aWN5QWN0aW9uIHBvbGljeSkKICAgICBpZiAoIWlzU3RvcHBpbmcoKSAmJiBtX3N1YnN0aXR1dGVE
YXRhLmlzVmFsaWQoKSAmJiBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkgewogICAgICAgICBhdXRv
IGNvbnRlbnQgPSBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKTsKICAgICAgICAgaWYgKGNvbnRl
bnQgJiYgY29udGVudC0+c2l6ZSgpKSB7Ci0gICAgICAgICAgICBjb250ZW50LT5mb3JFYWNoU2Vn
bWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgIGRhdGFSZWNlaXZlZChz
ZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiAqY29udGVudCkKKyAgICAgICAgICAgICAgICBkYXRh
UmVjZWl2ZWQoZWxlbWVudC5zZWdtZW50LmdldCgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
aXNMb2FkaW5nTWFpblJlc291cmNlKCkpCiAgICAgICAgICAgICBmaW5pc2hlZExvYWRpbmcoKTsK
QEAgLTExNzEsNyArMTE3MCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgfQogfQogCi12b2lkIERvY3Vt
ZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2
b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICAvLyBCb3RoIHVubG9hZGluZyB0aGUgb2xkIHBhZ2UgYW5kIHBhcnNpbmcgdGhlIG5l
dyBwYWdlIG1heSBleGVjdXRlIEphdmFTY3JpcHQgd2hpY2ggZGVzdHJveXMgdGhlIGRhdGFzb3Vy
Y2UKICAgICAvLyBieSBzdGFydGluZyBhIG5ldyBsb2FkLCBzbyByZXRhaW4gdGVtcG9yYXJpbHku
CkBAIC0xMTg2LDcgKzExODUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiAgICAgaWYgKEFyY2hpdmVGYWN0b3J5Ojpp
c0FyY2hpdmVNSU1FVHlwZShyZXNwb25zZSgpLm1pbWVUeXBlKCkpKQogICAgICAgICByZXR1cm47
CiAjZW5kaWYKLSAgICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuY29tbWl0dGVkTG9hZCh0aGlzLCBk
YXRhLCBsZW5ndGgpOworICAgIGZyYW1lTG9hZGVyLT5jbGllbnQoKS5jb21taXR0ZWRMb2FkKHRo
aXMsIGRhdGEpOwogCiAgICAgaWYgKGlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpKQogICAgICAg
ICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKTsKQEAg
LTEyMTUsNyArMTIxNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRVc2VBY3RpdmVTZXJ2
aWNlV29ya2VyRnJvbVBhcmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lCiB9CiAjZW5kaWYKIAot
dm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6
ZV90IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIGlmICghbV9nb3RGaXJzdEJ5dGUpIHsKICAgICAgICAgbV9n
b3RGaXJzdEJ5dGUgPSB0cnVlOwpAQCAtMTMxMywyNCArMTMxMiwyNCBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQog
I2VuZGlmCiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2luZygpKTsKLSAg
ICBtX3dyaXRlci5hZGREYXRhKGJ5dGVzLCBsZW5ndGgpOworICAgIG1fd3JpdGVyLmFkZERhdGEo
ZGF0YSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIERv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAm
cmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwotICAgIGRhdGFSZWNlaXZlZChkYXRhLCBsZW5n
dGgpOworICAgIGRhdGFSZWNlaXZlZChidWZmZXIpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVy
OjpkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgaWYgKG1fY29udGVudEZpbHRlciAm
JiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0
aCkpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51
ZUFmdGVyRGF0YVJlY2VpdmVkKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKQogICAgICAg
ICByZXR1cm47CiAjZW5kaWYKIAotICAgIEFTU0VSVChkYXRhKTsKLSAgICBBU1NFUlQobGVuZ3Ro
KTsKKyAgICBBU1NFUlQoYnVmZmVyLmRhdGEoKSk7CisgICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkp
OwogICAgIEFTU0VSVCghbV9yZXNwb25zZS5pc051bGwoKSk7CiAKICAgICAvLyBUaGVyZSBpcyBh
IGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBiZSBkaXNwYXRjaGVkIGV2ZW4g
d2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCkBAIC0xMzQwLDEyICsxMzM5LDEyIEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KQogI2VuZGlmCiAKICAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxv
YWRlcikKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaXNwYXRjaERpZFJlY2Vp
dmVEYXRhKHRoaXMsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGRh
dGEsIGxlbmd0aCwgLTEpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpc3Bh
dGNoRGlkUmVjZWl2ZURhdGEodGhpcywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJj
ZUxvYWRlciwgYnVmZmVyLCAtMSk7CiAKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5tYWlu
UmVzb3VyY2VEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoLCAtMSwgZmFsc2UpOworICAgIG1fYXBw
bGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChidWZmZXIsIC0xLCBm
YWxzZSk7CiAKICAgICBpZiAoIWlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpKQotICAgICAgICBj
b21taXRMb2FkKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGNvbW1pdExvYWQoYnVmZmVyKTsKIH0K
IAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0dXBGb3JSZXBsYWNlKCkKQEAgLTE2MTQsNyArMTYx
Myw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgbV93
cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJU
KG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0
YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YSgq
bV9wYXJzZWRBcmNoaXZlRGF0YSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTIy
NTcsOCArMjI1Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011
bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7
CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQo
cmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6
ZSgpKTsKKyAgICBjb21taXRMb2FkKG1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpAQCAtMjQx
MCw5ICsyNDA4LDkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5xdWV1ZVNlY3VyaXR5UG9saWN5
VmlvbGF0aW9uRXZlbnQoU2VjdXJpdHlQb2xpY3lWaW9sYXRpb24KIH0KIAogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBzaXplKQordm9pZCBEb2N1
bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgZGF0YVJlY2VpdmVkKGRhdGEsIHNpemUpOworICAgIGRh
dGFSZWNlaXZlZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggMGUwMTJiNjhjMjRiMzM0
ZjkxYzU3MTA1ZjRkMjUyM2Q2MmI0NjcwYS4uYzU3OWJmYjI2MjdiMjVmMGJmNmYzYTBkNGViMDA4
MzM3NTE0YjQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTg2
LDYgKzg2LDcgQEAgY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNsYXNzIFJlc291cmNlTG9hZGVy
OwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlv
bjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3Mg
U3Vic3RpdHV0ZVJlc291cmNlOwogY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOwpAQCAtMzgy
LDcgKzM4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0VGltaW5nKCkgeyBtX2xvYWRUaW1p
bmcgPSB7IH07IH0KIAogICAgIC8vIFRoZSBXZWJLaXQgbGF5ZXIgY2FsbHMgdGhpcyBmdW5jdGlv
biB3aGVuIGl0J3MgcmVhZHkgZm9yIHRoZSBkYXRhIHRvIGFjdHVhbGx5IGJlIGFkZGVkIHRvIHRo
ZSBkb2N1bWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29t
bWl0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
JiBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpIGNvbnN0OwogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
KiBhcHBsaWNhdGlvbkNhY2hlSG9zdFVubGVzc0JlaW5nRGVzdHJveWVkKCkgY29uc3Q7CkBAIC00
ODIsNyArNDgzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tbWl0SWZSZWFkeSgpOwogICAg
IHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHZv
aWQgY29tbWl0TG9hZChjb25zdCB1aW50OF90KiwgaW50KTsKKyAgICB2b2lkIGNvbW1pdExvYWQo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbGVhck1haW5SZXNvdXJjZUxvYWRlcigp
OwogCiAgICAgdm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKQEAgLTQ5OCw3ICs0OTksNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgbWFpblJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFFV
SUNLX0xPT0spCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmV2aWV3UmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKQEAg
LTUwOCwxMyArNTA5LDEzIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNv
dXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNv
bnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2Nr
ZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIGRh
dGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRh
dGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIGJvb2wgbWF5YmVMb2FkRW1w
dHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAppbmRleCBiOWM0MTM1MjU2NzYyNjcyMTkwN2FmMzY2ZGZiMWRlYzc5NGMyNDc0
Li44NjRiNjVhMWQxMTMxZmI2MzcxMjViMTczOTkxZTlkM2UwYTZlNzFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNDM3
LDIwICs0MzcsMjAgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZy
ZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBkaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5p
ZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKG1fcmVz
b3VyY2UtPmlkZW50aWZpZXIoKSwgYnVmZmVyKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCiAgICAgaWYgKG1f
ZGVsYXlDYWxsYmFja3NGb3JJbnRlZ3JpdHlDaGVjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGZhbHNlKTsKIH0KIAogdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IFJlc291cmNlVGltaW5nJiByZXNvdXJjZVRpbWluZykKQEAgLTQ5Mywy
MCArNDkzLDE0IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmCiAKICAgICAgICAgaWYgKG9wdGlv
bnMoKS5maWx0ZXJpbmdQb2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xpY3k6OkRpc2FibGUp
IHsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwg
cmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJl
c291cmNlQnVmZmVyKCkpIHsKLSAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2hTZWdtZW50
KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1f
cmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVEYXRhKCpidWZmZXIsIGZhbHNlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RGVm
YXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRp
ZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJlc3BvbnNlLCBtX29wdGlvbnMuY3JlZGVu
dGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSA/IFJlc291cmNlUmVz
cG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6Ok5vIDogUmVzb3VyY2VSZXNwb25z
ZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzKSk7Ci0gICAgICAgICAgICBpZiAo
YXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewotICAgICAgICAg
ICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21lbnQuZGF0YSgpLCBz
ZWdtZW50LnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkK
KyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlciwgZmFsc2Up
OwogICAgICAgICB9CiAgICAgfQogCkBAIC02NjcsMTEgKzY2MSw4IEBAIHZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBT
ZWN1cml0eUNoCiAgICAgfQogICAgIGRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNw
b25zZSk7CiAKLSAgICBpZiAoZGF0YSkgewotICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudChb
Jl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmll
ciwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgfSk7Ci0gICAgfQor
ICAgIGlmIChkYXRhKQorICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCAqZGF0YSk7
CiAKICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xv
YWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGlt
aW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3Is
IGxvYWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5
TWV0cmljcygpLCByZXNwb25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggZjFmNDFlZTkxZDZj
ZThhMWM1ODYyMzgxN2IzNThmNzc0NjUxZTBhNC4uYzg2YmE3ZjQ1MzgzYjZjMjg2MDAzMmQzYWVi
ZmJhM2UwODYwNzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuaApAQCAtODYsMTQgKzg2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICAgICAgdm9pZCBkYXRhU2Vu
dChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYp
IG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgb3ZlcnJpZGU7CiAgICAgICAgIHZv
aWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNvbnN0IFJlc291cmNlVGltaW5nJik7CiAg
ICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAg
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKICAg
ICAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAK
aW5kZXggYjA0NmVmMGRlMjA0OGVmZDQzMTk3MDI2MjJiOTZhN2RmMmZlYWZhNy4uNGZmOTM4MTgw
ZmRkMjhmYzcxNWQwODg4MTYwOGZjNjI4OTQ5MmU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBEb2N1bWVudFdyaXRl
cjo6cmVwb3J0RGF0YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZXNvbHZl
U3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVpbGQpOwogfQogCi12b2lkIERv
Y3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3Ro
KQordm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSB0byBBU1NFUlQgb25jZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MjcgaGFzIGJlZW4gcmVzb2x2ZWQuCiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Tm90U3RhcnRlZCk7CkBAIC0yNzMs
NyArMjczLDcgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQo
bV9wYXJzZXIpOwotICAgIG1fcGFyc2VyLT5hcHBlbmRCeXRlcygqdGhpcywgYnl0ZXMsIGxlbmd0
aCk7CisgICAgbV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjppbnNlcnREYXRhU3luY2hyb25vdXNs
eShjb25zdCBTdHJpbmcmIG1hcmt1cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmgKaW5kZXggMDcxNzJjOTczOWViNTczNWJjODFmOGRlZjJmYjliMjg1YzI1NGQwYi4uYzBhMzRh
NmI3ZTljZmU5NjQzMDQ1YTk1ZTc5MzIyNTIzNjNiMjY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudFBhcnNlcjsKIGNsYXNzIEZyYW1lOworY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogY2xhc3MgRG9j
dW1lbnRXcml0ZXIgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGJlZ2lu
KCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBVUkwmLCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0
QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSBudWxscHRyKTsKLSAg
ICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAg
IHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGluc2VydERhdGFT
eW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYpOyAvLyBGb3IgYW4gaW50ZXJuYWwgdXNlIG9ubHkg
dG8gcHJldmVudCB0aGUgcGFyc2VyIGZyb20geWllbGRpbmcuCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlbmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA1
NTI1NjJlNTRiYmE1NzNiZWFiMGIyMGZhNjQwNWU5MzNjMWI2ODYyLi4zNzgxZDhkNWRjZDRlYmVm
YTg2ZWM4YTRhMTNjOTljMThjZGExNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcApAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogewogfQogCi12b2lkIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90Kiwg
aW50KQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50
TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjI2OTljOWM1MTgzMmE1YWE4
Yzg5YWJhYjJmZmM3ZTA5ODViZmMwMC4uMTE2YTE3ZDFmNWM5ZTY0N2UxZjE0MWExMDA4NmIwNzk4
MzkzZjNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNs
aWVudC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNl
TXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENv
bnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlcios
IGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1
bWVudExvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNo
ZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgZmluYWw7CiAKICAgICBSZXNvdXJjZUVycm9yIGNh
bmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNmM1ZWUzYTliMzFhZThiODRkYjkyMGI2
NmViZjIxNGYyNmVjOWFkNi4uYzQ0NmRmYmRjMGE5ZWM4NWNiZDE0NDhhMGNhYmU0MWRkNjA2Nzk0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xNjg1LDcgKzE2ODUs
NyBAQCBib29sIEZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTChVUkwmIHVybCwg
Tm9kZSYgaW5pdGlhdG9yTm9kZSkKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRp
ZmllcjsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVlc3RGcm9tRGVsZWdhdGUo
cmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmlu
Z0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVx
dWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygpLCAtMSwgU3RyaW5nKCkpLCAwLCAt
MSwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIFJlc291cmNl
UmVzcG9uc2UodXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpKSwgbnVsbHB0ciwgLTEsIGVycm9y
KTsKIAogICAgIHVybCA9IHJlcXVlc3QudXJsKCk7CiAKQEAgLTIwODUsOCArMjA4NSw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUpOwogCiAgICAgICAgIC8vIFNlbmQg
cmVtYWluaW5nIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBtYWluIHJlc291cmNlLgotICAgICAgICBu
b3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIu
Z2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UoKSwKLSAgICAgICAgICAgIG51bGxwdHIsIHN0YXRpY19jYXN0PGludD4obV9k
b2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSksIDAsIG1h
aW5SZXNvdWNlRXJyb3IpOworICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIs
IG1haW5SZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwgbnVsbHB0ciwgc3RhdGlj
X2Nhc3Q8aW50PihtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExl
bmd0aCgpKSwgbWFpblJlc291Y2VFcnJvcik7CiAKICAgICAgICAgVmVjdG9yPFJlZjxGcmFtZT4+
IHRhcmdldEZyYW1lczsKICAgICAgICAgdGFyZ2V0RnJhbWVzLmFwcGVuZChtX2ZyYW1lKTsKQEAg
LTIxMzIsNyArMjEzMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9h
ZCgpCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3Jl
IHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAg
ICAgICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5n
IHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgICAgICAgICAvLyBD
b3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KLSAgICAgICAgICAgIG5v
dGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5n
ZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIDAsIHN0YXRpY19jYXN0PGludD4o
cmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBlcnJvcik7CisgICAgICAgICAg
ICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2Fk
ZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNlLCBudWxscHRyLCBzdGF0aWNf
Y2FzdDxpbnQ+KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgZXJyb3IpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFdoeSBvbmx5IHRoaXMgZnJhbWUgYW5kIG5vdCBw
YXJlbnQgZnJhbWVzPwpAQCAtMzE2MCw3ICszMTU5LDggQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmUKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0
aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0
TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6Ok5vKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBy
ZXF1ZXN0LCByZXNwb25zZSwgZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHIsIGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwLCAtMSwgZXJyb3IpOworCisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBy
ZXF1ZXN0LCByZXNwb25zZSwgZGF0YSwgLTEsIGVycm9yKTsKICAgICByZXR1cm4gaWRlbnRpZmll
cjsKIH0KIApAQCAtMzY0MSw3ICszNjQxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZGVkUmVz
b3VyY2VGcm9tTWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXIKIAog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNvdXJjZS5yZXNwb25zZSgpOwogICAg
IHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok1lbW9yeUNhY2hl
KTsKLSAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1l
bnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLCAwLCByZXNv
dXJjZS5lbmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7CisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBu
ZXdSZXF1ZXN0LCByZXNwb25zZSwgbnVsbHB0ciwgcmVzb3VyY2UuZW5jb2RlZFNpemUoKSwgZXJy
b3IpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjphcHBseVVzZXJBZ2VudElmTmVlZGVkKFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFiYzEyODk4ZDEyMzY1Mi4uODA5
MTBmYWU1Yjg3ZDVhNjMxYTY2ODQzMGMxOWViODQyMDRiZjI2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJQ
YWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTIxNCw3ICsyMTUsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9IDA7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5n
KERvY3VtZW50TG9hZGVyKikgPSAwOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9i
YWxIaXN0b3J5KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDVkMTIwZTI0N2FjMjYyNzExNjFkZTBkYzUyMzAyNGRjOGRlMzRkNjku
LjFhMTdhNzBmYTU4YzcyMjhmNjM4OTM1OWRkMGQzMzlkMGUwNWNkMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIzMSwxMyArMjMxLDEz
IEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgq
dGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIE1lZGlhUmVz
b3VyY2U6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7
CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBp
ZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEs
IGRhdGFMZW5ndGgpOworICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBidWZm
ZXIpOwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggZmY2YzI4ODcxMDA4
OGY0YjA1NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NS4uN2I1NTc3MjBlZjA1MzNmYmFhMjI2NTY1Mzhl
ZmRkOTZmNjE3OWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxv
YWRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVy
cmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRS
ZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3Qq
LCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5jcHAKaW5kZXggNjA0M2FjOWJlMjY3ZWE0ZmJjNzFlMTExOGI5MDc5MTU1ZTM5
MTUwMy4uNWNhYWRmNjI5YzcwYWUwODZiNzdiZDcyY2QyODY3NTM2YjhmYTk3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3Bw
CkBAIC0xNDEsMzAgKzE0MSwxNCBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgIH0pOwog
fQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKLSAgICBkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
Ci17Ci0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBh
eWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgaWYgKG1fY2xp
ZW50KSB7Ci0gICAgICAgIGlmIChidWZmZXIpIHsKLSAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFj
aFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZURhdGEodGhpcywgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YSh0aGlzLCBkYXRhLCBsZW5ndGgpOwotICAgIH0KKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIpOwogCi0gICAg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBXVEZN
b3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBk
YXRhUGF5bG9hZFR5cGUpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuaAppbmRleCBiNTE3NGVkYzk0Yjk5MjM5MDIwNWYwZmFkNDUyZWE1YWMzODc4OTM4Li4x
ZWM3ZDYxZTNhMTc1YzIyYjU1ODc1OGQzN2VkMGM1NWJlNWYxM2JmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtMzYsMTIg
KzM2LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIHsgfQog
ICAgIHZpcnR1YWwgYm9vbCB3YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpAQCAtNjIsOCArNjMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNr
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5k
bGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBA
IC03NCw4ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLQogICAgIHZvaWQgbm90aWZ5
RG9uZSgpOwogCiAgICAgV2Vha1B0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudD4g
bV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
Tm90aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVy
LmNwcAppbmRleCAxNDdiNDVlMDY0MzgxMjI3YjA1MjIwNjQ0MTg1MjNjMDc5ZjY0ZDE0Li43YzJh
YjI5MTA3MWRiYzM0NzI3NWRjZThkMzc5N2QyNDY3ODQxNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogI2lmIFVTRShR
VUlDS19MT09LKQogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgpAQCAtNzgsMTIgKzc5LDEyIEBAIHZv
aWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
ciogbG9hZGVyLCBjb25zdCBSZXNvCiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgciwgbG9hZGVyKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVE
YXRhKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBh
Z2UoKSkKLSAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNyZW1lbnRQcm9ncmVzcyhsb2FkZXIt
PmlkZW50aWZpZXIoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIHBhZ2UtPnByb2dyZXNzKCkuaW5j
cmVtZW50UHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGJ1ZmZlci5zaXplKCkpOwogCi0g
ICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRl
ci0+aWRlbnRpZmllcigpLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRl
ci0+aWRlbnRpZmllcigpLCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciogbG9hZGVy
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTE1OSwx
MyArMTYwLDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2
ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlCiAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLCBpZGVudGlmaWVy
LCBsb2FkZXIsIHIsIHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgLy8gTm90aWZ5aW5nIHRoZSBGcmFt
ZUxvYWRlckNsaWVudCBtYXkgY2F1c2UgdGhlIGZyYW1lIHRvIGJlIGRlc3Ryb3llZC4KICAgICBS
ZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQo
KS5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgZGF0
YUxlbmd0aCk7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2Vp
dmVDb250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgYnVmZmVyLnNpemUoKSk7CiAKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKCZtX2ZyYW1lLCBpZGVu
dGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSgmbV9mcmFtZSwgaWRlbnRpZmllciwg
YnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZp
ZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKQEAg
LTE4Niw3ICsxODcsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZh
aWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cgogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJhbWUsIGxvYWRlciwgaWRlbnRpZmll
ciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5n
RGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNz
YWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIC8v
IElmIHRoZSByZXF1ZXN0IGlzIG51bGwsIHdpbGxTZW5kUmVxdWVzdCBjYW5jZWxsZWQgdGhlIGxv
YWQuIFdlIHNob3VsZAogICAgIC8vIG9ubHkgZGlzcGF0Y2ggZGlkRmFpbExvYWRpbmcgaW4gdGhp
cyBjYXNlLgpAQCAtMTk5LDggKzIwMCw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNl
bmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsCiAgICAg
aWYgKCFyZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9u
c2UobG9hZGVyLCBpZGVudGlmaWVyLCByZXNwb25zZSk7CiAKLSAgICBpZiAoZGF0YUxlbmd0aCA+
IDApCi0gICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLCBpZGVudGlmaWVyLCBk
YXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgaWYgKGJ1ZmZlciAmJiBi
dWZmZXItPnNpemUoKSkKKyAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXIsIGlk
ZW50aWZpZXIsICpidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKIAogICAgIGlmIChlcnJvci5p
c051bGwoKSkgewogICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAppbmRleCA0ZGJkNGNj
NDlkNjUwNDIxMTg0ZTYwYzI0ZGQ3MTRkY2JlMGJkYjBkLi5mNjQyNWJhN2JlOWZmMjZlOTlmN2Jl
N2NjMzJhOGU1ZGZiYjAwZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkTm90aWZpZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBSZXNvdXJjZUxvYWROb3Rp
ZmllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVzb3VyY2VMb2FkTm90aWZpZXIpOwpA
QCAtNTUsMTggKzU2LDE4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVy
KiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZUVycm9yJik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVy
KiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwog
ICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxv
YWRlciogPSBudWxscHRyKTsKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1l
bnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lk
IGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsK
ICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIHZvaWQgc2Vu
ZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBzZW5kUmVtYWluaW5nRGVs
ZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxj
b25zdCBTaGFyZWRCdWZmZXI+LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKIAogcHJpdmF0ZToKICAgICBGcmFtZSYgbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDZkZWJiMjU4OGEzZTgyYjIxYzYxZDdlOGYz
NmU0ZjRiYmJhMjVlNjAuLjY2NDdjMjcwODExODBlYmNlYzJiNWNhMjlmZDYwYjcyM2FiNjQ4MzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjk5LDkgKzI5
OSw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKCkKIAogICAgICAgICBhdXRv
IGRhdGFTaXplID0gZGVjb2RlUmVzdWx0LT5kYXRhLnNpemUoKTsKICAgICAgICAgUmVzb3VyY2VS
ZXNwb25zZSBkYXRhUmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2Uo
dXJsLCBkZWNvZGVSZXN1bHQudmFsdWUoKSk7Ci0gICAgICAgIHRoaXMtPmRpZFJlY2VpdmVSZXNw
b25zZShkYXRhUmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgZGF0YVNpemUsIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRl
Y29kZVJlc3VsdC0+ZGF0YSkpXSgpIG11dGFibGUgeworICAgICAgICB0aGlzLT5kaWRSZWNlaXZl
UmVzcG9uc2UoZGF0YVJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIGRhdGFTaXplLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkZWNvZGVSZXN1bHQtPmRhdGEpKV0oKSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMtPnJlYWNo
ZWRUZXJtaW5hbFN0YXRlKCkgJiYgZGF0YVNpemUgJiYgbV9yZXF1ZXN0Lmh0dHBNZXRob2QoKSAh
PSAiSEVBRCIpCi0gICAgICAgICAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3Zl
KGRhdGEpLCBkYXRhU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLT5kaWRSZWNlaXZlQnVmZmVyKGRhdGEsIGRhdGFTaXplLCBEYXRhUGF5bG9hZFdo
b2xlUmVzb3VyY2UpOwogCiAgICAgICAgICAgICBpZiAoIXRoaXMtPnJlYWNoZWRUZXJtaW5hbFN0
YXRlKCkpIHsKICAgICAgICAgICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNz
OwpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1
YnN0aXR1dGVSZXNvdXJjZSgpCiAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKIHsKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CkBA
IC0zMzYsMTAgKzMzNiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZyYWdtCiAgICAgaWYgKGRhdGFQ
YXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLnJlc2V0KCk7CiAKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0
YS5hcHBlbmQoKmJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBl
bmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoYnVmZmVyKTsKIH0K
IAogY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNl
RGF0YSgpIGNvbnN0CkBAIC01MzksNyArNTM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIsIENvbXBsZXRpb25IYW4K
ICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlUmVzcG9uc2UodGhp
cywgbV9yZXNwb25zZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkK
IHsKICAgICAvLyBUaGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYXJlIG5vdCBxdWl0ZSB2YWxpZCBo
ZXJlLCBzaW5jZSBhIHN1YmNsYXNzCiAgICAgLy8gbWlnaHQgb3ZlcnJpZGUgZGlkUmVjZWl2ZURh
dGEgaW4gYSB3YXkgdGhhdCBpbnZhbGlkYXRlcyB0aGVtLiBUaGlzCkBAIC01NDcsMzAgKzU0NCwy
MiBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbAogICAgIC8vIEFTU0VSVChjb24gPT0gY29ubmVj
dGlvbik7CiAgICAgLy8gQVNTRVJUKCFtX3JlYWNoZWRUZXJtaW5hbFN0YXRlKTsKIAotICAgIGRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxl
bmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKKyAgICBkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5j
b2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9h
ZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewotICAgIGRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0
YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotICAgIC8vIFRoaXMgbWV0aG9k
IHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ci4KLSAgICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYgIWxlbmd0aCkpOwotCiAgICAgLy8g
UHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFs
IHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRl
cmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KICAgICBS
ZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYWRkRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgYnVmZmVyLmdldCgpLCBkYXRhUGF5bG9hZFR5cGUpOworICAg
IGFkZEJ1ZmZlcihidWZmZXIsIGRhdGFQYXlsb2FkVHlwZSk7CiAKICAgICAvLyBGSVhNRTogSWYg
d2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24n
dCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1
dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNl
LgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAg
IGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpT
ZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVy
KCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGlj
X2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLCBz
dGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3Jr
TG9hZE1ldHJpY3MpCkBAIC03MjksMTQgKzcxOCwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2Um
JgogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCwgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIGRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVj
ZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZEJ5dGVzKTsKKyAgICBkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3MGVhMjIwZGMxN2M3
Mzc2ZWQ2NjBmYTdhNjFhODRlMzFjMzM0Y2JiLi4wOWIxMTkzMDJkNmNjZmMyMDFjYWUyMDlkMGY1
MjFiMmE4MTQyNTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAt
MTA3LDggKzEwNyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFj
ayk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRl
c1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY3LDggKzE2Nyw2IEBAIHByb3RlY3RlZDoK
IAogICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9jYW5jZWxsYXRpb25T
dGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIAog
ICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kp
IHsgbV9vcHRpb25zLnJlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQb2xpY3k7IH0KICAgICBSZWZl
cnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5yZWZl
cnJlclBvbGljeTsgfQogCkBAIC0xOTIsNyArMTkwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKIAotICAgIHZvaWQgYWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBhZGRCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVS
TCgpOwogICAgIHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIApAQCAtMjAyLDggKzIwMCw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VI
YW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSos
IFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNv
dXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3Vy
Y2VIYW5kbGUqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDM3ZDBiYjgyMWFiZDg2YTliNTYwNmUxMjdlZmM5NDEyYTUxYmIxYTku
Ljk3MmYyYWYyMjYwM2Y0MjRjZDg3NzVmNTkxMDEwZTJkNzY5MzhhMDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTE4LDMyICs1MTgsMTUgQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlUG9saWN5KCkKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlm
IChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIuZ2V0KCkpIHsKLSAgICAgICAg
aWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCkpCisgICAgICAg
IGlmIChwcmV2aWV3TG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKLSAgICBkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0jaWYg
VVNFKFFVSUNLX0xPT0spCi0gICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xv
YWRlci5nZXQoKSkgewotICAgICAgICBpZiAocHJldmlld0xvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZl
cihidWZmZXIuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0g
ICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVu
Y29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewog
ICAgIEFTU0VSVChtX3Jlc291cmNlKTsKIAogICAgIGlmIChtX3Jlc291cmNlLT5yZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwICYmICFtX3Jlc291cmNlLT5zaG91bGRJZ25vcmVIVFRQ
U3RhdHVzQ29kZUVycm9ycygpKQpAQCAtNTU1LDEzICs1MzgsMTMgQEAgdm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoLAogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZl
cmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KICAg
ICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIu
Y29weVJlZigpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKKyAgICBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBk
YXRhUGF5bG9hZFR5cGUpOwogCiAgICAgaWYgKCFtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkK
ICAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVm
ZmVyLm1ha2VDb250aWd1b3VzKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCA4MzJjOWYwZTczZDM4NDY0YTc5NWY0MDM4NjBmNzlj
MzRlNzNiYzdmLi4zZGJkNTMzOGFmZTQ5YjQ3ODU3ZDUzNDA5Nzg4NzUyZWFhMWFlZDRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzMsOCArNzMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcg
bG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAg
ICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2woY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmlu
Zz4gY2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291
cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQg
bm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggY2YyZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3
NDQxMDc0MmEwZC4uM2QxOTI4NjJmMjc3MjliMmYzOGRiNTRiZDgzNjc5OTUyNWMwMTlkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzgsNyArMzgs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZTsgfQogICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVm
IHsgKm1fZGF0YS5nZXQoKSB9KTsgfQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9p
ZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIHsgbV9kYXRhLmFwcGVuZChidWZm
ZXIpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCmluZGV4IDg0ZDc5YjBjOTlk
ZjEwZDk5MzgwYjg0ODMxNzM3MWJjMWU4NTczYmYuLmNlZjBjOGYxZjE3ZDBmNTc2NTlhMzU0MWI1
NGY2Mzg5OTA2NGIxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVM
b2FkZXJDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNl
VGltaW5nOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8s
IHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sIC8qIHVzZVN0ckxl
biAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFRpbWluZyhjb25zdCBSZXNv
dXJjZVRpbWluZyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaAppbmRleCA0MmFlNjQ5MDlhNWUwZmU0NGM2YTVlMDA2
MGQ1OGM5NjRlYzU2MDUxLi5mMzZhMmQ0MDdhZjg4MTU5MDQyODY2Yjg1ZTllMDE4NjFkYWFjNzI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNs
aWVudFdyYXBwZXIuaApAQCAtNjYsMTAgKzY2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgIH0K
IAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgYm9vbCB1c2VTdHJMZW4pCiAgICAgewogICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCB1c2VTdHJMZW4pOwogICAgIH0K
IAogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcAppbmRleCBkZmY4OTcwMWM5MzliYzczYzM3MDMyYWQ5YzQyYWQyMDYzMjZhZDZlLi43
ZjY2ODM1Y2I1NDliNTUwMWE5MmNmNzA1ZGMxZWJiYjMxM2FlYWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0yMzEsMTQgKzIz
MSwxMyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcgogICAgIH0sIG1fdGFza01vZGUpOwogfQog
Ci12b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pCiB7Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcihkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVu
dFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdvcmtlclJlcXVlc3RJ
ZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29ya2VyQ2xpZW50V3Jh
cHBlciB9LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZp
ZXIsIGJ1ZmZlciA9IFJlZiB7IGJ1ZmZlciB9LCB1c2VTdHJMZW5dIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFs
U2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwotICAgICAgICBwcm90
ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlk
UmVjZWl2ZURhdGEoYnVmZmVyLCB1c2VTdHJMZW4pOwogICAgICAgICBpZiAoaXM8V29ya2VyR2xv
YmFsU2NvcGU+KGNvbnRleHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdv
cmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAg
ICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwg
YnVmZmVyKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggNzIzYjQ1NmVjOGU5ZTMwNmZjMThj
YzhmMzZkZTZkY2Q4YWUzMDQ3MC4uMzM5ZDZmNDczMTBhMWVkMjg5MDM2YWQwYTQwNGYzOGE3YTI2
ODYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5oCkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gQWxsIGV4ZWN1dGVk
IG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50
KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCBkYXRhTGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBi
b29sKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoVGltaW5nKGNvbnN0
IFJlc291cmNlVGltaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA1MTk3OGY0MTIz
ODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRlNWQ4NWE3Li5lZDc1NjY1MjZiMmQ3ZWZiZjFjNTE3MDIw
OTVhODc5YmFmNTY5NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29s
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja0Zvck1haW5FcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCosIGlu
dCwgbG9uZyBsb25nLCBib29sKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291
cmNlRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZywgYm9vbCkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuaAppbmRleCBiOTYzNTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNkZjcyMzY3
MmEwLi5kMmFlYWVjM2UxNGM2M2JjYmY2MDFlOWFhZjAyNGMxZjllYzQ3NmRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
aApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3Vy
Y2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3Vic3RpdHV0ZURhdGEmKTsKICAgICB2b2lkIG1h
eWJlTG9hZE1haW5SZXNvdXJjZUZvclJlZGlyZWN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1
YnN0aXR1dGVEYXRhJik7CiAgICAgYm9vbCBtYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAg
dm9pZCBtYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSk7CisgICAg
dm9pZCBtYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSk7CiAgICAgdm9pZCBmaW5pc2hl
ZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKICAgICB2b2lkIGZhaWxlZExvYWRpbmdNYWluUmVzb3Vy
Y2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCAyYmIzZmU3NWI5OTc3ZTgzMzIyYWUy
NTgwZjcyMTJlZTViZjIxNjEwLi4yNTZlODliMjExYjM4YjJkMjFkY2Q2NjU3ODI2OWU2NjA3MzY3
MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsMTAgQEAgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNv
dXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIo
UmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5k
RGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAg
ICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFu
ZERhdGEocmVzcG9uc2UoKSwgUmVmUHRyIHsgJmRhdGEoKSB9KTsKKyAgICBlbHNlCisgICAgICAg
IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0Yzcx
MjkyNi4uNTRmZWVkMmNhNjQxMmI0NTIwOTg3MGM3NzM0MzYwOWQ4NTA5Yjc3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk5LDkgKzk5LDkgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLAogICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlID0gQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOjpjcmVhdGUobV9yZXNvdXJjZS0+dXJsKCksIHJlc3BvbnNlLCBtX3R5cGUp
OwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UtPmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVx
dWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuaAppbmRleCAwMmQ3YWQ5N2EyOGQ0N2MzZmFiNWUzYmFiMDdlYmU5YjA2OWUy
MzJkLi4wYjI5NjI4OGYzMWE0MzI1ZDQ4NDlhNDQyZThhZTYwMmMxNzMxOTI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAg
ICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA5NDYyNzk1MjBkMGRhNDQ2
MjJjNmFjZDM2NjYyMjg4MTA1ZTgxOTYyLi4xZjBjYjhhZWRlMTcwNTFiMjY2N2RlNzIzNzZlZjJm
ZDFiZjA2MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFn
ZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1h
Z2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAg
IHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKQEAgLTU1OCwxNSArNTU4LDE1IEBAIEVu
Y29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIHVwZGF0ZUJ1ZmZlcklu
dGVybmFsKGRhdGEpOworICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9p
ZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKLSAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsKLSAgICBDYWNoZWRSZXNvdXJjZTo6
dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOworICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGJ1ZmZl
cik7CisgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBD
YWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDA4M2Y5MmY4ODgyNzZlZWRhODk5MTIwMzFk
MjQ0OWE5NjhlMjY1ZDkuLmRlNDQxMjAzYTg2MGQyYTJjZGYzYTM0NTA1YzFhMTIyZWQxZTk4MzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjgsNyAr
MTI4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRh
SWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAg
dm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJ
bWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgdXBkYXRlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBk
YXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9yKENh
Y2hlZFJlc291cmNlOjpTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAKQEAgLTE2OSw3ICsxNjksNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IElu
dFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7
CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKaW5kZXggNzFlMTYwODJmZmU2NTVkMTExZjE2OTkwZDEyMzA1MzViZWFjYmY5NS4uNzA4
MjlmNzU2MzUzODEyNTg2NmYzNDRjOWJlNWZkMWNmMzdmODE1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCwxMiArNDgs
MTIgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9y
SWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0
YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxT
aGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVu
dGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsKICAgICBzaXpl
X3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKLSAgICBpZiAoIWRhdGEgfHwg
ZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKKyAgICBpZiAoZGF0YS5zaXplKCkg
PD0gcHJldmlvdXNEYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOworICAgIHJldHVy
biBkYXRhLmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICAgICAgcHJldmlvdXNE
YXRhU2l6ZSArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogCiAgICAgICAgIFNldEZvclNjb3Bl
PGJvb2w+IG5vdGlmeVNjb3BlKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnksIHRydWUpOwotICAg
ICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS5kYXRhKCks
IGluY3JlbWVudGFsRGF0YS5zaXplKCkpOworICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1Jl
Y2VpdmVkKGluY3JlbWVudGFsRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CiAgICAgfQogICAg
IHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKIApAQCAtODksMTEgKzg5LDExIEBAIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9O
b3RCdWZmZXJEYXRhKTsKLSAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGRhdGEsIGxl
bmd0aCk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAg
ICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGJ1ZmZlcik7CisgICAgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCkBAIC0xMTAsOSArMTEwLDkgQEAgdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdAogICAgICAgICBpZiAoZGF0YSkgewogICAgICAgICAgICAgaWYgKGRhdGEgIT0g
bV9kYXRhLmdldCgpKQogICAgICAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7Ci0gICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJ
bmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVt
ZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoKm1fZGF0YSkpIHsKICAg
ICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAg
ICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCks
IGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRz
RGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fZGF0YSA9IG51bGxw
dHI7CkBAIC0xMzAsMTUgKzEzMCwxNSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0CiAgICAgfQog
fQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVk
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7Ci0gICAgaWYgKCFsZW5ndGgpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
PENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCi0gICAgICAgIGMtPmRhdGFSZWNlaXZl
ZCgqdGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgYy0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBi
dWZmZXIpOwogfQogCiBzdGF0aWMgdm9pZCBpdGVyYXRlUmVkaXJlY3RzKENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiYmIGhhbmRsZSwgQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQmIGNsaWVudCwgVmVjdG9yPHN0ZDo6cGFpcjxSZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVz
cG9uc2U+PiYmIHJlZGlyZWN0c0luUmV2ZXJzZU9yZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MCwxMCArMTcw
LDEwIEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCYgYykKICAgICAgICAgICAgIGlmICghaGFzQ2xpZW50KCpjbGllbnQpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAg
ICAgICBtX2RhdGEtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAg
ICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogKm1fZGF0YSkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoaGFzQ2xpZW50KCpjbGllbnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2xp
ZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7
Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQtPmRh
dGFSZWNlaXZlZCgqdGhpcywgZWxlbWVudC5zZWdtZW50LmdldCgpKTsKKyAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IGE3ODY1ZjhhZDE3OGFlZmIzMjIwYTU2ZGNmZjE5
NTk5M2NmOTVhZTQuLjM2ZTQ3YTFkYmEyMzEyOGRjNTMwNzNiNzBiNWYzZjg1MzgwNGFlNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBA
IC0yOCw2ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZSBmaW5h
bCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBmaW5h
bDsKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
ZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3Vs
ZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQpAQCAtNjYsOCArNjcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dpdGNoQ2xpZW50c1Rv
UmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVu
Y29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVw
bGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNh
bGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
KSBjb25zdDsKLSAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRC
dWZmZXImKSBjb25zdDsKKyAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29u
c3QgU2hhcmVkQnVmZmVyJik7CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBw
cmV2aWV3UmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNs
aWVudC5oCmluZGV4IDIzZWFiOGRmMjk1OGZmOGI0OWYzNTQ1YjUwODNmZTI5ODllZjEyMjAuLmNk
NjUwYTJmMzEzNmNlOWIyNjJmYmRmYzgyOTI4YmYyMTA3OWZiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oCkBAIC0z
MSw2ICszMSw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNlVGltaW5nOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CkBAIC00Niw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIC8q
IGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZFRp
bWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVRpbWluZyYp
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAppbmRleCA5ZGUwYTA0Y2Q1ZWM1ZjNmYWQyZmIxNmQ3YjMyMmM4NThhMzhhNmIyLi43YjljNjFm
OTY2MTc1NDZiNjZiY2MzYzYzZWNhMGU4NTdlMjYyZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShj
b25zdCB1aW50OF90KiwgdW5zaWduZWQpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBjOTgyZGQ2OTM3YTBi
YzJiZjM4YzQyNjEyNmZmZTZlNzhjNzk2NDc4Li41MzRlMDEyY2M0ZmE1ZGQyYmUxZmQ2ZWVlNWFh
NmFlNGU1ZmFlMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBU
ZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwog
ICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA5NmQ4
OTgyZTkzNTAzNDc2OTZmYzk2OWQ1ODVhYjcwNzVkZTAyMGVkLi5jYTAxOTM0ZDMxYmE1ZDUwOWZl
YmU3ZDJmOTEyMjQ5ZDI3MTI2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtNDcsOCArNDcsNyBAQCBwdWJsaWM6CiAgICAgfkxl
Z2FjeVByZXZpZXdMb2FkZXIoKTsKIAogICAgIGJvb2wgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlkRmluaXNoTG9hZGluZygpOwogICAgIHZv
aWQgZGlkRmFpbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIubW0KaW5kZXggNDg3NTZhMzNiNTg3MmI0NGIyZjBiYTA4NDI0MWY4NmNmYWVi
Y2FhMC4uYTI0YjhjNTlkNDYwYWZmNWUyZmVmODMxOTBjMjA4NjU3MjM2NWQzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjMs
NyArNjMsNyBAQCBzdGF0aWMgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGll
bnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYwogICAgIHJldHVybiBlbXB0eUNsaWVu
dCgpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBp
ZiAobV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNzEsNyArNzEsNyBAQCBib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIExPRyhO
ZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBhcHBlbmRpbmcgYnVmZmVyIHdpdGggc2l6ZSAl
bGQuIiwgYnVmZmVyLnNpemUoKSk7CiAgICAgbV9vcmlnaW5hbERhdGEuYXBwZW5kKGJ1ZmZlcik7
CiAgICAgbV9jb252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNvdXJjZSgpOwotICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGJ1
ZmZlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2Miw4ICsxNjIsNyBAQCB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3
Q29udmVydGVyJiwgY29ucwogICAgIGlmICghbV9oYXNQcm9jZXNzZWRSZXNwb25zZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBkYXRhQ29weSA9IGRhdGEuY29weSgpOwotICAgIHJlc291
cmNlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoZGF0YUNvcHkpLCBkYXRhQ29weS0+
c2l6ZSgpLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICByZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2
ZUJ1ZmZlcihkYXRhLCBkYXRhLnNpemUoKSwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQg
TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmco
UHJldmlld0NvbnZlcnRlciYpCkBAIC0yNDMsMTEgKzI0Miw2IEBAIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VSCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVyIGNyZWF0ZWQgd2l0
aCBwcmV2aWV3IGZpbGUgbmFtZSBcIiVzXCIuIiwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFt
ZSgpLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBy
ZXR1cm4gZGlkUmVjZWl2ZUJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgp
LmdldCgpKTsKLX0KLQogYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiB7CiAgICAgcmV0dXJuICFtX3Nob3VsZERlY2lk
ZVBvbGljeUJlZm9yZUxvYWRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4
IDYwMjYzMWJiN2NkMTA4NjBiMWEzMTIxMDQzYzk3ZDhlZmU0NDc2MWQuLjY3YWM3N2UyYmY3NjEw
NDVjOGMxOGQ1YzdhZGVjN2Y3MzM4YWI3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURl
Y29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KQEAgLTIxMCwxMyArMjExLDEzIEBAIHZvaWQgRXZlbnRTb3VyY2U6
OmRpc3BhdGNoRXJyb3JFdmVudCgpCiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKIH0KIAotdm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sKQogewogICAgIEFTU0VSVCht
X3N0YXRlID09IE9QRU4pOwogICAgIEFTU0VSVChtX3JlcXVlc3RJbkZsaWdodCk7CiAgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9pc1N1c3BlbmRlZEZvckJh
Y2tGb3J3YXJkQ2FjaGUpOwogCi0gICAgYXBwZW5kKG1fcmVjZWl2ZUJ1ZmZlciwgbV9kZWNvZGVy
LT5kZWNvZGUoZGF0YSwgbGVuZ3RoKSk7CisgICAgYXBwZW5kKG1fcmVjZWl2ZUJ1ZmZlciwgbV9k
ZWNvZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpOwogICAgIHBhcnNl
RXZlbnRTdHJlYW0oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCmluZGV4IGQwMTJk
Mzc3ZDE5NzY3NWYwZmUxMTQ1ZjE3MTlmMTdmZGRiZmVhM2IuLmQ2NjJhZTI4MDZmNGIyNDg2N2Iw
MTYwOGUwNGRiYjRmOTdkYmEwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKQEAgLTg0
LDcgKzg0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291
cmNlTG9hZGVySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKaW5kZXggZDM5NjE1Njg4NGI0Yjc5ZTNlNTVkNTY5MWQ3MThjODg3NWZmOWZmNy4uNDAwNGE5
ZDZjMWI0Y2Q1ZWFmNGYzNjI4NzljOGM1ZTYwZDg0MTI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgVmVjdG9yPHVpbnQ4X3Q+
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKIAogICAgIFZlY3Rvcjx1aW50OF90
PiBjb21iaW5lZERhdGE7CiAgICAgaWYgKGhhc09uZVNlZ21lbnQoKSAmJiBzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0
YWJsZURhdGEpKQotICAgICAgICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4Y2hhbmdlKHN0ZDo6Z2V0
PFZlY3Rvcjx1aW50OF90Pj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEp
LCBWZWN0b3I8dWludDhfdD4oKSk7CisgICAgICAgIGNvbWJpbmVkRGF0YSA9IHN0ZDo6ZXhjaGFu
Z2Uoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+Pihjb25zdF9jYXN0PERhdGFTZWdtZW50Jj4obV9z
ZWdtZW50c1swXS5zZWdtZW50LmdldCgpKS5tX2ltbXV0YWJsZURhdGEpLCBWZWN0b3I8dWludDhf
dD4oKSk7CiAgICAgZWxzZQogICAgICAgICBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNE
YXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7CiAKQEAgLTQxMyw3ICs0MTMsNyBAQCBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcigpCiAgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKIH0KIAotU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCitTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKIHsK
ICAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAw
LCBXVEZNb3ZlKHNlZ21lbnQpIH0pOwpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgU2hhcmVkQnVm
ZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKCkKICAgICAgICAgbV9idWZmZXIgPSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYg
c2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9z
aXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShz
aXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkK
QEAgLTYxNyw3ICs2MTcsNyBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0
YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaQogCiBSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QK
IHsKLSAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAg
Y29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwogICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAogICAgICAgICBb
c2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCmluZGV4IGMyN2M5MjY5ZmZlZjI0OWFiNWU4YWJhMjRkNzYyZmM0MGMxYzIz
MDAuLmZhYWMzMmJhZGQ3ZjNlYTBhYjI4MTZmYjQwMDA1MmExMDhhZDJjZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xODMsNyArMTgzLDcgQEAgcHVibGljOgog
CiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVn
aW5Qb3NpdGlvbjsKLSAgICAgICAgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50OworICAgICAgICBj
b25zdCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IHNlZ21lbnQ7CiAgICAgfTsKICAgICB1c2luZyBE
YXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAg
ICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KQEAgLTI1OSw3ICsyNTksNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKICAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcigpKTsKICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIg
KHNpemVvZi4uLihBcmdzKSA9PSAxCi0gICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJn
cywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2Ft
ZV92PEFyZ3MsIFJlZjxjb25zdCBEYXRhU2VnbWVudD4+ICYmLi4uKSkKICAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwpAQCAt
MjY3LDYgKzI2Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIFNoYXJlZEJ1
ZmZlcihjb25zdCBEYXRhU2VnbWVudCYgc2VnbWVudCkKKyAgICAgICAgOiBTaGFyZWRCdWZmZXIo
UmVmPGNvbnN0IERhdGFTZWdtZW50PiB7IHNlZ21lbnQgfSkgeyB9CisKICAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CiAgICAgY29uc3QgY2hhciogZGF0YUFz
Q2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEoKSk7IH0KICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsK
QEAgLTI4Nyw3ICsyOTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZEJ1ZmZlcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKQEAgLTM1
OSw3ICszNjIsNyBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVu
dD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3KFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7IH0KQEAgLTM3MCw3
ICszNzMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4g
Y3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPERh
dGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBt
X3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAg
IGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCA4ODY5MWRjMjU2ZDZkZDZjNDVmNDZlMDE1NDk2NzQyNDVhYTM1MzM3Li5jOTU4Zjg0NGRhYzE0
Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhhODEyOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aApAQCAtNTEsOSArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
dW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIC8v
IFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEsIGxlbmd0aCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSB7IFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJD
b3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBl
YzBhN2FjZjQ3MzI2MWM3NGU3ZWVmZmFkYzljY2MzYzNlNTdmMjI4Li43NzA4YTU4ZDJiNTgwOGI5
NDAwMmQyMDVlOThhMjdiYjJjZTZmMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBX
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpCiB7CiAgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2UpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKaW5kZXgg
Y2RmMTQzZjNjM2NkZTk3MWZkNzlkY2Y3MzI4YmZjZDdiMzI2MDJkYy4uNjI2N2JlMDBjNTRlZTYx
NzAyZmI3N2IyYTVmYjU2N2IyN2ViOWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGY5MjFmM2RhMGU2OWIzMzk5NzdjOWUz
ZTQ5NjY3YTI4ZjVlOTVjYmQuLjcyNjQ3MjVjOGU1NjIyZGYzOGI0NWJjZDk5YWM3ODc1NWI5ZWI4
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENhY2hlZFJhd1Jl
c291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmlu
YWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90
KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQg
ZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKQEAgLTEzMCw3ICsx
MzAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTgogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hl
ZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIENhY2hl
ZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKCZyZXNvdXJjZSA9PSBtX3Jl
c291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkp
CkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQg
bG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBs
b2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVk
KCk7IH0KQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6bG9hZEZpbmlzaGVkKCkKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9p
ZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fYnVmZmVyLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIpOwogICAgIG1f
cGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDkzMDE5
MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIuLmI0Y2YxYTExZWI0YzdmMjg2Mzcw
ZGNjMjFlOGQ0NWZiOWFmODA2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGlj
eUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBz
cmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CkBAIC0xMTA3LDcgKzExMDcsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVmPEZyYQogICAgIC8vIHRoYXQgZmlyc3QgcGFja2FnZSBkZWxpdmVy
eSB3b3VsZCBpbmNsdWRlIHRoZSB0aW1lIG9mIHNlbmRpbmcgb3V0IHRoZSByZXF1ZXN0IGFuZCBn
ZXR0aW5nIHRoZSBkYXRhIGJhY2suIFNpbmNlIHdlIGNhbid0IGRpc3Rpbmd1aXNoIHRoZQogICAg
IC8vIHNlbmRpbmcgdGltZSBmcm9tIHRoZSByZWNlaXZpbmcgdGltZSwgaXQgaXMgYmV0dGVyIHRv
IGlnbm9yZSBpdC4KICAgICBpZiAoIXN0ZDo6aXNuYW4obWVtYmVycy0+ZG93bmxvYWRTdGFydFRp
bWUpKSB7Ci0gICAgICAgIG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzICs9IGJ1ZmZlci0+
c2l6ZSgpOworICAgICAgICBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyArPSBidWZmZXIu
c2l6ZSgpOwogICAgICAgICBkb3VibGUgdGltZVNpbmNlU3RhcnQgPSAoV2FsbFRpbWU6Om5vdygp
IC0gbWVtYmVycy0+ZG93bmxvYWRTdGFydFRpbWUpLnNlY29uZHMoKTsKICAgICAgICAgR1NUX1RS
QUNFX09CSkVDVChzcmMsICJSJXU6IGRvd25sb2FkZWQgJSIgR19HVUlOVDY0X0ZPUk1BVCAiIGJ5
dGVzIGluICVmIHNlY29uZHMgPX4gJTEuMGYgYnl0ZXMvc2Vjb25kIiwgbV9yZXF1ZXN0TnVtYmVy
LCBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcywgdGltZVNpbmNlU3RhcnQKICAgICAgICAg
ICAgICwgdGltZVNpbmNlU3RhcnQgPyBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyAvIHRp
bWVTaW5jZVN0YXJ0IDogMCk7CkBAIC0xMTE1LDIwICsxMTE1LDE5IEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZWY8RnJhCiAgICAgICAgIG1lbWJlcnMtPmRvd25sb2FkU3RhcnRUaW1lID0gV2FsbFRpbWU6
Om5vdygpOwogICAgIH0KIAotICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNl
Z21lbnQpIHsKLSAgICAgICAgaW50IGxlbmd0aCA9IHNlZ21lbnQuc2l6ZSgpOwotICAgICAgICBH
U1RfTE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVz
dE51bWJlciwgbGVuZ3RoKTsKKyAgICBpbnQgbGVuZ3RoID0gYnVmZmVyLnNpemUoKTsKKyAgICBH
U1RfTE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVz
dE51bWJlciwgbGVuZ3RoKTsKIAotICAgICAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVu
Z3RoOwotICAgICAgICBBU1NFUlQoIW1lbWJlcnMtPmhhdmVTaXplIHx8IG1lbWJlcnMtPnJlYWRQ
b3NpdGlvbiA8PSBtZW1iZXJzLT5zaXplKTsKKyAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0g
bGVuZ3RoOworICAgIEFTU0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBv
c2l0aW9uIDw9IG1lbWJlcnMtPnNpemUpOwogCi0gICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVz
c2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9P
QkpFQ1RfQ0FTVChzcmMpLAotICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcoIndlYmtpdC1u
ZXR3b3JrLXN0YXRpc3RpY3MiLCAicmVhZC1wb3NpdGlvbiIsIEdfVFlQRV9VSU5UNjQsIG1lbWJl
cnMtPnJlYWRQb3NpdGlvbiwgInNpemUiLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5zaXplLCBu
dWxscHRyKSkpOworICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNU
KHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAorICAg
ICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFk
LXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIs
IEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7CisKKyAgICBjaGVja1Vw
ZGF0ZUJsb2Nrc2l6ZShsZW5ndGgpOworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVmZmVy
TmV3V3JhcHBlZEZhc3QoZmFzdE1lbUR1cChidWZmZXIuZGF0YSgpLCBsZW5ndGgpLCBsZW5ndGgp
OworICAgIGdzdF9hZGFwdGVyX3B1c2gobWVtYmVycy0+YWRhcHRlci5nZXQoKSwgYnVmZmVyKTsK
IAotICAgICAgICBjaGVja1VwZGF0ZUJsb2Nrc2l6ZShsZW5ndGgpOwotICAgICAgICBHc3RCdWZm
ZXIqIGJ1ZmZlciA9IGdzdEJ1ZmZlck5ld1dyYXBwZWRGYXN0KGZhc3RNZW1EdXAoc2VnbWVudC5k
YXRhKCksIGxlbmd0aCksIGxlbmd0aCk7Ci0gICAgICAgIGdzdF9hZGFwdGVyX3B1c2gobWVtYmVy
cy0+YWRhcHRlci5nZXQoKSwgYnVmZmVyKTsKLSAgICB9KTsKICAgICBzdG9wTG9hZGVySWZOZWVk
ZWQoc3JjLCBtZW1iZXJzKTsKICAgICBtZW1iZXJzLT5yZXNwb25zZUNvbmRpdGlvbi5ub3RpZnlP
bmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDljNDA1NTc4MjQxZDBjNTEy
NzAyOTUxNWMyMjEyNjU4ZjhjNGY2OGEuLjgwOGQ1NjI4YTE5ZmM4YmYxZGMzMWI5YzRiMTEzZTEz
MDVkMTc3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzYsOSArNzYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3Rh
dHVzOjpFcnJvcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIGNvbnRpZ3Vv
dXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwotICAgICAgICBpZiAoY29udGlndW91c0Rh
dGEtPmRhdGEoKSkKLSAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdpbigp
LT5zZWdtZW50LmNvcHlSZWYoKTsKKyAgICAgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91
cygpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1
czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0
YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CkBA
IC0xOTQsNyArMTkyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhv
dFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVj
dGVkOgotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9k
YXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBWZWN0b3I8U2NhbGFi
bGVJbWFnZURlY29kZXJGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9sb2NrKTsKICAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIGJvb2wgbV9wcmVt
dWx0aXBseUFscGhhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCBiYThmZDRmZjRmMWU0MWM5YWQ0ZmE3
NGE0MmJlNGUyYmQxMWFhODQzLi5lMjNlOThkNjA3YTAwMjk3MzZjMDMzZTlkMzQ4NDYzN2NlOTM2
ZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzYsOSArMzYsMTAgQEAgUmVzb3VyY2VIYW5kbGVD
bGllbnQ6OlJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiBSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFJlc291
cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFM
ZW5ndGgpOworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGJ1ZmZlcikKKyAgICAgICAgZGlkUmVj
ZWl2ZURhdGEoaGFuZGxlLCBlbGVtZW50LnNlZ21lbnQuZ2V0KCksIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGM0ZjA1NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBm
Y2U5NmVjMmI0YTUuLmU0NDJjOTczNGMxMTk4NDkwYTFjNmNhYzU3NzI1ZmQ1MTk2YjNiYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmgKQEAgLTQ0LDEzICs0NCwxNCBAQCBPQkpDX0NMQVNTIE5TQ2FjaGVkVVJMUmVz
cG9uc2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTsKIGNsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xh
c3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVz
b3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBT
dG9yYWdlQWxsb3dlZCwKQEAgLTY1LDkgKzY2LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0
ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5k
bGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KTsKLSAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpOworCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNw
cAppbmRleCA0YzA0MjEwYzVhNTEzYWMzZjU0NzE0NmQ5Zjg1YzgyYmQ4ODEzNzc2Li4zMGI0YmIw
ZmRhZWY3YWUyY2M3NGFjNjA5ZjdiMDA5OTdlNWE2ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNw
cApAQCAtNzEsOSArNzEsOSBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUgogICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQordm9pZCBTeW5jaHJvbm91c0xvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKIHsKLSAgICBtX2RhdGEuYXBwZW5k
KGRhdGEsIGxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpKTsKIH0KIAogdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9h
ZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91
c0xvYWRlckNsaWVudC5oCmluZGV4IDY4MzhlOWQ4Y2Y0Mzc5NmQyZjM5NGJhMWY1NGYwOWQwYjY3
ZThhYmQuLmM0Y2I3MmRjN2E2NTVmZDM2OTZhMzMzZmUwNWNkZWQ2Mjk3NmFmYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBTaGFyZWRCdWZmZXI7CisKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVl
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1
ZXVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VR
dWV1ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTeW5jaHJvbm91c0xvYWRlck1l
c3NhZ2VRdWV1ZSk7IH0KQEAgLTY2LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2Rl
ZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8p
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICNpZiBVU0UoUFJP
VEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1t
CmluZGV4IGZjMjcyNTQwODkyYjhlMmNkNzdkZThmNmQ5ZTU0YThjOGI1OTdmNjEuLjE5ODE0YTM2
NWM5ZjY2MWEyMWMyMjlhZGJkMDQ2MTFjMjA5NDdlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5l
cmF0b3IubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogCiAg
ICAgICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIgPSBzdGQ6Om1pbihi
dWZmZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUluZGV4ICsgMSk7CiAgICAgICAgICAg
ICBieXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXI7Ci0gICAgICAgICAgICBb
dGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpTaGFyZWRCdWZmZXJEYXRhVmlldyhi
dWZmZXJWaWV3LCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcikuY3JlYXRlU2hhcmVkQnVmZmVy
KCldOworICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZERhdGE6U2hh
cmVkQnVmZmVyRGF0YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIp
LmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKV07CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsKICAgICAgICAgICAgIFt0YXNrIHJlc291
cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwpAQCAt
MjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisgICAgdm9pZCBkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZpbmFs
CiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1f
Z2VuZXJhdG9yKQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRh
dGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFk
YXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoYnVmZmVyKTsKICAg
ICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMo
KmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCBmOTA5NmVlMmU5ZjI0
MmZmMDRkNzA1YzJhYTEwOTNhNTVlNTczNWRiLi5lYTRhOWJmMjk3ODI5ZWJkMDI5MTQ3NmNiZjhh
N2U1NDk0NzIxMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtMTU4LDcgKzE1OCw3IEBA
IFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0
IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRv
dGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsK
IC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7
CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CistICh2b2lkKXJlc291cmNlOihudWxs
YWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0
YTooUmV0YWluUHRyPE5TRGF0YT4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0
Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9u
SGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51
bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxl
ZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVO
U1VSTFNlc3Npb24ubW0KaW5kZXggNWUyZThlOGQ5ZDc2NjcyYTI0MTRmNzZmNWMwOGYyNTllMDI5
ZjUwNC4uM2M4YmUwOGMyOTM0ZTU0ZGEzYjc0OWNhNmRhMzRlZGE5NmRjOWI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
ZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcg
bG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hl
Y2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBA
IC02NTIsMTMgKzY1MiwxMyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVu
dDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwogICAgIHJldHVybiBb
bV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsK
IH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAg
ICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFttX3Rhc2sgcmVzb3VyY2U6
JnJlc291cmNlIHJlY2VpdmVkRGF0YTpXVEZNb3ZlKGJ1ZmZlcildOworICAgIFttX3Rhc2sgcmVz
b3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpidWZmZXIuY3JlYXRlTlNEYXRhKCldOwogfQog
CiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6cmVkaXJlY3RSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05MzEsMTUg
KzkzMSwxNCBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwogICAgIHJldHVybiByZXNwb25zZS5o
dHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwog
fQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJl
Y2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YQor
LSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZl
ZERhdGE6KFJldGFpblB0cjxOU0RhdGE+JiYpZGF0YQogewogICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNl
c3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxm
IH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAgICAgIHN0cm9uZ1NlbGYuZ2V0
KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOworICAgICAgICBzdHJvbmdT
ZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IFtkYXRhIGxlbmd0aF07CiAgICAgICAg
IGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vz
c2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAg
ICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNl
c3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCi0gICAgICAgICAgICBbZGF0YURlbGVn
YXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBk
YXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2Vp
dmVEYXRhOm5zRGF0YS5nZXQoKV07CisgICAgICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Np
b246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNV
UkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2VpdmVEYXRhOmRhdGEu
Z2V0KCldOwogICAgIH1dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXgg
MWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUzMzlkZmQyYzNiNWRlYzI1Ny4uMGZlNjVhMjllNjM2MTZk
YjQyZjdjOWVhMWQxODUyMjFjMjAwNDBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQu
aApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5
UHJldmlld0xvYWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPExlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLm1tCmluZGV4IDMxNWUwNjUxNTMwZGNkYjAyODAxNjU0Yjc1N2Q4MTQ3M2MyMGZk
MzAuLmFlNzE1NWVjZWYzNWQzZTE4ODhkOTE2NTY0NTdlMzgxMTU5ZGY0MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0KQEAgLTMwMCw3ICszMDAsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbAogICAgICAg
ICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzkz
CiAgICAgICAgIC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFueSBkYXRhIGFib3V0IHRy
YW5zZmVyIHNpemUgdG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQogICAgICAgICAvLyBDb250
ZW50LUxlbmd0aCBoZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93IHRyYW5zZmVyIHNpemUu
Ci0gICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKKyAgICAgICAgbV9oYW5kbGUt
PmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSksIC0xKTsKICAgICB9OwogCiAgICAgW3NlbGYgY2FsbEZ1bmN0aW9uT25NYWlu
VGhyZWFkOldURk1vdmUod29yayldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKaW5kZXggMDhkMDU3YmJiNWYxN2MyMDQ1YmZmOTA2ZmY1YWRhODVmMTA0MjkzMC4uYTMy
YWZmNmVmZTFlMGRhYjE5YzVkYjFmZWIzYjc2N2ZlMzYwYTZhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC01NDYsOSArNTQ2LDggQEAgRW5jb2RlZERhdGFT
dGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAg
ICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRl
ciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9h
ZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9z
dmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIo
KS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgZGF0
YSgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgbG9h
ZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoc2VnbWVudC5kYXRh
KCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgfSk7CisgICAgICAgIGZvciAoYXV0byYgZWxl
bWVudCA6ICpkYXRhKCkpCisgICAgICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KS0+d3JpdGVyKCkuYWRkRGF0YShlbGVtZW50LnNlZ21lbnQuZ2V0KCkpOwogICAgICAgICBsb2Fk
ZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuZW5kKCk7CiAKICAgICAgICAgZnJh
bWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5k
ZXggODJhMmE4YzRiMThhY2NlNzk4YjI3YzJjOGQwMDk1ODlmZjc1Y2JhOC4uNGU4YWI3ODFhNDA2
MWFiMThjNTAzMzczYmRhMzhmNmM1NWQ4YTAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMTE1LDEyICsxMTUsMTIgQEAgdm9p
ZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFIKICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKIH0K
IAotdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sKQogewogICAgIGlm
IChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS5hcHBlbmQo
ZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lk
IFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuaAppbmRleCBkYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5OGQ5OWI1MTc2YTM5Li43Y2Jh
YThlNTUxMGM4YzRmY2FmMmViOTJjNmY3M2IzZDJhMTJjNjAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzV29ya2VyRm9udExvYWRSZXF1ZXN0KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggYmY1
YTQ0ZmUzNDhkMmZmY2U5MTZmYjE5NDkxNWU2N2JmZGE5YWVjMS4uY2QyNmVjZDZhMzdhN2VkMzlm
ZjcxZWRkYTM1ZThlZmE5MGIzN2M0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsCiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwg
cmVzcG9uc2UpOwogfQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4p
CiB7CiAgICAgaWYgKG1fZmFpbGVkKQogICAgICAgICByZXR1cm47CkBAIC0yMTIsMTMgKzIxMiwx
MSBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbikKICAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0Il9zLCAiVVRGLTgiKTsKICAgICB9CiAKLSAg
ICBpZiAoIWxlbikKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIGlmIChsZW4gPT0gLTEpCi0gICAgICAgIGxlbiA9IHN0cmxlbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKLSAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNv
ZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CisgICAgc2l6ZV90IGxlbiA9IHVzZVN0ckxlbiA/IHN0
cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0YSgpKSkgOiBidWZm
ZXIuc2l6ZSgpOworICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXIu
ZGF0YSgpLCBsZW4pKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBlYWFiZTFlYTVkMTNiMzNmOWMz
Y2M2NmRkNDk1NTdlYjY5ZTM3ZWZjLi4wYmMzYTAyNWIzNjc5ZTI1NjMwODYyNGVlZWJhODlkY2Nj
NDVjODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgK
QEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImLCBib29sIHVzZVN0ckxlbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
aAppbmRleCBmYmEzNjMyMmIyOWE2ZDViNzk3YjM5ZWRjM2MzZDE3MTI0YjNiNWJjLi5jZTM3MDk2
ODlkOWYwOTIxZTA5MDNhMDM3N2RiMjY4YTU0NTBiMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlZGlyZWN0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChS
ZWY8Rm9ybURhdGE+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA5YjExMmI5ZGIyY2Q4NGQwMzJmNTlk
YWZhOGU4ZTM4ZTA3MGU1M2Y3Li5kYzNhZWE4Y2FkOWQwOTZiNDJiY2E2NWIyNjEyMzJmMTM3NDNk
MWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTEwMzQsNyArMTAz
NCw3IEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlRGVj
b2RlcigpIGNvbnN0CiAgICAgcmV0dXJuIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4
dC9wbGFpbiIsICJVVEYtOCIpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVu
KQogewogICAgIGlmIChtX2Vycm9yKQogICAgICAgICByZXR1cm47CkBAIC0xMDUyLDE3ICsxMDUy
LDE2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW4pCiAgICAgaWYgKHVzZURlY29kZXIgJiYgIW1fZGVjb2RlcikKICAgICAg
ICAgbV9kZWNvZGVyID0gY3JlYXRlRGVjb2RlcigpOwogCi0gICAgaWYgKCFsZW4pCisgICAgaWYg
KGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChsZW4gPT0gLTEp
Ci0gICAgICAgIGxlbiA9IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KSk7CisgICAgc2l6ZV90IGxlbiA9IHVzZVN0ckxlbiA/IHN0cmxlbihyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0YSgpKSkgOiBidWZmZXIuc2l6ZSgpOwogCiAgICAgaWYg
KHVzZURlY29kZXIpCi0gICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXIt
PmRlY29kZShkYXRhLCBsZW4pKTsKKyAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1f
ZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGxlbikpOwogICAgIGVsc2UgewogICAgICAg
ICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
LmFwcGVuZChkYXRhLCBsZW4pOworICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5hcHBl
bmQoYnVmZmVyKTsKICAgICB9CiAKICAgICBpZiAoIW1fZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKaW5kZXggMmQxM2JlYzM5NDY0NDhiOWI0ZjkyNWQzMmJkODZiYTJkODAz
Nzc1YS4uNmJmMTlmODJiZDJmZjc2NzA3ZGE0NTcxNDc1MDdlOTkxZDI0NjVkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTE2Miw3ICsxNjIsNyBAQCBwcml2YXRlOgogICAg
IC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRp
Zmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlzRG9uZShib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApp
bmRleCA2MTdmNDc2ODk1NjQyZGVjMjMyNTRiNTQwZWU4MTkxMWFjNGEyZGY2Li43ZjUxMmM2YzEx
YThlNzEwOGNmMDA2MmI1ODRkMjdiNTg5MDhkMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgogI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
c3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKQEAgLTk2LDEwICs5NywxMCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6
OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZQog
ICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1Rv
QmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJj
ZTo6ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAobV9j
bGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUoZGF0
YSkpOworICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhKTsKIH0KIAog
dm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAppbmRleCA1YjdhN2UyYTc0MjQ0MzJkODZjYjI4
YTFiZTcxNzE4YTE2NzM3NWU3Li45NTEwNmY2NzIyNzNiNDVmMGEyNGE0N2ExYTJiZGQxNDA5ZTBm
NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTcsNyArNTgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNo
b3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKTsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4m
Jik7CiAgICAgdm9pZCBkYXRhU2VudCh1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgZGF0
YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2
b2lkIGRhdGFSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICB2b2lk
IGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICB2b2lkIGxvYWRGaW5pc2hlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRp
bmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVu
ZGluZ0Rvd25sb2FkLmgKaW5kZXggNzFmZDAyMjI5YmJiMWM1NzMyNmZkZmNmZTI2YzExZjc2MWFi
Y2Y3Mi4uMDU0Yjg5M2UxMTExMGRjZjlhNzAwMjUyZjRmNzk1YjAxYTU4N2I5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2Fk
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRv
QXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRU
b0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4
IDk1ODYwOTFlYTAwNDFiNmYxNTg2OWQ0MmJiZGE3MjQzMjk3NjkwZWMuLmJhOGQwNDhmNjVkYzMz
OTg0ZjBjZDQ3NjM1YWI5MTAxODc5YmQzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAg
LTEyMCw3ICsxMjAsNyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJgogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKQordm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQ09SU19DSEVDS0VSX1JFTEVB
U0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggNTA1
YTRlZmU1NzFkNDg5ZTUwYTk4OGJlYjgxODViN2ZlYWIzZGIxMC4uMGNiMzE1ZmQ4ZmY1MzE5OTE1
N2RlNzhmODQ1MmQ3MWM0ZjVlMjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC0zNyw2ICsz
Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwg
TmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2Vu
dCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdh
c0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5oCmluZGV4IDRiOWVlNTc0YjkyYzdjMzcxN2E0YmMyODE5YTZiZTNhMTkwNjU3
MTUuLmY0NzllMDkwMmIyMTc5Mjk1NWQzNzY4MTRiMjFjODlmZjU1ZGI1ODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApAQCAtNDMsNyArNDMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0
X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdhc0Js
b2NrZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwCmluZGV4IDhjMTA0ZDgxNjBiN2FhZmQwOTk3MTVkYTZkNGU2ZjdjNDYzN2ZhMDguLjYwYjY5
YTkzNmJiNzhkZjI1MTA3NDljNzU0ZmU2YWEyMjkzZmUwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNTQsMTEgKzI1NCwxMCBAQCB2b2lk
IE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlLCBOZWdvdGlhdAogICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVSZXNwb25z
ZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12
b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgdGhlIGVuY29kZWQgZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVjb2RlZCBkYXRhIGxlbmd0aC4K
LSAgICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsKLSAgICBtX2NsaWVudC5nZXQoKS5kaWRS
ZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgc2l6ZSk7CisgICAgbV9jbGllbnQuZ2V0KCku
ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIE5ldHdv
cmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwg
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKaW5kZXggZTZhNzYxMTU5
NjJiOTY1OWU3YmZlNzhjNmY0ZGM2ZjUzMTJiM2NiZS4uMGU0YzFhZTQ5MjNjMzM3ZjVjZjliMGE0
MDhiNWE4ODIyOWY1OTY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
JiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lk
IHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDbGllbnQuaAppbmRleCAzNDhjZmZiOWU4ZTI1ZWU4M2JiYjM5YTAyY2QzY2Y2
ZDI4NTRkMzllLi44YTI4NTgyNjExM2Y5ZDhlZTY2MGRiNjg4YjNjNTM5M2ZmOTdiMmUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCkBA
IC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAzNmFjYzYzMTQ1ZjQwNWIxOTU1
ZDMzNTQwZGFhNzA4ZjlhNjI5MzQxLi5lNmZkMmFjNzBlYzdlMGU3NTkwYWRlMjcyZTE0MjdmY2U5
NmRkZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NjMsMjkgKzg2MywyOSBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2VuZERpZFJlY2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93
c2luZ0NvbnRleAogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0
ZXNSZWNlaXZlZCkKLSAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlQnVmZmVy
OiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIs
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwotICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBi
dWZmZXItPnNpemUoKTsKKyAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0
YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCki
LCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0g
YnVmZmVyLnNpemUoKTsKIAogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7
CiAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50
IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBv
ZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNo
ZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKLSAgICAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hl
QnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1
ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSAr
IGJ1ZmZlci5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiAgICAgaWYgKGlz
Q3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IEF0
IGxlYXN0IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNvdXJj
ZSBoYW5kbGUuCi0gICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5z
aXplKCk7CisgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLnNpemUo
KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YS5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZl
cik7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERh
dGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgICAg
ICByZXR1cm47CkBAIC0xMjczLDcgKzEyNzMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxl
bmd0aCA9IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQor
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNT
RVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBjZjEwY2YwZTcxYTFiYzY1NTQw
ZTg3ZDZiYTRjMWI5Yzg1NmMwYTFkLi44MTdhZWYyNmM4MzZjMzRhN2Q0NGVlN2NjOTVlZGQ5YTI5
OGQ2YTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVk
aXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFp
bExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGZpbmFsOwpAQCAtMTkzLDcgKzE5Myw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwog
ICAgIHZvaWQgYnVmZmVyaW5nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc2VuZEJ1ZmZlcihXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICB2b2lkIHNlbmRCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2b2lkIGNvbnN1bWVTYW5kYm94
RXh0ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IGJjMmMzMzdlNGVl
ZTAxYWY4M2UxMzY3MjMxN2E5YTllYWJjN2M2ZjguLmYwZWZkMDRiYjJlMThmNmYzY2JjMTYzZmFm
MjNkYTA0NjZiZWU1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVQKICAgICBkaWRG
aW5pc2goeyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRh
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBQSU5HX1JFTEVBU0VfTE9HKCJkaWRS
ZWNlaXZlRGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IGU3ODA4ZDhlNjU1ODJmNzkzODg4MjhkNTE3NThj
YjE5M2NmNTVmYzcuLmIyMjVjNDdiOTRhZmEwYjQ0ZWRjMjY3MGRmYzU4YWQ3YWZjOTE0MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTU0LDcgKzU0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNF
eHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IDE3
ZDQ3OTA3YTNmNmVlNTJiZTY1MDFkMWRhYjBjYTYwNzUxZDZiMGIuLmFhYWUyYmZiZGY4M2EzOWFj
ZWMwNjNmZWIyNDQ2MTZkYzg0OGVkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJlY29ubmVj
dFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJl
c3BvbnNlQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwog
fQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUHJl
Y29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVj
b25uZWN0VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFz
ay5oCmluZGV4IDg1ODA4ZTEyMWI2OGNhOGI3M2UyNTE4ZDE5M2FiMzk1ODFlYWQxZTcuLjhjNmIw
ZGVlZDY2YzUxMDE5YmU4OTg0ZWQ1Yjg3ZTBjMWQ3OTBmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZp
bmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2suY3BwCmluZGV4IDI1ZDRlMzdmOTQ1NGJlZTMyZjA0ZDhjYzhjNDcxZDVkM2Y3ZWQ4MmIuLjhj
OGRjMzZiMWU1MzkzOGY4MWViNGFiYWFmZjAxOTBmMmI1NGVkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxv
YWRUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVk
ZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25N
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgpA
QCAtMTczLDcgKzE3NCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6c3RhcnQo
KQogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX3BlbmRpbmdEb3dubG9h
ZExvY2F0aW9uKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxl
bmd0aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oCmluZGV4IGFiNTllYWU1MjY2NTMwNjIxMmEyOGU5
MzIzYTJiOGI0ZmZlMGM3OGYuLmI4OWFiM2ViZDc2MmY2ODEyYTVlOTdiZmY2OTBiYTkwZjAyNTdm
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaApAQCAtMzcs
NiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Niw3
ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckRvd25sb2FkVGFzayhOZXR3b3Jr
U2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIERvd25sb2FkSUQpOwogCiAgICAgLy8gSVBDIE1l
c3NhZ2UKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYp
OwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxv
YWRUYXNrLm1lc3NhZ2VzLmluCmluZGV4IDFkM2JmYjdjYzMxMDk3OTljYzgwMDFiYmE3MWQ4OWMw
ZjZmMmQ5MmYuLjUwZDJiNDJhNzFiMGVkYWI3OWZiY2U5ZGRiOWYxOTk4MmRiNTM1OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2Vz
LmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJEb3dubG9h
ZFRhc2sgTm90UmVmQ291bnRlZCB7CiAgICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZFJlY2VpdmVEYXRhKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAg
IERpZFJlY2VpdmVGb3JtRGF0YShJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgRGlk
RmluaXNoKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRl
eCA0ZTc5MTliM2RkYzAyYWUxNGQwZWQ5Njg0YjhjNjhiYjZmMjhhNDM0Li4xYjczOWJmMTk4NDBi
MGY1OGMwODFjNmU5OGY4Y2NlMTZhMzRhODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291
cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMu
aCIKQEAgLTIyNSwxMyArMjI1LDEzIEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6cHJv
Y2Vzc1Jlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuCiAgICAgICAg
IG1fbG9hZGVyLnNldFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsKIH0KIAotdm9pZCBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0
YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9pc0RvbmUpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIgfHwgIW1fdGltZW91dFRp
bWVyLT5pc0FjdGl2ZSgpKTsKLSAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0pOworICAg
IC8vIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVE
YXRhIHsgZGF0YSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6ZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmIGZvcm1EYXRhKQpAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNo
VGFzazo6bG9hZEJvZHlGcm9tUHJlbG9hZGVyKCkKICAgICAgICAgICAgIGRpZEZpbmlzaFdpdGhN
ZXRyaWNzKG1fcHJlbG9hZGVyLT5uZXR3b3JrTG9hZE1ldHJpY3MoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJl
bmNlIHsgY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSB9LCBsZW5ndGgpOworICAgICAgICBk
aWRSZWNlaXZlRGF0YShSZWYgeyBjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImPigqY2h1bmspIH0sIGxlbmd0aCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGMzNDU4MDI2N2ZiMzI2OWU2ZGNiZGNlZmMzNGQw
NjgyYzZhMDg4NmMuLjUyMjVlNTQ1OTk5NTFkOGY4MWM3MGFmODJlYmJhMjY4OWUzNTAwNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaApAQCAtNDgsNiArNDgsNyBAQCBu
YW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwogY2xhc3Mg
Rm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC05Myw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBT
aG91bGRTZXRTb3VyY2UgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
ZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGJvb2wgbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBp
bnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YShj
b25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAg
ICB2b2lkIGRpZEZpbmlzaFdpdGhNZXRyaWNzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNz
YWdlcy5pbgppbmRleCAxOGU2MjlmMGQxNDZlZDJkNDI5ZGIxYmEyODcwMWU4M2ZiOTZlNjJmLi43
ZGI1M2U5YmQwMzgwNDU0NzNhMjVhZjM3ZDQ3YzE5NTc5NWUyMzIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgpAQCAtMjcsNyArMjcs
NyBAQCBtZXNzYWdlcyAtPiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIE5vdFJlZkNvdW50ZWQgewog
ICAgIERpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKICAgICBEaWRSZWNlaXZl
UmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogICAg
IERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBi
b29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQotICAgIERpZFJlY2Vp
dmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKQorICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSBk
YXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZFJlY2VpdmVGb3JtRGF0YShJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgRGlkRmluaXNoKCkKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4
IDVkOWJkMzMzMzkyMTFjYTFjZDQ0N2I4NzkyZjU0NjFlYTg3ZWRkZjQuLmU1NjU0Y2MzMTM5YjQ5
ZDYxYTk4NTEzY2QwMTZiZWNmNzM5YmJjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc1LDEwICsxNzUsMTAgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UmJiByZXMKICAgICAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKQordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9i
b2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtlQ29udGlndW91cygpLCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICAgICAgbV9ib2R5Q2FsbGJhY2soUmVmUHRyIHsgJmJ1ZmZlciB9LCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmgKaW5kZXggNjdhYmM1NWM2MGZmMjRlMzlkZDA0ZWNjNTAyMWI2MDVl
ZThiZWJiMS4uNmVkYjU2MThkY2M0N2E2MWFkMDc1MjM3ODU0OTlmZWRlMDg0N2MyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKQEAg
LTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFj
ayYmKTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47Cisg
ICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8Y29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsg
fQpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQg
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBmaW5hbDsKICAgICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmNwcAppbmRleCA3YTI2MjIxOWRlNzhiMjM1ZDEyNWE5MmI2ZTIzNmQzMzI2MmY3YTI3Li5kOWQ3
NDc1MjUzMmYxODllYjFiZTJjMDNkN2UyOWU4NTllODk2ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBA
QCBSZXNvdXJjZUVycm9yIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpwcm9jZXNzUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwbwogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkK
K3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBpZiAo
IW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCkBAIC0xODYsOCArMTg2LDExIEBAIHZvaWQg
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VE
ZWNvZGVyOjpjcmVhdGUoInRleHQvamF2YXNjcmlwdCJfcywgIlVURi04Iik7CiAgICAgfQogCi0g
ICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBl
bmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNp
emUpKTsKKyAgICBpZiAoIWJ1ZmZlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgYnVmZmVyLmZvckVh
Y2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgICAgICBtX3NjcmlwdC5hcHBl
bmQobV9kZWNvZGVyLT5kZWNvZGUoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7Cisg
ICAgICAgIH0pOworICAgIH0KIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAppbmRleCA0
NGZjMDY4NWZhMGZlZGM4NzQyMTkxNmU5MTNhNjc0YjFjMGZkYmVhLi43ZTgxOGYzNDEzZGEyOWY4
NjFlMTAwMzk5MWU4ZDUzODkyMzQ2ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IDQxZDgyMzUwMjQ3NDdiNmZjNGEzYWM1NDhlMTMzNGVk
NmNiNWVmN2EuLjgxNGViMzIwZDRlNzQ4YTI5YWUwOTEzNWFmYzFkYTVmMzc1MTVlZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEyMCwxNSArMTIwLDE1IEBAIHZv
aWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9u
OjpVc2UpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeSk7CiAKICAgICBpZiAobV9i
dWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGgg
aW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1D
YWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZm
ZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVy
LmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVm
ZmVyLnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oCmluZGV4IDFiODQzZGI3ZWMyNzBkYjlkYWI5ZThhMjVmMmE0OGE4ZWNh
ZTJhOGEuLjlhZGNhNjA1ZTcyODBiYjdiMzRjZTc0NGQ4Nzg4YmJiNDQ4OTI0ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IDQxNjY4YTViMWNkNzM4Njk2N2I4ZmQ5NzNlOTY3
MzJlY2E5MDdlZGMuLjA3NzJhZjFhODZkMjI0MTdiZjExZjE2YmQ2YjdiNTgwZmU1N2E3YTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU011dGFibGVV
UkxSZXF1ZXN0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZWdpc3RyYWJsZURvbWFp
bjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Miw3
ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRMUyhjb25zdCBV
UkwmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0
ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKIAogICAg
IHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
ciYmKTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxv
YWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDQ3NzFmZGU5MjBkNmI5OGU4M2ZjMjlkZDNh
YWY5N2EwYTZkOWE4ODAuLjY0OWI1Y2E3OGM2ODc1ZWNkZTBkM2Q0MzZmOTU5MGRiNTE3OWQwYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNDQzLDEyICs0NDMsMTIgQEAgdm9pZCBOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXIKICAgICAgICAgbV9jbGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9y
LCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KQordm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0
KCksICJEYXRhVGFzayIsICJyZWNlaXZlZCAlemQgYnl0ZXMiLCBkYXRhLT5zaXplKCkpOworICAg
IFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZlZCAlemQg
Ynl0ZXMiLCBkYXRhLnNpemUoKSk7CiAKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVEYXRhKGRhdGEpOwogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdv
dGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFdlYktpdDo6UmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDE3ZjA4YzI4ZWExMjViNTUwOTkzZWVk
MjRkNTk2M2I4NTEwYTExNDEuLmY5ZmEyMjExYjRiNzA3YjViMTYxODM1MWUwNmQ2MmRlNDAxMGY0
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIElQ
QyB7CkBAIC01Myw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBjb25zdCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7
IH0KIAorICAgIC8vIFRPRE8gOiB0aG9zZSBjYW4gZ28gYXdheS4KICAgICBjb25zdCB1aW50OF90
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVs
bHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1
ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuY3BwCmluZGV4IDljZGVkOTY5MzUxNWNiZGI5MjVmNTk1NGExNmY0YmFmMDY3YTMx
NjIuLjZjMTliYzliYWI2NDEwMzMzMDA3M2I0MWM1YWUxZDhlZDAxYzNiNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtMTg1LDkgKzE4NSw5IEBAIHZvaWQgTWVkaWFGb3Jt
YXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRp
YWxpemF0aW9uCiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogCiAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fcGFyc2VUcmFja3NMb2NrIH07Ci0gICAgQVNTRVJUKCFtX3BhcnNlVHJhY2tzU3Rh
dHVzKTsKLSAgICBBU1NFUlQobV9kdXJhdGlvbi5pc0ludmFsaWQoKSk7Ci0gICAgQVNTRVJUKG1f
dHJhY2tSZWFkZXJzLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFtX3BhcnNlVHJhY2tzU3RhdHVz
IHx8IChtX2luaXQgJiYgZXJyb3JDb2RlKSk7CisgICAgQVNTRVJUKG1fZHVyYXRpb24uaXNJbnZh
bGlkKCkgfHwgKG1faW5pdCAmJiBlcnJvckNvZGUpKTsKKyAgICBBU1NFUlQobV90cmFja1JlYWRl
cnMuaXNFbXB0eSgpIHx8IChtX2luaXQgJiYgZXJyb3JDb2RlKSk7CiAKICAgICBBTFdBWVNfTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIGlmIChlcnJvckNvZGUpCkBAIC0yMjEs
NiArMjIxLDcgQEAgdm9pZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUGFyc2VUcmFja3MoU291cmNl
QnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb24KICAgICB9CiAKICAgICBtX3BhcnNl
VHJhY2tzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgIG1faW5pdCA9IHRydWU7CiB9CiAKIHZv
aWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPE1lZGlhU2FtcGxl
PiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9y
bWF0UmVhZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIv
TWVkaWFGb3JtYXRSZWFkZXIuaAppbmRleCAzN2U0YWQ0Mjc2YjEyYWQ1MTQzZGMyMjhjZGU5NDc2
Mzg3ZTVjODg4Li42NTA5M2U5ZTQ2YjQwYjVhMzk3NmZkZWYyOWU2MTNjNjQ1MWYzMTVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFG
b3JtYXRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaApAQCAtODcsNiArODcsNyBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxSZWY8TWVkaWFUcmFja1JlYWRlcj4+IG1fdHJhY2tSZWFkZXJzIFdURl9HVUFSREVE
X0JZX0xPQ0sobV9wYXJzZVRyYWNrc0xvY2spOwogICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1f
bG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyAgICBib29sIG1faW5p
dCB7IGZhbHNlIH07CiB9OwogCiBjb25zdGV4cHIgTWVkaWFGb3JtYXRSZWFkZXI6OldyYXBwZXJD
bGFzcyBNZWRpYUZvcm1hdFJlYWRlcjo6d3JhcHBlckNsYXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZTEyNjRjZTIxYmE1N2YyYTQyNzQ4
ZTMzYTFkYWQ4OGEwZTI1OGJjMi4uZDc2N2ZjMDZiMzZmMTU2ZmYzMWMzODNlNjQzZDQzNDRjMjE3
YWFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAK
QEAgLTE2OCw3ICsxNjgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgLT4gRQogICAgIHJldHVybiBF
eGNlcHRpb25UeXBlOjpOb25lOwogfQogCi1hdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9u
VHlwZQorYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKQEAgLTE4NywxMSArMTg3LDExIEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6
ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBF
CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAg
bV9zeW5jRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9zeW5jRGF0YS5h
cHBlbmQoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAg
fQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNr
RGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3Vy
Y2VMb2FkZXJJRCwgYnVmZmVyLmdldCgpKSwgbV93ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1fdXJs
U2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGJ1ZmZlciks
IG1fd2ViUGFnZUlEKTsKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGY2ZmY0NmVlYTVm
MjkwYjdiN2UzZmU1OTIxZGY5ZjE5NGJhY2QxMTcuLmMzMjMwNjliMWNjMDMxZjAyNWIyMmM4NTlh
MzU0MTg4ZmRkMjM3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvblR5cGUgd2lsbFBl
cmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCAgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIEV4
Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlk
Q29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBzdG9w
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKaW5kZXggYjUxM2EyNjgwOGVhYTE4ZTM3
ZjRmZGYwNGEyM2QyOTYwYjI3M2IyYy4uOTIzNGI1YzY1M2Y5MWViYTkxMGZiZGY5YmUxZTIyYTAy
YzExYzY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcApAQCAtNzIsMjAgKzcyLDE3
IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhU2VudChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVNlbnQobV9pZCwgYnl0ZXNTZW50
LCB0b3RhbEJ5dGVzVG9CZVNlbnQpLCAwKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNl
UHJveHk6OmRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJv
eHk6OmRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIHNoYXJlZE1lbW9yeSA9
IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUobGVuZ3RoKTsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9
IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihidWZmZXIpOwogICAgIGlmICghc2hhcmVkTWVtb3J5
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHNoYXJlZE1lbW9yeVB0ciA9IHN0YXRpY19j
YXN0PGNoYXIqPihzaGFyZWRNZW1vcnktPmRhdGEoKSk7Ci0gICAgbWVtY3B5KHNoYXJlZE1lbW9y
eVB0ciwgZGF0YSwgbGVuZ3RoKTsKLQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsK
ICAgICBzaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIC8vIFRha2Ugb3duZXJzaGlwIG9mIHNoYXJlZCBtZW1v
cnkgYW5kIG1hcmsgaXQgYXMgbWVkaWEtcmVsYXRlZCBtZW1vcnkuCiAgICAgaGFuZGxlLnRha2VP
d25lcnNoaXBPZk1lbW9yeShNZW1vcnlMZWRnZXI6Ok1lZGlhKTsKLSAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRhUmVjZWl2ZWQo
bV9pZCwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihsZW5ndGgpIH0pLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRhUmVjZWl2ZWQobV9pZCwgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGJ1ZmZlci5zaXplKCkgfSks
IDApOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6YWNjZXNzQ29udHJvbENo
ZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKaW5kZXggNDdl
YTg2NjcxYjEzZDEzOTVjM2RhZDliZGE3OWFiZjYxNmNiYTE3OS4uOTQ5NDY0NTIyYzI2M2U2YTVl
ODA3M2Y3NGU5ZDI0MzRiYWE5MzkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCkBAIC00
Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVS
ZXNwb25zZShXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBkYXRhU2VudChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9u
ZykgZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2
ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IGZpbmFsOwogICAgIHZvaWQgbG9hZEZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBsb2Fk
RmluaXNoZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMzEwZmNhNzg3NWMz
MmMzY2Q3NDc4ZGI2NGY1OWFjMmNmNTAxNjM5Mi4uZWMyNTkzYjAzZTYzNjJhNzJhNDM0N2Q0M2Rm
NmM1N2Q1NTg3ODU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgpAQCAtMTg5LDE2ICsxOTAsMTUg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVS
ZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
Q29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBMT0coTmV0d29y
aywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEgb2Ygc2l6
ZSAlbHUgZm9yICclcyciLCBkYXRhLnNpemUoKSwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmco
KS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNz
aW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRh
IHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VM
WShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVu
dGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxl
ci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVu
Z3RoXSgpIG11dGFibGUgeworICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9j
b3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgYnVmZmVyID0gZGF0YS5idWZmZXIoKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQotICAgICAgICAgICAgICAgIGRpZFJl
Y2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlciks
IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yMDcsNyArMjA3LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICAgICAgV0VC
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2Vp
dmluZyBkYXRhIik7CiAgICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCi0g
ICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCks
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IGRhdGEuYnVmZmVyKCkgPyBSZWYgeyAqZGF0YS5idWZmZXIoKSB9IDogU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MpCkBAIC0yOTUsNyArMjk2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhh
bmQKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCkpOwogICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRS
ZWNlaXZlUmVzb3VyY2U6Iik7CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAg
IGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZm
ZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBzZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4i
KTsKQEAgLTMxMiw3ICszMTMsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZAogCiAgICAgLy8g
T25seSBzZW5kIGRhdGEgdG8gdGhlIGRpZFJlY2VpdmVEYXRhIGNhbGxiYWNrIGlmIGl0IGV4aXN0
cy4KICAgICBpZiAodW5zaWduZWQgYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAg
ICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCks
IGJ1ZmZlclNpemUsIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgIG1fY29yZUxv
YWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIGJ1ZmZlclNpemUs
IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CiAKICAgICBpZiAoIW1fY29yZUxvYWRlcikKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmgKaW5kZXggYTIyZTYyZjI4YjVmYTRjZmM5MWFhNWU1Y2U4MmNh
MjdhZTI2YWQ1My4uYWM1NDIyZmMwNjcxMGJkMGUwODdlMGY0NDA5ZWQ5NDAxN2MwY2YxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURh
dGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC04MCw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFNl
bmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVu
Y29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9p
ZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
Jik7CiAgICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCmluZGV4IDAyYTE0
ZjU5YTMwNDc0NGMyZDE4M2VhNzllOTllYmFlYjRjZmJiYTIuLmRhYTI0ZDI3YzcxYTgzY2Y3YzBm
MTY4ZGEyNmE0OWI0ODc2OTI2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCkBAIC0y
NCw3ICsyNCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVkaXJlY3RSZXNwb25zZSkKICAgICBEaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1Nl
bnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCkKICAgICBEaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKLSAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICBE
aWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSwgaW50NjRfdCBlbmNvZGVk
RGF0YUxlbmd0aCkKICAgICBEaWRGaW5pc2hSZXNvdXJjZUxvYWQoV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljcykKICAgICBEaWRGYWlsUmVzb3VyY2VMb2FkKFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgRGlkRmFpbFNlcnZpY2VXb3JrZXJMb2Fk
KFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggOGQyYzVmM2UyNWNhMWEyMzc4ZTVl
MzAwNWQ3NTQ5MmJlYWYwYjFlYS4uMmI3ZTRkMmMyMGZkZDE5OTg4MjcyZGE4YmZjYzVhNjE4NmM2
ZDNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4uaApAQCAtNjUsNiArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBWE9i
amVjdENhY2hlOwogY2xhc3MgRWxlbWVudDsKIHN0cnVjdCBQbHVnaW5JbmZvOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTE3NiwxMSArMTc3LDExIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJl
cXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJM
JiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBmaW5hbCB7IH0KICAgICB2b2lkIHN0
cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1l
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2
ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KSBmaW5hbDsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURp
ZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFt
RGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAg
IHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VV
UkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29u
c3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBtYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7
CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmco
KSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQp
IGZpbmFsOwogICAgIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikg
ZmluYWw7CkBAIC0zNjIsNyArMzYzLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKT4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7Cisg
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICAgICAgdm9p
ZCBkaWRGYWlsKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKSBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXgg
YjRlYjE0ZmY1N2Q5MjViZjcwZDhhNWFkZDBlYjU3YTcwOTEzODVlYi4uYTMwMDFkMmVhY2U2NmNk
MDM3OGViM2M0MmMwNDQ2ODAwZDBlMTgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05NCw2ICs5NCw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1Njcm9sbEFuaW1hdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhclRo
ZW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaD4KICNp
bXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CkBAIC0xMTkxLDcgKzExOTIsNyBA
QCB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdAogICAgIH0KIH0KIAotdm9pZCBQREZQbHVnaW46OlBE
RlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGNvdW50KQordm9p
ZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIGlmICghbV9wZGZQbHVnaW4pCiAgICAgICAgIHJldHVybjsKQEAgLTEyMDAs
NyArMTIwMSw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6
OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtCiAgICAgaWYgKCFyZXF1ZXN0KQog
ICAgICAgICByZXR1cm47CiAKLSAgICByZXF1ZXN0LT5hZGREYXRhKGRhdGEsIGNvdW50KTsKKyAg
ICByZXF1ZXN0LT5hZGREYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQg
UERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZEZhaWwoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VFcnJvciYpCkBAIC0xNzE4
LDE1ICsxNzE5LDE1IEBAIHZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYsIHVpbnQzMl90CiAgICAgICAgIG1faXNQb3N0
U2NyaXB0ID0gdHJ1ZTsKIH0KIAotdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3Zv
aWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1JRCwg
c3RyZWFtSUQgPT0gcGRmRG9jdW1lbnRSZXF1ZXN0SUQpOwogCiAgICAgaWYgKCFtX2RhdGEpCiAg
ICAgICAgIG1fZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKLSAg
ICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCksIGJ5dGVzLCBsZW5ndGgpOwotICAgIG1f
c3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CisgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdl
dCgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX3N0cmVhbWVkQnl0ZXMg
Kz0gYnVmZmVyLnNpemUoKTsKIH0KIAogdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZEZpbmlzaExv
YWRpbmcodWludDY0X3Qgc3RyZWFtSUQpCkBAIC0xNzYzLDE0ICsxNzY0LDE0IEBAIHZvaWQgUERG
UGx1Z2luOjplbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKHVpbnQ2NF90IHRhcmdldExlbmd0aCkKICAg
ICAgICAgQ0ZEYXRhSW5jcmVhc2VMZW5ndGgobV9kYXRhLmdldCgpLCB0YXJnZXRMZW5ndGggLSBj
dXJyZW50TGVuZ3RoKTsKIH0KIAotdm9pZCBQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQbHVnaW46
Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUoMCwgMCkpOwogCi0gICAgZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aChtX3N0cmVhbWVk
Qnl0ZXMgKyBsZW5ndGgpOwotICAgIG1lbWNweShDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihtX2Rh
dGEuZ2V0KCkpICsgbV9zdHJlYW1lZEJ5dGVzLCBieXRlcywgbGVuZ3RoKTsKLSAgICBtX3N0cmVh
bWVkQnl0ZXMgKz0gbGVuZ3RoOworICAgIGVuc3VyZURhdGFCdWZmZXJMZW5ndGgobV9zdHJlYW1l
ZEJ5dGVzICsgYnVmZmVyLnNpemUoKSk7CisgICAgbWVtY3B5KENGRGF0YUdldE11dGFibGVCeXRl
UHRyKG1fZGF0YS5nZXQoKSkgKyBtX3N0cmVhbWVkQnl0ZXMsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOworICAgIG1fc3RyZWFtZWRCeXRlcyArPSBidWZmZXIuc2l6ZSgpOwogCiAjaWYg
SEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKICAgICAvLyBLZWVwIG91ciByYW5nZXMtbG9va3Vw
LXRhYmxlIGNvbXBhY3QgYnkgY29udGludW91c2x5IHVwZGF0aW5nIGl0cyBmaXJzdCByYW5nZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCAxZDg0NDgwNWY0
YzEwZTkzZmVkY2FiZGVlYzIxZGQzNWRkZjg4MjAyLi5lNGQ2MmY0YmVhOWJmYzJmYTgwZWY0ZDZl
OTBjNWNjZjA2Nzk0ZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaApAQCAtNTQsMTIgKzU0LDEzIEBAIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEVs
ZW1lbnQ7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRTaXplOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEludFBvaW50
OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTE2MCw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRo
YXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlk
UmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAKICAgICAv
LyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgog
ICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlE
KSA9IDA7CkBAIC0xNzMsNyArMTc0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0
IHRoZSBtYW51YWwgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIG1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWlu
IHRoYXQgYSBzdHJlYW0gaGFzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIG1h
bnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDUzNGRhNTJkNDdkNjI4NTBlMjA1
ZmY5ZTk5YzMwYjM3ZDNiY2JhMTIuLmQ2ZTAzMWQ2NWViYjQxZDRjYjRkM2QwYzg2Mzk2OTc1ZjQ1
N2NlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBOZXRzY2FwZVBsdWdp
blN0cmVhbUxvYWRlckNsaWVudAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29u
c3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqKSBvdmVycmlkZTsKIApAQCAtMjM1LDkgKzIzNSw5IEBAIHZvaWQg
UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCBSCiAgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlk
UmVjZWl2ZVJlc3BvbnNlKG1fc3RyZWFtSUQsIHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxh
c3RNb2RpZmllZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5z
dWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJl
Y2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0
ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKLSAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlRGF0YShtX3N0
cmVhbUlELCBieXRlcywgbGVuZ3RoKTsKKyAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJl
YW1EaWRSZWNlaXZlRGF0YShtX3N0cmVhbUlELCBidWZmZXIpOwogfQogCiB2b2lkIFBsdWdpblZp
ZXc6OlN0cmVhbTo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSAKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIFBsdWdpblZpZXc6
Om1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiAgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNw
b25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1l
VHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQg
UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gVGhlIHBsdWctaW4gY2FuIGJl
IG51bGwgaGVyZSBpZiBpdCBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4KICAgICBpZiAoIW1fcGx1Z2lu
KQpAQCAtMzgyLDExICszODIsMTEgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1f
aXNJbml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBN
YW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIG1fbWFudWFs
U3RyZWFtRGF0YS5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CisgICAgICAgIG1fbWFudWFsU3RyZWFt
RGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcGx1
Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShieXRlcywgbGVuZ3RoKTsKKyAgICBtX3Bs
dWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBQbHVn
aW5WaWV3OjptYW51YWxMb2FkRGlkRmluaXNoTG9hZGluZygpCkBAIC0xMTcyLDggKzExNzIsOCBA
QCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAgICAgLy8gRGVsaXZl
ciB0aGUgZGF0YS4KICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7CiAgICAgICAgIGF1dG8g
YnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLnRha2UoKTsKLSAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQotICAgICAgICAgICAgbWFudWFsTG9hZERpZFJl
Y2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUo
KSk7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAg
ICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQuZ2V0KCkpOwogICAg
IH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpG
aW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aAppbmRleCBmNjYzMTJhODBhY2QxZTAzNTMxMGRmYWEzYTVmM2ExN2I3MmFhZTU1Li4yNTYxNWNi
MzBmMjI2NDYzOTI0NDQ4OGYyYmQ3YzQxMjI3OTA3OWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzQmVpbmdEZXN0cm95ZWQoKSBjb25zdCB7IHJldHVybiAhbV9wbHVnaW4gfHwg
bV9wbHVnaW4tPmlzQmVpbmdEZXN0cm95ZWQoKTsgfQogCiAgICAgdm9pZCBtYW51YWxMb2FkRGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2
b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxl
bmd0aCk7CisgICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBtYW51YWxMb2FkRGlkRmluaXNoTG9hZGluZygpOwog
ICAgIHZvaWQgbWFudWFsTG9hZERpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGVlNDBmYjk1
ODVlNzlkODZiM2NmZDJmNTc5ZWQ0NmU2MWI5ZWM2M2UuLjMxNDgyZWIzYjM2OGQ3OGE2MWE3ZWMx
ZDI0YzU5ODEwYmM5MWVkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZl
UmVzcG9uc2UgeyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fY29ubmVj
dGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtODAsMTQgKzgwLDE0IEBAIHZvaWQgV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+CiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSkgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQogICAgICAgICAgICAgbV9yZXNwb25zZURhdGEg
PSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7Ci0gICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAg
c3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChidWZm
ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1faXNEb3dubG9hZCkKLSAg
ICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRU
YXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlci5nZXQoKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
YnVmZmVyLT5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZl
RGF0YSB7IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9m
ZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlci5n
ZXQoKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLT5zaXplKCkpIH0sIG1fZmV0Y2hJZGVu
dGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRf
dD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChS
ZWY8Rm9ybURhdGE+JiYgZm9ybURhdGEpCkBAIC0xMzYsMTUgKzEzNiwxNSBAQCB2b2lkIFdlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChS
ZWY8Rm9ybURhdGE+JgogICAgIH0pOwogfQogCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVC
bG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5l
Y3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6
RGlkUmVjZWl2ZURhdGEgeyB7IGRhdGEsIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6
ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVy
LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmll
cik7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBkYXRhLCBzaXplIH0sIHN0YXRp
Y19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNl
aXZlRGF0YSB7IGJ1ZmZlciAsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0s
IG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRGaW5pc2hCbG9iTG9hZGluZygpCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBX
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZSgpCiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwog
ICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZmZXIpIHsKLSAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRh
KGJ1ZmZlci5jb3B5KCktPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICBpZiAobV9kaWRGaW5p
c2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1EYXRh
PiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBl
OTg3ZTE5YWM4YjczODg3MWFhZDgyYjRiMzg1NjI5NjhhMmI2YzljLi43NzJhZWU2Zjk3YTA5YTA2
NmFjMTEwMmQ0Y2RlMjcwMTUyYmNkODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFB
bmRGaW5pc2goUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZh
aWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmlu
aXNoKCkgZmluYWw7CkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFu
dXAoKTsKICAgICAKLSAgICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgU2hhcmVk
QnVmZmVyJik7CiAgICAgdm9pZCBkaWRGaW5pc2hCbG9iTG9hZGluZygpOwogCiAgICAgc3RydWN0
IEJsb2JMb2FkZXIgZmluYWwgOiBXZWJDb3JlOjpGZXRjaExvYWRlckNsaWVudCB7CkBAIC02OSw3
ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJCiAg
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKSBmaW5hbCB7IH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBjbGllbnQtPmRpZFJlY2VpdmVCbG9iQ2h1
bmsoZGF0YSwgc2l6ZSk7IH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpIGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEp
OyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvcikgZmluYWwgeyBjbGllbnQtPmRpZEZhaWwoZXJyb3IpOyB9CiAgICAgICAgIHZvaWQgZGlk
U3VjY2VlZCgpIGZpbmFsIHsgY2xpZW50LT5kaWRGaW5pc2hCbG9iTG9hZGluZygpOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDE0YTA4M2NhMjA3YTkwNjNjZjgwYjFl
N2U5NjcwYTQ4N2NmNGQzOTkuLmVkNGY1ZGU5ZDVlNTYxOGQ0MzI0NTUwODJmNWRhMTg4YWJmOWJm
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE1MiwxMCArMTE1Miwx
MCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVu
dCgpCiAgICAgd2ViUGFnZS0+ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQobV9mcmFtZSk7CiB9
CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmICghbV9wbHVnaW5WaWV3KQotICAgICAg
ICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgbG9hZGVyLT5jb21t
aXREYXRhKGRhdGEpOwogCiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGEgc3RhbmQtYWxvbmUg
bWVkaWEgZG9jdW1lbnQsIG5vdyBpcyB0aGUgcmlnaHQgdGltZSB0byBjYW5jZWwgdGhlIFdlYktp
dCBsb2FkLgogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlZCBhY3Jvc3Mg
YWxsIHBvcnRzLiA8aHR0cDovL3dlYmtpdC5vcmcvYi80ODc2Mj4uCkBAIC0xMTc3LDcgKzExNzcs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3ID0gdHJ1ZTsKICAgICB9Ci0gICAgbV9wbHVn
aW5WaWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX3Bs
dWdpblZpZXctPm1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShkYXRhKTsKIH0KIAogdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGJiNTI5ZDNhZWM0ZTJjNzVmMWE3ZGU5
MWIxMGI1NTgyZDQ1MjJiNDIuLjFkMzBiYzM5MzgzYWZmZjJjYTljMjg3NTNkZDJkN2VjMmIyNjQ5
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29t
bWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
IGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRM
b2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcAppbmRleCBhMjA1ZTAwMWNhNzE1ODIwOTEzYTgxYWU0YTgzNjUzMGY5YTBm
NjQ4Li43MmUzNTU0YzhlMGFhNjkwYTZlYzU3ODAxNzZmMTllMGI4ZDcwZDI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2Vi
UHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHIKIAogV2ViUHJldmlld0xvYWRlckNsaWVudDo6fldlYlByZXZp
ZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
Cit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGRjMTY3ZTViN2JjM2IwM2VmMzkzMWVh
YjM1NmM3ODI3OTI5NTI5ZS4uNjQ5YmM4MzE5YzI3ODZmMDFkNjE3YzExMTk5ZGIwYzZjMDc3ZmE3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDk0
MmVkYzYyM2E0ZTY1M2JiMTg4YWVlMDUwNjQ0YTNmNGEwMzJlODkuLmY4OWZmNzJhMGQzMWJlYzEx
ZWY4MDI5N2VmYmE5MmMyYTdiYzY2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03MDU3LDEyICs3MDU3LDEyIEBAIHZvaWQgV2ViUGFnZTo6
dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRp
ZmllciBoYW5kCiAgICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVSZXNwb25zZSh0YXNrSWRlbnRp
ZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNl
aXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRS
ZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEpCiB7CiAgICAgYXV0byogaGFuZGxlciA9IG1f
aWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmll
cik7CiAgICAgQVNTRVJUKGhhbmRsZXIpOwogCi0gICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVE
YXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLnNpemUoKSwgZGF0YS5kYXRhKCkpOworICAgIGhhbmRs
ZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5idWZmZXIoKSA/ICpk
YXRhLmJ1ZmZlcigpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS5nZXQoKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVu
dGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE5NGI1YjlkN2ZlMzJmMjRh
ODZkYWFhZDQ0ODQyYjBjZGQwYWViMmYuLjQ4ODY2NzA3YzQ2MTNkOWE3Y2QzNTIxNWRmY2E5MjNj
Njk3OWJlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTE4NCw2ICsxODQsNyBAQCBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBj
bGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZm
ZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xODk2LDcgKzE4OTcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgdXJsU2NoZW1lVGFza1dpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2Vi
VVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRp
ZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRp
cmVjdGlvbihXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tE
aWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRh
KFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAg
IHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIs
IGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0Rp
ZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKIAogICAgIHZvaWQgc2V0SXNUYWtpbmdTbmFwc2hvdHNGb3JBcHBsaWNhdGlvblN1
c3BlbnNpb24oYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBiMjcyMjk0NzFlYWU4NmVlNTk4MTk4M2RkNTdi
NWU3YTgyOTFjZDRiLi5iZGE1ZjUwYWRkMjNhOTY3NDBlODlkNzMzZDc5YzE4N2YwNTJiZTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTU2NCw3ICs1NjQsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAg
IFVSTFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdlYktpdDo6V2ViVVJMU2NoZW1l
SGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkgLT4gKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCBhY3R1YWxSZXF1ZXN0KSBBc3luYwogICAgIFVSTFNjaGVt
ZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRl
bnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcHJvcG9zZWRSZXF1ZXN0KQogICAgIFVSTFNjaGVtZVRh
c2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmll
ciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRh
c2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQotICAgIFVS
TFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVu
dGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgdGFza0lkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKQor
ICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKQogICAg
IFVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVu
dGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAKICAgICBT
ZXRJc1N1c3BlbmRlZChib29sIHN1c3BlbmRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCmlu
ZGV4IDZkOGQwY2YyNzg0ZWQzMDU2NjI1YzdmNmU4NDZhOTNhNzExY2JhY2QuLjYxNmVkYTA4ZjBi
OGZjYWIyZDU3ZmM0NzUzMjkxMDdiODE1Y2QyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNw
cApAQCAtOTYsMTMgKzk2LDEzIEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNr
RGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlCiAgICAgdGFzay0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVIYW5k
bGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgdGFza0lkZW50aWZpZXIsIHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQor
dm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvKiB0YXNrID0gbV90YXNrcy5nZXQodGFza0lkZW50aWZp
ZXIpOwogICAgIGlmICghdGFzaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGFzay0+ZGlkUmVj
ZWl2ZURhdGEoc2l6ZSwgZGF0YSk7CisgICAgdGFzay0+ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9
CiAKIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkQ29tcGxldGUoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKaW5kZXggNThiZWNjMTdiNWQ4NTk4
NzQ5ODg0ZDMwMjUxNjg5Y2NjYzE3NjkzZi4uYWIyMGJkNTczYWE0YWZjMTU4MDU5MGYyNzA0NjYz
MDA2ODc3NDBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01OSw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgdGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKTsKICAgICB2b2lkIHRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAg
dm9pZCB0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpOworICAgIHZvaWQgdGFza0RpZFJlY2VpdmVE
YXRhKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJik7CiAgICAgdm9pZCB0YXNrRGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9p
ZCB0YXNrRGlkU3RvcExvYWRpbmcoV2ViVVJMU2NoZW1lVGFza1Byb3h5Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNr
UHJveHkuY3BwCmluZGV4IDM2MDZiYmRjNjUyMTVkZGNhOTI2MTNhODEwN2RhYjFiMTFlY2I2NTYu
LjllNzJkODRjOTdkZjZkMjk3MTRhODNjNTFhYzE3NzYzZTVmYjY1M2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1By
b3h5LmNwcApAQCAtMTQwLDIxICsxNDAsMjEgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAg
ICB9KTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNp
emVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQordm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJv
eHk6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBpZiAoIWhhc0xvYWRlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0
aW5nRm9yQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgV0VCVVJMU0NIRU1FVEFTS1BST1hZ
X1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogUmVjZWl2ZWQgZGF0YSBkdXJpbmcgcmVzcG9u
c2UgcHJvY2Vzc2luZywgcXVldWluZyBpdC4iKTsKLSAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YVZlY3RvciA9IFZlY3RvciB7IGRhdGEs
IHNpemUgfV0gewotICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YVZlY3Rvci5zaXplKCks
IGRhdGFWZWN0b3IuZGF0YSgpKTsKKyAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YSA9IFJlZiB7IGRhdGEgfV0geworICAgICAgICAgICAg
ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwotICAgIG1fY29yZUxvYWRlci0+
ZGlkUmVjZWl2ZURhdGEoZGF0YSwgc2l6ZSwgMCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9h
ZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIDAsIERhdGFQ
YXlsb2FkVHlwZTo6RGF0YVBheWxvYWRCeXRlcyk7CiAgICAgcHJvY2Vzc05leHRQZW5kaW5nVGFz
aygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVUYXNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCmluZGV4IDc1NTA4Nzk0MTgyMGZlZWZjNWQwMTI3MTU4
YzA2NGNlMjU4YTA4MzUuLmVkOTFmMzhlM2FkZDEzYmUxOWNiMjE3N2VkNDQ4ZmRkMmZhNzk1NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZVRhc2tQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZVRhc2tQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFBlcmZvcm1SZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4m
Jik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoc2l6ZV90LCBjb25zdCB1aW50OF90
KiBkYXRhKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGRmMWY4Y2ZiMTBiMjdlNjEy
OTg1N2RjYTlkODE2YWJlMTgxNzA0NWEuLjQ1ZTg2MDNlYWVhZTg3ZDhiNDcyNzQ4MzlmMTk0M2Fm
MGY1NTE2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQpAQCAtNjc2LDYgKzY3Niw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFdl
YlByb2Nlc3M6OnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3QKIAogdm9pZCBXZWJQ
cm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzJiBzYW5kYm94UGFyYW1ldGVycykKIHsKKyAgICByZXR1cm47CiAjaWYgUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICAvLyBOZWVkIHRvIG92ZXJyaWRlIHRoZSBk
ZWZhdWx0LCBiZWNhdXNlIHNlcnZpY2UgaGFzIGEgZGlmZmVyZW50IGJ1bmRsZSBJRC4KICAgICBh
dXRvIHdlYktpdEJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5h
cHBsZS5XZWJLaXQiXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9Q
aW5nSGFuZGxlLmgKaW5kZXggYTI1NTYwYTEwYzI4ODJlMWFiZDE3ODQ1Njk0ODZlYTEzZWQ4OTZk
NC4uMzI4OWMyMzYyOWEwZGMzMWZjMGMxOTllZGYxMzI5N2JlZDYxYTE5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIApA
QCAtNzMsNyArNzQsNyBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgICAgICBwaW5nTG9hZENvbXBsZXRlKHsgfSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUo
KTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0
ZSgpOyB9CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBwaW5nTG9hZENv
bXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBwaW5nTG9hZENvbXBs
ZXRlKGVycm9yKTsgfQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5NTlkNzQ4YjU2YmUxMDc2
YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRlLi41Y2ZlOWY5Yzg0Mzc4NjRmYjVmYjUyNDA0OGI0MWQy
ZjQxMjBiYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTUyLDYgKzUyLDcgQEAg
Y2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0K
IAogY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJGcmFtZUxvYWRlckNsaWVudD4gewpA
QCAtMTUxLDcgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFy
dENvbnRlbnQoKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkgZmluYWw7CiAKLSAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciop
IGZpbmFsOwogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpIGZpbmFsOwogICAgIHZvaWQg
dXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KaW5kZXggNDNlNjNmNDU2MzQ1ZWNmMWM5MjRlNWI3NzJhNmY1NDE3M2E5MTQy
Yi4uODdhNWQ2NTdmN2I3MzNkMDdjNWRiNjAxZjY5ODFmOTA0OTc3MTM5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0KQEAgLTk5MiwxMCArOTkyLDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogI2VuZGlmCiB9CiAKLXZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIGF1dG8gbnNE
YXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weToodm9pZCop
ZGF0YSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT10pOwotICAgIFtkYXRhU291cmNlKGxv
YWRlcikgX3JlY2VpdmVkRGF0YTpuc0RhdGEuZ2V0KCldOworICAgIFtkYXRhU291cmNlKGxvYWRl
cikgX3JlY2VpdmVkRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KIAogdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiBsb2FkZXIpCkBAIC0yMDEyLDcgKzIwMTEsNyBAQCBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5
UHJldmlld0xvYWRlckNsaWVudD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdM
bwogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBhdGg7CiAgICAgICAgIFJldGFp
blB0cjxOU0ZpbGVIYW5kbGU+IG1fZmlsZUhhbmRsZTsKIAotICAgICAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBv
dmVycmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGRh
dGFBcnJheSA9IGJ1ZmZlci5jcmVhdGVOU0RhdGFBcnJheSgpOwogICAgICAgICAgICAgZm9yIChO
U0RhdGEgKmRhdGEgaW4gZGF0YUFycmF5LmdldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMGUwNWIxOGQ2OTYzOTgyOGQ0MzNjNDZkNzkyMWNm
NzBkZTdkZjlkMS4uMmE4NzcwZGY4MGJiOWY3MGMxMGJiOTFmOTUyMGQxZTE5Yzg1OWQ4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC05NzcsNyAr
OTc3LDcgQEAgLSAodm9pZClfY29tbWl0RGF0YTooTlNEYXRhICopZGF0YQogICAgIGF1dG8qIGRv
Y3VtZW50ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBkb2N1bWVudC0+
c2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzKF9wcml2YXRlLT5zaG91bGRDcmVhdGVSZW5kZXJlcnMp
OwogCi0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
Y29tbWl0RGF0YSgoY29uc3QgdWludDhfdCopW2RhdGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhdKTsK
KyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5jb21t
aXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpKTsKIH0KIAogQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447868</attachid>
            <date>2021-12-23 03:46:26 -0800</date>
            <delta_ts>2021-12-23 05:52:14 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-232424-20211223224623.patch</filename>
            <type>text/plain</type>
            <size>244830</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGYzN2E3ZjU5YzQ4OWRj
NTQ0Y2IyZGM2MTIwOTM2YmE1ZWNkZmUyMy4uYTg2ZTU5OWRkODEzZTg4MWE1ZjliMmY1MmUxOTFh
NzcyODE0MzM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NiBAQAorMjAyMS0xMi0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1
ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBtb2RpZnkgYWxsIGRpZFJlY2VpdmVEYXRhIG1ldGhv
ZCBzbyB0aGF0IHRoZXkgbm8gbG9uZ2VyIHVzZSB1aW50OF90L2ludAorICAgICAgICBhbmQgaW5z
dGVhZCB1c2UgU2hhcmVkQnVmZmVyLiBXZSBhbHNvIGRvIHRoZSBzYW1lIGZvciBhbnkgaW50ZXJt
ZWRpYXJpZXMKKyAgICAgICAgdXNlZCBieSB0aGUgdmFyaW91cyBkaWRSZWNlaXZlRGF0YSBpbXBs
ZW1lbnRhdGlvbnMuCisgICAgICAgIFRoaXMgd2lsbCBmYWNpbGl0YXRlIG1vdmluZyBuZXR3b3Jr
aW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLgorICAg
ICAgICBUaGlzIGFsc28gYWxsb3dzIHRvIHJlbW92ZSBzZXZlcmFsIG1lbW9yeSBhbGxvY2F0aW9u
cyBhbmQgY29waWVzLgorICAgICAgICBXZSBjYW4gbm93IGFsc28gY29uc2lkZXIgbW92aW5nIHRo
ZSB1bmRlcmx5aW5nIFNoYXJlZE1lbW9yeSBjcmVhdGVkIGluCisgICAgICAgIHRoZSBjb250ZW50
IHByb2Nlc3MgYWxsIHRoZSB3YXkgdG8gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4gQ292ZXJlZCBieSBhbGwgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpi
bG9iQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxl
bWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVNpbmsuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpt
YXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjphZGREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1p
dHRlZExvYWQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKToKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRh
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGRCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1
dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5SZXNv
dXJjZURhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZl
ckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50
OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJl
dmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lm
Qnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKC1bV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YTpsZW5ndGhS
ZWNlaXZlZDpdKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9h
ZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTIt
MTkgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBw
YWNrIGF1ZGlvIHNhbXBsZXMgd2l0aCBkaXNjb250aW51aXR5IHRvZ2V0aGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGMzYTQ5OTRiOWNjMDg5NmU2MWYwZWE5NjFjYWJlZmM2NThlN2Y4YjcuLjQ2N2MwMDNmODMyOTdm
Y2EwZTg4ZGZiYWEwMmY1ODQwMDYwNzBlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBACisy
MDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
SGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBuZXR3b3JraW5nIGFjdG9y
cyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNv
dXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGlu
Z0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNlbmRCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6bG9hZEJvZHlGcm9tUHJlbG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMu
aW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAg
ICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyk6Cisg
ICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRl
ckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnN0
cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjptYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2
ZUJsb2JDaHVuayk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KToKKwogMjAyMS0xMi0xOSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgY2xpZW50IGxh
eWVyIHBsdW1iaW5nIGZvciBjbGFzc2lmeWluZyBtb2RhbCBjb250YWluZXIgY29udHJvbHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggNTc2ODFiMjFhNzM0MzllOTBiZjIxYmEyNDQ5NTgyNTk3ZTAx
OTk4Mi4uYmIxYzViNTM2YzRmOTkxNWZiYWJkOWFjMzAzN2JjNDQ4Yzc3NDZjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQyNAorICAgICAg
ICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMi0xNCAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTaGFy
ZWRCdWZmZXIgY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5YmRhMjc3
YWEzYmQxY2Q4ODcyMzZlMzU0ZTc0ODZkYjk0ODQyNGY4Li43NmE0OWU4NmM3YzI4NWM4MjYxZmI1
MzA5NGI2NjAxZTNmMjAzYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdv
cmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBy
ZXZpZXdMb2FkZXJDbGllbnQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAg
ICAgICgtW1dlYkZyYW1lIF9jb21taXREYXRhOl0pOgorCiAyMDIxLTEyLTE5ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjbGllbnQgbGF5ZXIg
cGx1bWJpbmcgZm9yIGNsYXNzaWZ5aW5nIG1vZGFsIGNvbnRhaW5lciBjb250cm9scwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRl
eCBjMjMxZjIwN2RhMjVjZDJhMTU4NjBkMjhkYjNjZTE3ZTg1NzU3N2Q1Li5lNjEzYWE1MDlmNzRj
MGRlMGU2ZDM4MzUxOGU1MjZmNzNhYTU4ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMzIwLDEzICszMjAsMTMgQEAg
dm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICB9CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQordm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGlmIChtX3NvdXJjZSkgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoYnVmZmVy
LnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1f
YnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyKTsK
IH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oCmluZGV4IDg3MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAz
Nzc3MmIuLmQ0NjUxYjIzZGE3MWNmOGY0YzhjOTk2NzFkMjI3ZWI1YWM4ZDJhN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQgRmV0Y2hCb2R5Q29uc3VtZXIoVHlw
ZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXIm
KTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KICAg
ICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZ2V0KCkuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5jcHAKaW5kZXggYTYzMzEwOGI1NDc3ODM5M2ZjNTQ3NTAwMzJhOWEyZTg2
YWRlN2ZjYy4uNTM2NjgxNTViZGViYzFhZWYzOWY0ZDk5ZmI5ZGFkYzFlYmVmN2EwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTI5
OCwxMSArMjk4LDEwIEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkK
ICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpibG9i
Q2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEZldGNoQm9keU93
bmVyOjpibG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgQVNTRVJU
KGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKLSAgICBpZiAoIW1f
cmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRh
LCBzaXplKSkpCisgICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5lbnF1ZXVlKGJ1ZmZl
ci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSkKICAgICAgICAgc3RvcCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKaW5kZXggNWNhN2UzOTZj
NDIyNzAxOTM1NmIwODA2ZTRlZWRiZTk1ZTkyOGY0Yi4uODFmZDA2ZWNkZDZmYzM4YzllODU5ODdj
ZWJkZmMxNmRkODZmM2M5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5T3duZXIuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZldGNoTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9y
LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTAwLDcgKzEwMSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICAvLyBCbG9iIGxv
YWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90
KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGJs
b2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0ZhaWxlZCgpOwogICAg
IHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMyw3ICsxMTQsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsg
b3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGJ1
ZmZlcik7IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5h
bDsKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWwgeyBvd25lci5ibG9iTG9hZGluZ1N1
Y2NlZWRlZCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHAKaW5kZXggMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OC4uNGI0
NWJmZDg3NTA0MDZmNmU3ZGE3MThmOTk4MTY5NDcxYTVlODQ1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTE0OCwxMyArMTQ4LDEzIEBAIHZv
aWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKHJl
c3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogdmFsdWUsIGludCBzaXplKQordm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAgICAgaWYgKCFtX2NvbnN1bWVy
KSB7Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBzaXplKTsKKyAgICAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBtX2NvbnN1bWVyLT5hcHBlbmQodmFsdWUsIHNpemUpOworICAgIG1fY29uc3VtZXIt
PmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuaAppbmRleCA0NjEyZDBlMGUzYTdlZmUzMDYwMzk2YjBkNzVhMmZhM2JjNGVk
ZGFkLi41ZWVhZWY4MmQxZGYzZWZjZWQyMTQwMDNkZjUxODg4NzAzNmY5NzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBBUEkuCiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgdXNlU3RyTGVuKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKaW5kZXggZmVkM2U1ZWFlNzFhNTdjOTUyYWExNzFh
ZGNjYmRkOWJkMDQ1ZTc4OS4uMTA5ZTA4ZWNmN2E0N2U3YzAzN2UzMmRjYWFjYWI4NmM4MWMxOGQz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGll
bnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMGU3YjAwNWU4OWEzZDE3NDBiMWNmOWFkZmY4YjRm
MmYyZmM0M2M5OS4uZGNhMGUyMzgyZTMyZmMwMzcyODg3ZmQ0ODUyMTRhMTczMDFiMWJlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0z
NjIsMTIgKzM2MiwxMiBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdQogICAgICAgICByZXNwb25z
ZUNhbGxiYWNrKG1fcmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9p
ZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFt
U291cmNlIHx8IG1fY29uc3VtZURhdGFDYWxsYmFjayk7CiAKICAgICBpZiAobV9jb25zdW1lRGF0
YUNhbGxiYWNrKSB7Ci0gICAgICAgIFNwYW4gY2h1bmsgeyBkYXRhLCBzaXplIH07CisgICAgICAg
IFNwYW4gY2h1bmsgeyBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpIH07CiAgICAgICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
Mzc1LDcgKzM3NSw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgYXV0byYgc291cmNl
ID0gKm1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZTsKIAogICAgIGlmICghc291cmNl
LmlzUHVsbGluZygpKSB7Ci0gICAgICAgIG1fcmVzcG9uc2UuYm9keSgpLmNvbnN1bWVyKCkuYXBw
ZW5kKGRhdGEsIHNpemUpOworICAgICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFw
cGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zODMsNyArMzgzLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGlmICghc291cmNlLmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShkYXRhLCBzaXplKSkpIHsKKyAgICBpZiAoIXNvdXJjZS5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpKSkgewogICAgICAgICBzdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShS
ZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4KIAogdm9pZCBG
ZXRjaFJlc3BvbnNlOjpjb25zdW1lQ2h1bmsoUmVmPEpTQzo6VWludDhBcnJheT4mJiBjaHVuaykK
IHsKLSAgICBib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPmJ5
dGVMZW5ndGgoKSk7CisgICAgYm9keSgpLmNvbnN1bWVyKCkuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBG
ZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFzU3RyZWFtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggNmIwNTA1ZDg4YjEzMmUyOGNiOTU0YWI5
YTBlN2VmZTgxM2Y3MDJhZi4uZjk5MjQ5YzM5ZjlkMGIyZmM4N2EyZjljNDZkNzkzOTI4ODgxNGJm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAg
LTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5h
bDsKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZp
bmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
IGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogCiAgICAgICAgIEZldGNoUmVzcG9uc2UmIG1fcmVzcG9uc2U7CiAgICAgICAgIE5v
dGlmaWNhdGlvbkNhbGxiYWNrIG1fcmVzcG9uc2VDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApp
bmRleCAyN2E2ZDcwMzM0Y2EzMjA2YTk0ZTkxOTk0MzM2MzdjNGEzMDUyZTdkLi5hNjQxZjgxMDdi
NGZkMTc5MTFmZGI5MmJiMzBmNDVlMmU4MmI1MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0x
NzcsMTAgKzE3NywxMCBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogCiAvLyBNQVJLOiAtIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBtX2RhdGEu
YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoYnVmZmVyKTsKIH0K
IAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCBj
ZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlLi4wZDNiZGI3NDlkN2EzMzY4
YjNjYTY4YzIxNzMxNjA1OTE1NDlkMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTExNiw3ICsxMTYs
NyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7
CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVycmlkZXMuCi0gICAgdm9pZCBk
YXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICAvLyBN
b2RlbFBsYXllckNsaWVudCBvdmVycmlkZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggZDUxNzNmYmY4YjQwMzQxYzVj
ZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOS4uZmVlOTg4NDIyMWJiNDNlOGNjMDYyZWFiY2QwYTk5ZWM1
NGMwMzQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJl
ZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCBiN2Y3NWVkYTNiMjMzYjE5YjIwZWQ3
MDQyODk0OWJiMzM1ODk4ZTgxLi43Mzg1MmQ0YzBhZjAzODQ3NWYxNWI2NTQ5ZGM2ODliZjg1NTFi
MjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAg
LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiVGhyZWFk
YWJsZUxvYWRlci5oIgpAQCAtMTYzLDE2ICsxNjQsMTUgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXIKICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIEZpbGVS
ZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKQordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCkKIHsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgQVNTRVJU
KGRhdGFMZW5ndGggPiAwKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSk7CiAKICAgICAvLyBC
YWlsIG91dCBpZiB3ZSBhbHJlYWR5IGVuY291bnRlcmVkIGFuIGVycm9yLgogICAgIGlmIChtX2Vy
cm9yQ29kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGxlbmd0aCA9IGRhdGFMZW5ndGg7
CisgICAgaW50IGxlbmd0aCA9IGJ1ZmZlci5zaXplKCk7CiAgICAgdW5zaWduZWQgcmVtYWluaW5n
QnVmZmVyU3BhY2UgPSBtX3RvdGFsQnl0ZXMgLSBtX2J5dGVzTG9hZGVkOwogICAgIGlmIChsZW5n
dGggPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlbWFpbmluZ0J1ZmZlclNwYWNlKSkgewogICAg
ICAgICAvLyBJZiB0aGUgYnVmZmVyIGhhcyBoaXQgbWF4aW11bSBzaXplLCBpdCBjYW4ndCBiZSBn
cm93biBhbnkgbW9yZS4KQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3Ro
KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZGF0YUxlbmd0aCk7CisgICAgICAgICAgICB1bnNpZ25lZCBuZXdM
ZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBidWZmZXIuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKG5l
d0xlbmd0aCA8IG1fdG90YWxCeXRlcykgewogICAgICAgICAgICAgICAgIGZhaWxlZChOb3RSZWFk
YWJsZUVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDYsNyArMjA2LDcgQEAg
dm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobGVuZ3RoIDw9IDApCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpICsgbV9i
eXRlc0xvYWRlZCwgZGF0YSwgbGVuZ3RoKTsKKyAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+
KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQsIGJ1ZmZlci5kYXRhKCksIGxlbmd0
aCk7CiAgICAgbV9ieXRlc0xvYWRlZCArPSBsZW5ndGg7CiAKICAgICBtX2lzUmF3RGF0YUNvbnZl
cnRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApp
bmRleCA1MzljMjMwNGE4MmU2M2FhZGZlMmM1NjdjOThkMGI4YzY4N2E4ZTlmLi5iN2U1YjQwNTdm
YjIwNmZmMzIzMTU1Y2MwZjE1MDJmY2EyMGQyNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKaW5kZXggMTg3OTNmZjA2NjMzOGZiNjBhMzRkZWM5MDliYzJkZGQyOGJlYWZi
NC4uNTBiYjEzNGZhYzJmM2EzNThjMDJiOGU2OTk0N2Y3ZWE4YTg3OGZlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
QEAgLTYxMywxMCArNjEzLDEwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50CiAgICAgICAgIG5l
dHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShpZGVudGlmaWVy
LCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCi0gICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2
ZURhdGEoaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIGJ1ZmZlciwg
ZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBS
ZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZDI5NTc4MTBkODM4MmM5
MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MS4uODJhY2NlZDIwY2ZkNTEzMWIyNTAyZjA5OWE5YzRm
YTJmZGQ2MTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTkzLDEzICsxOTMsMTMgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShQYWdlJiwgRG9jdW1lbnRM
b2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlKEZyYW1lJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExv
YWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
c3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJj
ZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwgRG9jdW1l
bnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdChXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBT
aGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogCkBAIC00MTQsNyArNDE0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNlKik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlciYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRC
dWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VM
b2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJvbm91
c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC0xMDgyLDE3ICsxMDgyLDE3IEBAIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVhZGFibGVM
b2FkZXJSZXNwb25zZShEb2N1bWVuCiAgICAgICAgIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVy
UmVzcG9uc2VJbXBsKCphZ2VudHMsIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwgaWRlbnRpZmll
cik7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVE
YXRhKEZyYW1lKiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQotICAgICAgICBkaWRSZWNlaXZlRGF0YUlt
cGwoKmFnZW50cywgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwoKmFnZW50cywgaWRlbnRpZmllciwgYnVm
ZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGds
b2JhbFNjb3BlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBnbG9i
YWxTY29wZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lk
KCkpOwotICAgIGRpZFJlY2VpdmVEYXRhSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNj
b3BlKSwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZGF0YUxlbmd0aCk7CisgICAgZGlk
UmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMoZ2xvYmFsU2NvcGUpLCBpZGVudGlm
aWVyLCBidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExv
YWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJlc291cmNlTG9hZGVyKiBy
ZXNvdXJjZUxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCmluZGV4IDM5YjAxMWNmMDZmN2YzODUzMjQzZTBhNzYzYTNiMWQ0NTQ5
MDQxNDkuLjMyOGViZTdlNjQxMTk1ZTVhNDY4NTAyNzU1OTEwZjc4YzQ4YjU4ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAt
OTAsMTAgKzkwLDEwIEBAIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpkYXRhTGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhQnVmZmVyLnNpemUoKTsKIH0K
IAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgbV9kYXRhQnVmZmVyLmFwcGVu
ZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXIuYXBwZW5kKGRhdGEpOwogfQog
CiB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRh
VG9Db250ZW50KCkKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRCdWZmZXJS
ZXNvdXJjZURhdGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSYgcgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VE
YXRhID0gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAgICAgaWYgKCFyZXNv
dXJjZURhdGEpCkBAIC0yMzAsMTUgKzIzMCwxNSBAQCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZQog
ICAgIGlmICghc2hvdWxkQnVmZmVyUmVzb3VyY2VEYXRhKCpyZXNvdXJjZURhdGEpKQogICAgICAg
ICByZXR1cm4gcmVzb3VyY2VEYXRhOwogCi0gICAgaWYgKHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0
aCgpICsgZGF0YUxlbmd0aCA+IG1fbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpCisg
ICAgaWYgKHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0aCgpICsgZGF0YS5zaXplKCkgPiBtX21heGlt
dW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQogICAgICAgICBtX2NvbnRlbnRTaXplIC09IHJl
c291cmNlRGF0YS0+ZXZpY3RDb250ZW50KCk7CiAgICAgaWYgKHJlc291cmNlRGF0YS0+aXNDb250
ZW50RXZpY3RlZCgpKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VEYXRhOwogCi0gICAgaWYgKGVu
c3VyZUZyZWVTcGFjZShkYXRhTGVuZ3RoKSAmJiAhcmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRFdmlj
dGVkKCkpIHsKKyAgICBpZiAoZW5zdXJlRnJlZVNwYWNlKGRhdGEuc2l6ZSgpKSAmJiAhcmVzb3Vy
Y2VEYXRhLT5pc0NvbnRlbnRFdmljdGVkKCkpIHsKICAgICAgICAgbV9yZXF1ZXN0SWRzRGVxdWUu
YXBwZW5kKHJlcXVlc3RJZCk7Ci0gICAgICAgIHJlc291cmNlRGF0YS0+YXBwZW5kRGF0YShkYXRh
LCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgbV9jb250ZW50U2l6ZSArPSBkYXRhTGVuZ3RoOworICAg
ICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSk7CisgICAgICAgIG1fY29udGVudFNp
emUgKz0gZGF0YS5zaXplKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXgg
ZGFhZTVmZTRhMzFlMzE1OTM2Mzc5MDQyM2Y1ZmJkMzM3MGM1Y2QzOS4uYzhjZWQxMmE2NDA3ZmRj
ZDU3NGVjYzJhNzgxOWVkZTY2MzgwM2RhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAgIHNpemVf
dCBkYXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgICAgIHZvaWQgYXBwZW5kRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVu
dCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKQEAgLTE0MSw3ICsxNDEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAgICBJbnNwZWN0b3JQYWdlQWdl
bnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwog
ICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9IGZhbHNlKTsKLSAgICBSZXNv
dXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgUmVzb3Vy
Y2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBtYXliZURlY29kZURhdGFUb0NvbnRl
bnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2Uo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBhZGRS
ZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKaW5kZXggMjIzYTY3NjdiZTI3MWVlNGQyMmRlZDFkNmJlNjBjYTcwNzgx
N2M4MS4uNjM1YTYwMjk0YjhhMTAwZTEyYmNmNDFiNDJhYzk4OGNlMjcyYTI1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcApAQCAtMTI0LDE1ICsxMjQsMTMgQEAgcHVibGljOgogICAgICAgICBtX2RlY29k
ZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsIHRleHRFbmNv
ZGluZywgdXNlRGV0ZWN0b3IpOwogICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pIG92
ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIWRhdGFMZW5ndGgpCisgICAgICAgIGlmIChidWZm
ZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhTGVu
Z3RoID09IC0xKQotICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0cmxlbihyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7Ci0KLSAgICAgICAgbV9yZXNwb25zZVRleHQuYXBwZW5k
KG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsKKyAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGggPSB1c2VTdHJMZW4gPyBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oYnVmZmVyLmRhdGEoKSkpIDogYnVmZmVyLnNpemUoKTsKKyAgICAgICAgbV9yZXNwb25zZVRl
eHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGRhdGFMZW5ndGgpKTsK
ICAgICB9CiAKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyKSBvdmVycmlkZQpAQCAtNTQ5LDkgKzU0Nyw4IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
CiAgICAgICAgICAgICBpZiAocHJldmlvdXNSZXNvdXJjZURhdGEtPmhhc0NvbnRlbnQoKSkKICAg
ICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChyZXF1ZXN0
SWQsIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5jb250ZW50KCksIHByZXZpb3VzUmVzb3VyY2VEYXRh
LT5iYXNlNjRFbmNvZGVkKCkpOwogICAgICAgICAgICAgZWxzZSBpZiAocHJldmlvdXNSZXNvdXJj
ZURhdGEtPmhhc0J1ZmZlcmVkRGF0YSgpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBwcmV2aW91
c0J1ZmZlciA9IHByZXZpb3VzUmVzb3VyY2VEYXRhLT5idWZmZXIoKTsKLSAgICAgICAgICAgICAg
ICBwcmV2aW91c0J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShy
ZXF1ZXN0SWQsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgcHJldmlvdXNSZXNvdXJjZURhdGEtPmJ1ZmZlcigpLT5mb3JFYWNoU2VnbWVudEFzU2hhcmVk
QnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgIG1fcmVzb3Vy
Y2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBidWZmZXIpOwogICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC01NzQsMjcgKzU3
MSwyNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgIC8vIElmIHdlIHJldmFsaWRhdGVk
IHRoZSByZXNvdXJjZSBhbmQgZ290IE5vdCBtb2RpZmllZCwgc2VuZCBjb250ZW50IGxlbmd0aCBm
b2xsb3dpbmcgZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAgLy8gYXMgdGhlcmUgd2lsbCBiZSBubyBj
YWxscyB0byBkaWRSZWNlaXZlRGF0YSBmcm9tIHRoZSBuZXR3b3JrIHN0YWNrLgogICAgIGlmIChp
c05vdE1vZGlmaWVkICYmIGNhY2hlZFJlc291cmNlICYmIGNhY2hlZFJlc291cmNlLT5lbmNvZGVk
U2l6ZSgpKQotICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBudWxscHRyLCBjYWNo
ZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlk
ZW50aWZpZXIsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNhY2hlZFJlc291cmNlLT5lbmNvZGVk
U2l6ZSgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRh
KFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmllcnMuY29udGFpbnMoaWRlbnRpZmll
cikpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVy
c0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyLnRvVUludDY0KCkpOwogCi0gICAgaWYgKGRh
dGEpIHsKLSAgICAgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCog
cmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1
ZXN0SWQsIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGlmIChkYXRhLmRhdGEoKSkgeworICAgICAg
ICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEg
PSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgZGF0YSk7
CiAKICAgICAgICAgLy8gRm9yIGEgc3luY2hyb25vdXMgWEhSLCBpZiB3ZSBkaWRuJ3QgYWRkIGRh
dGEgdGhlbiB3ZSBjYW4gYXBwbHkgaXQgaGVyZSBhcyBiYXNlNjQgZW5jb2RlZCBjb250ZW50Lgog
ICAgICAgICAvLyBPZnRlbiB0aGUgZGF0YSBpcyB0ZXh0IGFuZCB3ZSB3b3VsZCBoYXZlIGEgZGVj
b2RlciwgYnV0IGZvciBub24tdGV4dCB3ZSB3b24ndCBoYXZlIGEgZGVjb2Rlci4KICAgICAgICAg
Ly8gU3luYyBYSFJzIG1heSBub3QgaGF2ZSBhIGNhY2hlZCByZXNvdXJjZSwgd2hpbGUgbm9uLXN5
bmMgWEhScyB1c3VhbGx5IHRyYW5zZmVyIGRhdGEgb3ZlciBvbiBjb21wbGV0aW9uLgogICAgICAg
ICBpZiAobV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSAmJiByZXNvdXJjZURhdGEgJiYgIXJlc291
cmNlRGF0YS0+aGFzQnVmZmVyZWREYXRhKCkgJiYgIXJlc291cmNlRGF0YS0+Y2FjaGVkUmVzb3Vy
Y2UoKSkKLSAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJl
cXVlc3RJZCwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0YSwgZGF0YUxlbmd0aCksIHRydWUpOwor
ICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElk
LCBiYXNlNjRFbmNvZGVUb1N0cmluZyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCB0cnVlKTsK
ICAgICB9CiAKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGF0YVJlY2VpdmVkKHJlcXVlc3RJ
ZCwgdGltZXN0YW1wKCksIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+ZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wKCksIGRh
dGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqKQpAQCAtMTI3MSw3ICsxMjY4LDcgQEAg
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRl
cmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxT
dGF0ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxs
IHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBi
YXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI5Niw5ICsx
MjkzLDkgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICB9CiAgICAgcmVzcG9uc2Uuc2V0
SFRUUEhlYWRlckZpZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOwogICAgIHJlc3BvbnNl
LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJlc3BvbnNl
Lm1pbWVUeXBlKCkpOwotICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBb
bG9hZGVyLCBidWZmZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAg
bG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRh
dGEucmVsZWFzZU5vbk51bGwoKV0oKSB7CiAgICAgICAgIGlmIChidWZmZXItPnNpemUoKSkKLSAg
ICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZl
ci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICAgICAgbG9hZGVy
LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xl
UmVzb3VyY2UpOwogICAgICAgICBsb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRN
ZXRyaWNzKCkpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA2YmNkODdkZGNkOGIwNDQx
MzA4ZDFkMDFlY2E2YjBlNmRhMTQxM2Q0Li5jYTZmNzRlMWI4Njk4MGY0MGIxNTVkMTNlMTZiNzFh
ZGZiOTQwNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UsIGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3RPZlR5cGUoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJl
c291cmNlUmVxdWVzdCYsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1l
bnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgZGlkRmFpbExvYWRp
bmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1
bWVudExvYWRlciosIENhY2hlZFJlc291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVu
dEZpbHRlci5jcHAKaW5kZXggNDMzMmQ2OTFiYmY4MjZhN2M4N2VhODNhMzE3ZTk2MTE1YTIwNDk5
My4uYTA5ODFhZGQ3OTg1MzJiOTdiYWE0MDQxMjhiYTM4ODk2ZGFmNjg0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29u
dGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Up
CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNv
dXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVy
RGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VC
dWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0
ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZm
ZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKIH0KIAogc3RhdGljIGNv
bnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgKaW5kZXggMjE1YzA0ZWM5ODk1ZTlmMWU2ZTE0N2RhODIwOTMwMDk4NTIz
OTYyMy4uZmE3YWQzMDM5YTIwNWU5MDU3MTA4ZjNjNmYzOTI0MTliYzQ2NDdkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0
aXR1dGVEYXRhOwogCiBjbGFzcyBDb250ZW50RmlsdGVyQ2xpZW50IHsKQEAgLTQxLDcgKzQyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZl
ZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJikgPSAwOwogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxv
Y2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2Fk
Rm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3Qg
VVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA2YmYzYWMyOTdlYzZiMjYzYTA3ODY0MGJj
ZjNhZDU3NzlkYjBmZWRiLi4yNTFkMjI1MmIwYjNjYzdhOWFlMWFiZTgxYTA5MTQxYTcxZjc5Yjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTQ4Myw4ICs0
ODMsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmcoKQogICAgICAgICAv
LyBJZiB0aGlzIGlzIGFuIGVtcHR5IGRvY3VtZW50LCBpdCB3aWxsIG5vdCBoYXZlIGFjdHVhbGx5
IGJlZW4gY3JlYXRlZCB5ZXQuIENvbW1pdCBkdW1teSBkYXRhIHNvIHRoYXQKICAgICAgICAgLy8g
RG9jdW1lbnRXcml0ZXI6OmJlZ2luKCkgZ2V0cyBjYWxsZWQgYW5kIGNyZWF0ZXMgdGhlIERvY3Vt
ZW50LgogICAgICAgICBpZiAoIW1fZ290Rmlyc3RCeXRlKQotICAgICAgICAgICAgY29tbWl0RGF0
YSgwLCAwKTsKLSAgICAgICAgCisgICAgICAgICAgICBjb21taXREYXRhKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCkpOworCiAgICAgICAgIGlmICghZnJhbWVMb2FkZXIoKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZmluaXNoZWRMb2FkaW5nKHRo
aXMpOwpAQCAtMTE1Nyw4ICsxMTU3LDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVB
ZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkKICAgICBpZiAoIWlzU3RvcHBp
bmcoKSAmJiBtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSAmJiBpc0xvYWRpbmdNYWluUmVzb3Vy
Y2UoKSkgewogICAgICAgICBhdXRvIGNvbnRlbnQgPSBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQo
KTsKICAgICAgICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC0+c2l6ZSgpKSB7Ci0gICAgICAgICAg
ICBjb250ZW50LT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAg
ICAgICAgIGRhdGFSZWNlaXZlZChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAg
ICAgICAgICAgY29udGVudC0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYm
IGJ1ZmZlcikgeworICAgICAgICAgICAgICAgIGRhdGFSZWNlaXZlZChidWZmZXIpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzTG9hZGluZ01haW5SZXNvdXJjZSgp
KQpAQCAtMTE3MSw3ICsxMTcxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRl
ckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkKICAgICB9CiB9CiAKLXZvaWQgRG9j
dW1lbnRMb2FkZXI6OmNvbW1pdExvYWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkK
K3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIC8vIEJvdGggdW5sb2FkaW5nIHRoZSBvbGQgcGFnZSBhbmQgcGFyc2luZyB0aGUg
bmV3IHBhZ2UgbWF5IGV4ZWN1dGUgSmF2YVNjcmlwdCB3aGljaCBkZXN0cm95cyB0aGUgZGF0YXNv
dXJjZQogICAgIC8vIGJ5IHN0YXJ0aW5nIGEgbmV3IGxvYWQsIHNvIHJldGFpbiB0ZW1wb3Jhcmls
eS4KQEAgLTExODYsNyArMTE4Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKICAgICBpZiAoQXJjaGl2ZUZhY3Rvcnk6
OmlzQXJjaGl2ZU1JTUVUeXBlKHJlc3BvbnNlKCkubWltZVR5cGUoKSkpCiAgICAgICAgIHJldHVy
bjsKICNlbmRpZgotICAgIGZyYW1lTG9hZGVyLT5jbGllbnQoKS5jb21taXR0ZWRMb2FkKHRoaXMs
IGRhdGEsIGxlbmd0aCk7CisgICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmNvbW1pdHRlZExvYWQo
dGhpcywgZGF0YSk7CiAKICAgICBpZiAoaXNNdWx0aXBhcnRSZXBsYWNpbmdMb2FkKCkpCiAgICAg
ICAgIGZyYW1lTG9hZGVyLT5jbGllbnQoKS5kaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpOwpA
QCAtMTIxNSw3ICsxMjE1LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFVzZUFjdGl2ZVNl
cnZpY2VXb3JrZXJGcm9tUGFyZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWUKIH0KICNlbmRpZgog
Ci12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBz
aXplX3QgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKCFtX2dvdEZpcnN0Qnl0ZSkgewogICAgICAgICBt
X2dvdEZpcnN0Qnl0ZSA9IHRydWU7CkBAIC0xMzEzLDI0ICsxMzEzLDI0IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgp
CiAjZW5kaWYKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzaW5nKCkpOwot
ICAgIG1fd3JpdGVyLmFkZERhdGEoYnl0ZXMsIGxlbmd0aCk7CisgICAgbV93cml0ZXIuYWRkRGF0
YShkYXRhKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQg
RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2Us
ICZyZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSk7Ci0gICAgZGF0YVJlY2VpdmVkKGRhdGEsIGxl
bmd0aCk7CisgICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBE
b2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBpZiAobV9jb250ZW50RmlsdGVy
ICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoZGF0YSwgbGVu
Z3RoKSkKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRp
bnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpCiAgICAg
ICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgQVNTRVJUKGRhdGEpOwotICAgIEFTU0VSVChsZW5n
dGgpOworICAgIEFTU0VSVChidWZmZXIuZGF0YSgpKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNpemUo
KSk7CiAgICAgQVNTRVJUKCFtX3Jlc3BvbnNlLmlzTnVsbCgpKTsKIAogICAgIC8vIFRoZXJlIGlz
IGEgYnVnIGluIENGTmV0d29yayB3aGVyZSBjYWxsYmFja3MgY2FuIGJlIGRpc3BhdGNoZWQgZXZl
biB3aGVuIGxvYWRzIGFyZSBkZWZlcnJlZC4KQEAgLTEzNDAsMTIgKzEzNDAsMTIgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpCiAjZW5kaWYKIAogICAgIGlmIChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNl
TG9hZGVyKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpc3BhdGNoRGlkUmVj
ZWl2ZURhdGEodGhpcywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwg
ZGF0YSwgbGVuZ3RoLCAtMSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlz
cGF0Y2hEaWRSZWNlaXZlRGF0YSh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291
cmNlTG9hZGVyLCBidWZmZXIsIC0xKTsKIAotICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1h
aW5SZXNvdXJjZURhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgsIC0xLCBmYWxzZSk7CisgICAgbV9h
cHBsaWNhdGlvbkNhY2hlSG9zdC0+bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGJ1ZmZlciwgLTEs
IGZhbHNlKTsKIAogICAgIGlmICghaXNNdWx0aXBhcnRSZXBsYWNpbmdMb2FkKCkpCi0gICAgICAg
IGNvbW1pdExvYWQoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgY29tbWl0TG9hZChidWZmZXIpOwog
fQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXR1cEZvclJlcGxhY2UoKQpAQCAtMTYxNCw3ICsx
NjE0LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBt
X3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NF
UlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVE
YXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRh
KCptX3BhcnNlZEFyY2hpdmVEYXRhKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAt
MjI1Nyw4ICsyMjU3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5n
TXVsdGlwYXJ0Q29udGVudCgpCiAKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2Uo
KTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9h
ZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5z
aXplKCkpOworICAgIGNvbW1pdExvYWQobWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91
cygpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCkBAIC0y
NDEwLDkgKzI0MDksOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb25FdmVudChTZWN1cml0eVBvbGljeVZpb2xhdGlvbgogfQogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhy
b3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCit2b2lkIERv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgc2l6ZSk7CisgICAg
ZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1h
aW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCAwZTAxMmI2OGMyNGIz
MzRmOTFjNTcxMDVmNGQyNTIzZDYyYjQ2NzBhLi5jNTc5YmZiMjYyN2IyNWYwYmY2ZjNhMGQ0ZWIw
MDgzMzc1MTRiNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAt
ODYsNiArODYsNyBAQCBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0
aW9uOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBTdWJzdGl0dXRlUmVzb3VyY2U7CiBjbGFzcyBVc2VyQ29udGVudFVSTFBhdHRlcm47CkBAIC0z
ODIsNyArMzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRUaW1pbmcoKSB7IG1fbG9hZFRp
bWluZyA9IHsgfTsgfQogCiAgICAgLy8gVGhlIFdlYktpdCBsYXllciBjYWxscyB0aGlzIGZ1bmN0
aW9uIHdoZW4gaXQncyByZWFkeSBmb3IgdGhlIGRhdGEgdG8gYWN0dWFsbHkgYmUgYWRkZWQgdG8g
dGhlIGRvY3VtZW50LgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0RGF0YShjb25zdCB1
aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b21taXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhv
c3QmIGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAgICAgQXBwbGljYXRpb25DYWNoZUhv
c3QqIGFwcGxpY2F0aW9uQ2FjaGVIb3N0VW5sZXNzQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKQEAg
LTQ4Miw3ICs0ODMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21taXRJZlJlYWR5KCk7CiAg
ICAgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAg
dm9pZCBjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3QqLCBpbnQpOworICAgIHZvaWQgY29tbWl0TG9h
ZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlTG9hZGVy
KCk7CiAKICAgICB2b2lkIHNldHVwRm9yUmVwbGFjZSgpOwpAQCAtNDk4LDcgKzQ5OSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBtYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwpA
QCAtNTA4LDEzICs1MDksMTMgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOworICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgYm9vbCBtYXliZUxvYWRF
bXB0eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCmluZGV4IGI5YzQxMzUyNTY3NjI2NzIxOTA3YWYzNjZkZmIxZGVjNzk0YzI0
NzQuLjg2NGI2NWExZDExMzFmYjYzNzEyNWIxNzM5OTFlOWQzZTBhNmU3MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00
MzcsMjAgKzQzNywyMCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudAogICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwg
JnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIGRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2Ut
PmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEobV9y
ZXNvdXJjZS0+aWRlbnRpZmllcigpLCBidWZmZXIpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAKICAgICBpZiAo
bV9kZWxheUNhbGxiYWNrc0ZvckludGVncml0eUNoZWNrKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZmFsc2UpOwogfQogCiB2b2lkIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VUaW1pbmcmIHJlc291cmNlVGltaW5nKQpAQCAtNDkz
LDIwICs0OTMsMTQgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWYKIAogICAgICAgICBpZiAob3B0
aW9ucygpLmZpbHRlcmluZ1BvbGljeSA9PSBSZXNwb25zZUZpbHRlcmluZ1BvbGljeTo6RGlzYWJs
ZSkgewogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVy
LCByZXNwb25zZSk7Ci0gICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+
cmVzb3VyY2VCdWZmZXIoKSkgewotICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21l
bnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVEYXRhKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0g
bV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlciwgZmFsc2UpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgQVNTRVJUKHJlc3BvbnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpE
ZWZhdWx0KTsKIAogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVu
dGlmaWVyLCBSZXNvdXJjZVJlc3BvbnNlOjpmaWx0ZXIocmVzcG9uc2UsIG1fb3B0aW9ucy5jcmVk
ZW50aWFscyA9PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlID8gUmVzb3VyY2VS
ZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6Tm8gOiBSZXNvdXJjZVJlc3Bv
bnNlOjpQZXJmb3JtRXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpZZXMpKTsKLSAgICAgICAgICAgIGlm
IChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7Ci0gICAgICAg
ICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAg
ICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoc2VnbWVudC5kYXRhKCks
IHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigp
KQorICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSgqYnVmZmVyLCBmYWxz
ZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY2NywxMSArNjYxLDggQEAgdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFNlY3VyaXR5Q2gKICAgICB9CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJl
c3BvbnNlKTsKIAotICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGRhdGEtPmZvckVhY2hTZWdtZW50
KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlm
aWVyLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICB9KTsKLSAgICB9
CisgICAgaWYgKGRhdGEpCisgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsICpkYXRh
KTsKIAogICAgIGNvbnN0IGF1dG8qIHRpbWluZyA9IHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3Jr
TG9hZE1ldHJpY3NPck51bGwoKTsKICAgICBhdXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VU
aW1pbmc6OmZyb21TeW5jaHJvbm91c0xvYWQocmVxdWVzdFVSTCwgbV9vcHRpb25zLmluaXRpYXRv
ciwgbG9hZFRpbWluZywgdGltaW5nID8gKnRpbWluZyA6IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1w
dHlNZXRyaWNzKCksIHJlc3BvbnNlLCBzZWN1cml0eU9yaWdpbigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCBmMWY0MWVlOTFk
NmNlOGExYzU4NjIzODE3YjM1OGY3NzQ2NTFlMGE0Li5jODZiYTdmNDUzODNiNmMyODYwMDMyZDNh
ZWJmYmEzZTA4NjA3NjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5oCkBAIC04NiwxNCArODYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAgICAgICB2b2lkIGRhdGFT
ZW50KENhY2hlZFJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCByZWRpcmVj
dFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
Jikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSBvdmVycmlkZTsKICAgICAgICAg
dm9pZCBmaW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQoY29uc3QgUmVzb3VyY2VUaW1pbmcmKTsK
ICAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAg
ICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwog
ICAgICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAgICAgICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNw
cAppbmRleCBiMDQ2ZWYwZGUyMDQ4ZWZkNDMxOTcwMjYyMmI5NmE3ZGYyZmVhZmE3Li40ZmY5Mzgx
ODBmZGQyOGZjNzE1ZDA4ODgxNjA4ZmM2Mjg5NDkyZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIERvY3VtZW50V3Jp
dGVyOjpyZXBvcnREYXRhUmVjZWl2ZWQoKQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnJlc29s
dmVTdHlsZShEb2N1bWVudDo6UmVzb2x2ZVN0eWxlVHlwZTo6UmVidWlsZCk7CiB9CiAKLXZvaWQg
RG9jdW1lbnRXcml0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5n
dGgpCit2b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIHRvIEFTU0VSVCBvbmNlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQyNyBoYXMgYmVlbiByZXNvbHZlZC4K
ICAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpOb3RTdGFydGVkKTsKQEAgLTI3
Myw3ICsyNzMsNyBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VS
VChtX3BhcnNlcik7Ci0gICAgbV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBieXRlcywgbGVu
Z3RoKTsKKyAgICBtX3BhcnNlci0+YXBwZW5kQnl0ZXMoKnRoaXMsIGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRXcml0ZXI6Omluc2VydERhdGFTeW5jaHJvbm91
c2x5KGNvbnN0IFN0cmluZyYgbWFya3VwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0
ZXIuaAppbmRleCAwNzE3MmM5NzM5ZWI1NzM1YmM4MWY4ZGVmMmZiOWIyODVjMjU0ZDBiLi5jMGEz
NGE2YjdlOWNmZTk2NDMwNDVhOTVlNzkzMjI1MjM2M2IyNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50UGFyc2VyOwogY2xhc3MgRnJhbWU7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBE
b2N1bWVudFdyaXRlciB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYmVn
aW4oKTsKICAgICBib29sIGJlZ2luKGNvbnN0IFVSTCYsIGJvb2wgZGlzcGF0Y2hXaW5kb3dPYmpl
Y3RBdmFpbGFibGUgPSB0cnVlLCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IG51bGxwdHIpOwot
ICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCk7Cisg
ICAgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgaW5zZXJ0RGF0
YVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25s
eSB0byBwcmV2ZW50IHRoZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4
IDU1MjU2MmU1NGJiYTU3M2JlYWIwYjIwZmE2NDA1ZTkzM2MxYjY4NjIuLjM3ODFkOGQ1ZGNkNGVi
ZWZhODZlYzhhNGExM2M5OWMxOGNkYTE0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCkBAIC04NjUsNyArODY1LDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3Qq
LCBpbnQpCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1l
bnRMb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAyMjY5OWM5YzUxODMyYTVh
YThjODlhYmFiMmZmYzdlMDk4NWJmYzAwLi4xMTZhMTdkMWY1YzllNjQ3ZTFmMTQxYTEwMDg2YjA3
OTgzOTNmM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxh
Y2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0
Q29udGVudCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVy
KiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5p
c2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKIAogICAgIFJlc291cmNlRXJyb3Ig
Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA2YzVlZTNhOWIzMWFlOGI4NGRiOTIw
YjY2ZWJmMjE0ZjI2ZWM5YWQ2Li5jNDQ2ZGZiZGMwYTllYzg1Y2JkMTQ0OGEwY2FiZTQxZGQ2MDY3
OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE2ODUsNyArMTY4
NSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFFbGVtZW50VVJMKFVSTCYgdXJs
LCBOb2RlJiBpbml0aWF0b3JOb2RlKQogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0
ZShyZXF1ZXN0LCBpZGVudGlmaWVyLCBlcnJvcik7Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBy
ZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKHVybCwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSksIDAs
IC0xLCAtMSwgZXJyb3IpOworICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVz
c2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgUmVzb3Vy
Y2VSZXNwb25zZSh1cmwsIFN0cmluZygpLCAtMSwgU3RyaW5nKCkpLCBudWxscHRyLCAtMSwgZXJy
b3IpOwogCiAgICAgdXJsID0gcmVxdWVzdC51cmwoKTsKIApAQCAtMjA4NSw4ICsyMDg1LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh0aXRsZSk7CiAKICAgICAgICAgLy8gU2Vu
ZCByZW1haW5pbmcgbm90aWZpY2F0aW9ucyBmb3IgdGhlIG1haW4gcmVzb3VyY2UuCi0gICAgICAg
IG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRl
ci5nZXQoKSwgbWFpblJlc291cmNlSWRlbnRpZmllciwgbWFpblJlc291cmNlUmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSgpLAotICAgICAgICAgICAgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50Piht
X2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwg
bWFpblJlc291Y2VFcnJvcik7CisgICAgICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVn
YXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgbWFpblJlc291cmNlSWRlbnRpZmll
ciwgbWFpblJlc291cmNlUmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpLCBudWxscHRyLCBzdGF0
aWNfY2FzdDxpbnQ+KG1fZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKCkpLCBtYWluUmVzb3VjZUVycm9yKTsKIAogICAgICAgICBWZWN0b3I8UmVmPEZyYW1l
Pj4gdGFyZ2V0RnJhbWVzOwogICAgICAgICB0YXJnZXRGcmFtZXMuYXBwZW5kKG1fZnJhbWUpOwpA
QCAtMjEzMiw3ICsyMTMxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxM
b2FkKCkKICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1v
cmUgdGhhbiAyQiBieXRlcywgdGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAg
ICAgICAgICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtp
bmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAgICAgICAgIC8v
IENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgotICAgICAgICAgICAg
bm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVy
LmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgMCwgc3RhdGljX2Nhc3Q8aW50
PihyZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSksIDAsIGVycm9yKTsKKyAgICAgICAg
ICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExv
YWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIG51bGxwdHIsIHN0YXRp
Y19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCBlcnJvcik7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBGSVhNRTogV2h5IG9ubHkgdGhpcyBmcmFtZSBhbmQgbm90
IHBhcmVudCBmcmFtZXM/CkBAIC0zMTYwLDcgKzMxNTksOCBAQCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZQogICAgICAgICAgICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRl
c3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3Jp
cHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2Ny
aXB0TGlrZTo6Tm8pKTsKICAgICAgICAgfQogICAgIH0KLSAgICBub3RpZmllcigpLnNlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIs
IHJlcXVlc3QsIHJlc3BvbnNlLCBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgZGF0YSA/
IGRhdGEtPnNpemUoKSA6IDAsIC0xLCBlcnJvcik7CisKKyAgICBub3RpZmllcigpLnNlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIs
IHJlcXVlc3QsIHJlc3BvbnNlLCBkYXRhLCAtMSwgZXJyb3IpOwogICAgIHJldHVybiBpZGVudGlm
aWVyOwogfQogCkBAIC0zNjQxLDcgKzM2NDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkZWRS
ZXNvdXJjZUZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cgog
CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSA9IHJlc291cmNlLnJlc3BvbnNlKCk7CiAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TWVtb3J5Q2Fj
aGUpOwotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1
bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsIDAsIHJl
c291cmNlLmVuY29kZWRTaXplKCksIDAsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIs
IG5ld1JlcXVlc3QsIHJlc3BvbnNlLCBudWxscHRyLCByZXNvdXJjZS5lbmNvZGVkU2l6ZSgpLCBl
cnJvcik7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmFwcGx5VXNlckFnZW50SWZOZWVkZWQoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaAppbmRleCBlZTlmM2QwYzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThkMTIzNjUyLi4z
NTJhNGM0ZmI1MDRmN2NkNGQyZWM0MDZlNmJjMjkxMWE1NWZkMDk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNyw3ICs3LDcgQEAKICAqIGFyZSBtZXQ6
CiAgKgogICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKICAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCkBAIC01MCw3ICs1
MCw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmZGVmIF9fT0JKQ19fIAor
I2lmZGVmIF9fT0JKQ19fCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIHR5cGVk
ZWYgaWQgUmVtb3RlQVhPYmplY3RSZWY7CiAjZWxzZQpAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBS
ZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFdp
ZGdldDsKIApAQCAtMjE0LDkgKzIxNCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXBs
YWNlTXVsdGlwYXJ0Q29udGVudCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRM
b2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVy
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIq
KSA9IDA7Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKSA9
IDA7CiAKQEAgLTI3Miw3ICsyNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXNl
ckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAg
ICAKKwogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNo
ZWRGcmFtZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJv
bUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgPSAwOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CkBAIC0zODEsNyArMzgxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIEFsbG93
c0NvbnRlbnRKYXZhU2NyaXB0IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnRO
YXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gQWxsb3dzQ29udGVudEphdmFTY3JpcHQ6Olllczsg
fQotICAgIAorCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2
aW9yKCkgeyB9CkBAIC0zOTAsNyArMzkwLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShQREZLSVRf
UExVR0lOKQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VQREZQbHVnaW4oY29uc3QgU3RyaW5n
JiwgU3RyaW5nVmlldykgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgotICAgIAorCiAg
ICAgdmlydHVhbCBib29sIGlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggNWQxMjBlMjQ3YWMyNjI3MTE2MWRlMGRjNTIzMDI0ZGM4ZGUz
NGQ2OS4uMWExN2E3MGZhNThjNzIyOGY2Mzg5MzU5ZGQwZDMzOWQwZTA1Y2QyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcApAQCAtMjMxLDEzICsy
MzEsMTMgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1MKICAgICAgICAgbV9jbGllbnQtPmRhdGFT
ZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgTWVk
aWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291
cmNlKTsKIAogICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
ICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywg
ZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMs
IGJ1ZmZlcik7CiB9CiAKIHZvaWQgTWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmZjZjMjg4
NzEwMDg4ZjRiMDU0Y2U0NzYzZDVkYTBkZGM5MmMyMDY1Li43YjU1NzcyMGVmMDUzM2ZiYWEyMjY1
NjUzOGVmZGQ5NmY2MTc5ZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVk
aWFSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291
cmNlTG9hZGVyLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYp
IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KENh
Y2hlZFJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWlu
dDhfdCosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcAppbmRleCA2MDQzYWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkx
NTVlMzkxNTAzLi41Y2FhZGY2MjljNzBhZTA4NmI3N2JkNzJjZDI4Njc1MzZiOGZhOTdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5jcHAKQEAgLTE0MSwzMCArMTQxLDE0IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwCiAgICAg
fSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotICAgIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0
aCwgZGF0YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKLXsKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUo
YnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIFJlZjxOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBpZiAo
bV9jbGllbnQpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikgewotICAgICAgICAgICAgYnVmZmVyLT5m
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVEYXRhKHRoaXMsIGRhdGEsIGxlbmd0aCk7Ci0gICAgfQorICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlcik7CiAK
LSAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgs
IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Cisg
ICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5n
dGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9h
ZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5oCmluZGV4IGI1MTc0ZWRjOTRiOTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5
MzguLjFlYzdkNjFlM2ExNzVjMjJiNTU4NzU4ZDM3ZWQwYzU1YmU1ZjEzYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC0z
NiwxMiArMzYsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBj
b25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikg
eyB9CiAgICAgdmlydHVhbCBib29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CkBAIC02Miw4ICs2Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2Fs
bGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlv
bkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAKQEAgLTc0LDggKzc0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotCiAgICAgdm9pZCBu
b3RpZnlEb25lKCk7CiAKICAgICBXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xp
ZW50PiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuY3BwCmluZGV4IDE0N2I0NWUwNjQzODEyMjdiMDUyMjA2NDQxODUyM2MwNzlmNjRkMTQu
LjdjMmFiMjkxMDcxZGJjMzQ3Mjc1ZGNlOGQzNzk3ZDI0Njc4NDE1ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtMzksNiArMzksNyBA
QAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCiAjaW5jbHVkZSAiUXVpY2tMb29rLmgiCkBAIC03OCwxMiArNzksMTIg
QEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc28KICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25z
ZShsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCByLCBsb2Fk
ZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJh
bWUucGFnZSgpKQotICAgICAgICBwYWdlLT5wcm9ncmVzcygpLmluY3JlbWVudFByb2dyZXNzKGxv
YWRlci0+aWRlbnRpZmllcigpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgcGFnZS0+cHJvZ3Jlc3Mo
KS5pbmNyZW1lbnRQcm9ncmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSwgYnVmZmVyLnNpemUoKSk7
CiAKLSAgICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwg
bG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3Ro
KTsKKyAgICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwg
bG9hZGVyLT5pZGVudGlmaWVyKCksIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRGaW5pc2hMb2FkKFJlc291cmNlTG9hZGVyKiBs
b2FkZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAt
MTU5LDEzICsxNjAsMTMgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmUKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUsIGlkZW50
aWZpZXIsIGxvYWRlciwgciwgcmVzb3VyY2VMb2FkZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9h
ZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxv
YWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVy
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICAvLyBOb3RpZnlpbmcgdGhl
IEZyYW1lTG9hZGVyQ2xpZW50IG1heSBjYXVzZSB0aGUgZnJhbWUgdG8gYmUgZGVzdHJveWVkLgog
ICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNs
aWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVy
LCBkYXRhTGVuZ3RoKTsKKyAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlk
UmVjZWl2ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBidWZmZXIuc2l6ZSgpKTsK
IAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoJm1fZnJhbWUs
IGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKCZtX2ZyYW1lLCBpZGVudGlm
aWVyLCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRO
b3RpZmllcjo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVy
KQpAQCAtMTg2LDcgKzE4Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNo
RGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyCiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZygmbV9mcmFtZSwgbG9hZGVyLCBpZGVu
dGlmaWVyLCBlcnJvcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXIs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAg
ICAgLy8gSWYgdGhlIHJlcXVlc3QgaXMgbnVsbCwgd2lsbFNlbmRSZXF1ZXN0IGNhbmNlbGxlZCB0
aGUgbG9hZC4gV2Ugc2hvdWxkCiAgICAgLy8gb25seSBkaXNwYXRjaCBkaWRGYWlsTG9hZGluZyBp
biB0aGlzIGNhc2UuCkBAIC0xOTksOCArMjAwLDggQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmll
cjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwK
ICAgICBpZiAoIXJlc3BvbnNlLmlzTnVsbCgpKQogICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVS
ZXNwb25zZShsb2FkZXIsIGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlmIChkYXRhTGVu
Z3RoID4gMCkKLSAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50aWZp
ZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBpZiAoYnVmZmVy
ICYmIGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRl
ciwgaWRlbnRpZmllciwgKmJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgaWYgKGVy
cm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCmluZGV4IDRk
YmQ0Y2M0OWQ2NTA0MjExODRlNjBjMjRkZDcxNGRjYmUwYmRiMGQuLmY2NDI1YmE3YmU5ZmYyNmU5
OWY3YmU3Y2MzMmE4ZTVkZmJiMDBlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWROb3RpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlc291cmNlTG9h
ZE5vdGlmaWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXNvdXJjZUxvYWROb3RpZmll
cik7CkBAIC01NSwxOCArNTYsMTggQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCBkYXRhTGVuZ3RoLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpOwogICAgIHZvaWQgZGlkRmFpbFRvTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVl
c3QoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRM
b2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IENhY2hlZFJlc291cmNl
Kik7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlcios
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291
cmNlTG9hZGVyKiA9IG51bGxwdHIpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShE
b2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRl
ciopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9p
ZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2Rl
ZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5p
bmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4sIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogCiBwcml2YXRlOgogICAgIEZyYW1lJiBtX2ZyYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNmRlYmIyNTg4YTNlODJiMjFjNjFk
N2U4ZjM2ZTRmNGJiYmEyNWU2MC4uNjY0N2MyNzA4MTE4MGViY2VjMmI1Y2EyOWZkNjBiNzIzYWI2
NDgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yOTks
OSArMjk5LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogCiAgICAgICAg
IGF1dG8gZGF0YVNpemUgPSBkZWNvZGVSZXN1bHQtPmRhdGEuc2l6ZSgpOwogICAgICAgICBSZXNv
dXJjZVJlc3BvbnNlIGRhdGFSZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNw
b25zZSh1cmwsIGRlY29kZVJlc3VsdC52YWx1ZSgpKTsKLSAgICAgICAgdGhpcy0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKGRhdGFSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBkYXRhU2l6ZSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGVjb2RlUmVzdWx0LT5kYXRhKSldKCkgbXV0YWJsZSB7CisgICAgICAgIHRoaXMtPmRpZFJl
Y2VpdmVSZXNwb25zZShkYXRhUmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgZGF0YVNpemUsIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRlY29kZVJlc3VsdC0+ZGF0YSkpXSgpIHsKICAgICAgICAgICAgIGlmICghdGhpcy0+
cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSAmJiBkYXRhU2l6ZSAmJiBtX3JlcXVlc3QuaHR0cE1ldGhv
ZCgpICE9ICJIRUFEIikKLSAgICAgICAgICAgICAgICB0aGlzLT5kaWRSZWNlaXZlQnVmZmVyKFdU
Rk1vdmUoZGF0YSksIGRhdGFTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAg
ICAgICAgICAgIHRoaXMtPmRpZFJlY2VpdmVCdWZmZXIoZGF0YSwgZGF0YVNpemUsIERhdGFQYXls
b2FkV2hvbGVSZXNvdXJjZSk7CiAKICAgICAgICAgICAgIGlmICghdGhpcy0+cmVhY2hlZFRlcm1p
bmFsU3RhdGUoKSkgewogICAgICAgICAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1l
dHJpY3M7CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRj
aFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQ
YXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjphZGRCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVy
bjsKQEAgLTMzNiwxMCArMzM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ20KICAgICBpZiAo
ZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKICAgICAgICAgbV9y
ZXNvdXJjZURhdGEucmVzZXQoKTsKIAotICAgIGlmIChidWZmZXIpCi0gICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLmFwcGVuZCgqYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcmVzb3VyY2VEYXRh
LmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZChidWZmZXIp
OwogfQogCiBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVz
b3VyY2VEYXRhKCkgY29uc3QKQEAgLTUzOSw3ICs1MzYsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxldGlv
bkhhbgogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVSZXNwb25z
ZSh0aGlzLCBtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRU
eXBlKQogewogICAgIC8vIFRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhcmUgbm90IHF1aXRlIHZh
bGlkIGhlcmUsIHNpbmNlIGEgc3ViY2xhc3MKICAgICAvLyBtaWdodCBvdmVycmlkZSBkaWRSZWNl
aXZlRGF0YSBpbiBhIHdheSB0aGF0IGludmFsaWRhdGVzIHRoZW0uIFRoaXMKQEAgLTU0NywzMCAr
NTQ0LDIyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsCiAgICAgLy8gQVNTRVJUKGNvbiA9PSBj
b25uZWN0aW9uKTsKICAgICAvLyBBU1NFUlQoIW1fcmVhY2hlZFRlcm1pbmFsU3RhdGUpOwogCi0g
ICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWRE
YXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIGRpZFJlY2VpdmVCdWZmZXIoYnVmZmVy
LCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7Ci0gICAgZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3Ro
LCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0gICAgLy8gVGhpcyBt
ZXRob2Qgc2hvdWxkIG9ubHkgZ2V0IGRhdGErbGVuZ3RoICpPUiogYSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyLgotICAgIEFTU0VSVCghYnVmZmVyIHx8ICghZGF0YSAmJiAhbGVuZ3RoKSk7Ci0KICAg
ICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0
aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2li
bHkgZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2Lgog
ICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhZGRE
YXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIuZ2V0KCksIGRhdGFQYXlsb2FkVHlwZSk7
CisgICAgYWRkQnVmZmVyKGJ1ZmZlciwgZGF0YVBheWxvYWRUeXBlKTsKIAogICAgIC8vIEZJWE1F
OiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywgdGhpcyBjb2Rl
IHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3Mg
Y29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJh
Y3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUu
CiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xp
Y3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90
aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBz
dGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVy
KCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyLm1ha2VDb250aWd1b3Vz
KCksIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMb2FkTWV0cmljcykKQEAgLTcyOSwxNCArNzE4LDE0IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNw
b25zZSYmCiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBk
aWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkQnl0ZXMpOworICAgIGRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDcwZWEyMjBk
YzE3YzczNzZlZDY2MGZhN2E2MWE4NGUzMWMzMzRjYmIuLjA5YjExOTMwMmQ2Y2NmYzIwMWNhZTIw
OWQwZjUyMWIyYTgxNDI1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5o
CkBAIC0xMDcsOCArMTA3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNh
bGxiYWNrKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjcsOCArMTY3LDYgQEAgcHJvdGVj
dGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2NhbmNlbGxh
dGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0g
ICAgCiAgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSByZWZlcnJlclBv
bGljeSkgeyBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGljeTsgfQogICAg
IFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25z
LnJlZmVycmVyUG9saWN5OyB9CiAKQEAgLTE5Miw3ICsxOTAsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9p
ZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGFkZEJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWRE
YXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hOZXR3b3JrTG9hZCgpOwogCkBAIC0yMDIsOCArMjAw
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNv
dXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFu
ZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tlZChS
ZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggMzdkMGJiODIxYWJkODZhOWI1NjA2ZTEyN2VmYzk0MTJhNTFi
YjFhOS4uOTcyZjJhZjIyNjAzZjQyNGNkODc3NWY1OTEwMTBlMmQ3NjkzOGEwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MTgsMzIgKzUxOCwx
NSBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VQb2xpY3koKQog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAg
ICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewotICAg
ICAgICBpZiAocHJldmlld0xvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoKSkKKyAg
ICAgICAgaWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5tYWtlQ29udGln
dW91cygpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAotICAgIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0
aCwgZGF0YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsK
LSNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2
aWV3TG9hZGVyLmdldCgpKSB7Ci0gICAgICAgIGlmIChwcmV2aWV3TG9hZGVyLT5kaWRSZWNlaXZl
QnVmZmVyKGJ1ZmZlci5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVy
KSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
Ci17CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCiAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc3Bv
bnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAgJiYgIW1fcmVzb3VyY2UtPnNob3VsZElnbm9y
ZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkpCkBAIC01NTUsMTMgKzUzOCwxMyBAQCB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgsCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHJlbW92aW5nIHRoZSBsYXN0
IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2
LgogICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAg
ICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIGJ1
ZmZlci5jb3B5UmVmKCksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAg
IFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5n
dGgsIGRhdGFQYXlsb2FkVHlwZSk7CiAKICAgICBpZiAoIW1fbG9hZGluZ011bHRpcGFydENvbnRl
bnQpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0
YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZl
ciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0
YShidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDgzMmM5ZjBlNzNkMzg0NjRhNzk1ZjQwMzg2
MGY3OWMzNGU3M2JjN2YuLjNkYmQ1MzM4YWZlNDliNDc4NTdkNTM0MDk3ODg3NTJlYWExYWVkNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03Myw4ICs3
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTEsNyBAQCBwcml2YXRl
OgogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwg
U3RyaW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAg
dm9pZCBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCBjZjJkZTBjNjJkOTVmMzMyNWI0MmI0NmUy
NDAzNzc0NDEwNzQyYTBkLi4zZDE5Mjg2MmYyNzcyOWIyZjM4ZGI1NGJkODM2Nzk5NTI1YzAxOWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAg
ICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgeyBtX2RhdGEuYXBwZW5k
KGJ1ZmZlcik7IH0KICAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCiAgICAg
dmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKaW5kZXggODRkNzli
MGM5OWRmMTBkOTkzODBiODQ4MzE3MzcxYmMxZTg1NzNiZi4uY2VmMGM4ZjFmMTdkMGY1NzY1OWEz
NTQxYjU0ZjYzODk5MDY0YjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUmVz
b3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZGFibGVMb2FkZXJDbGll
bnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1Nl
bnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCAvKmRhdGFMZW5ndGgqLykgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgLyogdXNl
U3RyTGVuICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoVGltaW5nKGNvbnN0
IFJlc291cmNlVGltaW5nJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCmluZGV4IDQyYWU2NDkwOWE1ZTBmZTQ0YzZh
NWUwMDYwZDU4Yzk2NGVjNTYwNTEuLmYzNmEyZDQwN2FmODgxNTkwNDI4NjZiODVlOWUwMTg2MWRh
YWM3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVy
Q2xpZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50V3JhcHBlci5oCkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgogICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAg
ICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBib29sIHVzZVN0ckxlbikKICAgICB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKLSAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIHVzZVN0ckxlbik7CiAg
ICAgfQogCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwCmluZGV4IGRmZjg5NzAxYzkzOWJjNzNjMzcwMzJhZDljNDJhZDIwNjMyNmFk
NmUuLjdjMDM0OTQ1ZWUwM2E3NGY1MzMzOWJiODFmZmEwZTA2YzY5YzcxNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIzMSwx
NCArMjMxLDEzIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyCiAgICAgfSwgbV90YXNrTW9kZSk7
CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCB1c2VTdHJMZW4pCiB7Ci0gICAgVmVjdG9yPHVp
bnQ4X3Q+IGJ1ZmZlcihkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdvcmtlclJlcXVl
c3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gV1RGTW92
ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Cisg
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29ya2VyQ2xpZW50
V3JhcHBlciB9LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50
aWZpZXIsIGJ1ZmZlciA9IFJlZiB7IGRhdGEgfSwgdXNlU3RyTGVuXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2Jh
bFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgcHJv
dGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CisgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRp
ZFJlY2VpdmVEYXRhKGJ1ZmZlciwgdXNlU3RyTGVuKTsKICAgICAgICAgaWYgKGlzPFdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3
b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIs
IGJ1ZmZlcik7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDcyM2I0NTZlYzhlOWUzMDZmYzE4
Y2M4ZjM2ZGU2ZGNkOGFlMzA0NzAuLjMzOWQ2ZjQ3MzEwYTFlZDI4OTAzNmFkMGE0MDRmMzhhN2Ey
Njg2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEFsbCBleGVjdXRl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2Vu
dCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCkgb3Zl
cnJpZGU7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwg
Ym9vbCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaFRpbWluZyhjb25z
dCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNTE5NzhmNDEy
Mzg3NGRjNTY2MGVmZjQ3MDY1OTcwN2Q0ZTVkODVhNy4uZWQ3NTY2NTI2YjJkN2VmYmYxYzUxNzAy
MDk1YTg3OWJhZjU2OTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgYm9v
bCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqLCBp
bnQsIGxvbmcgbG9uZywgYm9vbCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5SZXNv
dXJjZURhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcsIGJvb2wpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmgKaW5kZXggYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMxNzBjZGY3MjM2
NzJhMC4uZDJhZWFlYzNlMTRjNjNiY2JmNjAxZTlhYWYwMjRjMWY5ZWM0NzZkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWF5YmVMb2FkTWFpblJlc291
cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVEYXRhJik7CiAgICAgdm9pZCBt
YXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBT
dWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAg
IHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9uY2UpOworICAg
IHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9uY2UpOwogICAgIHZvaWQgZmluaXNo
ZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAgdm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291
cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggMmJiM2ZlNzViOTk3N2U4MzMyMmFl
MjU4MGY3MjEyZWU1YmYyMTYxMC4uMjU2ZTg5YjIxMWIzOGIyZDIxZGNkNjY1NzgyNjllNjYwNzM2
NzMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDEwIEBAIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVz
b3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVy
KFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFu
ZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91
cygpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7Cisg
ICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkpCisgICAgICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VB
bmREYXRhKHJlc3BvbnNlKCksIFJlZlB0ciB7ICZkYXRhKCkgfSk7CisgICAgZWxzZQorICAgICAg
ICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3
MTI5MjYuLjU0ZmVlZDJjYTY0MTJiNDUyMDk4NzBjNzczNDM2MDlkODUwOWI3NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05OSw5ICs5OSw5IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSA9IEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZTo6Y3JlYXRlKG1fcmVzb3VyY2UtPnVybCgpLCByZXNwb25zZSwgbV90eXBl
KTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLT5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmgKaW5kZXggMDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3ZWJlOWIwNjll
MjMyZC4uMGIyOTYyODhmMzFhNDMyNWQ0ODQ5YTQ0MmU4YWU2MDJjMTczMTkyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwog
ICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNv
dXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggOTQ2Mjc5NTIwZDBkYTQ0
NjIyYzZhY2QzNjY2MjI4ODEwNWU4MTk2Mi4uMWYwY2I4YWVkZTE3MDUxYjI2NjdkZTcyMzc2ZWYy
ZmQxYmYwNjBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCkBAIC00NjgsNyArNDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1h
Z2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZElt
YWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAg
ICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBAIC01NTgsMTUgKzU1OCwxNSBAQCBF
bmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICB1cGRhdGVCdWZmZXJJ
bnRlcm5hbChkYXRhKTsKKyAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhLm1ha2VDb250aWd1
b3VzKCkpOwogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZv
aWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZm
ZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7Ci0gICAgdXBkYXRlQnVmZmVySW50ZXJuYWwo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChidWZm
ZXIpOworICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQg
Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCAwODNmOTJmODg4Mjc2ZWVkYTg5OTEyMDMx
ZDI0NDlhOTY4ZTI2NWQ5Li5kZTQ0MTIwM2E4NjBkMmEyY2RmM2EzNDUwNWMxYTEyMmVkMWU5ODM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTI4LDcg
KzEyOCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0
YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAg
IHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRl
SW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVw
ZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBlcnJvcihD
YWNoZWRSZXNvdXJjZTo6U3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogCkBAIC0xNjksNyArMTY5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJ
bnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYp
OwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCmluZGV4IDcxZTE2MDgyZmZlNjU1ZDExMWYxNjk5MGQxMjMwNTM1YmVhY2JmOTUuLmQz
MzYxMTMyMTNmYmViZmY0ZTkxZmY2NWY4M2ZmZTI0ZDNlOGEwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNDgsMTIgKzQ4
LDEyIEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFpbk9yTWVkaWFP
ckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRh
dGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmso
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1l
bnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0CiB7CiAgICAgc2l6
ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7Ci0gICAgaWYgKCFkYXRhIHx8
IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCisgICAgaWYgKGRhdGEuc2l6ZSgp
IDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKKyAgICByZXR1
cm4gZGF0YS5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCiB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgICAgIHByZXZpb3Vz
RGF0YVNpemUgKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKIAogICAgICAgICBTZXRGb3JTY29w
ZTxib29sPiBub3RpZnlTY29wZShtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5LCB0cnVlKTsKLSAg
ICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEuZGF0YSgp
LCBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpKTsKKyAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNS
ZWNlaXZlZChpbmNyZW1lbnRhbERhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkpOwogICAgIH0KICAg
ICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAKQEAgLTg5LDExICs4OSwxMSBAQCB2
b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRv
Tm90QnVmZmVyRGF0YSk7Ci0gICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChkYXRhLCBs
ZW5ndGgpOwotICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7Cisg
ICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChidWZmZXIpOworICAgIENhY2hlZFJlc291
cmNlOjp1cGRhdGVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpAQCAtMTEwLDkgKzExMCw5IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QKICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgIGlmIChkYXRhICE9
IG1fZGF0YS5nZXQoKSkKICAgICAgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOwotICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRl
SW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3Jl
bWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKCptX2RhdGEpKSB7CiAg
ICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAg
ICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgp
LCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2RhdGEgPSBudWxs
cHRyOwpAQCAtMTMwLDE1ICsxMzAsMTUgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdAogICAgIH0K
IH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewotICAgIGlmICghbGVuZ3RoKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtl
cjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQotICAgICAgICBjLT5kYXRhUmVjZWl2
ZWQoKnRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGMtPmRhdGFSZWNlaXZlZCgqdGhpcywg
YnVmZmVyKTsKIH0KIAogc3RhdGljIHZvaWQgaXRlcmF0ZVJlZGlyZWN0cyhDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4mJiBoYW5kbGUsIENhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50JiBjbGllbnQsIFZlY3RvcjxzdGQ6OnBhaXI8UmVzb3VyY2VSZXF1ZXN0LCBSZXNvdXJjZVJl
c3BvbnNlPj4mJiByZWRpcmVjdHNJblJldmVyc2VPcmRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNzAsOSArMTcw
LDkgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNl
Q2xpZW50JiBjKQogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAg
ICAgIG1fZGF0YS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICAgICAg
ICAgICAgICBtX2RhdGEtPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBi
dWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsaWVudCgqY2xpZW50KSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBzZWdtZW50
LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50
LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggYTc4NjVm
OGFkMTc4YWVmYjMyMjBhNTZkY2ZmMTk1OTkzY2Y5NWFlNC4uMzZlNDdhMWRiYTIzMTI4ZGM1MzA3
M2I3MGI1ZjNmODUzODA0YWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKIGNsYXNzIFJlc291cmNlVGltaW5nOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKIGNsYXNz
IENhY2hlZFJhd1Jlc291cmNlIGZpbmFsIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKQEAgLTUy
LDcgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNo
ZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC02Niw4ICs2Nyw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0gICAgc3RkOjpvcHRpb25hbDxT
aGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQgbm90aWZ5Q2xpZW50c0Rh
dGFXYXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFs
RGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIHZvaWQgbm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKICAgICB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKaW5kZXggMjNlYWI4ZGYyOTU4ZmY4YjQ5ZjM1
NDViNTA4M2ZlMjk4OWVmMTIyMC4uY2Q2NTBhMmYzMTM2Y2U5YjI2MmZiZGZjODI5MjhiZjIxMDc5
ZmJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3Mg
UmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENhY2hlZFJhd1Jl
c291cmNlQ2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKQEAg
LTQ2LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRD
YWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgdWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAg
dmlydHVhbCB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDlkZTBhMDRjZDVlYzVmM2ZhZDJmYjE2ZDdi
MzIyYzg1OGEzOGE2YjIuLjdiOWM2MWY5NjYxNzU0NmI2NmJjYzNjNjNlY2EwZTg1N2UyNjJlZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApA
QCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGlj
eSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hl
ZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKK3ZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NF
UlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVm
ZmVyRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCmluZGV4IGM5ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3OTY0NzguLjUzNGUw
MTJjYzRmYTVkZDJiZTFmZDZlZWU1YWE2YWU0ZTVmYWUyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7
IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURl
Y29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291
cmNlOjpTdGF0dXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5oCmluZGV4IDk2ZDg5ODJlOTM1MDM0NzY5NmZjOTY5ZDU4NWFiNzA3NWRlMDIw
ZWQuLmNhMDE5MzRkMzFiYTVkNTA5ZmViZTdkMmY5MTIyNDlkMjcxMjZhYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC00Nyw4ICs0
Nyw3IEBAIHB1YmxpYzoKICAgICB+TGVnYWN5UHJldmlld0xvYWRlcigpOwogCiAgICAgYm9vbCBk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJvb2wgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBi
b29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAg
IGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBkaWRG
aW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCA0ODc1NmEzM2I1ODcy
YjQ0YjJmMGJhMDg0MjQxZjg2Y2ZhZWJjYWEwLi5hMjRiOGM1OWQ0NjBhZmY1ZTJmZWY4MzE5MGMy
MDg2NTcyMzY1ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyLm1tCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBSZWY8TGVnYWN5UHJldmll
d0xvYWRlckNsaWVudD4gbWFrZUNsaWVudChjb25zdCBSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBj
CiAgICAgcmV0dXJuIGVtcHR5Q2xpZW50KCk7CiB9CiAKLWJvb2wgTGVnYWN5UHJldmlld0xvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
Citib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVy
dGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgTGVnYWN5
UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVyIGFwcGVu
ZGluZyBidWZmZXIgd2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKICAgICBtX29yaWdp
bmFsRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICBtX2NvbnZlcnRlci0+dXBkYXRlTWFpblJlc291
cmNlKCk7Ci0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyKTsKKyAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTYyLDggKzE2Miw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRl
ckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zCiAgICAgaWYgKCFtX2hhc1By
b2Nlc3NlZFJlc3BvbnNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGRhdGFDb3B5ID0g
ZGF0YS5jb3B5KCk7Ci0gICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92
ZShkYXRhQ29weSksIGRhdGFDb3B5LT5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIHJl
c291cmNlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKGRhdGEsIGRhdGEuc2l6ZSgpLCBEYXRhUGF5
bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVy
dGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikKQEAgLTI0MywxMSArMjQy
LDYgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVIKICAgICBMT0coTmV0d29yaywgIkxlZ2FjeVBy
ZXZpZXdMb2FkZXIgY3JlYXRlZCB3aXRoIHByZXZpZXcgZmlsZSBuYW1lIFwiJXNcIi4iLCBtX2Nv
bnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWJvb2wgTGVn
YWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBkaWRSZWNlaXZlQnVmZmVyKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkuZ2V0KCkpOwotfQotCiBib29sIExlZ2FjeVByZXZpZXdM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKIHsKICAg
ICByZXR1cm4gIW1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggNjAyNjMxYmI3Y2QxMDg2MGIxYTMxMjEwNDNjOTdkOGVm
ZTQ0NzYxZC4uNjdhYzc3ZTJiZjc2MTA0NWM4YzE4ZDVjN2FkZWM3ZjczMzhhYjcxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2Fk
ZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMjEwLDEzICsyMTEs
MTMgQEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKICAgICBkaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCi12b2lkIEV2ZW50U291
cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9p
ZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGJvb2wpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gT1BFTik7CiAgICAgQVNTRVJUKG1fcmVx
dWVzdEluRmxpZ2h0KTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKCFtX2lzU3VzcGVuZGVkRm9yQmFja0ZvcndhcmRDYWNoZSk7CiAKLSAgICBhcHBlbmQobV9y
ZWNlaXZlQnVmZmVyLCBtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpKTsKKyAgICBhcHBl
bmQobV9yZWNlaXZlQnVmZmVyLCBtX2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKSk7CiAgICAgcGFyc2VFdmVudFN0cmVhbSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50U291cmNlLmgKaW5kZXggZDAxMmQzNzdkMTk3Njc1ZjBmZTExNDVmMTcxOWYxN2ZkZGJmZWEz
Yi4uZDY2MmFlMjgwNmY0YjI0ODY3YjAxNjA4ZTA0ZGJiNGY5N2RiYTA2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhy
ZWFkYWJsZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2
b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkMzk2MTU2ODg0YjRiNzllM2U1NWQ1Njkx
ZDcxOGM4ODc1ZmY5ZmY3Li5iZmU5NTJlODY4NmM1MGZkMjU0YWE1ZTdkNDZmZWYwMTZhZTliODM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEzOCw3ICsx
MzgsNyBAQCBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEo
KQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBpZiAoaGFzT25lU2Vn
bWVudCgpICYmIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21l
bnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCi0gICAgICAgIGNvbWJpbmVkRGF0YSA9
IHN0ZDo6ZXhjaGFuZ2Uoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNl
Z21lbnQtPm1faW1tdXRhYmxlRGF0YSksIFZlY3Rvcjx1aW50OF90PigpKTsKKyAgICAgICAgY29t
YmluZWREYXRhID0gc3RkOjpleGNoYW5nZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGNvbnN0
X2Nhc3Q8RGF0YVNlZ21lbnQmPihtX3NlZ21lbnRzWzBdLnNlZ21lbnQuZ2V0KCkpLm1faW1tdXRh
YmxlRGF0YSksIFZlY3Rvcjx1aW50OF90PigpKTsKICAgICBlbHNlCiAgICAgICAgIGNvbWJpbmVk
RGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKIApAQCAtMjQ4
LDYgKzI0OCwxMyBAQCB2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdAogICAgICAgICBhcHBseShTcGFu
IHsgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpIH0pOwog
fQogCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50QXNTaGFyZWRC
dWZmZXIoY29uc3QgRnVuY3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmKT4mIGFwcGx5KSBj
b25zdAoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH07CisgICAgZm9y
IChhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykKKyAgICAgICAgYXBwbHkoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VnbWVudC5zZWdtZW50LmNvcHlSZWYoKSkpOworfQorCiBib29sIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJl
Zml4KSBjb25zdAogewogICAgIGlmIChwcmVmaXguZW1wdHkoKSkKQEAgLTQxMyw3ICs0MjAsNyBA
QCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpCiAgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsK
IH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21l
bnQpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYg
c2VnbWVudCkKIHsKICAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CiAgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOwpAQCAtNjAxLDcgKzYwOCw3IEBAIHZv
aWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKCkKICAgICAgICAgbV9idWZmZXIg
PSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0
YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBz
aXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkK
K1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8Y29uc3QgRGF0
YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkK
ICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAg
ICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0
aGluU2VnbWVudCkKQEAgLTYxNyw3ICs2MjQsNyBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hh
cmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaQog
CiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3Nl
Z21lbnQ7CisgICAgY29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdt
ZW50OwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlk
ZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9
LAogICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGMyN2M5MjY5ZmZlZjI0OWFiNWU4YWJhMjRk
NzYyZmM0MGMxYzIzMDAuLjM0ODRhNmE1M2I4MDQwNjRiZTU3YTI4M2VmNDE4YThhNjJkNTg5YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xNzgsMTIgKzE3OCwx
MyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNv
bnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21l
bnRBc1NoYXJlZEJ1ZmZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYp
PiYpIGNvbnN0OwogCiAgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVu
dDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3Rv
ckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247Ci0gICAgICAgIFJlZjxEYXRh
U2VnbWVudD4gc2VnbWVudDsKKyAgICAgICAgY29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBz
ZWdtZW50OwogICAgIH07CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0
YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0
ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CkBAIC0y
NTksNyArMjYwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4u
KEFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKCkp
OwogICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKLSAgICAg
ICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikp
CisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPGNvbnN0IERhdGFTZWdt
ZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIGlmIGNvbnN0
ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVf
djxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PEFyZ3M+PiwgRGF0
YVNlZ21lbnQ+ICYmLi4uKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwpAQCAtMjg2LDggKzI5MCwxMCBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAgU2hh
cmVkQnVmZmVyKGNvbnN0IERhdGFTZWdtZW50JiBzZWdtZW50KQorICAgICAgICA6IFNoYXJlZEJ1
ZmZlcihSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IHsgc2VnbWVudCB9KSB7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2Vn
bWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxj
b25zdCBEYXRhU2VnbWVudD4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCk7CkBAIC0zNTksNyArMzY1LDcgQEAgaW5saW5lIFZlY3Rvcjx1
aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAKIGNsYXNzIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRC
dWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNl
Z21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8Y29uc3QgRGF0YVNlZ21l
bnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsK
ICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRp
b25XaXRoaW5TZWdtZW50OyB9CkBAIC0zNzAsNyArMzc2LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlm
CiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNv
bnN0IFJlZjxjb25zdCBEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggODg2OTFkYzI1NmQ2ZGQ2YzQ1ZjQ2ZTAxNTQ5
Njc0MjQ1YWEzNTMzNy4uYzk1OGY4NDRkYWMxNDM5NGUyNGRlZmVhYmE3NTRmOWQ4YTgxMjk5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTUxLDkgKzUxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFT
ZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQg
bG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3Zl
ZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ci4KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYg
cGxhdGZvcm0sIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgZGF0YVJlY2VpdmVk
KHBsYXRmb3JtLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hh
cmVkQnVmZmVyJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVh
bCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZWMwYTdhY2Y0NzMyNjFjNzRlN2VlZmZhZGM5Y2Nj
M2MzZTU3ZjIyOC4uNzcwOGE1OGQyYjU4MDhiOTQwMDJkMjA1ZTk4YTI3YmIyY2U2ZjMyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNw
cApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6cmVz
cG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiwgaW50KQordm9p
ZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIGZ1bGZpbGxSZXF1ZXN0V2l0
aFJlc291cmNlKHJlc291cmNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29y
ZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGNkZjE0M2YzYzNjZGU5NzFmZDc5ZGNmNzMyOGJm
Y2Q3YjMyNjAyZGMuLjYyNjdiZTAwYzU0ZWU2MTcwMmZiNzdiMmE1ZmI1NjdiMjdlYjlmZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaApA
QCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIENhY2hlZFJhd1Jlc291
cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90
KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpp
bmRleCBmOTIxZjNkYTBlNjliMzM5OTc3YzllM2U0OTY2N2EyOGY1ZTk1Y2JkLi43MjY0NzI1Yzhl
NTYyMmRmMzhiNDViY2Q5OWFjNzg3NTViOWViODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC02MSw3ICs2MSw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAgIHZvaWQgcmVzcG9u
c2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAg
ICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENh
Y2hlZFJlc291cmNlJik7CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZU1l
ZGlhTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IE4KICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJj
ZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCB1aW50OF90KiwgaW50KQordm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImKQogewog
ICAgIEFTU0VSVCgmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgaWYgKGF1dG8qIGRhdGEg
PSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQpAQCAtMTU2LDcgKzE1Niw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmlu
YWwgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIGJvb2wgc2hv
dWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGRhdGFTZW50KFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25n
KSBmaW5hbCB7IH0KLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7
CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxlZChlcnJvcik7
IH0KICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxlZChlcnJvcik7IH0KICAgICB2b2lk
IGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbCB7IGxvYWRGaW5pc2hlZCgpOyB9CkBAIC0yMTEsOSArMjExLDkgQEAgdm9p
ZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgbV9wYXJl
bnQubG9hZEZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVy
OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKLSAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX2J1
ZmZlci5hcHBlbmQoYnVmZmVyKTsKICAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRC
dWZmZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcAppbmRleCA5MzAxOTA5OTQ1YjRhMjNkNjY3ODJmMzUwYjU2ZTQ0Nzlm
ODAyNmYyLi5iNGNmMWExMWViNGM3ZjI4NjM3MGRjYzIxZThkNDVmYjlhZjgwNmE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNzEsNyArNzEsNyBA
QCBwcml2YXRlOgogCiAgICAgLy8gUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IHZpcnR1YWwg
bWV0aG9kcy4KICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hvdWxk
Q29udGludWVQb2xpY3lDaGVjayk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAg
LTEwOTMsNyArMTA5Myw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJl
c3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6WWVzKTsKIH0KIAotdm9pZCBDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0
KCkpOwpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0Ns
aWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmEKICAgICAv
LyB0aGF0IGZpcnN0IHBhY2thZ2UgZGVsaXZlcnkgd291bGQgaW5jbHVkZSB0aGUgdGltZSBvZiBz
ZW5kaW5nIG91dCB0aGUgcmVxdWVzdCBhbmQgZ2V0dGluZyB0aGUgZGF0YSBiYWNrLiBTaW5jZSB3
ZSBjYW4ndCBkaXN0aW5ndWlzaCB0aGUKICAgICAvLyBzZW5kaW5nIHRpbWUgZnJvbSB0aGUgcmVj
ZWl2aW5nIHRpbWUsIGl0IGlzIGJldHRlciB0byBpZ25vcmUgaXQuCiAgICAgaWYgKCFzdGQ6Omlz
bmFuKG1lbWJlcnMtPmRvd25sb2FkU3RhcnRUaW1lKSkgewotICAgICAgICBtZW1iZXJzLT50b3Rh
bERvd25sb2FkZWRCeXRlcyArPSBidWZmZXItPnNpemUoKTsKKyAgICAgICAgbWVtYmVycy0+dG90
YWxEb3dubG9hZGVkQnl0ZXMgKz0gYnVmZmVyLnNpemUoKTsKICAgICAgICAgZG91YmxlIHRpbWVT
aW5jZVN0YXJ0ID0gKFdhbGxUaW1lOjpub3coKSAtIG1lbWJlcnMtPmRvd25sb2FkU3RhcnRUaW1l
KS5zZWNvbmRzKCk7CiAgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiUiV1OiBkb3dubG9h
ZGVkICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBieXRlcyBpbiAlZiBzZWNvbmRzID1+ICUxLjBmIGJ5
dGVzL3NlY29uZCIsIG1fcmVxdWVzdE51bWJlciwgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0
ZXMsIHRpbWVTaW5jZVN0YXJ0CiAgICAgICAgICAgICAsIHRpbWVTaW5jZVN0YXJ0ID8gbWVtYmVy
cy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgLyB0aW1lU2luY2VTdGFydCA6IDApOwpAQCAtMTExNSwy
MCArMTExNSwxOSBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYQogICAgICAgICBtZW1iZXJzLT5k
b3dubG9hZFN0YXJ0VGltZSA9IFdhbGxUaW1lOjpub3coKTsKICAgICB9CiAKLSAgICBidWZmZXIt
PmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgIGludCBsZW5ndGgg
PSBzZWdtZW50LnNpemUoKTsKLSAgICAgICAgR1NUX0xPR19PQkpFQ1Qoc3JjLCAiUiV1OiBIYXZl
ICVkIGJ5dGVzIG9mIGRhdGEiLCBtX3JlcXVlc3ROdW1iZXIsIGxlbmd0aCk7CisgICAgaW50IGxl
bmd0aCA9IGJ1ZmZlci5zaXplKCk7CisgICAgR1NUX0xPR19PQkpFQ1Qoc3JjLCAiUiV1OiBIYXZl
ICVkIGJ5dGVzIG9mIGRhdGEiLCBtX3JlcXVlc3ROdW1iZXIsIGxlbmd0aCk7CiAKLSAgICAgICAg
bWVtYmVycy0+cmVhZFBvc2l0aW9uICs9IGxlbmd0aDsKLSAgICAgICAgQVNTRVJUKCFtZW1iZXJz
LT5oYXZlU2l6ZSB8fCBtZW1iZXJzLT5yZWFkUG9zaXRpb24gPD0gbWVtYmVycy0+c2l6ZSk7Cisg
ICAgbWVtYmVycy0+cmVhZFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICBBU1NFUlQoIW1lbWJlcnMt
PmhhdmVTaXplIHx8IG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA8PSBtZW1iZXJzLT5zaXplKTsKIAot
ICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoR1NUX0VMRU1FTlRfQ0FTVChzcmMpLCBn
c3RfbWVzc2FnZV9uZXdfZWxlbWVudChHU1RfT0JKRUNUX0NBU1Qoc3JjKSwKLSAgICAgICAgICAg
IGdzdF9zdHJ1Y3R1cmVfbmV3KCJ3ZWJraXQtbmV0d29yay1zdGF0aXN0aWNzIiwgInJlYWQtcG9z
aXRpb24iLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5yZWFkUG9zaXRpb24sICJzaXplIiwgR19U
WVBFX1VJTlQ2NCwgbWVtYmVycy0+c2l6ZSwgbnVsbHB0cikpKTsKKyAgICBnc3RfZWxlbWVudF9w
b3N0X21lc3NhZ2UoR1NUX0VMRU1FTlRfQ0FTVChzcmMpLCBnc3RfbWVzc2FnZV9uZXdfZWxlbWVu
dChHU1RfT0JKRUNUX0NBU1Qoc3JjKSwKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcoIndlYmtp
dC1uZXR3b3JrLXN0YXRpc3RpY3MiLCAicmVhZC1wb3NpdGlvbiIsIEdfVFlQRV9VSU5UNjQsIG1l
bWJlcnMtPnJlYWRQb3NpdGlvbiwgInNpemUiLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5zaXpl
LCBudWxscHRyKSkpOworCisgICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKKyAgICBH
c3RCdWZmZXIqIGJ1ZmZlciA9IGdzdEJ1ZmZlck5ld1dyYXBwZWRGYXN0KGZhc3RNZW1EdXAoYnVm
ZmVyLmRhdGEoKSwgbGVuZ3RoKSwgbGVuZ3RoKTsKKyAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJl
cnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7CiAKLSAgICAgICAgY2hlY2tVcGRhdGVCbG9ja3Np
emUobGVuZ3RoKTsKLSAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RCdWZmZXJOZXdXcmFw
cGVkRmFzdChmYXN0TWVtRHVwKHNlZ21lbnQuZGF0YSgpLCBsZW5ndGgpLCBsZW5ndGgpOwotICAg
ICAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7Ci0g
ICAgfSk7CiAgICAgc3RvcExvYWRlcklmTmVlZGVkKHNyYywgbWVtYmVycyk7CiAgICAgbWVtYmVy
cy0+cmVzcG9uc2VDb25kaXRpb24ubm90aWZ5T25lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaAppbmRleCA5YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVjMjIxMjY1OGY4YzRmNjhhLi44MDhk
NTYyOGExOWZjOGJmMWRjMzFiOWM0YjExM2UxMzA1ZDE3Nzg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VE
ZWNvZGVyLmgKQEAgLTc2LDkgKzc2LDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbmNvZGVk
RGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMo
KTsKLSAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICBtX2Rh
dGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CisgICAgICAg
IG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERh
dGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAg
ICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVj
b2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpAQCAtMTk0LDcgKzE5Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUsIDE+IG1fZnJh
bWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAgICAgbXV0YWJsZSBM
b2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAK
aW5kZXggYmE4ZmQ0ZmY0ZjFlNDFjOWFkNGZhNzRhNDJiZTRlMmJkMTFhYTg0My4uZGNhYzU5OTdh
NjEzNWQyYWI3NTlhN2FkMmViYjA0MzUyZDUxNGE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM2
LDkgKzM2LDExIEBAIFJlc291cmNlSGFuZGxlQ2xpZW50OjpSZXNvdXJjZUhhbmRsZUNsaWVudCgp
ID0gZGVmYXVsdDsKIAogUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVu
dCgpID0gZGVmYXVsdDsKIAotdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGll
bnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAg
ZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBidWZmZXIuZm9yRWFjaFNl
Z21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNl
aXZlRGF0YShoYW5kbGUsIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIH0pOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmgKaW5kZXggYzRmMDU0ODVmMjg3MGIxMTZkYTdjNzYwZDNjMGZjZTk2ZWMy
YjRhNS4uZTQ0MmM5NzM0YzExOTg0OTBhMWM2Y2FjNTc3MjVmZDUxOTZiM2JiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaApAQCAtNDQsMTMgKzQ0LDE0IEBAIE9CSkNfQ0xBU1MgTlNDYWNoZWRVUkxSZXNwb25zZTsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xh
c3MgQ3JlZGVudGlhbDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBOZXR3
b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUhh
bmRsZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogZW51bSBDYWNoZVN0b3JhZ2VQb2xpY3kgewogICAgIFN0b3JhZ2VB
bGxvd2VkLApAQCAtNjUsOSArNjYsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
U2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQq
LywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhf
dCosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwotICAg
IAorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFNoYXJlZEJ1ZmZlciYsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3
YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDRjMDQyMTBjNWE1MTNhYzNmNTQ3MTQ2ZDlmODVjODJiZDg4MTM3NzYuLjMwYjRiYjBmZGFlZjdh
ZTJjYzc0YWM2MDlmN2IwMDk5N2U1YTZkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCkBAIC03
MSw5ICs3MSw5IEBAIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKIH0KIAotdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGlu
dCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCit2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQogewotICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwg
bGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OwogfQogCiB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50LmgKaW5kZXggNjgzOGU5ZDhjZjQzNzk2ZDJmMzk0YmExZjU0ZjA5ZDBiNjdlOGFiZC4u
YzRjYjcyZGM3YTY1NWZkMzY5NmEzMzNmZTA1Y2RlZDYyOTc2YWZhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGll
bnQuaApAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKKwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWUgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU+IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1
ZXVlKTsgfQpAQCAtNjYsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxl
bmd0aCovKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogI2lmIFVTRShQUk9URUNUSU9O
X1NQQUNFX0FVVEhfQ0FMTEJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXgg
ZmMyNzI1NDA4OTJiOGUyY2Q3N2RlOGY2ZDllNTRhOGM4YjU5N2Y2MS4uMTk4MTRhMzY1YzlmNjYx
YTIxYzIyOWFkYmQwNDYxMWMyMDk0N2U2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5t
bQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJl
c3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAKICAgICAgICAg
ICAgIHNpemVfdCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlciA9IHN0ZDo6bWluKGJ1ZmZlclZp
ZXcuc2l6ZSgpLCByYW5nZS5lbmQgLSBieXRlSW5kZXggKyAxKTsKICAgICAgICAgICAgIGJ5dGVJ
bmRleCArPSBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcjsKLSAgICAgICAgICAgIFt0YXNrIHJl
c291cmNlOm51bGxwdHIgcmVjZWl2ZWREYXRhOlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGJ1ZmZlclZp
ZXcsIGJ5dGVzRnJvbVRoaXNWaWV3VG9EZWxpdmVyKS5jcmVhdGVTaGFyZWRCdWZmZXIoKV07Cisg
ICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpTaGFyZWRCdWZm
ZXJEYXRhVmlldyhidWZmZXJWaWV3LCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcikuY3JlYXRl
U2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpXTsKICAgICAgICAgfQogICAgICAgICBpZiAo
Ynl0ZUluZGV4ID49IHJhbmdlLmVuZCkgewogICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2VGaW5p
c2hlZDpudWxscHRyIG1ldHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CkBAIC0yMzgsNyAr
MjM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZv
aWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgZmluYWwKICAgICB7
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0
b3IpCkBAIC0yNDYsNyArMjQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1f
Z2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFwcGVuZChidWZmZXIpOwogICAgICAgICBt
X2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCmluZGV4IGY5MDk2ZWUyZTlmMjQyZmYwNGQ3
MDVjMmFhMTA5M2E1NWU1NzM1ZGIuLmVhNGE5YmYyOTc4MjllYmQwMjkxNDc2Y2JmOGE3ZTU0OTQ3
MjEyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCkBAIC0xNTgsNyArMTU4LDcgQEAgV0VCQ09S
RV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAo
dm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRl
c1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9p
ZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJily
ZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJP
T0wpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVz
b3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YTsKKy0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZXRh
aW5QdHI8TlNEYXRhPiYmKWRhdGE7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVy
OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVy
cm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbQppbmRleCA1ZTJlOGU4ZDlkNzY2NzJhMjQxNGY3NmY1YzA4ZjI1OWUwMjlmNTA0Li4z
YzhiZTA4YzI5MzRlNTRkYTNiNzQ5Y2E2ZGEzNGVkYTk2ZGM5YjhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tCkBAIC02MDgsNyArNjA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1
bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTY1Miwx
MyArNjUyLDEzIEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91
bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0dXJuIFttX3Rhc2sg
cmVzb3VyY2U6JnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwogfQogCi12
b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAo
IW1fdGFzaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgW21fdGFzayByZXNvdXJjZTomcmVzb3Vy
Y2UgcmVjZWl2ZWREYXRhOldURk1vdmUoYnVmZmVyKV07CisgICAgW21fdGFzayByZXNvdXJjZTom
cmVzb3VyY2UgcmVjZWl2ZWREYXRhOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKV07CiB9CiAKIHZvaWQg
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpyZWRpcmVjdFJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTkzMSwxNSArOTMxLDE0
IEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hv
dWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5KCk7CiB9CiAKLS0g
KHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRE
YXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhCistICh2b2lk
KXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YToo
UmV0YWluUHRyPE5TRGF0YT4mJilkYXRhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwg
IXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBh
ZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0
YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKLSAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3Vu
dE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CisgICAgICAgIHN0cm9uZ1NlbGYuZ2V0
KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gW2RhdGEgbGVuZ3RoXTsKICAgICAgICAgaWQ8TlNV
UkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0
YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlm
IChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpk
YXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKLSAgICAgICAgICAgIFtkYXRhRGVsZWdhdGUgVVJM
U2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uIGRhdGFUYXNr
OihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkUmVjZWl2ZURhdGE6
bnNEYXRhLmdldCgpXTsKKyAgICAgICAgICAgIFtkYXRhRGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNV
UkxTZXNzaW9uICopc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Np
b25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkUmVjZWl2ZURhdGE6ZGF0YS5nZXQoKV07
CiAgICAgfV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAxZjRhMTkz
MTMzMTJjNWRkNmE0OGFkNTMzOWRmZDJjM2I1ZGVjMjU3Li4wZmU2NWEyOWU2MzYxNmRiNDJmN2M5
ZWExZDE4NTIyMWMyMDA0MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0z
MSwxMiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQoKSA9
IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0KaW5kZXggMzE1ZTA2NTE1MzBkY2RiMDI4MDE2NTRiNzU3ZDgxNDczYzIwZmQzMC4uYWU3
MTU1ZWNlZjM1ZDNlMTg4OGQ5MTY1NjQ1N2UzODExNTlkZjQzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpA
QCAtMzAwLDcgKzMwMCw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICop
Y29ubmVjdGlvbiBkaWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YSBsCiAgICAgICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTMKICAgICAg
ICAgLy8gLTEgbWVhbnMgd2UgZG8gbm90IHByb3ZpZGUgYW55IGRhdGEgYWJvdXQgdHJhbnNmZXIg
c2l6ZSB0byBpbnNwZWN0b3Igc28gaXQgd291bGQgdXNlCiAgICAgICAgIC8vIENvbnRlbnQtTGVu
Z3RoIGhlYWRlcnMgb3IgY29udGVudCBzaXplIHRvIHNob3cgdHJhbnNmZXIgc2l6ZS4KLSAgICAg
ICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgLTEpOworICAgICAgICBtX2hhbmRsZS0+Y2xpZW50
KCktPmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdl
dCgpKSwgLTEpOwogICAgIH07CiAKICAgICBbc2VsZiBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6
V1RGTW92ZSh3b3JrKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApp
bmRleCAwOGQwNTdiYmI1ZjE3YzIwNDViZmY5MDZmZjVhZGE4NWYxMDQyOTMwLi5mN2YyNjZjZThk
ODE5MTA2MGM4NTdhMmY4YTZhZDlmZGViZDgxODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKQEAgLTU0Niw4ICs1NDYsOCBAQCBFbmNvZGVkRGF0YVN0YXR1cyBT
VkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIEFTU0VS
VChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8vIERvY3VtZW50TG9hZGVyIHNob3Vs
ZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgpLgogICAgICAgICBsb2FkZXIuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwi
KTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmJlZ2lu
KFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1bWVudAotICAgICAgICBkYXRhKCktPmZv
ckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICBsb2FkZXIuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShzZWdtZW50LmRhdGEoKSwgc2Vn
bWVudC5zaXplKCkpOworICAgICAgICBkYXRhKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZm
ZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVu
dExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGJ1ZmZlcik7CiAgICAgICAgIH0pOwogICAgICAg
ICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuZW5kKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA4
MmEyYThjNGIxOGFjY2U3OThiMjdjMmM4ZDAwOTU4OWZmNzVjYmE4Li40ZThhYjc4MWE0MDYxYWIx
OGM1MDMzNzNiZGEzOGY2YzU1ZDhhMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC0xMTUsMTIgKzExNSwxMiBAQCB2b2lkIFdv
cmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgY29uc3QgUgogICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogfQogCi12
b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAgICAgaWYgKG1f
ZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLmFwcGVuZChkYXRh
LCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV29y
a2VyRm9udExvYWRSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5o
CmluZGV4IGRhYjczZmM3YjFhOTNlZDRlM2ZlYjMxZDY3MDk4ZDk5YjUxNzZhMzkuLjdjYmFhOGU1
NTEwYzhjNGZjYWYyZWI5MmM2ZjczYjNkMmExMmM2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNXb3JrZXJGb250TG9hZFJlcXVlc3QoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCBiZjVhNDRm
ZTM0OGQyZmZjZTkxNmZiMTk0OTE1ZTY3YmZkYTlhZWMxLi5jZDI2ZWNkNmEzN2E3ZWQzOWZmNzFl
ZGRhMzVlOGVmYTkwYjM3YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwKICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNw
b25zZSk7CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVzZVN0ckxlbikKIHsK
ICAgICBpZiAobV9mYWlsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMiwxMyArMjEyLDExIEBA
IHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuKQogICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQiX3MsICJVVEYtOCIpOwogICAgIH0KIAotICAgIGlm
ICghbGVuKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKIAotICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXIt
PmRlY29kZShkYXRhLCBsZW4pKTsKKyAgICBzaXplX3QgbGVuID0gdXNlU3RyTGVuID8gc3RybGVu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5z
aXplKCk7CisgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRh
KCksIGxlbikpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGVhYWJlMWVhNWQxM2IzM2Y5YzNjYzY2
ZGQ0OTU1N2ViNjllMzdlZmMuLjBiYzNhMDI1YjM2NzllMjU2MzA4NjI0ZWVlYmE4OWRjY2M0NWM4
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAt
NzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IoKSBj
b25zdCB7IHJldHVybiBtX2Vycm9yOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYsIGJvb2wgdXNlU3RyTGVuKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmlu
ZGV4IGZiYTM2MzIyYjI5YTZkNWI3OTdiMzllZGMzYzNkMTcxMjRiM2I1YmMuLmNlMzcwOTY4OWQ5
ZjA5MjFlMDkwM2EwMzc3ZGIyNjhhNTQ1MGIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBA
IC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVk
aXJlY3Rpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxG
b3JtRGF0YT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDliMTEyYjlkYjJjZDg0ZDAzMmY1OWRhZmE4
ZThlMzhlMDcwZTUzZjcuLmRjM2FlYThjYWQ5ZDA5NmI0MmJjYTY1YjI2MTIzMmYxMzc0M2QxZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTAzNCw3ICsxMDM0LDcg
QEAgUmVmPFRleHRSZXNvdXJjZURlY29kZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVEZWNvZGVy
KCkgY29uc3QKICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3Bs
YWluIiwgIlVURi04Iik7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pCiB7
CiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNTIsMTcgKzEwNTIsMTYg
QEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbikKICAgICBpZiAodXNlRGVjb2RlciAmJiAhbV9kZWNvZGVyKQogICAgICAgICBt
X2RlY29kZXIgPSBjcmVhdGVEZWNvZGVyKCk7CiAKLSAgICBpZiAoIWxlbikKKyAgICBpZiAoYnVm
ZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGxlbiA9PSAtMSkKLSAg
ICAgICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsK
KyAgICBzaXplX3QgbGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CiAKICAgICBpZiAodXNl
RGVjb2RlcikKLSAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVj
b2RlKGRhdGEsIGxlbikpOworICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNv
ZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8v
IEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBw
ZW5kKGRhdGEsIGxlbik7CisgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChi
dWZmZXIpOwogICAgIH0KIAogICAgIGlmICghbV9lcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaAppbmRleCAyZDEzYmVjMzk0NjQ0OGI5YjRmOTI1ZDMyYmQ4NmJhMmQ4MDM3NzVh
Li42YmYxOWY4MmJkMmZmNzY3MDdkYTQ1NzE0NzUwN2U5OTFkMjQ2NWQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMTYyLDcgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgLy8g
VGhyZWFkYWJsZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9u
ZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgbm90aWZ5SXNEb25lKGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4
IDYxN2Y0NzY4OTU2NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJkZjYuLjdmNTEyYzZjMTFhOGU3
MTA4Y2YwMDYyYjU4NGQyN2I1ODkwOGQxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApAQCAtOTYsMTAgKzk3LDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0
YVNlbnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAg
ICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNl
bnQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpk
YXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVu
dCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7
CisgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEpOwogfQogCiB2b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2U6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IDViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJl
NzE3MThhMTY3Mzc1ZTcuLjk1MTA2ZjY3MjI3M2I0NWYwYTI0YTQ3YTFhMmJkZDE0MDllMGY0Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
TmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Nyw3ICs1OCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxk
Q29udGludWVQb2xpY3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsK
ICAgICB2b2lkIGRhdGFTZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgYWNj
ZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZv
aWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuaAppbmRleCA3MWZkMDIyMjliYmIxYzU3MzI2ZmRmY2ZlMjZjMTFmNzYxYWJjZjcy
Li4wNTRiODkzZTExMTEwZGNmOWE3MDAyNTJmNGY3OTViMDFhNTg3YjlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tV
c2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNr
VXNlckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTU4
NjA5MWVhMDA0MWI2ZjE1ODY5ZDQyYmJkYTcyNDMyOTc2OTBlYy4uYmE4ZDA0OGY2NWRjMzM5ODRm
MGNkNDc2MzVhYjkxMDE4NzliZDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTIw
LDcgKzEyMCw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpCit2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9M
T0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCA1MDVhNGVm
ZTU3MWQ0ODllNTBhOTg4YmViODE4NWI3ZmVhYjNkYjEwLi4wY2IzMTVmZDhmZjUzMTk5MTU3ZGU3
OGY4NDUyZDcxYzRmNWUyOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTM3LDYgKzM3LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdv
dGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5l
Z290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1
aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxv
Y2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmgKaW5kZXggNGI5ZWU1NzRiOTJjN2MzNzE3YTRiYzI4MTlhNmJlM2ExOTA2NTcxNS4u
ZjQ3OWUwOTAyYjIxNzkyOTU1ZDM3NjgxNGIyMWM4OWZmNTVkYjU4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tl
ZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAK
aW5kZXggOGMxMDRkODE2MGI3YWFmZDA5OTcxNWRhNmQ0ZTZmN2M0NjM3ZmEwOC4uNjBiNjlhOTM2
YmI3OGRmMjUxMDc0OWM3NTRmZTZhYTIyOTNmZTAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTI1NCwxMSArMjU0LDEwIEBAIHZvaWQgTmV0
d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdU
Rk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0
aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgotICAg
IGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwotICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2Vp
dmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBzaXplKTsKKyAgICBtX2NsaWVudC5nZXQoKS5kaWRS
ZWNlaXZlQnVmZmVyKGJ1ZmZlciwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xv
YWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBlNmE3NjExNTk2MmI5
NjU5ZTdiZmU3OGM2ZjRkYzZmNTMxMmIzY2JlLi4wZTRjMWFlNDkyM2MzMzdmNWNmOWIwYTQwOGI1
YTg4MjI5ZjU5NjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBO
ZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50
LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2Fz
QmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENsaWVudC5oCmluZGV4IDM0OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1
NGQzOWUuLjhhMjg1ODI2MTEzZjlkOGVlNjYwZGI2ODhiM2M1MzkzZmY5N2IyZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGly
ZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Up
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM2YWNjNjMxNDVmNDA1YjE5NTVkMzM1
NDBkYWE3MDhmOWE2MjkzNDEuLmU2ZmQyYWM3MGVjN2UwZTc1OTBhZGUyNzJlMTQyN2ZjZTk2ZGRl
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg2MywyOSArODYzLDI5IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5n
Q29udGV4CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1Jl
Y2VpdmVkKQotICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVCdWZmZXI6IFN0
YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGJ1ZmZl
ci0+c2l6ZSgpOworICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBT
dGFydGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZm
ZXIuc2l6ZSgpOwogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAog
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVt
b3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVu
dHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwotICAgICAgICBpZiAobV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZm
ZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVy
LmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVm
ZmVyLnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9z
c09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVh
c3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhh
bmRsZS4KLSAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUo
KTsKKyAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXIuc2l6ZSgpOwog
CiAgICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLmFwcGVu
ZChidWZmZXIuZ2V0KCkpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVyKTsK
ICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxl
bmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTEyNzMsNyArMTI3Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpi
dWZmZXJpbmdUaW1lckZpcmVkKCkKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3Ro
ID0gMDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQo
IWlzU3luY2hyb25vdXMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGNmMTBjZjBlNzFhMWJjNjU1NDBlODdk
NmJhNGMxYjljODU2YzBhMWQuLjgxN2FlZjI2YzgzNmMzNGE3ZDQ0ZWU3Y2M5NWVkZDlhMjk4ZDZh
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0Fs
bG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRC
bG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0xOTMsNyArMTkzLDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAg
dm9pZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAg
IHZvaWQgc2VuZEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
c2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKIAogICAgIHZvaWQgY29uc3VtZVNhbmRib3hFeHRl
bnNpb25zKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU2FuZGJveEV4dGVuc2lvbnMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggYmMyYzMzN2U0ZWVlMDFh
ZjgzZTEzNjcyMzE3YTlhOWVhYmM3YzZmOC4uZjBlZmQwNGJiMmUxOGY2ZjNjYmMxNjNmYWYyM2Rh
MDQ2NmJlZTU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAK
QEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlz
aCh7IH0sIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2Vp
dmVEYXRhIik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggZTc4MDhkOGU2NTU4MmY3OTM4ODgyOGQ1MTc1OGNiMTkz
Y2Y1NWZjNy4uYjIyNWM0N2I5NGFmYTBiNDRlZGMyNjcwZGZjNThhZDdhZmM5MTQxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAg
dm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRT
ZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVj
dGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggMTdkNDc5
MDdhM2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3NTFkNmIwYi4uYWFhZTJiZmJkZjgzYTM5YWNlYzA2
M2ZlYjI0NDYxNmRjODQ4ZWRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFz
azo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9u
c2VDb20KICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAK
LXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25u
ZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgK
aW5kZXggODU4MDhlMTIxYjY4Y2E4YjczZTI1MThkMTkzYWIzOTU4MWVhZDFlNy4uOGM2YjBkZWVk
NjZjNTEwMTliZTg5ODRlZDViODdlMGMxZDc5MGY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7
CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5j
cHAKaW5kZXggMjVkNGUzN2Y5NDU0YmVlMzJmMDRkOGNjOGM0NzFkNWQzZjdlZDgyYi4uOGM4ZGMz
NmIxZTUzOTM4ZjgxZWI0YWJhYWZmMDE5MGYyYjU0ZWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJX
ZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCkBAIC0x
NzMsNyArMTc0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpzdGFydCgpCiAg
ICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9j
YXRpb24pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxl
bmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9h
ZFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKaW5kZXggYWI1OWVhZTUyNjY1MzA2MjEyYTI4ZTkzMjNh
MmI4YjRmZmUwYzc4Zi4uYjg5YWIzZWJkNzYyZjY4MTJhNWU5N2JmZjY5MGJhOTBmMDI1N2ZjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oCkBAIC0zNyw2ICsz
Nyw3IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFz
cyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY2LDcgKzY3
LDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrKE5ldHdvcmtTZXNz
aW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgRG93bmxvYWRJRCk7CiAKICAgICAvLyBJUEMgTWVzc2Fn
ZQotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50
NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2
b2lkIGRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7CiAg
ICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2subWVzc2FnZXMuaW4KaW5kZXggMWQzYmZiN2NjMzEwOTc5OWNjODAwMWJiYTcxZDg5YzBmNmYy
ZDkyZi4uNTBkMmI0MmE3MWIwZWRhYjc5ZmJjZTlkZGI5ZjE5OTgyZGI1MzU5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4K
QEAgLTI0LDcgKzI0LDcgQEAKIAogbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckRvd25sb2FkVGFz
ayBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJy
b3IpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRh
dGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpT
aGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlk
UmVjZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5p
c2goKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDRl
NzkxOWIzZGRjMDJhZTE0ZDBlZDk2ODRiOGM2OGJiNmYyOGE0MzQuLjFiNzM5YmYxOTg0MGIwZjU4
YzA4MWM2ZTk4ZjhjY2UxNmEzNGE4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgpA
QCAtMjI1LDEzICsyMjUsMTMgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpwcm9jZXNz
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBib29sIG4KICAgICAgICAgbV9s
b2FkZXIuc2V0UmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpOwogfQogCi12b2lkIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNo
VGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBp
bnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2lzRG9uZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX3RpbWVvdXRUaW1lciB8fCAhbV90aW1lb3V0VGltZXIt
PmlzQWN0aXZlKCkpOwotICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhIHsgZGF0YSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CisgICAgLy8g
c2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEg
eyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYg
Zm9ybURhdGEpCkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Ojpsb2FkQm9keUZyb21QcmVsb2FkZXIoKQogICAgICAgICAgICAgZGlkRmluaXNoV2l0aE1ldHJp
Y3MobV9wcmVsb2FkZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBkaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2Ug
eyBjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpIH0sIGxlbmd0aCk7CisgICAgICAgIGRpZFJl
Y2VpdmVEYXRhKFJlZiB7IGNvbnN0X2Nhc3Q8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciY+KCpjaHVuaykgfSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmgKaW5kZXggYzM0NTgwMjY3ZmIzMjY5ZTZkY2JkY2VmYzM0ZDA2ODJj
NmEwODg2Yy4uNTIyNWU1NDU5OTk1MWQ4ZjgxYzcwYWY4MmViYmEyNjg5ZTM1MDA2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVz
cGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3Jt
RGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTkzLDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFNob3Vs
ZFNldFNvdXJjZSA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJl
Y3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgYm9vbCBuZWVkc0NvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZv
aWQgZGlkRmluaXNoV2l0aE1ldHJpY3MoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2Vz
LmluCmluZGV4IDE4ZTYyOWYwZDE0NmVkMmQ0MjlkYjFiYTI4NzAxZTgzZmI5NmU2MmYuLjdkYjUz
ZTliZDAzODA0NTQ3M2EyNWFmMzdkNDdjMTk1Nzk1ZTIzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3IEBA
IG1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgTm90UmVmQ291bnRlZCB7CiAgICAg
RGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAgRGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wg
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2ZURh
dGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2goKQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggNWQ5
YmQzMzMzOTIxMWNhMWNkNDQ3Yjg3OTJmNTQ2MWVhODdlZGRmNC4uZTU2NTRjYzMxMzliNDlkNjFh
OTg1MTNjZDAxNmJlY2Y3MzliYmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
Cit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlD
YWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpOworICAgICAgICBtX2JvZHlDYWxsYmFjayhSZWZQdHIgeyAmYnVmZmVyIH0sIHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29y
a0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaAppbmRleCA2N2FiYzU1YzYwZmYyNGUzOWRkMDRlY2M1MDIxYjYwNWVlOGJl
YmIxLi42ZWRiNTYxOGRjYzQ3YTYxYWQwNzUyMzc4NTQ5OWZlZGUwODQ3YzIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rp
b248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYp
OwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1
c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxjb25zdCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+
OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CkBA
IC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JD
cmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZp
bmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
CmluZGV4IDdhMjYyMjE5ZGU3OGIyMzVkMTI1YTkyYjZlMjM2ZDMzMjYyZjdhMjcuLmQ5ZDc0NzUy
NTMyZjE4OWViMWJlMmMwM2Q3ZTI5ZTg1OWU4OTZlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJl
c291cmNlRXJyb3IgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnByb2Nlc3NSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9p
ZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlmICghbV9y
ZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKQEAgLTE4Niw4ICsxODYsMTEgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0Il9zLCAiVVRGLTgiKTsKICAgICB9CiAKLSAgICBp
ZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZCht
X2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkp
OworICAgIGlmICghYnVmZmVyLmlzRW1wdHkoKSkgeworICAgICAgICBidWZmZXIuZm9yRWFjaFNl
Z21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZCht
X2RlY29kZXItPmRlY29kZShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKKyAgICAg
ICAgfSk7CisgICAgfQogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDQ0ZmMw
Njg1ZmEwZmVkYzg3NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEuLjdlODE4ZjM0MTNkYTI5Zjg2MWUx
MDAzOTkxZThkNTM4OTIzNDZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAKaW5kZXggNDFkODIzNTAyNDc0N2I2ZmM0YTNhYzU0OGUxMzM0ZWQ2Y2I1
ZWY3YS4uODE0ZWIzMjBkNGU3NDhhMjlhZTA5MTM1YWZjMWRhNWYzNzUxNWVmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBT
cGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVj
ZWl2ZWRSZXNwb25zZSwgUmUKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVz
ZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIAogICAgIGlmIChtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBj
YXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hl
QnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNp
emUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0
KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXIu
c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmgKaW5kZXggMWI4NDNkYjdlYzI3MGRiOWRhYjllOGEyNWYyYTQ4YThlY2FlMmE4
YS4uOWFkY2E2MDVlNzI4MGJiN2IzNGNlNzQ0ZDg3ODhiYmI0NDg5MjRlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLmgKaW5kZXggNDE2NjhhNWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVj
YTkwN2VkYy4uMDc3MmFmMWE4NmQyMjQxN2JmMTFmMTZiZDZiN2I1ODBmZTU3YTdhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TTXV0YWJsZVVSTFJl
cXVlc3Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYyLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFVSTCYp
OwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExl
Z2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9p
ZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYp
OwogICAgIHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNDc3MWZkZTkyMGQ2Yjk4ZTgzZmMyOWRkM2FhZjk3
YTBhNmQ5YTg4MC4uNjQ5YjVjYTc4YzY4NzVlY2RlMGQzZDQzNmY5NTkwZGI1MTc5ZDBiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tCkBAIC00NDMsMTIgKzQ0MywxMiBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5l
dHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2
b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwg
IkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7CisgICAgV1RG
RW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRl
cyIsIGRhdGEuc2l6ZSgpKTsKIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSkpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0
ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggMTdmMDhjMjhlYTEyNWI1NTA5OTNlZWQyNGQ1
OTYzYjg1MTBhMTE0MS4uODczMDNjOGQxMWZmY2EzZjU2ZmZkMTZhMWY4ZThmODMwZWYyZGMwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAt
MjgsNiArMjgsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgSVBDIHsK
QEAgLTUzLDYgKzU0LDggQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQog
CisgICAgLy8gVE9ETyA6IFNoYXJlZEJ1ZmZlckNvcHkgc2hvdWxkIGNvbnRhaW4gYSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyIGFuZCB0aG9zZSBzaG91bGQgZ28gYXdheS4KKyAgICAvLyBBbGxvd3Mg
dG8gbm90IHVuZWNlc3NhcmlseSBmbGF0dGVuIHRoZSBTaGFyZWRCdWZmZXIgYmVmb3JlIHNlbmRp
bmcgaXQgb3ZlciBJUEMuCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KICAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0Vt
cHR5KCkgOiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVk
aWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCA5Y2Rl
ZDk2OTM1MTVjYmRiOTI1ZjU5NTRhMTZmNGJhZjA2N2EzMTYyLi42YzE5YmM5YmFiNjQxMDMzMzAw
NzNiNDFjNWFlMWQ4ZWQwMWMzYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAK
QEAgLTE4NSw5ICsxODUsOSBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNr
cyhTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgogICAgIEFTU0VSVCgh
aXNNYWluUnVuTG9vcCgpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3BhcnNlVHJhY2tzTG9j
ayB9OwotICAgIEFTU0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1cyk7Ci0gICAgQVNTRVJUKG1fZHVy
YXRpb24uaXNJbnZhbGlkKCkpOwotICAgIEFTU0VSVChtX3RyYWNrUmVhZGVycy5pc0VtcHR5KCkp
OworICAgIEFTU0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1cyB8fCAobV9pbml0ICYmIGVycm9yQ29k
ZSkpOworICAgIEFTU0VSVChtX2R1cmF0aW9uLmlzSW52YWxpZCgpIHx8IChtX2luaXQgJiYgZXJy
b3JDb2RlKSk7CisgICAgQVNTRVJUKG1fdHJhY2tSZWFkZXJzLmlzRW1wdHkoKSB8fCAobV9pbml0
ICYmIGVycm9yQ29kZSkpOwogCiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElG
SUVSKTsKICAgICBpZiAoZXJyb3JDb2RlKQpAQCAtMjIxLDYgKzIyMSw3IEBAIHZvaWQgTWVkaWFG
b3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6Oklu
aXRpYWxpemF0aW9uCiAgICAgfQogCiAgICAgbV9wYXJzZVRyYWNrc0NvbmRpdGlvbi5ub3RpZnlB
bGwoKTsKKyAgICBtX2luaXQgPSB0cnVlOwogfQogCiB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpk
aWRQcm92aWRlTWVkaWFEYXRhKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0
X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKaW5k
ZXggMzdlNGFkNDI3NmIxMmFkNTE0M2RjMjI4Y2RlOTQ3NjM4N2U1Yzg4OC4uNjUwOTNlOWU0NmI0
MGI1YTM5NzZmZGVmMjllNjEzYzY0NTFmMzE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVy
LmgKQEAgLTg3LDYgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmPE1lZGlhVHJhY2tS
ZWFkZXI+PiBtX3RyYWNrUmVhZGVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fcGFyc2VUcmFja3NM
b2NrKTsKICAgICBSZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lk
KiBtX2xvZ0lkZW50aWZpZXI7CisgICAgYm9vbCBtX2luaXQgeyBmYWxzZSB9OwogfTsKIAogY29u
c3RleHByIE1lZGlhRm9ybWF0UmVhZGVyOjpXcmFwcGVyQ2xhc3MgTWVkaWFGb3JtYXRSZWFkZXI6
OndyYXBwZXJDbGFzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suY3BwCmluZGV4IGUxMjY0Y2UyMWJhNTdmMmE0Mjc0OGUzM2ExZGFkODhhMGUyNThiYzIuLmQ3
NjdmYzA2YjM2ZjE1NmZmMzFjMzgzZTY0M2Q0MzQ0YzIxN2FhYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgYXV0
byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0K
IAotYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKK2F1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIC0+IEV4Y2Vw
dGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xODcsMTEg
KzE4NywxMSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRQogICAgIG1fZGF0YVNlbnQgPSB0cnVl
OwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAg
IHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1fdXJsU2No
ZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGJ1ZmZlci5nZXQo
KSksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZp
ZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIpLCBtX3dlYlBhZ2VJRCk7CiAgICAgcmV0
dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaAppbmRleCBmNmZmNDZlZWE1ZjI5MGI3YjdlM2ZlNTkyMWRmOWYxOTRi
YWNkMTE3Li5jMzIzMDY5YjFjYzAzMWYwMjViMjJjODU5YTM1NDE4OGZkZDIzNzI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC04Myw3ICs4Myw3IEBA
IHB1YmxpYzoKICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0
aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25U
eXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9u
VHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
UHJveHkuY3BwCmluZGV4IGI1MTNhMjY4MDhlYWExOGUzN2Y0ZmRmMDRhMjNkMjk2MGIyNzNiMmMu
LjkyMzRiNWM2NTNmOTFlYmE5MTBmYmRmOWJlMWUyMmEwMmMxMWM2NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VQcm94eS5jcHAKQEAgLTcyLDIwICs3MiwxNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVz
b3VyY2VQcm94eTo6ZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5z
aWduZQogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXI6OkRhdGFTZW50KG1faWQsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KSwg
MCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7Ci0gICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRl
KGxlbmd0aCk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZm
ZXIoYnVmZmVyKTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBzaGFyZWRNZW1vcnlQdHIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc2hhcmVkTWVtb3J5
LT5kYXRhKCkpOwotICAgIG1lbWNweShzaGFyZWRNZW1vcnlQdHIsIGRhdGEsIGxlbmd0aCk7Ci0K
ICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgc2hhcmVkTWVtb3J5LT5jcmVh
dGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAg
ICAvLyBUYWtlIG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFuZCBtYXJrIGl0IGFzIG1lZGlh
LXJlbGF0ZWQgbWVtb3J5LgogICAgIGhhbmRsZS50YWtlT3duZXJzaGlwT2ZNZW1vcnkoTWVtb3J5
TGVkZ2VyOjpNZWRpYSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoKSB9
KSwgMCk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsg
V1RGTW92ZShoYW5kbGUpLCBidWZmZXIuc2l6ZSgpIH0pLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVN
ZWRpYVJlc291cmNlUHJveHk6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCmluZGV4IDQ3ZWE4NjY3MWIxM2QxMzk1YzNkYWQ5YmRh
NzlhYmY2MTZjYmExNzkuLjk0OTQ2NDUyMmMyNjNlNmE1ZTgwNzNmNzRlOWQyNDM0YmFhOTM5MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFs
OwogICAgIHZvaWQgZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5z
aWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgZGF0
YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3Qq
LCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZv
aWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGxvYWRG
YWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDMxMGZjYTc4NzVjMzJjM2NkNzQ3OGRiNjRmNTlhYzJjZjUw
MTYzOTIuLmVjMjU5M2IwM2U2MzYyYTcyYTQzNDdkNDNkZjZjNTdkNTU4Nzg1NjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9h
ZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVk
ZSAiV2ViRnJhbWUuaCIKQEAgLTE4OSwxNiArMTkwLDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Ym9vCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdURk1v
dmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5j
b2RlZERhdGFMZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZvciAnJXMnIiwgZGF0YS5z
aXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5l
dHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQg
dGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVy
LmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkpOwotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5p
ZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRhdGEuYnVm
ZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1f
Y29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgICAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAg
ICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjA3LDcgKzIwNyw4IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0Vf
TE9HKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSIpOwogICAgIG1fbnVt
Qnl0ZXNSZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIAotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVj
ZWl2ZURhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRCeXRlcyk7CisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpID8gUmVmIHsg
KmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9jb3JlTG9h
ZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZEJ5dGVzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VM
b2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtMjk1
LDcgKzI5Niw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShj
b25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5ldHdvcmssICIo
V2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVz
JyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBX
RUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiIpOwogCi0g
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5k
bGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3Vy
Y2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7CkBAIC0zMTIsNyArMzEzLDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUmIGhhbmQKIAogICAgIC8vIE9ubHkgc2VuZCBkYXRhIHRvIHRoZSBk
aWRSZWNlaXZlRGF0YSBjYWxsYmFjayBpZiBpdCBleGlzdHMuCiAgICAgaWYgKHVuc2lnbmVkIGJ1
ZmZlclNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNl
aXZlQnVmZmVyKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRhUGF5bG9h
ZFdob2xlUmVzb3VyY2UpOworICAgICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3Vy
Y2UpOwogCiAgICAgaWYgKCFtX2NvcmVMb2FkZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmlu
ZGV4IGEyMmU2MmYyOGI1ZmE0Y2ZjOTFhYTVlNWNlODJjYTI3YWUyNmFkNTMuLmFjNTQyMmZjMDY3
MTBiZDBlMDg3ZTBmNDQwOWVkOTQwMTdjMGNmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBA
QAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hh
cmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODAsNyArODEsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1Nl
bnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGlu
dDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3VyY2VMb2Fk
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkRmFpbFJl
c291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRG
YWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5tZXNzYWdlcy5pbgppbmRleCAwMmExNGY1OWEzMDQ3NDRjMmQxODNlYTc5ZTk5
ZWJhZWI0Y2ZiYmEyLi5kYWEyNGQyN2M3MWE4M2NmN2MwZjE2OGRhMjZhNDliNDg3NjkyNjBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQCBtZXNzYWdlcyAt
PiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgV2lsbFNlbmRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
IHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2Up
CiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
VG9CZVNlbnQpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Up
Ci0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmlu
aXNoUmVzb3VyY2VMb2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1l
dHJpY3MpCiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yKQogICAgIERpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5oCmluZGV4IDhkMmM1ZjNlMjVjYTFhMjM3OGU1ZTMwMDVkNzU0OTJiZWFmMGIxZWEuLjJi
N2U0ZDJjMjBmZGQxOTk4ODI3MmRhOGJmY2M1YTYxODZjNmQzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTY1LDYgKzY1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVsZW1l
bnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNw
YWNlIFdURiB7CkBAIC0xNzYsMTEgKzE3NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZh
bHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQp
IGZpbmFsOwogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNw
b25zZVN0YXR1cykgZmluYWwgeyB9CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KSBmaW5hbDsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBzdHJl
YW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90
IHN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFt
SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5n
dGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgbWFudWFsU3RyZWFt
RGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAg
dm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBtYW51
YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICBib29sIGhhbmRs
ZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIGZpbmFsOwpAQCAtMzYyLDcgKzM2Myw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGI0ZWIxNGZmNTdkOTI1YmY3MGQ4YTVh
ZGQwZWI1N2E3MDkxMzg1ZWIuLmEzMDAxZDJlYWNlNjZjZDAzNzhlYjNjNDJjMDQ0NjgwMGQwZTE4
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQpAQCAtOTQsNiArOTQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxBbmltYXRv
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2hlZWxFdmVudFRlc3RNb25pdG9yLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgpAQCAtMTE5MSw3ICsxMTkyLDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBs
dWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0lu
U3QKICAgICB9CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBjb3VudCkKK3ZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5T
dHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fcGRm
UGx1Z2luKQogICAgICAgICByZXR1cm47CkBAIC0xMjAwLDcgKzEyMDEsNyBAQCB2b2lkIFBERlBs
dWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2Fw
ZVBsdWdJblN0cmVhbQogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cmVxdWVzdC0+YWRkRGF0YShkYXRhLCBjb3VudCk7CisgICAgcmVxdWVzdC0+YWRkRGF0YShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3Ry
ZWFtTG9hZGVyQ2xpZW50OjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQpAQCAtMTcxOCwxNSArMTcxOSwxNSBAQCB2b2lkIFBE
RlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBVUkwmLCB1aW50MzJfdAogICAgICAgICBtX2lzUG9zdFNjcmlwdCA9IHRydWU7CiB9CiAKLXZv
aWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlk
UmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtSUQsIHN0cmVhbUlEID09IHBkZkRvY3VtZW50
UmVxdWVzdElEKTsKIAogICAgIGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9wdENG
KENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCi0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMobV9k
YXRhLmdldCgpLCBieXRlcywgbGVuZ3RoKTsKLSAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gbGVuZ3Ro
OworICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1ZmZlci5zaXplKCk7CiB9CiAK
IHZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlE
KQpAQCAtMTc2MywxNCArMTc2NCwxNCBAQCB2b2lkIFBERlBsdWdpbjo6ZW5zdXJlRGF0YUJ1ZmZl
ckxlbmd0aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAgICAgIENGRGF0YUluY3JlYXNlTGVu
Z3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVudExlbmd0aCk7CiB9CiAKLXZv
aWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBi
eXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAg
ICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAg
IGVuc3VyZURhdGFCdWZmZXJMZW5ndGgobV9zdHJlYW1lZEJ5dGVzICsgbGVuZ3RoKTsKLSAgICBt
ZW1jcHkoQ0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdldCgpKSArIG1fc3RyZWFtZWRC
eXRlcywgYnl0ZXMsIGxlbmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKKyAg
ICBlbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyArIGJ1ZmZlci5zaXplKCkp
OworICAgIG1lbWNweShDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihtX2RhdGEuZ2V0KCkpICsgbV9z
dHJlYW1lZEJ5dGVzLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX3N0cmVh
bWVkQnl0ZXMgKz0gYnVmZmVyLnNpemUoKTsKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQ
SVMpCiAgICAgLy8gS2VlcCBvdXIgcmFuZ2VzLWxvb2t1cC10YWJsZSBjb21wYWN0IGJ5IGNvbnRp
bnVvdXNseSB1cGRhdGluZyBpdHMgZmlyc3QgcmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggMWQ4NDQ4MDVmNGMxMGU5M2ZlZGNhYmRlZWMyMWRkMzVk
ZGY4ODIwMi4uZTRkNjJmNGJlYTliZmMyZmE4MGVmNGQ2ZTkwYzVjY2YwNjc5NGY2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTU0LDEyICs1NCwxMyBA
QCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmxvYXRQb2lu
dDsKIGNsYXNzIEZsb2F0U2l6ZTsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFz
cyBJbnRTaXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjAs
NyArMTYxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9
IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGRpZCByZWNlaXZl
IGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0
cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhh
dCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
RGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgPSAwOwpAQCAtMTczLDcgKzE3NCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAw
OwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQg
cmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyBmaW5p
c2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2Fk
aW5nKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAppbmRleCA1MzRkYTUyZDQ3ZDYyODUwZTIwNWZmOWU5OWMzMGIzN2QzYmNiYTEyLi4w
MzQ0ZjRiZTIzYTQzNzY3MTk3Nzg5OTk3ZDc2MzdhMjAzMWI3ZWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI3LDcgKzEyNyw3
IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQKICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3Zl
cnJpZGU7CiAKQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUgogICAg
IG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShtX3N0cmVh
bUlELCByZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9u
c2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9
CiAKLXZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQ
bHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9wbHVnaW5WaWV3LT5t
X3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnl0ZXMsIGxlbmd0aCk7
CisgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJl
YW1JRCwgYnVmZmVyKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZEZhaWwoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgCkBA
IC0zNzQsNyArMzc0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIG1fcGx1Z2luLT5t
YW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwg
bGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNl
LnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWRE
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1
Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVk
IHRvIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX3BsdWdpbikKQEAgLTM4MiwxMSArMzgyLDExIEBA
IHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAg
ICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1Jl
Y2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ5dGVz
LCBsZW5ndGgpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ1ZmZlcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZURhdGEoYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZp
bmlzaExvYWRpbmcoKQpAQCAtMTE3MSw5ICsxMTcxLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRl
bGl2ZXJNYW51YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBpZiAo
bV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJl
YW1EYXRhLnRha2UoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVy
LmdldCgpKQotICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2Vn
bWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7CisgICAgICAgIG1fbWFudWFs
U3RyZWFtRGF0YS50YWtlKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8m
JiBidWZmZXIpIHsKKyAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShidWZmZXIp
OworICAgICAgICB9KTsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBN
YW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggZjY2MzEyYTgwYWNkMWUwMzUzMTBkZmFhM2E1ZjNh
MTdiNzJhYWU1NS4uMjU2MTVjYjMwZjIyNjQ2MzkyNDQ0ODhmMmJkN2M0MTIyNzkwNzliOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNzMs
NyArNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVkKCkgY29uc3QgeyBy
ZXR1cm4gIW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCk7IH0KIAogICAg
IHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVE
YXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWFudWFsTG9hZERp
ZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmNwcAppbmRleCBlZTQwZmI5NTg1ZTc5ZDg2YjNjZmQyZjU3OWVkNDZlNjFiOWVjNjNlLi4zMTQ4
MmViM2IzNjhkNzhhNjFhN2VjMWQyNGM1OTgxMGJjOTFlZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCi12b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTgwLDE0ICs4MCwx
NCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRh
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKICAgICAgICAg
ICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOwotICAgICAgICBzdGQ6
OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9u
c2VEYXRhKS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlm
IChtX2lzRG93bmxvYWQpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIuZ2V0KCksIHN0
YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7
CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25s
b2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1
ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVj
ZWl2ZURhdGEgeyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6
ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIs
IHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVy
KTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
Rm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1EYXRhKQpAQCAtMTM2LDE1ICsx
MzYsMTUgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
Rm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICB9KTsKIH0KIAotdm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9p
c0Rvd25sb2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBkYXRhLCBzaXplIH0sIHN0YXRp
Y19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRS
ZWNlaXZlRGF0YSB7IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkg
fSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsg
ZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRp
Zmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIgLCBzdGF0aWNfY2FzdDxpbnQ2NF90
PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNoQmxvYkxvYWRpbmcoKQpAQCAtMjI4
LDcgKzIyOCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAg
ICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRl
ciYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOworICAg
ICAgICBkaWRSZWNlaXZlRGF0YShidWZmZXIuY29weSgpLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwg
W3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmgKaW5kZXggZTk4N2UxOWFjOGI3Mzg4NzFhYWQ4MmI0YjM4NTYyOTY4YTJiNmM5
Yy4uNzcyYWVlNmY5N2EwOWEwNjZhYzExMDJkNGNkZTI3MDE1MmJjZDgxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBjbGVhbnVwKCk7CiAgICAgCi0gICAgdm9pZCBkaWRSZWNlaXZlQmxvYkNo
dW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CisgICAgdm9pZCBkaWRSZWNlaXZlQmxv
YkNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkRmluaXNoQmxvYkxvYWRp
bmcoKTsKIAogICAgIHN0cnVjdCBCbG9iTG9hZGVyIGZpbmFsIDogV2ViQ29yZTo6RmV0Y2hMb2Fk
ZXJDbGllbnQgewpAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNo
TG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgY2xpZW50
LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKSBmaW5hbCB7IGNsaWVudC0+ZGlkUmVj
ZWl2ZUJsb2JDaHVuayhkYXRhKTsgfQogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgY2xpZW50LT5kaWRGYWlsKGVycm9yKTsg
fQogICAgICAgICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5hbCB7IGNsaWVudC0+ZGlkRmluaXNoQmxv
YkxvYWRpbmcoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxNGEw
ODNjYTIwN2E5MDYzY2Y4MGIxZTdlOTY3MGE0ODdjZjRkMzk5Li5lZDRmNWRlOWQ1ZTU2MThkNDMy
NDU1MDgyZjVkYTE4OGFiZjliZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTExNTIsMTAgKzExNTIsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVw
bGFjZU11bHRpcGFydENvbnRlbnQoKQogICAgIHdlYlBhZ2UtPmRpZFJlcGxhY2VNdWx0aXBhcnRD
b250ZW50KG1fZnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0
ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW5ndGgpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1f
cGx1Z2luVmlldykKLSAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7Cisg
ICAgICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhKTsKIAogICAgIC8vIElmIHRoZSBkb2N1bWVu
dCBpcyBhIHN0YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUg
dG8gY2FuY2VsIHRoZSBXZWJLaXQgbG9hZC4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3Vs
ZCBiZSBzaGFyZWQgYWNyb3NzIGFsbCBwb3J0cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+
LgpAQCAtMTE3Nyw3ICsxMTc3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0
dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KgogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldyA9IHRydWU7
CiAgICAgfQotICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGRhdGEs
IGxlbmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZGF0
YSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1
bWVudExvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiYjUy
OWQzYWVjNGUyYzc1ZjFhN2RlOTFiMTBiNTU4MmQ0NTIyYjQyLi4xZDMwYmMzOTM4M2FmZmYyY2E5
YzI4NzUzZGQyZDdlYzJiMjY0OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
MTUyLDcgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENv
bnRlbnQoKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmlu
YWw7CiAKLSAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBj
b25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsK
ICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIGZpbmFs
OwogICAgIAogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggYTIwNWUwMDFjYTcxNTgyMDkx
M2E4MWFlNGE4MzY1MzBmOWEwZjY0OC4uNzJlMzU1NGM4ZTBhYTY5MGE2ZWM1NzgwMTc2ZjE5ZTBi
OGQ3MGQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJD
bGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAKIFdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIHdlYlBhZ2Ug
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFnZUlEKTsKICAgICBpZiAoIXdl
YlBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDBkYzE2
N2U1YjdiYzNiMDNlZjM5MzFlYWIzNTZjNzgyNzkyOTUyOWUuLjY0OWJjODMxOWMyNzg2ZjAxZDYx
N2MxMTE5OWRiMGM2YzA3N2ZhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJQcmV2
aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRp
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbCgp
IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCA5NDJlZGM2MjNhNGU2NTNiYjE4OGFlZTA1MDY0NGEzZjRhMDMyZTg5
Li5mODlmZjcyYTBkMzFiZWMxMWVmODAyOTdlZmJhOTJjMmE3YmM2NmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzA1NywxMiArNzA1Nywx
MiBAQCB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJM
U2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZAogICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZl
UmVzcG9uc2UodGFza0lkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1
cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIg
aGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNr
SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdl
Ojp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZp
ZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0
YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhKQogewogICAg
IGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5n
ZXQoaGFuZGxlcklkZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsKIAotICAgIGhhbmRs
ZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5zaXplKCksIGRhdGEu
ZGF0YSgpKTsKKyAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIs
IGRhdGEuYnVmZmVyKCkgPyAqZGF0YS5idWZmZXIoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCku
Z2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJV
UkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCBhOTRiNWI5ZDdmZTMyZjI0YTg2ZGFhYWQ0NDg0MmIwY2RkMGFlYjJmLi40ODg2NjcwN2M0NjEz
ZDlhN2NkMzUyMTVkZmNhOTIzYzY5NzliZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xODQsNiArMTg0LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBj
bGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNl
OworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTg5Niw3ICsxODk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVybFNjaGVtZVRhc2tXaWxsUGVy
Zm9ybVJlZGlyZWN0aW9uKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIHVybFNjaGVt
ZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAg
dm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlVSTFNjaGVtZUhhbmRsZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHVybFNjaGVt
ZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJV
UkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKICAgICB2
b2lkIHVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHNldElzVGFraW5nU25hcHNo
b3RzRm9yQXBwbGljYXRpb25TdXNwZW5zaW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYjI3MjI5NDcx
ZWFlODZlZTU5ODE5ODNkZDU3YjVlN2E4MjkxY2Q0Yi4uYmRhNWY1MGFkZDIzYTk2NzQwZTg5ZDcz
M2Q3OWMxODdmMDUyYmUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01NjQsNyArNTY0LDcgQEAgR2VuZXJhdGVT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGUKICAgICBVUkxTY2hlbWVUYXNrV2lsbFBlcmZvcm1SZWRpcmVjdGlvbihX
ZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBwcm9w
b3NlZFJlcXVlc3QpIC0+IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgYWN0dWFsUmVxdWVzdCkg
QXN5bmMKICAgICBVUkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYktpdDo6V2Vi
VVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVz
dCkKICAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
TG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZSkKLSAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJV
UkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UgZGF0YSkKKyAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0
OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkgZGF0YSkKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUoV2ViS2l0OjpXZWJV
UkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGVycm9yKQogCiAgICAgU2V0SXNTdXNwZW5kZWQoYm9vbCBzdXNwZW5kZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5LmNwcAppbmRleCA2ZDhkMGNmMjc4NGVkMzA1NjYyNWM3ZjZlODQ2YTkzYTcx
MWNiYWNkLi42MTZlZGEwOGYwYjhmY2FiMmQ1N2ZjNDc1MzI5MTA3YjgxNWNkMjNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNj
aGVtZUhhbmRsZXJQcm94eS5jcHAKQEAgLTk2LDEzICs5NiwxMyBAQCB2b2lkIFdlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcklkZQogICAgIHRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLXZv
aWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBzaXplX3Qgc2l6ZSwgY29u
c3QgdWludDhfdCogZGF0YSkKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlk
UmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlm
aWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byogdGFzayA9IG1fdGFz
a3MuZ2V0KHRhc2tJZGVudGlmaWVyKTsKICAgICBpZiAoIXRhc2spCiAgICAgICAgIHJldHVybjsK
IAotICAgIHRhc2stPmRpZFJlY2VpdmVEYXRhKHNpemUsIGRhdGEpOworICAgIHRhc2stPmRpZFJl
Y2VpdmVEYXRhKGRhdGEpOwogfQogCiB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFz
a0RpZENvbXBsZXRlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCmlu
ZGV4IDU4YmVjYzE3YjVkODU5ODc0OTg4NGQzMDI1MTY4OWNjY2MxNzY5M2YuLmFiMjBiZDU3M2Fh
NGFmYzE1ODA1OTBmMjcwNDY2MzAwNjg3NzQwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCkBA
IC0zNSw2ICszNSw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRl
cjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksNyArNjAsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCB0YXNrRGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2
b2lkIHRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgdGFza0RpZENvbXBsZXRl
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwogICAgIHZvaWQgdGFza0RpZFN0b3BMb2FkaW5nKFdlYlVSTFNjaGVtZVRhc2tQ
cm94eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAppbmRleCAzNjA2YmJkYzY1MjE1ZGRjYTkyNjEz
YTgxMDdkYWIxYjExZWNiNjU2Li45ZTcyZDg0Yzk3ZGY2ZDI5NzE0YTgzYzUxYWMxNzc2M2U1ZmI2
NTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxT
Y2hlbWVUYXNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKQEAgLTE0MCwyMSArMTQwLDIxIEBAIHZvaWQgV2Vi
VVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5
OjpkaWRSZWNlaXZlRGF0YShzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkKK3ZvaWQg
V2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKCFoYXNMb2FkZXIoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIFdF
QlVSTFNDSEVNRVRBU0tQUk9YWV9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6IFJlY2VpdmVk
IGRhdGEgZHVyaW5nIHJlc3BvbnNlIHByb2Nlc3NpbmcsIHF1ZXVpbmcgaXQuIik7Ci0gICAgICAg
IHF1ZXVlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGFWZWN0
b3IgPSBWZWN0b3IgeyBkYXRhLCBzaXplIH1dIHsKLSAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRh
KGRhdGFWZWN0b3Iuc2l6ZSgpLCBkYXRhVmVjdG9yLmRhdGEoKSk7CisgICAgICAgIHF1ZXVlVGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGEgPSBSZWYgeyBkYXRh
IH1dIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsK
LSAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIHNpemUsIDAsIERhdGFQYXls
b2FkVHlwZTo6RGF0YVBheWxvYWRCeXRlcyk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZl
RGF0YShkYXRhLCAwLCBEYXRhUGF5bG9hZFR5cGU6OkRhdGFQYXlsb2FkQnl0ZXMpOwogICAgIHBy
b2Nlc3NOZXh0UGVuZGluZ1Rhc2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAppbmRleCA3NTUwODc5
NDE4MjBmZWVmYzVkMDEyNzE1OGMwNjRjZTI1OGEwODM1Li5lZDkxZjM4ZTNhZGQxM2JlMTljYjIx
NzdlZDQ0OGZkZDJmYTc5NTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaApAQCAtMzQsNiArMzQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VM
b2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHNp
emVfdCwgY29uc3QgdWludDhfdCogZGF0YSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRl
eCBkZjFmOGNmYjEwYjI3ZTYxMjk4NTdkY2E5ZDgxNmFiZTE4MTcwNDVhLi40NWU4NjAzZWFlYWU4
N2Q4YjQ3Mjc0ODM5ZjE5NDNhZjBmNTUxNjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTY3Niw2ICs2NzYsNyBAQCBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBXZWJQcm9jZXNzOjpzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgp
IGNvbnN0CiAKIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQXV4aWxp
YXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgU2FuZGJveElu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyYgc2FuZGJveFBhcmFtZXRlcnMpCiB7CisgICAgcmV0dXJu
OwogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgLy8gTmVl
ZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCwgYmVjYXVzZSBzZXJ2aWNlIGhhcyBhIGRpZmZlcmVu
dCBidW5kbGUgSUQuCiAgICAgYXV0byB3ZWJLaXRCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0
aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViS2l0Il07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCmluZGV4IGEyNTU2MGExMGMyODgyZTFhYmQx
Nzg0NTY5NDg2ZWExM2VkODk2ZDQuLjMyODljMjM2MjlhMGRjMzFmYzBjMTk5ZWRmMTMyOTdiZWQ2
MWExOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGlu
Z0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hh
bmRsZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CiAKQEAgLTczLDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcGluZ0xvYWRDb21wbGV0ZSh7IH0sIHJlc3BvbnNl
KTsKICAgICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwg
eyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgaW50KSBmaW5h
bCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZp
bmFsIHsgcGluZ0xvYWRDb21wbGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmluYWwgeyByZXR1cm4gbV9z
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggOTU5ZDc0OGI1NmJlMTA3NmJkOTc3OTkyMmNkMzU2ZDIxYTY4MTc0ZS4uOGRmOTkzZjJkNzc1
YjZjOTNkMmU4ZjA5OTBmNzJmODVmNjE4ZTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CkBAIC00OCwxMCArNDgsMTIgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDYWNoZWRGcmFtZTsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIFBy
b3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFr
UHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PiB7CkBAIC0xNTEsNyArMTUzLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsIHsgfQogICAgIHZv
aWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0
dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZp
bmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHbG9i
YWxIaXN0b3J5KCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RM
aW5rcygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA0M2U2M2Y0NTYz
NDVlY2YxYzkyNGU1Yjc3MmE2ZjU0MTczYTkxNDJiLi44N2E1ZDY1N2Y3YjczM2QwN2M1ZGI2MDFm
Njk4MWY5MDQ5NzcxMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtOTkyLDEw
ICs5OTIsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0
Q29udGVudCgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0
dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9h
ZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImIGRhdGEpCiB7Ci0gICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9j
XSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5E
b25lOk5PXSk7Ci0gICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOm5zRGF0YS5n
ZXQoKV07CisgICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOmRhdGEuY3JlYXRl
TlNEYXRhKCkuZ2V0KCldOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hl
ZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKQEAgLTIwMTIsNyArMjAx
MSw3IEBAIFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gbV9maWxlUGF0aDsKICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4gbV9maWxlSGFu
ZGxlOwogCi0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gZGF0YUFycmF5ID0gYnVmZmVyLmNyZWF0ZU5TRGF0
YUFycmF5KCk7CiAgICAgICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBkYXRhQXJyYXkuZ2V0
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCAw
ZTA1YjE4ZDY5NjM5ODI4ZDQzM2M0NmQ3OTIxY2Y3MGRlN2RmOWQxLi4yYTg3NzBkZjgwYmI5Zjcw
YzEwYmI5MWY5NTIwZDFlMTljODU5ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KQEAgLTk3Nyw3ICs5NzcsNyBAQCAtICh2b2lkKV9jb21taXREYXRh
OihOU0RhdGEgKilkYXRhCiAgICAgYXV0byogZG9jdW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1l
LT5kb2N1bWVudCgpOwogICAgIGRvY3VtZW50LT5zZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoX3By
aXZhdGUtPnNob3VsZENyZWF0ZVJlbmRlcmVycyk7CiAKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5jb21taXREYXRhKChjb25zdCB1aW50OF90Kilb
ZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggZmIyNTgzZmU5NzI2NGM3M2VlYjIzZWJiNGQzOTkwYjNiODRhMDdmMy4uMTI3MGU1N2Rk
OTViMGQwMDAzYjVlNTY3N2Q0NzQyYTEyNTUyZDg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcApAQCAtNjQxLDkgKzY0MSw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
ZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVu
Z3RoKTsKKyAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSk7CiAKICAgICAvLyBJZiB0aGUgZG9j
dW1lbnQgaXMgYSBzdGFuZC1hbG9uZSBtZWRpYSBkb2N1bWVudCwgbm93IGlzIHRoZSByaWdodCB0
aW1lIHRvIGNhbmNlbCB0aGUgV2ViS2l0IGxvYWQuCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBz
aG91bGQgYmUgc2hhcmVkIGFjcm9zcyBhbGwgcG9ydHMuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzQ4
NzYyPi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDA5NWIyNTM1YTY4NzU0N2JkNzg4
NDZmOTA3NmFlNmM3ZDAxNjI5NDguLjc5MjZmZDM2NzE4MDllODM4NDdhNDgwMzFhOGI5MGM2Mzhm
YWY3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTEyLDcgKzExMiw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmcoKSkgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25z
dCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92
ZXJyaWRlOwogCiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqKSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447875</attachid>
            <date>2021-12-23 05:52:22 -0800</date>
            <delta_ts>2021-12-23 06:17:50 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-232424-20211224005219.patch</filename>
            <type>text/plain</type>
            <size>267505</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGI1M2U5ZWQ3YTlmOGZj
YzhhZGQyYzY5YzUxMGVmYzk4MzJmM2NiYy4uOTNiNTlkZjk2YTc4NzFiMDdiMzJhMWE5MDIyM2E2
YzljMDkxYmM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1MyBAQAorMjAyMS0xMi0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1
ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBtb2RpZnkgYWxsIGRpZFJlY2VpdmVEYXRhIG1ldGhv
ZCBzbyB0aGF0IHRoZXkgbm8gbG9uZ2VyIHVzZSB1aW50OF90L2ludAorICAgICAgICBhbmQgaW5z
dGVhZCB1c2UgU2hhcmVkQnVmZmVyLiBXZSBhbHNvIGRvIHRoZSBzYW1lIGZvciBhbnkgaW50ZXJt
ZWRpYXJpZXMKKyAgICAgICAgdXNlZCBieSB0aGUgdmFyaW91cyBkaWRSZWNlaXZlRGF0YSBpbXBs
ZW1lbnRhdGlvbnMuCisgICAgICAgIFRoaXMgd2lsbCBmYWNpbGl0YXRlIG1vdmluZyBuZXR3b3Jr
aW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLgorICAg
ICAgICBUaGlzIGFsc28gYWxsb3dzIHRvIHJlbW92ZSBzZXZlcmFsIG1lbW9yeSBhbGxvY2F0aW9u
cyBhbmQgY29waWVzLgorICAgICAgICBXZSBjYW4gbm93IGFsc28gY29uc2lkZXIgbW92aW5nIHRo
ZSB1bmRlcmx5aW5nIFNoYXJlZE1lbW9yeSBjcmVhdGVkIGluCisgICAgICAgIHRoZSBjb250ZW50
IHByb2Nlc3MgYWxsIHRoZSB3YXkgdG8gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4gQ292ZXJlZCBieSBhbGwgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpi
bG9iQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxl
bWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVNpbmsuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpt
YXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjphZGREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1p
dHRlZExvYWQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKToKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRh
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGRCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1
dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5SZXNv
dXJjZURhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZl
ckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50
OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJl
dmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lm
Qnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKC1bV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YTpsZW5ndGhS
ZWNlaXZlZDpdKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9h
ZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTIt
MjMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBTY2FsYWJs
ZUltYWdlRGVjb2RlciBzaG91bGQgYmUgdXNpbmcgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgRGF0
YVNlZ21lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzQ0MQorICAgICAgICByZGFyOi8vcHJvYmxlbS84NTg1NDIwNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERhdGFTZWdtZW50IHNob3VsZCBiZSBh
IFNoYXJlZEJ1ZmZlcidzIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIG5vdAorICAgICAgICBi
ZSB1c2VkIG91dHNpZGUgU2hhcmVkQnVmZmVyJ3MgY29kZS4KKyAgICAgICAgSGlzdG9yaWNhbGx5
LCB1c2luZyB0aGUgaW5uZXIgRGF0YVNlZ21lbnQgd2FzIHJlcXVpcmVkIGFzIGl0IHdhcyB0aHJl
YWQKKyAgICAgICAgc2FmZSB3aGlsZSBTaGFyZWRCdWZmZXIgd2Fzbid0OiBUaGlzIGlzIG5vIGxv
bmdlciB0aGUgY2FzZS4KKyAgICAgICAgU2hhcmVkQnVmZmVyIGFuZCBEYXRhU2VnbWVudCBhcmUg
c2VtYW50aWNhbGx5IHZlcnkgc2ltaWxhciwgc28gdGhpcyBpcworICAgICAgICBtb3N0bHkgYSBm
aW5kL3JlcGxhY2UgY2hhbmdlLgorICAgICAgICBGbGF0dGVuaW5nIHRoZSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIGlzIHN0aWxsIHJlcXVpcmVkIGFzIG1vc3QgZGVjb2RlcnMKKyAgICAgICAgcmVx
dWlyZSByZWFkaW5nIHRoZSByYXcgYnl0ZXMuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2Vy
dmFibGUgYmVoYXZpb3VyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNr
aW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpzZXRTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpJbWFnZUJhY2tpbmdTdG9y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJl
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6cmVhZFVpbnQxNik6CisgICAgICAgIChX
ZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6cmVhZFVpbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpC
TVBJbWFnZVJlYWRlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZVJlYWRlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHMjAwMEltYWdlRGVjb2Rlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlUmVhZGVyOjpkZWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDIxLTEyLTIy
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgbWFrZSBTaGFy
ZWRCdWZmZXI6OmNvcHkoKSByZXR1cm4gYSBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NjIyCisgICAgICAg
IHJkYXI6Ly9wcm9ibGVtLzg2ODI5NTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbWFrZSBTaGFyZWRCdWZmZXI6OmNvcHkoKSByZXR1cm4gYSBjb250
aWd1b3VzIFNoYXJlZEJ1ZmZlcgorCisgICAgICAgIEFQSSB0ZXN0cyBhZGRlZC4KKworICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKwogMjAyMS0xMi0yMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gVGVz
dCBhY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC5odG1sIGNyYXNoZXMgd2l0aCBBVFNQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA4ZGY3YWYyMmRhYjg0MjM0YTQ2ZmJjYTBiYzdmMjRkNDQ0YjRiM2RiLi5j
MzVmNGMyYjZjN2RkNjY0ODU3YTcyMzQzYjRmOWRiNzU3YzE5OGM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEwMiBAQAorMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0
d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRv
d25sb2FkVGFzay5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OmxvYWRCb2R5RnJvbVByZWxvYWRlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2Fk
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZl
ckNvcHkpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUGFy
c2VUcmFja3MpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFG
b3JtYXRSZWFkZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpQREZQbHVn
aW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBERlBs
dWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQ6OmRpZFJlY2VpdmVCbG9iQ2h1bmspOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExv
YWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVybFNjaGVtZVRh
c2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveCk6CisKIDIwMjEt
MTItMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZS1lbmFibGUgV2ViUHVzaEQuSGFuZGxlSW5qZWN0ZWRQdXNoIEFQSSB0ZXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvQ2hhbmdlTG9nCmluZGV4IDU3NjgxYjIxYTczNDM5ZTkwYmYyMWJhMjQ0OTU4MjU5N2UwMTk5
ODIuLmJiMWM1YjUzNmM0Zjk5MTVmYmFiZDlhYzMwMzdiYzQ0OGM3NzQ2YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAg
cmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg6CisKIDIwMjEtMTItMTQgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgU2hhcmVk
QnVmZmVyIGNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZWY5NDlkZTYw
Njg5NmNhOTkzZWRmOGYzNGQ5YzFiMzBhNWI2NTRhYi4uZDU5NTdkZGIxZjRhZjg4YTRiNWZkNzEz
MGYxMDcxNDlhYjUwOWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBuZXR3b3Jr
aW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
b21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2
aWV3TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAg
ICAoLVtXZWJGcmFtZSBfY29tbWl0RGF0YTpdKToKKwogMjAyMS0xMi0yMiAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggV2ViS2l0IEJ1aWxkIGlzc3Vl
cyB3aGVuIHVzaW5nIHN5c3RlbSBjb250ZW50IHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggYzIzMWYyMDdkYTI1Y2Qy
YTE1ODYwZDI4ZGIzY2UxN2U4NTc1NzdkNS4uZTYxM2FhNTA5Zjc0YzBkZTBlNmQzODM1MThlNTI2
ZjczYWE1OGVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKQEAgLTMyMCwxMyArMzIwLDEzIEBAIHZvaWQgRmV0Y2hCb2R5Q29u
c3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJp
bmcmIGNvCiAgICAgfQogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9zb3VyY2UpIHsK
LSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBz
aXplKSk7CisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2J1ZmZlci5hcHBlbmQoZGF0
YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApp
bmRleCA4NzFkMmMwODYzMzFhOTgyOTRhMTY2YTRiNDJlMzE4NGUwMzc3NzJiLi5kNDY1MWIyM2Rh
NzFjZjhmNGM4Yzk5NjcxZDIyN2ViNWFjOGQyYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKIAogICAgIGV4cGxpY2l0IEZldGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBtX3R5cGUo
dHlwZSkgeyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBib29sIGhh
c0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9CiAgICAgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3Bw
CmluZGV4IGE2MzMxMDhiNTQ3NzgzOTNmYzU0NzUwMDMyYTlhMmU4NmFkZTdmY2MuLjUzNjY4MTU1
YmRlYmMxYWVmMzlmNGQ5OWZiOWRhZGMxZWJlZjdhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0yOTgsMTEgKzI5OCwxMCBAQCB2
b2lkIEZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ0ZhaWxlZCgpCiAgICAgZmluaXNoQmxvYkxv
YWRpbmcoKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIEFTU0VSVChkYXRhKTsKICAgICBBU1NF
UlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7Ci0gICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291
cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpKQorICAgIGlm
ICghbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+ZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSkpCiAgICAgICAgIHN0b3AoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDVjYTdlMzk2YzQyMjcwMTkzNTZiMDgwNmU0
ZWVkYmU5NWU5MjhmNGIuLjgxZmQwNmVjZGQ2ZmMzOGM5ZTg1OTg3Y2ViZGZjMTZkZDg2ZjNjOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGZXRjaExvYWRlci5oIgogI2luY2x1ZGUgIkZldGNo
TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMCw3ICsxMDEsNyBA
QCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgLy8gQmxvYiBsb2FkaW5nIHJvdXRpbmVzCi0g
ICAgdm9pZCBibG9iQ2h1bmsoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9pZCBibG9i
Q2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBibG9iTG9hZGluZ1N1Y2NlZWRl
ZCgpOwogICAgIHZvaWQgYmxvYkxvYWRpbmdGYWlsZWQoKTsKICAgICB2b2lkIGZpbmlzaEJsb2JM
b2FkaW5nKCk7CkBAIC0xMTMsNyArMTE0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBGZXRj
aExvYWRlckNsaWVudCBBUEkKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhk
YXRhLCBzaXplKTsgfQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhidWZmZXIpOyB9CiAgICAgICAg
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkU3VjY2VlZCgpIGZpbmFsIHsgb3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IDAzZjg5
YjYxY2E1ZjdjNzE3NmI5ZDg4Y2QxMzY2MGU4NmI3YTI1NDguLjRiNDViZmQ4NzUwNDA2ZjZlN2Rh
NzE4Zjk5ODE2OTQ3MWE1ZTg0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuY3BwCkBAIC0xNDgsMTMgKzE0OCwxMyBAQCB2b2lkIEZldGNoTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcwogICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLXZv
aWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIHZhbHVlLCBpbnQg
c2l6ZSkKK3ZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBib29sKQogewogICAgIGlmICghbV9jb25zdW1lcikgewotICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlRGF0YSh2YWx1ZSwgc2l6ZSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jb25zdW1l
ci0+YXBwZW5kKHZhbHVlLCBzaXplKTsKKyAgICBtX2NvbnN1bWVyLT5hcHBlbmQoYnVmZmVyKTsK
IH0KIAogdm9pZCBGZXRjaExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5k
ZXggNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZC4uNWVlYWVmODJkMWRm
M2VmY2VkMjE0MDAzZGY1MTg4ODcwMzZmOTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQgQVBJLgogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sIHVz
ZVN0ckxlbikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ckNsaWVudC5oCmluZGV4IGZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0NWU3ODku
LjEwOWUwOGVjZjdhNDdlN2MwMzdlMzJkY2FhY2FiODZjODFjMThkM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN1
Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCmluZGV4IDBlN2IwMDVlODlhM2QxNzQwYjFjZjlhZGZmOGI0ZjJmMmZjNDNjOTkuLmRjYTBl
MjM4MmUzMmZjMDM3Mjg4N2ZkNDg1MjE0YTE3MzAxYjFiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzYyLDEyICszNjIsMTIgQEAg
dm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxsYmFjayhtX3Jlc3Bv
bnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6
Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZSB8fCBtX2NvbnN1
bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURhdGFDYWxsYmFjaykgewotICAg
ICAgICBTcGFuIGNodW5rIHsgZGF0YSwgc2l6ZSB9OworICAgICAgICBTcGFuIGNodW5rIHsgYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9OwogICAgICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJh
Y2soJmNodW5rKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM3NSw3ICszNzUsNyBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgIGF1dG8mIHNvdXJjZSA9ICptX3Jlc3BvbnNlLm1f
cmVhZGFibGVTdHJlYW1Tb3VyY2U7CiAKICAgICBpZiAoIXNvdXJjZS5pc1B1bGxpbmcoKSkgewot
ICAgICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChkYXRhLCBzaXplKTsK
KyAgICAgICAgbV9yZXNwb25zZS5ib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoYnVmZmVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgRmV0Y2hSZXNw
b25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCiAgICAgICAgIHN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBp
ZiAoIXNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpKSB7
CisgICAgaWYgKCFzb3VyY2UuZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSkp
IHsKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDY3LDcgKzQ2
Nyw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0
YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6Y29u
c3VtZUNodW5rKFJlZjxKU0M6OlVpbnQ4QXJyYXk+JiYgY2h1bmspCiB7Ci0gICAgYm9keSgpLmNv
bnN1bWVyKCkuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkpOworICAg
IGJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShjaHVuay0+ZGF0
YSgpLCBjaHVuay0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6Y29u
c3VtZUJvZHlBc1N0cmVhbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCmluZGV4IDZiMDUwNWQ4OGIxMzJlMjhjYjk1NGFiOWEwZTdlZmU4MTNmNzAyYWYu
LmY5OTI0OWMzOWY5ZDBiMmZjODdhMmY5YzQ2ZDc5MzkyODg4MTRiZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xNDMsNyArMTQzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKKyAgICAgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKIAogICAgICAg
ICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3RpZmljYXRpb25DYWxsYmFj
ayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggMjdhNmQ3MDMzNGNh
MzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1MmU3ZC4uYTY0MWY4MTA3YjRmZDE3OTExZmRiOTJiYjMw
ZjQ1ZTJlODJiNTJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTc3LDEwICsxNzcsMTAgQEAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIAogLy8gTUFSSzogLSBDYWNoZWRSYXdSZXNvdXJjZUNs
aWVudAogCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBI
VE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRh
TGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggY2UwMDlkNGU1ZWRjMzA5NzQ1
ZTAyN2IwNjMyYmQxZTZlODU4MDNiZS4uMGQzYmRiNzQ5ZDdhMzM2OGIzY2E2OGMyMTczMTYwNTkx
NTQ5ZDFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgLy8gQ2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQgb3ZlcnJpZGVzLgotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFsOwor
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVy
JikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgLy8gTW9kZWxQbGF5ZXJDbGllbnQg
b3ZlcnJpZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtU2luay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5oCmluZGV4IGQ1MTczZmJmOGI0MDM0MWM1Y2Y4ZDhhNGY1NWVlYWM4ZmY4
MzhhMzkuLmZlZTk4ODQyMjFiYjQzZThjYzA2MmVhYmNkMGE5OWVjNTRjMDM0NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgK
QEAgLTM1LDcgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3Vy
Y2U7CiBjbGFzcyBSZWFkYWJsZVN0cmVhbTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxl
U3RyZWFtU2luaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ckxvYWRlci5jcHAKaW5kZXggYjdmNzVlZGEzYjIzM2IxOWIyMGVkNzA0Mjg5NDliYjMzNTg5OGU4
MS4uNzM4NTJkNGMwYWYwMzg0NzVmMTViNjU0OWRjNjg5YmY4NTUxYjIwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKQEAg
LTE2MywxNiArMTY0LDE1IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyCiAgICAgICAgIG1fY2xp
ZW50LT5kaWRTdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRmls
ZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGJvb2wpCiB7Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIEFTU0VSVChkYXRhTGVuZ3RoID4gMCk7
CisgICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkpOwogCiAgICAgLy8gQmFpbCBvdXQgaWYgd2UgYWxy
ZWFkeSBlbmNvdW50ZXJlZCBhbiBlcnJvci4KICAgICBpZiAobV9lcnJvckNvZGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGludCBsZW5ndGggPSBkYXRhTGVuZ3RoOworICAgIGludCBsZW5ndGgg
PSBidWZmZXIuc2l6ZSgpOwogICAgIHVuc2lnbmVkIHJlbWFpbmluZ0J1ZmZlclNwYWNlID0gbV90
b3RhbEJ5dGVzIC0gbV9ieXRlc0xvYWRlZDsKICAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8
bG9uZyBsb25nPihyZW1haW5pbmdCdWZmZXJTcGFjZSkpIHsKICAgICAgICAgLy8gSWYgdGhlIGJ1
ZmZlciBoYXMgaGl0IG1heGltdW0gc2l6ZSwgaXQgY2FuJ3QgYmUgZ3Jvd24gYW55IG1vcmUuCkBA
IC0xODEsNyArMTgxLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCkgewotICAgICAgICAgICAg
dW5zaWduZWQgbmV3TGVuZ3RoID0gbV90b3RhbEJ5dGVzICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRhdGFMZW5ndGgpOworICAgICAgICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbV90b3RhbEJ5
dGVzICsgYnVmZmVyLnNpemUoKTsKICAgICAgICAgICAgIGlmIChuZXdMZW5ndGggPCBtX3RvdGFs
Qnl0ZXMpIHsKICAgICAgICAgICAgICAgICBmYWlsZWQoTm90UmVhZGFibGVFcnJvcik7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgRmlsZVJlYWRlckxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CiAgICAgaWYgKGxlbmd0aCA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBtZW1jcHkoc3Rh
dGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQsIGRhdGEs
IGxlbmd0aCk7CisgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihtX3Jhd0RhdGEtPmRhdGEo
KSkgKyBtX2J5dGVzTG9hZGVkLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpOwogICAgIG1fYnl0ZXNM
b2FkZWQgKz0gbGVuZ3RoOwogCiAgICAgbV9pc1Jhd0RhdGFDb252ZXJ0ZWQgPSBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggNTM5YzIzMDRhODJl
NjNhYWRmZTJjNTY3Yzk4ZDBiOGM2ODdhOGU5Zi4uYjdlNWI0MDU3ZmIyMDZmZjMyMzE1NWNjMGYx
NTAyZmNhMjBkMjY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNs
aWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4
IDVjNWJiMmFlYTgzOTkxOGIwNjk3NzU4ODFjZTNhMzY5YTQyOGU1YjkuLjc4MTc3NWE4NDE2NjI2
ZTgyOTBmZWFiODI0ZTdiMmFlZjVjYWIyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC02MTYsMTAgKzYxNiwx
MCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVhZGFibGVM
b2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudAogICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJl
Y2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoaWRlbnRpZmllciwgZG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYg
KGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtB
Z2VudCgpKQotICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIs
IGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbmV0d29ya0Fn
ZW50LT5kaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJl
c291cmNlTG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGQyOTU3ODEwZDgzODJjOTM1MWQ1YTkzZjE0NGFlZDE0
OTNiY2M2NTEuLjgyYWNjZWQyMGNmZDUxMzFiMjUwMmYwOTlhOWM0ZmEyZmRkNjE2ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKQEAgLTE5MywxMyArMTkzLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRMb2Fk
UmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoUGFnZSYsIERvY3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVz
b3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShGcmFt
ZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYsIFJl
c291cmNlTG9hZGVySWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEo
RnJhbWUqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVEYXRhKEZyYW1lKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBzdGF0aWMg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7
CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApA
QCAtNDE0LDcgKzQxNCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRMb2Fk
ZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJj
ZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxv
YWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXImLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRh
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3Rh
dGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYpOwpAQCAtMTA4MiwxNyArMTA4MiwxNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoRG9j
dW1lbgogICAgICAgICBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbCgqYWdl
bnRzLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIsIGlkZW50aWZpZXIpOwogfQogICAgIAotaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSog
ZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQoraW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSogZnJhbWUs
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05P
X0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzKGZyYW1lKSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCphZ2VudHMsIGlkZW50
aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgZGlk
UmVjZWl2ZURhdGFJbXBsKCphZ2VudHMsIGlkZW50aWZpZXIsIGJ1ZmZlciwgZW5jb2RlZERhdGFM
ZW5ndGgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBkaWRSZWNl
aXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyhnbG9iYWxTY29wZSksIGlkZW50aWZpZXIs
IGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhSW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgYnVmZmVyLCBidWZm
ZXIuc2l6ZSgpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApp
bmRleCAzOWIwMTFjZjA2ZjdmMzg1MzI0M2UwYTc2M2EzYjFkNDU0OTA0MTQ5Li4zMjhlYmU3ZTY0
MTE5NWU1YTQ2ODUwMjc1NTkxMGY3OGM0OGI1OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTkwLDEwICs5MCwxMCBAQCBz
aXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6YXBwZW5kRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJU
KCFoYXNDb250ZW50KCkpOwotICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0
aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhKTsKIH0KIAogdW5zaWduZWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCkBAIC0y
MjEsNyArMjIxLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQnVmZmVyUmVzb3VyY2VEYXRhKGNvbnN0
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEmIHIKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLU5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCitOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVB
ZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0
YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpAQCAtMjMw
LDE1ICsyMzAsMTUgQEAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCog
TmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2UKICAgICBpZiAoIXNob3VsZEJ1
ZmZlclJlc291cmNlRGF0YSgqcmVzb3VyY2VEYXRhKSkKICAgICAgICAgcmV0dXJuIHJlc291cmNl
RGF0YTsKIAotICAgIGlmIChyZXNvdXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRhdGFMZW5ndGgg
PiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQorICAgIGlmIChyZXNvdXJjZURh
dGEtPmRhdGFMZW5ndGgoKSArIGRhdGEuc2l6ZSgpID4gbV9tYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZSkKICAgICAgICAgbV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEtPmV2aWN0
Q29udGVudCgpOwogICAgIGlmIChyZXNvdXJjZURhdGEtPmlzQ29udGVudEV2aWN0ZWQoKSkKICAg
ICAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKIAotICAgIGlmIChlbnN1cmVGcmVlU3BhY2UoZGF0
YUxlbmd0aCkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKSB7CisgICAgaWYg
KGVuc3VyZUZyZWVTcGFjZShkYXRhLnNpemUoKSkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50
RXZpY3RlZCgpKSB7CiAgICAgICAgIG1fcmVxdWVzdElkc0RlcXVlLmFwcGVuZChyZXF1ZXN0SWQp
OwotICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSwgZGF0YUxlbmd0aCk7Ci0g
ICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YUxlbmd0aDsKKyAgICAgICAgcmVzb3VyY2VEYXRh
LT5hcHBlbmREYXRhKGRhdGEpOworICAgICAgICBtX2NvbnRlbnRTaXplICs9IGRhdGEuc2l6ZSgp
OwogICAgIH0KIAogICAgIHJldHVybiByZXNvdXJjZURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGRhYWU1ZmU0YTMxZTMxNTkz
NjM3OTA0MjNmNWZiZDMzNzBjNWNkMzkuLmM4Y2VkMTJhNjQwN2ZkY2Q1NzRlY2MyYTc4MTllZGU2
NjM4MDNkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAg
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNv
bnN0OwotICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBT
dHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUg
cmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIHNldFJlc291
cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxzZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBt
YXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOworICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5
YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmlu
ZGV4IDNjZWI0YjQ3ZjEwNjhhMGFmZWFmMDBmMTc5YzI4MDBjNDc2YmQ2YjEuLjViYmEzZmI4YmYz
ZjQwYzUwNWVjZjE2MWVhNWU3ZWVkY2U3ODFiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEy
NCwxNSArMTI0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNl
RGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVzZURldGVjdG9y
KTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKSBvdmVycmlkZQogICAgIHsKLSAg
ICAgICAgaWYgKCFkYXRhTGVuZ3RoKQorICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YUxlbmd0aCA9PSAtMSkKLSAgICAg
ICAgICAgIGRhdGFMZW5ndGggPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSkpOwotCi0gICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZChtX2RlY29kZXItPmRlY29k
ZShkYXRhLCBkYXRhTGVuZ3RoKSk7CisgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gdXNlU3Ry
TGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkp
KSA6IGJ1ZmZlci5zaXplKCk7CisgICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBkYXRhTGVuZ3RoKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGUKQEAg
LTU0OSw5ICs1NDcsOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgICAgICAgICAgaWYg
KHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCiAgICAgICAgICAgICAgICAgbV9y
ZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBwcmV2aW91c1Jlc291
cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+YmFzZTY0RW5jb2RlZCgp
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNCdWZmZXJl
ZERhdGEoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNCdWZmZXIgPSBwcmV2aW91
c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNCdWZmZXIt
PmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAg
IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBzZWdtZW50
LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgIHByZXZpb3VzUmVzb3Vy
Y2VEYXRhLT5idWZmZXIoKS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYm
IGJ1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRk
UmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgYnVmZmVyKTsKICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTc0LDI3ICs1NzEsMjcgQEAgdm9pZCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmkKICAgICAvLyBJZiB3ZSByZXZhbGlkYXRlZCB0aGUgcmVzb3VyY2UgYW5k
IGdvdCBOb3QgbW9kaWZpZWQsIHNlbmQgY29udGVudCBsZW5ndGggZm9sbG93aW5nIGRpZFJlY2Vp
dmVSZXNwb25zZQogICAgIC8vIGFzIHRoZXJlIHdpbGwgYmUgbm8gY2FsbHMgdG8gZGlkUmVjZWl2
ZURhdGEgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KICAgICBpZiAoaXNOb3RNb2RpZmllZCAmJiBj
YWNoZWRSZXNvdXJjZSAmJiBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSkKLSAgICAgICAg
ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgbnVsbHB0ciwgY2FjaGVkUmVzb3VyY2UtPmVuY29k
ZWRTaXplKCksIDApOworICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1faGlk
ZGVuUmVxdWVzdElkZW50aWZpZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKQogICAgICAgICByZXR1
cm47CiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0
SWQoaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAotICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1f
cmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBkYXRhLCBkYXRh
TGVuZ3RoKTsKKyAgICBpZiAoZGF0YS5kYXRhKCkpIHsKKyAgICAgICAgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRh
LT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEpOwogCiAgICAgICAgIC8vIEZv
ciBhIHN5bmNocm9ub3VzIFhIUiwgaWYgd2UgZGlkbid0IGFkZCBkYXRhIHRoZW4gd2UgY2FuIGFw
cGx5IGl0IGhlcmUgYXMgYmFzZTY0IGVuY29kZWQgY29udGVudC4KICAgICAgICAgLy8gT2Z0ZW4g
dGhlIGRhdGEgaXMgdGV4dCBhbmQgd2Ugd291bGQgaGF2ZSBhIGRlY29kZXIsIGJ1dCBmb3Igbm9u
LXRleHQgd2Ugd29uJ3QgaGF2ZSBhIGRlY29kZXIuCiAgICAgICAgIC8vIFN5bmMgWEhScyBtYXkg
bm90IGhhdmUgYSBjYWNoZWQgcmVzb3VyY2UsIHdoaWxlIG5vbi1zeW5jIFhIUnMgdXN1YWxseSB0
cmFuc2ZlciBkYXRhIG92ZXIgb24gY29tcGxldGlvbi4KICAgICAgICAgaWYgKG1fbG9hZGluZ1hI
UlN5bmNocm9ub3VzbHkgJiYgcmVzb3VyY2VEYXRhICYmICFyZXNvdXJjZURhdGEtPmhhc0J1ZmZl
cmVkRGF0YSgpICYmICFyZXNvdXJjZURhdGEtPmNhY2hlZFJlc291cmNlKCkpCi0gICAgICAgICAg
ICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChyZXF1ZXN0SWQsIGJhc2U2NEVu
Y29kZVRvU3RyaW5nKGRhdGEsIGRhdGFMZW5ndGgpLCB0cnVlKTsKKyAgICAgICAgICAgIG1fcmVz
b3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgYmFzZTY0RW5jb2RlVG9T
dHJpbmcoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPmRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCgpLCBk
YXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PmRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCgpLCBkYXRhLnNpemUoKSwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkRmluaXNo
TG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Ms
IFJlc291cmNlTG9hZGVyKikKQEAgLTEyNzEsNyArMTI2OCw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhS
ZXNwb25zCiAgICAgaWYgKGxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmFibGUgdG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMg
YWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfcyk7CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIGlmIChi
YXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gYmFzZTY0RGVjb2RlKGNvbnRl
bnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTEyOTYsOSArMTI5Myw5IEBAIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVx
dWVzdFdpdGhSZXNwb25zCiAgICAgfQogICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZHMo
V1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCByZXNwb25zZS5taW1lVHlwZSgpKTsKLSAg
ICBsb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW2xvYWRlciwgYnVmZmVyID0g
ZGF0YS5yZWxlYXNlTm9uTnVsbCgpXSgpIG11dGFibGUgeworICAgIGxvYWRlci0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZmZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxs
KCldKCkgewogICAgICAgICBpZiAoYnVmZmVyLT5zaXplKCkpCi0gICAgICAgICAgICBsb2FkZXIt
PmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSwgRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZURhdGEo
YnVmZmVyLCBidWZmZXItPnNpemUoKSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKICAgICAg
ICAgbG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICB9
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmgKaW5kZXggNmJjZDg3ZGRjZDhiMDQ0MTMwOGQxZDAxZWNhNmIwZTZk
YTE0MTNkNC4uY2E2Zjc0ZTFiODY5ODBmNDBiMTU1ZDEzZTE2YjcxYWRmYjk0MDQ1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0T2ZUeXBlKFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OkxvYWRUeXBlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKik7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBDYWNo
ZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4
IDQzMzJkNjkxYmJmODI2YTdjODdlYTgzYTMxN2U5NjExNWEyMDQ5OTMuLmI4NmY5YmE2Mzc2NWVj
NGRmZTg0ZjAyZGE0ZGY3ODIzMDljMTU4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVu
dEZpbHRlci5jcHAKQEAgLTE0NSwxNCArMTQ1LDE0IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29u
dGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
CiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7CiB9CiAKLWJvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKQorYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVk
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVu
dD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpGaWx0ZXJpbmcpIHsKLSAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50
RmlsdGVyIHJlY2VpdmVkICVkIGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgbGVuZ3RoLCBt
X21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBm
b3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0YSwgbGVuZ3RoXShQbGF0Zm9ybUNv
bnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIu
YWRkRGF0YShkYXRhLCBsZW5ndGgpOworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNv
bnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgZGF0
YS5zaXplKCksIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
CisgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsg
ZGF0YSB9XShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAg
ICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhKTsKICAgICAgICAgfSk7CiAKICAgICAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBD
b250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJl
c291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZm
ZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJj
ZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRl
bnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogfQogCiBzdGF0aWMg
Y29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuaAppbmRleCA4YjZkZWZmZmFiODBmNWRhYzI1ODdlMzcxYzAxODc5YjlmM2ZkZjc3Li42MGI0
ZGExYTliMzM2OGMyZGZlY2ZmNDJiODlmMzU1OGU4MzMxYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBj
b250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2
ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCk7CisgICAgYm9vbCBjb250aW51ZUFm
dGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgY29udGludWVB
ZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7CiAKICAgICBzdGF0aWMgYm9vbCBj
b250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBh
Y3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRleCAyMTVjMDRlYzk4OTVlOWYxZTZlMTQ3ZGE4
MjA5MzAwOTg1MjM5NjIzLi5mYTdhZDMwMzlhMjA1ZTkwNTcxMDhmM2M2ZjM5MjQxOWJjNDY0N2Rj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKQEAgLTMz
LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJDbGllbnQgewpAQCAt
NDEsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25z
dCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNvbnRlbnRG
aWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbE1haW5S
ZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZp
bHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDZiZjNhYzI5N2VjNmIy
NjNhMDc4NjQwYmNmM2FkNTc3OWRiMGZlZGIuLjk3ZTNkNjViM2U5MmRlMzI3ZjkyZjNiYWQ0Y2M1
MWMxNTQ5M2E1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApA
QCAtNDgzLDggKzQ4Myw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZygp
CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYW4gZW1wdHkgZG9jdW1lbnQsIGl0IHdpbGwgbm90IGhh
dmUgYWN0dWFsbHkgYmVlbiBjcmVhdGVkIHlldC4gQ29tbWl0IGR1bW15IGRhdGEgc28gdGhhdAog
ICAgICAgICAvLyBEb2N1bWVudFdyaXRlcjo6YmVnaW4oKSBnZXRzIGNhbGxlZCBhbmQgY3JlYXRl
cyB0aGUgRG9jdW1lbnQuCiAgICAgICAgIGlmICghbV9nb3RGaXJzdEJ5dGUpCi0gICAgICAgICAg
ICBjb21taXREYXRhKDAsIDApOwotICAgICAgICAKKyAgICAgICAgICAgIGNvbW1pdERhdGEoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSk7CisKICAgICAgICAgaWYgKCFmcmFtZUxvYWRlcigpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5maW5pc2hl
ZExvYWRpbmcodGhpcyk7CkBAIC0xMTU3LDggKzExNTcsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVy
Ojpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGlm
ICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmIGlzTG9hZGlu
Z01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIGF1dG8gY29udGVudCA9IG1fc3Vic3RpdHV0ZURh
dGEuY29udGVudCgpOwogICAgICAgICBpZiAoY29udGVudCAmJiBjb250ZW50LT5zaXplKCkpIHsK
LSAgICAgICAgICAgIGNvbnRlbnQtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7
Ci0gICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVkKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNp
emUoKSk7CisgICAgICAgICAgICBjb250ZW50LT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVy
KFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVkKGJ1ZmZl
cik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNMb2FkaW5nTWFp
blJlc291cmNlKCkpCkBAIC0xMTcxLDcgKzExNzEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpj
b250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIH0KIH0K
IAotdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdlIGFuZCBw
YXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRlc3Ryb3lz
IHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28gcmV0YWlu
IHRlbXBvcmFyaWx5LgpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
Y29tbWl0TG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIGlmIChBcmNo
aXZlRmFjdG9yeTo6aXNBcmNoaXZlTUlNRVR5cGUocmVzcG9uc2UoKS5taW1lVHlwZSgpKSkKICAg
ICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmNvbW1pdHRl
ZExvYWQodGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuY29t
bWl0dGVkTG9hZCh0aGlzLCBkYXRhKTsKIAogICAgIGlmIChpc011bHRpcGFydFJlcGxhY2luZ0xv
YWQoKSkKICAgICAgICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmRpZFJlcGxhY2VNdWx0aXBhcnRD
b250ZW50KCk7CkBAIC0xMjE1LDcgKzEyMTUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxk
VXNlQWN0aXZlU2VydmljZVdvcmtlckZyb21QYXJlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZQog
fQogI2VuZGlmCiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgdWludDhf
dCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fZ290Rmlyc3RCeXRlKSB7
CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1ZTsKQEAgLTEzMTMsMjQgKzEzMTMsMjQgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6
ZV90IGxlbmd0aCkKICNlbmRpZgogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCktPnBh
cnNpbmcoKSk7Ci0gICAgbV93cml0ZXIuYWRkRGF0YShieXRlcywgbGVuZ3RoKTsKKyAgICBtX3dy
aXRlci5hZGREYXRhKGRhdGEpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKLSAgICBkYXRhUmVjZWl2
ZWQoZGF0YSwgbGVuZ3RoKTsKKyAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKIH0KIAotdm9pZCBE
b2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZl
ZChkYXRhLCBsZW5ndGgpKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZp
bHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIpKQogICAgICAgICByZXR1cm47
CiAjZW5kaWYKIAotICAgIEFTU0VSVChkYXRhKTsKLSAgICBBU1NFUlQobGVuZ3RoKTsKKyAgICBB
U1NFUlQoYnVmZmVyLmRhdGEoKSk7CisgICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkpOwogICAgIEFT
U0VSVCghbV9yZXNwb25zZS5pc051bGwoKSk7CiAKICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBD
Rk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2Fk
cyBhcmUgZGVmZXJyZWQuCkBAIC0xMzQwLDEyICsxMzQwLDEyIEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogI2VuZGlm
CiAKICAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcikKLSAg
ICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaXNwYXRjaERpZFJlY2VpdmVEYXRhKHRo
aXMsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGRhdGEsIGxlbmd0
aCwgLTEpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpc3BhdGNoRGlkUmVj
ZWl2ZURhdGEodGhpcywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwg
YnVmZmVyLCAtMSk7CiAKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5tYWluUmVzb3VyY2VE
YXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoLCAtMSwgZmFsc2UpOworICAgIG1fYXBwbGljYXRpb25D
YWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChidWZmZXIsIC0xLCBmYWxzZSk7CiAK
ICAgICBpZiAoIWlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpKQotICAgICAgICBjb21taXRMb2Fk
KGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGNvbW1pdExvYWQoYnVmZmVyKTsKIH0KIAogdm9pZCBE
b2N1bWVudExvYWRlcjo6c2V0dXBGb3JSZXBsYWNlKCkKQEAgLTE2MTQsNyArMTYxNCw3IEBAIGJv
b2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgbV93cml0ZXIuc2V0
TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUt
PmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgp
LCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YSgqbV9wYXJzZWRB
cmNoaXZlRGF0YSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTIyNTcsOCArMjI1
Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENv
bnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9j
b21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVz
b3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAg
ICBjb21taXRMb2FkKG1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiB9CiAK
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpAQCAtMjQxMCw5ICsyNDA5
LDkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9u
RXZlbnQoU2VjdXJpdHlQb2xpY3lWaW9sYXRpb24KIH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBzaXplKQordm9pZCBEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7Ci0gICAgZGF0YVJlY2VpdmVkKGRhdGEsIHNpemUpOworICAgIGRhdGFSZWNlaXZl
ZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VM
b2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggYjQ2OTgxZDc1MGIyNWMxZmQzMDdmMTZm
ZGE3NGI3ZWUzMDZhNGMzOS4uMjhlMjhhNjg4YWU2YjU3ZTBmMGQxNGM0ZTdhMGMyNTU4Y2I2N2U0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTg2LDYgKzg2LDcg
QEAgY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0
ZVJlc291cmNlOwogY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOwpAQCAtMzc3LDcgKzM3OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0VGltaW5nKCkgeyBtX2xvYWRUaW1pbmcgPSB7IH07
IH0KIAogICAgIC8vIFRoZSBXZWJLaXQgbGF5ZXIgY2FsbHMgdGhpcyBmdW5jdGlvbiB3aGVuIGl0
J3MgcmVhZHkgZm9yIHRoZSBkYXRhIHRvIGFjdHVhbGx5IGJlIGFkZGVkIHRvIHRoZSBkb2N1bWVu
dC4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0
ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0RGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0JiBhcHBsaWNh
dGlvbkNhY2hlSG9zdCgpIGNvbnN0OwogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBhcHBsaWNh
dGlvbkNhY2hlSG9zdFVubGVzc0JlaW5nRGVzdHJveWVkKCkgY29uc3Q7CkBAIC00NzcsNyArNDc4
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tbWl0SWZSZWFkeSgpOwogICAgIHZvaWQgc2V0
TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHZvaWQgY29tbWl0
TG9hZChjb25zdCB1aW50OF90KiwgaW50KTsKKyAgICB2b2lkIGNvbW1pdExvYWQoY29uc3QgU2hh
cmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbGVhck1haW5SZXNvdXJjZUxvYWRlcigpOwogCiAgICAg
dm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKQEAgLTQ5Myw3ICs0OTQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgbWFpblJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmV2aWV3UmVzcG9uc2VSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKQEAgLTUwMywxMyAr
NTA0LDEzIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAg
Ly8gQ29udGVudEZpbHRlckNsaWVudAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25z
dCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9y
IGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmlu
ZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
LCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIGRhdGFSZWNlaXZl
ZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZl
ZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIGJvb2wgbWF5YmVMb2FkRW1wdHkoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cAppbmRleCBiOWM0MTM1MjU2NzYyNjcyMTkwN2FmMzY2ZGZiMWRlYzc5NGMyNDc0Li44NjRiNjVh
MWQxMTMxZmI2MzcxMjViMTczOTkxZTlkM2UwYTZlNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNDM3LDIwICs0Mzcs
MjAgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKLSAgICBkaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5pZGVudGlmaWVy
KCksIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPmlk
ZW50aWZpZXIoKSwgYnVmZmVyKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCiAgICAgaWYgKG1fZGVsYXlDYWxs
YmFja3NGb3JJbnRlZ3JpdHlDaGVjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlRGF0YShidWZmZXIsIGZhbHNlKTsKIH0KIAogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IFJlc291cmNlVGltaW5nJiByZXNvdXJjZVRpbWluZykKQEAgLTQ5MywyMCArNDkzLDE0
IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmCiAKICAgICAgICAgaWYgKG9wdGlvbnMoKS5maWx0
ZXJpbmdQb2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xpY3k6OkRpc2FibGUpIHsKICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2Up
OwotICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCkpIHsKLSAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRv
JiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0
YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2Ut
PnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVE
YXRhKCpidWZmZXIsIGZhbHNlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VS
VChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RGVmYXVsdCk7CiAK
ICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVz
b3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJlc3BvbnNlLCBtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0g
RmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSA/IFJlc291cmNlUmVzcG9uc2U6OlBl
cmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6Ok5vIDogUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9y
bUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzKSk7Ci0gICAgICAgICAgICBpZiAoYXV0byogYnVm
ZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewotICAgICAgICAgICAgICAgIGJ1
ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNp
emUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlciwgZmFsc2UpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC02NjcsMTEgKzY2MSw4IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNo
CiAgICAgfQogICAgIGRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAK
LSAgICBpZiAoZGF0YSkgewotICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYg
c2VnbWVudCkgewotICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgc2VnbWVu
dC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgIGlmIChk
YXRhKQorICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCAqZGF0YSk7CiAKICAgICBj
b25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNz
T3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9t
U3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1p
bmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcygp
LCByZXNwb25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggZjFmNDFlZTkxZDZjZThhMWM1ODYy
MzgxN2IzNThmNzc0NjUxZTBhNC4uYzg2YmE3ZjQ1MzgzYjZjMjg2MDAzMmQzYWViZmJhM2UwODYw
NzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuaApAQCAtODYsMTQgKzg2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ly8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRS
ZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3Zl
cnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNo
ZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNvbnN0IFJlc291cmNlVGltaW5nJik7CiAgICAgICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKIAogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKICAgICAgICAgdm9p
ZCBkaWRGYWlsKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKaW5kZXggYjA0
NmVmMGRlMjA0OGVmZDQzMTk3MDI2MjJiOTZhN2RmMmZlYWZhNy4uNGZmOTM4MTgwZmRkMjhmYzcx
NWQwODg4MTYwOGZjNjI4OTQ5MmU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRX
cml0ZXIuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6cmVwb3J0
RGF0YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZXNvbHZlU3R5bGUoRG9j
dW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVpbGQpOwogfQogCi12b2lkIERvY3VtZW50V3Jp
dGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQordm9pZCBE
b2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
Ly8gRklYTUU6IENoYW5nZSB0aGVzZSB0byBBU1NFUlQgb25jZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MjcgaGFzIGJlZW4gcmVzb2x2ZWQuCiAgICAgUkVMRUFT
RV9BU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Tm90U3RhcnRlZCk7CkBAIC0yNzMsNyArMjczLDcg
QEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6
ZV90IGxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQobV9wYXJzZXIp
OwotICAgIG1fcGFyc2VyLT5hcHBlbmRCeXRlcygqdGhpcywgYnl0ZXMsIGxlbmd0aCk7CisgICAg
bV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
fQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjppbnNlcnREYXRhU3luY2hyb25vdXNseShjb25zdCBT
dHJpbmcmIG1hcmt1cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXgg
MDcxNzJjOTczOWViNTczNWJjODFmOGRlZjJmYjliMjg1YzI1NGQwYi4uYzBhMzRhNmI3ZTljZmU5
NjQzMDQ1YTk1ZTc5MzIyNTIzNjNiMjY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
V3JpdGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBEb2N1bWVudFBhcnNlcjsKIGNsYXNzIEZyYW1lOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogY2xhc3MgRG9jdW1lbnRXcml0
ZXIgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGJlZ2luKCk7CiAgICAg
Ym9vbCBiZWdpbihjb25zdCBVUkwmLCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxl
ID0gdHJ1ZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSBudWxscHRyKTsKLSAgICB2b2lkIGFk
ZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIHZvaWQgYWRk
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGluc2VydERhdGFTeW5jaHJvbm91
c2x5KGNvbnN0IFN0cmluZyYpOyAvLyBGb3IgYW4gaW50ZXJuYWwgdXNlIG9ubHkgdG8gcHJldmVu
dCB0aGUgcGFyc2VyIGZyb20geWllbGRpbmcuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA3NThjYmU4MDY1
NGU4ODg5N2FjZDllZDQxMTk5MGM4Njg2Y2FmM2JhLi5kMjNjOTZiNmM1MjgwM2ZlYzJlNDU3Yjdl
YzdkYmM5ZWIzNzk5NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApA
QCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFj
ZU11bHRpcGFydENvbnRlbnQoKQogewogfQogCi12b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KQordm9p
ZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjI2OTljOWM1MTgzMmE1YWE4Yzg5YWJhYjJm
ZmM3ZTA5ODViZmMwMC4uMTE2YTE3ZDFmNWM5ZTY0N2UxZjE0MWExMDA4NmIwNzk4MzkzZjNlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0
Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBm
aW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVp
bnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRl
ciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5n
KERvY3VtZW50TG9hZGVyKikgZmluYWw7CiAKICAgICBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZmRjOTdkYzQ2MmM4NzUyNmFhMTg4Zjc5NjhkNjBhMGM4
M2Q2ODBkOS4uMTFjMGE4ZjY4NjE1MDZlMDk2MWU1MmE4ZmY0YzcyMGIyNWJlMjk4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBib29s
IEZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTChVUkwmIHVybCwgTm9kZSYgaW5p
dGlhdG9yTm9kZSkKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcjsKICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVlc3RGcm9tRGVsZWdhdGUocmVxdWVzdCwg
aWRlbnRpZmllciwgZXJyb3IpOwotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRl
TWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygpLCAtMSwgU3RyaW5nKCkpLCAwLCAtMSwgLTEsIGVy
cm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9j
dW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Uo
dXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpKSwgbnVsbHB0ciwgLTEsIGVycm9yKTsKIAogICAg
IHVybCA9IHJlcXVlc3QudXJsKCk7CiAKQEAgLTIwODcsOCArMjA4Nyw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUpOwogCiAgICAgICAgIC8vIFNlbmQgcmVtYWluaW5n
IG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBtYWluIHJlc291cmNlLgotICAgICAgICBub3RpZmllcigp
LnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1h
aW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9u
c2UoKSwKLSAgICAgICAgICAgIG51bGxwdHIsIHN0YXRpY19jYXN0PGludD4obV9kb2N1bWVudExv
YWRlci0+cmVzcG9uc2UoKS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSksIDAsIG1haW5SZXNvdWNl
RXJyb3IpOworICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNv
dXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50
PihtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwg
bWFpblJlc291Y2VFcnJvcik7CiAKICAgICAgICAgVmVjdG9yPFJlZjxGcmFtZT4+IHRhcmdldEZy
YW1lczsKICAgICAgICAgdGFyZ2V0RnJhbWVzLmFwcGVuZChtX2ZyYW1lKTsKQEAgLTIxMzYsNyAr
MjEzNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAg
ICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIg
Ynl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAgICAgICAgICAv
LyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywg
dGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgICAgICAgICAvLyBDb3VsZCBiZSBh
biBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KLSAgICAgICAgICAgIG5vdGlmaWVyKCku
c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRl
bnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIDAsIHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2Uu
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBlcnJvcik7CisgICAgICAgICAgICBub3RpZmll
cigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCks
IGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNlLCBudWxscHRyLCBzdGF0aWNfY2FzdDxpbnQ+
KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgZXJyb3IpOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gRklYTUU6IFdoeSBvbmx5IHRoaXMgZnJhbWUgYW5kIG5vdCBwYXJlbnQgZnJh
bWVzPwpAQCAtMzE2Niw3ICszMTY1LDggQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1l
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAg
ICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikg
PyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVz
IDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5v
KSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdh
dGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCBy
ZXNwb25zZSwgZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwLCAtMSwgZXJyb3IpOworCisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdh
dGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCBy
ZXNwb25zZSwgZGF0YSwgLTEsIGVycm9yKTsKICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIApA
QCAtMzY0Nyw3ICszNjQ3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXIKIAogICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNvdXJjZS5yZXNwb25zZSgpOwogICAgIHJlc3BvbnNl
LnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok1lbW9yeUNhY2hlKTsKLSAgICBu
b3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIu
Z2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLCAwLCByZXNvdXJjZS5lbmNv
ZGVkU2l6ZSgpLCAwLCBlcnJvcik7CisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdh
dGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0
LCByZXNwb25zZSwgbnVsbHB0ciwgcmVzb3VyY2UuZW5jb2RlZFNpemUoKSwgZXJyb3IpOwogfQog
CiB2b2lkIEZyYW1lTG9hZGVyOjphcHBseVVzZXJBZ2VudElmTmVlZGVkKFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFiYzEyODk4ZDEyMzY1Mi4uMzUyYTRjNGZiNTA0
ZjdjZDRkMmVjNDA2ZTZiYzI5MTFhNTVmZDA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTcsNyArNyw3IEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQogICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIApAQCAtNTAsNyArNTAsNyBAQAogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpZmRlZiBfX09CSkNfXyAKKyNpZmRlZiBfX09C
SkNfXwogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiB0eXBlZGVmIGlkIFJlbW90
ZUFYT2JqZWN0UmVmOwogI2Vsc2UKQEAgLTk4LDcgKzk4LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5k
bGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBXaWRnZXQ7CiAKQEAg
LTIxNCw5ICsyMTQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFy
dENvbnRlbnQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVu
dExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgPSAwOwotICAg
IAorCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgPSAwOwogCkBAIC0y
NzIsNyArMjcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25z
dCBVUkwmKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgCisKICAgICB2
aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFt
ZShDYWNoZWRGcmFtZSopID0gMDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMzgxLDcg
KzM4MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBBbGxvd3NDb250ZW50SmF2
YVNjcmlwdCBhbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIEFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OjpZZXM7IH0KLSAgICAKKwog
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5h
YmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlvcigpIHsgfQpA
QCAtMzkwLDcgKzM5MCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlUERGUGx1Z2luKGNvbnN0IFN0cmluZyYsIFN0cmluZ1Zp
ZXcpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKLSAgICAKKwogICAgIHZpcnR1YWwg
Ym9vbCBpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDVkMTIwZTI0N2FjMjYyNzExNjFkZTBkYzUyMzAyNGRjOGRlMzRkNjkuLjFhMTdh
NzBmYTU4YzcyMjhmNjM4OTM1OWRkMGQzMzlkMGUwNWNkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIzMSwxMyArMjMxLDEzIEBAIHZv
aWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCB1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXNTCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywg
Ynl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIE1lZGlhUmVzb3VyY2U6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAg
ICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAobV9j
bGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOwog
fQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggZmY2YzI4ODcxMDA4OGY0YjA1
NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NS4uN2I1NTc3MjBlZjA1MzNmYmFhMjI2NTY1MzhlZmRkOTZm
NjE3OWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5o
CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsK
ICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJj
ZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
IG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5jcHAKaW5kZXggNjA0M2FjOWJlMjY3ZWE0ZmJjNzFlMTExOGI5MDc5MTU1ZTM5MTUwMy4u
NWNhYWRmNjI5YzcwYWUwODZiNzdiZDcyY2QyODY3NTM2YjhmYTk3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0x
NDEsMzAgKzE0MSwxNCBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgIH0pOwogfQogCi12
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKLSAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0g
ICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVu
Y29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRU
eXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgaWYgKG1fY2xpZW50KSB7
Ci0gICAgICAgIGlmIChidWZmZXIpIHsKLSAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21l
bnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEodGhpcywgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBkYXRhLCBsZW5ndGgpOwotICAgIH0KKyAgICBpZiAobV9jbGllbnQpCisgICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIpOwogCi0gICAgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1
ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5
bG9hZFR5cGUpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
aAppbmRleCBiNTE3NGVkYzk0Yjk5MjM5MDIwNWYwZmFkNDUyZWE1YWMzODc4OTM4Li4xZWM3ZDYx
ZTNhMTc1YzIyYjU1ODc1OGQzN2VkMGM1NWJlNWYxM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtMzYsMTIgKzM2LDEz
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVk
QnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIHsgfQogICAgIHZp
cnR1YWwgYm9vbCB3YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAt
NjIsOCArNjMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBAIC03NCw4
ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLQogICAgIHZvaWQgbm90aWZ5RG9uZSgp
OwogCiAgICAgV2Vha1B0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudD4gbV9jbGll
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApp
bmRleCAxNDdiNDVlMDY0MzgxMjI3YjA1MjIwNjQ0MTg1MjNjMDc5ZjY0ZDE0Li43YzJhYjI5MTA3
MWRiYzM0NzI3NWRjZThkMzc5N2QyNDY3ODQxNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogI2lmIFVTRShRVUlDS19M
T09LKQogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgpAQCAtNzgsMTIgKzc5LDEyIEBAIHZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlciogbG9h
ZGVyLCBjb25zdCBSZXNvCiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLT5k
b2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgciwgbG9hZGVyKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIq
IGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJl
c291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkK
LSAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNyZW1lbnRQcm9ncmVzcyhsb2FkZXItPmlkZW50
aWZpZXIoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50
UHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGJ1ZmZlci5zaXplKCkpOwogCi0gICAgZGlz
cGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRl
bnRpZmllcigpLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlz
cGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRl
bnRpZmllcigpLCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWROb3RpZmllcjo6ZGlkRmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTE1OSwxMyArMTYw
LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3Bv
bnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLCBpZGVudGlmaWVyLCBsb2Fk
ZXIsIHIsIHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6
ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6
OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgLy8gTm90aWZ5aW5nIHRoZSBGcmFtZUxvYWRl
ckNsaWVudCBtYXkgY2F1c2UgdGhlIGZyYW1lIHRvIGJlIGRlc3Ryb3llZC4KICAgICBSZWY8RnJh
bWU+IHByb3RlY3QobV9mcmFtZSk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNw
YXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgZGF0YUxlbmd0
aCk7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVDb250
ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgYnVmZmVyLnNpemUoKSk7CiAKLSAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKCZtX2ZyYW1lLCBpZGVudGlmaWVy
LCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSgmbV9mcmFtZSwgaWRlbnRpZmllciwgYnVmZmVy
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRp
c3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MsIFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKQEAgLTE4Niw3
ICsxODcsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZhaWxMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cgogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJhbWUsIGxvYWRlciwgaWRlbnRpZmllciwgZXJy
b3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdh
dGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhE
b2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBpbnQgZW5jb2Rl
ZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIC8vIElmIHRo
ZSByZXF1ZXN0IGlzIG51bGwsIHdpbGxTZW5kUmVxdWVzdCBjYW5jZWxsZWQgdGhlIGxvYWQuIFdl
IHNob3VsZAogICAgIC8vIG9ubHkgZGlzcGF0Y2ggZGlkRmFpbExvYWRpbmcgaW4gdGhpcyBjYXNl
LgpAQCAtMTk5LDggKzIwMCw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsCiAgICAgaWYgKCFy
ZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9h
ZGVyLCBpZGVudGlmaWVyLCByZXNwb25zZSk7CiAKLSAgICBpZiAoZGF0YUxlbmd0aCA+IDApCi0g
ICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhLCBk
YXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXIt
PnNpemUoKSkKKyAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50aWZp
ZXIsICpidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKIAogICAgIGlmIChlcnJvci5pc051bGwo
KSkgewogICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAppbmRleCA0ZGJkNGNjNDlkNjUw
NDIxMTg0ZTYwYzI0ZGQ3MTRkY2JlMGJkYjBkLi5mNjQyNWJhN2JlOWZmMjZlOTlmN2JlN2NjMzJh
OGU1ZGZiYjAwZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBSZXNvdXJjZUxvYWROb3RpZmllciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVzb3VyY2VMb2FkTm90aWZpZXIpOwpAQCAtNTUs
MTggKzU2LDE4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiwgY29u
c3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAg
ICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciog
PSBudWxscHRyKTsKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2Fk
ZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29u
c3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpc3Bh
dGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2
b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIHZvaWQgc2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVN
ZXNzYWdlcyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxjb25zdCBT
aGFyZWRCdWZmZXI+LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIAogcHJpdmF0ZToKICAgICBGcmFtZSYgbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDZkZWJiMjU4OGEzZTgyYjIxYzYxZDdlOGYzNmU0ZjRi
YmJhMjVlNjAuLjY2NDdjMjcwODExODBlYmNlYzJiNWNhMjlmZDYwYjcyM2FiNjQ4MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjk5LDkgKzI5OSw5IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKCkKIAogICAgICAgICBhdXRvIGRhdGFT
aXplID0gZGVjb2RlUmVzdWx0LT5kYXRhLnNpemUoKTsKICAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSBkYXRhUmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UodXJsLCBk
ZWNvZGVSZXN1bHQudmFsdWUoKSk7Ci0gICAgICAgIHRoaXMtPmRpZFJlY2VpdmVSZXNwb25zZShk
YXRhUmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgZGF0YVNpemUsIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRlY29kZVJl
c3VsdC0+ZGF0YSkpXSgpIG11dGFibGUgeworICAgICAgICB0aGlzLT5kaWRSZWNlaXZlUmVzcG9u
c2UoZGF0YVJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIGRhdGFTaXplLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkZWNv
ZGVSZXN1bHQtPmRhdGEpKV0oKSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMtPnJlYWNoZWRUZXJt
aW5hbFN0YXRlKCkgJiYgZGF0YVNpemUgJiYgbV9yZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiSEVB
RCIpCi0gICAgICAgICAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGRhdGEp
LCBkYXRhU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgICAgICAgICB0
aGlzLT5kaWRSZWNlaXZlQnVmZmVyKGRhdGEsIGRhdGFTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVz
b3VyY2UpOwogCiAgICAgICAgICAgICBpZiAoIXRoaXMtPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkp
IHsKICAgICAgICAgICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOwpAQCAt
MzI4LDcgKzMyOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1
dGVSZXNvdXJjZSgpCiAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CkBAIC0zMzYs
MTAgKzMzNiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZyYWdtCiAgICAgaWYgKGRhdGFQYXlsb2Fk
VHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2VEYXRh
LnJlc2V0KCk7CiAKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBl
bmQoKmJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsKKyAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoYnVmZmVyKTsKIH0KIAogY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgp
IGNvbnN0CkBAIC01MzksNyArNTM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIsIENvbXBsZXRpb25IYW4KICAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywgbV9y
ZXNwb25zZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAg
ICAvLyBUaGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYXJlIG5vdCBxdWl0ZSB2YWxpZCBoZXJlLCBz
aW5jZSBhIHN1YmNsYXNzCiAgICAgLy8gbWlnaHQgb3ZlcnJpZGUgZGlkUmVjZWl2ZURhdGEgaW4g
YSB3YXkgdGhhdCBpbnZhbGlkYXRlcyB0aGVtLiBUaGlzCkBAIC01NDcsMzAgKzU0NCwyMiBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIGxvbmcgbAogICAgIC8vIEFTU0VSVChjb24gPT0gY29ubmVjdGlvbik7
CiAgICAgLy8gQVNTRVJUKCFtX3JlYWNoZWRUZXJtaW5hbFN0YXRlKTsKIAotICAgIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwg
ZGF0YVBheWxvYWRUeXBlKTsKKyAgICBkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERh
dGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
Cit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewotICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
bnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxv
YWRUeXBlKTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotICAgIC8vIFRoaXMgbWV0aG9kIHNob3Vs
ZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KLSAg
ICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYgIWxlbmd0aCkpOwotCiAgICAgLy8gUHJvdGVj
dCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nl
c3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5n
IHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KICAgICBSZWY8UmVz
b3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYWRkRGF0YU9yQnVmZmVy
KGRhdGEsIGxlbmd0aCwgYnVmZmVyLmdldCgpLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIGFkZEJ1
ZmZlcihidWZmZXIsIGRhdGFQYXlsb2FkVHlwZSk7CiAKICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0
IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0
aGUgcmlnaHQgdGhpbmcuCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBh
bmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAg
IC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmICht
X29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2Fs
bGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlk
UmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8
aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmll
cigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLCBzdGF0aWNf
Y2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1l
dHJpY3MpCkBAIC03MjksMTQgKzcxOCwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJgogICAg
IGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQog
ewotICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkQnl0ZXMpOworICAgIGRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZUJ1
ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVz
KTsKKyAgICBkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3MGVhMjIwZGMxN2M3Mzc2ZWQ2
NjBmYTdhNjFhODRlMzFjMzM0Y2JiLi4wOWIxMTkzMDJkNmNjZmMyMDFjYWUyMDlkMGY1MjFiMmE4
MTQyNTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMTA3LDgg
KzEwNyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjayk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY3LDggKzE2Nyw2IEBAIHByb3RlY3RlZDoKIAogICAg
IGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9jYW5jZWxsYXRpb25TdGF0dXMg
Pj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIAogICAgIHZv
aWQgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9v
cHRpb25zLnJlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQb2xpY3k7IH0KICAgICBSZWZlcnJlclBv
bGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5yZWZlcnJlclBv
bGljeTsgfQogCkBAIC0xOTIsNyArMTkwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKIAotICAgIHZvaWQgYWRkRGF0YU9y
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcios
IERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBhZGRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwog
ICAgIHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIApAQCAtMjAyLDggKzIwMCw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUq
LCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5k
bGUqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDM3ZDBiYjgyMWFiZDg2YTliNTYwNmUxMjdlZmM5NDEyYTUxYmIxYTkuLjk3MmYy
YWYyMjYwM2Y0MjRjZDg3NzVmNTkxMDEwZTJkNzY5MzhhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTE4LDMyICs1MTgsMTUgQEAgdm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlUG9saWN5KCkKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1
YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUgZGF0YVBheWxvYWRUeXBlKQogewogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRv
IHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIuZ2V0KCkpIHsKLSAgICAgICAgaWYgKHBy
ZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCkpCisgICAgICAgIGlmIChw
cmV2aWV3TG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKLSAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7Ci19Ci0KLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0jaWYgVVNFKFFV
SUNLX0xPT0spCi0gICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5n
ZXQoKSkgewotICAgICAgICBpZiAocHJldmlld0xvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZm
ZXIuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWRE
YXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewogICAgIEFT
U0VSVChtX3Jlc291cmNlKTsKIAogICAgIGlmIChtX3Jlc291cmNlLT5yZXNwb25zZSgpLmh0dHBT
dGF0dXNDb2RlKCkgPj0gNDAwICYmICFtX3Jlc291cmNlLT5zaG91bGRJZ25vcmVIVFRQU3RhdHVz
Q29kZUVycm9ycygpKQpAQCAtNTU1LDEzICs1MzgsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
LAogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2Ug
dG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KICAgICBSZWY8
U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIuY29weVJl
ZigpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKKyAgICBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5
bG9hZFR5cGUpOwogCiAgICAgaWYgKCFtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KSB7CiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogbGVuZ3RoKTsKKyAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyLm1h
a2VDb250aWd1b3VzKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuaAppbmRleCA4MzJjOWYwZTczZDM4NDY0YTc5NWY0MDM4NjBmNzljMzRlNzNi
YzdmLi4zZGJkNTMzOGFmZTQ5YjQ3ODU3ZDUzNDA5Nzg4NzUyZWFhMWFlZDRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzMsOCArNzMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNl
bmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0
b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9s
aWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBFeHBl
Y3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hl
Y2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlUmVx
dWVzdCYgbmV3UmVxdWVzdCk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5
RG9uZShMb2FkQ29tcGxldGlvblR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmgKaW5kZXggY2YyZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3NDQxMDc0
MmEwZC4uM2QxOTI4NjJmMjc3MjliMmYzOGRiNTRiZDgzNjc5OTUyNWMwMTlkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzgsNyArMzgsNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAg
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNw
b25zZTsgfQogICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1f
ZGF0YS5nZXQoKSB9KTsgfQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBhcHBl
bmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIHsgbV9kYXRhLmFwcGVuZChidWZmZXIpOyB9
CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCmluZGV4IDg0ZDc5YjBjOTlkZjEwZDk5
MzgwYjg0ODMxNzM3MWJjMWU4NTczYmYuLmNlZjBjOGYxZjE3ZDBmNTc2NTlhMzU0MWI1NGY2Mzg5
OTA2NGIxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJD
bGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNlVGltaW5n
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2ln
bmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sIC8qIHVzZVN0ckxlbiAqLykg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRp
bWluZyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVM
b2FkZXJDbGllbnRXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxv
YWRlckNsaWVudFdyYXBwZXIuaAppbmRleCA0MmFlNjQ5MDlhNWUwZmU0NGM2YTVlMDA2MGQ1OGM5
NjRlYzU2MDUxLi5mMzZhMmQ0MDdhZjg4MTU5MDQyODY2Yjg1ZTllMDE4NjFkYWFjNzI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdy
YXBwZXIuaApAQCAtNjYsMTAgKzY2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgIH0KIAotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9v
bCB1c2VTdHJMZW4pCiAgICAgewogICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCB1c2VTdHJMZW4pOwogICAgIH0KIAogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cAppbmRleCBkZmY4OTcwMWM5MzliYzczYzM3MDMyYWQ5YzQyYWQyMDYzMjZhZDZlLi43YzAzNDk0
NWVlMDNhNzRmNTMzMzliYjgxZmZhMGUwNmM2OWM3MTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0yMzEsMTQgKzIzMSwxMyBA
QCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcgogICAgIH0sIG1fdGFza01vZGUpOwogfQogCi12b2lk
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgdXNlU3RyTGVuKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBidWZm
ZXIoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVy
ID0gUmVmIHsgKm1fd29ya2VyQ2xpZW50V3JhcHBlciB9LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmll
ciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFJlZiB7ICptX3dvcmtlckNsaWVudFdyYXBwZXIgfSwg
d29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZm
ZXIgPSBSZWYgeyBkYXRhIH0sIHVzZVN0ckxlbl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8
IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIHByb3RlY3RlZFdvcmtl
ckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpOworICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0
YShidWZmZXIsIHVzZVN0ckxlbik7CiAgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVz
dElkZW50aWZpZXIsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIpOwog
ICAgIH0sIG1fdGFza01vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuaAppbmRleCA3MjNiNDU2ZWM4ZTllMzA2ZmMxOGNjOGYzNmRlNmRj
ZDhhZTMwNDcwLi4zMzlkNmY0NzMxMGExZWQyODkwMzZhZDBhNDA0ZjM4YTdhMjY4NjI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTEw
NSw3ICsxMDUsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBBbGwgZXhlY3V0ZWQgb24gdGhlIG1h
aW4gdGhyZWFkLgogICAgICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIG92ZXJy
aWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VU
aW1pbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDUxOTc4ZjQxMjM4NzRkYzU2NjBl
ZmY0NzA2NTk3MDdkNGU1ZDg1YTcuLmVkNzU2NjUyNmIyZDdlZmJmMWM1MTcwMjA5NWE4NzliYWY1
Njk0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgQXBwbGljYXRp
b25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrRm9yTWFpbkVycm9yKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiwgaW50LCBsb25nIGxv
bmcsIGJvb2wpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRhUmVj
ZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nLCBib29sKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5oCmluZGV4IGI5NjM1NmU3ODU2MTM4OTU2YWU0YzA1OTgzMTcwY2RmNzIzNjcyYTAuLmQyYWVh
ZWMzZTE0YzYzYmNiZjYwMWU5YWFmMDI0YzFmOWVjNDc2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC05NSw3
ICs5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1heWJlTG9hZE1haW5SZXNvdXJjZShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIHZvaWQgbWF5YmVMb2FkTWFp
blJlc291cmNlRm9yUmVkaXJlY3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3Vic3RpdHV0ZURh
dGEmKTsKICAgICBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yTWFpblJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIG1haW5S
ZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIGJvb2wgYWxsQXRPbmNlKTsKKyAgICB2b2lkIG1haW5S
ZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIGJvb2wgYWxsQXRPbmNlKTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ01h
aW5SZXNvdXJjZSgpOwogICAgIHZvaWQgZmFpbGVkTG9hZGluZ01haW5SZXNvdXJjZSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IDJiYjNmZTc1Yjk5NzdlODMzMjJhZTI1ODBmNzIxMmVl
NWJmMjE2MTAuLjI1NmU4OWIyMTFiMzhiMmQyMWRjZDY2NTc4MjY5ZTY2MDczNjczMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSwxMCBAQCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxv
YWRlciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3Bv
bnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGlmIChtX3Bh
dGguaXNFbXB0eSgpKQorICAgICAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNw
b25zZSgpLCBSZWZQdHIgeyAmZGF0YSgpIH0pOworICAgIGVsc2UKKyAgICAgICAgbG9hZGVyLmRl
bGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVy
LmNwcAppbmRleCA3YjJmYjZjOWMyNTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRjNzEyOTI2Li41NGZl
ZWQyY2E2NDEyYjQ1MjA5ODcwYzc3MzQzNjA5ZDg1MDliNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmNwcApAQCAtOTksOSArOTksOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
CiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UgPSBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmNyZWF0ZShtX3Jlc291cmNlLT51cmwoKSwgcmVzcG9uc2UsIG1fdHlwZSk7CiB9CiAKLXZv
aWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNl
LT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+
YXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVy
OjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgbmV3
UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDAyZDdhZDk3YTI4ZDQ3YzNmYWI1ZTNiYWIwN2ViZTliMDY5ZTIzMmQuLjBiMjk2
Mjg4ZjMxYTQzMjVkNDg0OWE0NDJlOGFlNjAyYzE3MzE5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
ZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHJl
ZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDUwNDY1Y2M2YzAxMzNlNWE3NzQ0NWNmOTQ3
MzMzZmUyMDY0MDg2MWQuLmEyZGFmYzlkODdjMjY3YTJmOTVlNDg1NWZkYjA4NGRhMjlkM2YyNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4
LDcgKzQ2OCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBt
X3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQg
Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLT5zaXplKCkpOwpAQCAtNTU4LDE1ICs1NTgsMTUgQEAgRW5jb2RlZERhdGFT
dGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkK
IHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0
YSk7CisgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YS5tYWtlQ29udGlndW91cygpKTsKICAg
ICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZElt
YWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3Zv
aWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpEb05vdEJ1ZmZlckRhdGEpOwotICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOwotICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRh
KGRhdGEsIGxlbmd0aCk7CisgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoYnVmZmVyKTsKKyAgICBD
YWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShidWZmZXIpOwogfQogCiB2b2lkIENhY2hlZEltYWdl
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKaW5kZXggZTg0MzA4NzBiNDhhZjNkYzk1YmJhM2NhZDFhNjRlMDY4YWUx
NTUxMy4uYTVkYzYzZjIzZGJkNDFhMjcwZWU1NmMzMmE0NDE3NzdkNmFkZGI0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVw
ZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShi
b29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3Vy
Y2U6OlN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKIApAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwog
ICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZv
aWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAg
ICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRl
eCA3MWUxNjA4MmZmZTY1NWQxMTFmMTY5OTBkMTIzMDUzNWJlYWNiZjk1Li5kMzM2MTEzMjEzZmJl
YmZmNGU5MWZmNjVmODNmZmUyNGQzZThhMGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBDYWNo
ZWRSYXdSZXNvdXJjZTo6Q2FjaGVkUmF3UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgVHlwZSB0eXBlLAogICAgIEFTU0VSVChpc01haW5Pck1lZGlhT3JJY29uT3JSYXdS
ZXNvdXJjZSgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2Fj
aGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAogewogICAgIHNpemVfdCBwcmV2aW91
c0RhdGFMZW5ndGggPSBlbmNvZGVkU2l6ZSgpOwotICAgIGlmICghZGF0YSB8fCBkYXRhLT5zaXpl
KCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQorICAgIGlmIChkYXRhLnNpemUoKSA8PSBwcmV2aW91
c0RhdGFMZW5ndGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIGRh
dGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CisgICAgcmV0dXJuIGRhdGEuZ2V0
U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCkBAIC03
Miw3ICs3Miw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgICAgICBwcmV2aW91c0RhdGFTaXplICs9
IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gbm90
aWZ5U2NvcGUobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSwgdHJ1ZSk7Ci0gICAgICAgIG5vdGlm
eUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGEoKSwgaW5jcmVtZW50
YWxEYXRhLnNpemUoKSk7CisgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5j
cmVtZW50YWxEYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKICAgICB9CiAgICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLT5zaXplKCkpOwogCkBAIC04OSwxMSArODksMTEgQEAgdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEpCiAgICAgfQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OnVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRh
dGEpOwotICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKTsKLSAg
ICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOworICAgIG5vdGlmeUNs
aWVudHNEYXRhV2FzUmVjZWl2ZWQoYnVmZmVyKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
RGF0YShidWZmZXIpOwogfQogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKQEAgLTExMCw5ICsxMTAsOSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
CiAgICAgICAgIGlmIChkYXRhKSB7CiAgICAgICAgICAgICBpZiAoZGF0YSAhPSBtX2RhdGEuZ2V0
KCkpCiAgICAgICAgICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAg
ICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFs
RGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEg
PSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuaygqbV9kYXRhKSkgewogICAgICAgICAgICAg
ICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgbm90aWZ5
Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50
YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVj
ZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKQEAgLTEz
MCwxNSArMTMwLDE1IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QKICAgICB9CiB9CiAKLXZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6bm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
LSAgICBpZiAoIWxlbmd0aCkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKLSAgICAgICAgYy0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBk
YXRhLCBsZW5ndGgpOworICAgICAgICBjLT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CiB9
CiAKIHN0YXRpYyB2b2lkIGl0ZXJhdGVSZWRpcmVjdHMoQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmF3UmVzb3VyY2U+JiYgaGFuZGxlLCBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCYgY2xpZW50
LCBWZWN0b3I8c3RkOjpwYWlyPFJlc291cmNlUmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZT4+JiYg
cmVkaXJlY3RzSW5SZXZlcnNlT3JkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTcwLDkgKzE3MCw5IEBAIHZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgYykK
ICAgICAgICAgICAgIGlmICghaGFzQ2xpZW50KCpjbGllbnQpKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgICAgICBtX2RhdGEt
PmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgICAgICAgICAgbV9k
YXRhLT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChoYXNDbGllbnQoKmNsaWVudCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgc2VnbWVudC5kYXRhKCksIHNl
Z21lbnQuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2Vp
dmVkKCp0aGlzLCBidWZmZXIpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IGE3ODY1ZjhhZDE3OGFlZmIz
MjIwYTU2ZGNmZjE5NTk5M2NmOTVhZTQuLjM2ZTQ3YTFkYmEyMzEyOGRjNTMwNzNiNzBiNWYzZjg1
MzgwNGFlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oCkBAIC0yOCw2ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q2FjaGVkUmVzb3VyY2VDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCiBjbGFzcyBDYWNoZWRSYXdS
ZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CkBAIC01Miw3ICs1Myw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAg
ICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQpAQCAtNjYsOCArNjcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dp
dGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgbWF5
VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0Vu
Y29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqKSBjb25zdDsKLSAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2Fz
UmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgdm9pZCBwcmV2aWV3UmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZUNsaWVudC5oCmluZGV4IDIzZWFiOGRmMjk1OGZmOGI0OWYzNTQ1YjUwODNmZTI5
ODllZjEyMjAuLmNkNjUwYTJmMzEzNmNlOWIyNjJmYmRmYzgyOTI4YmYyMTA3OWZiY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNs
aWVudC5oCkBAIC0zMSw2ICszMSw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNlVGlt
aW5nOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CkBAIC00Niw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25z
ZShDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IHVpbnQ4X3QqIC8qIGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
eyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVRpbWluZyYpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcAppbmRleCA5ZGUwYTA0Y2Q1ZWM1ZjNmYWQyZmIxNmQ3YjMyMmM4NThhMzhh
NmIyLi43YjljNjFmOTY2MTc1NDZiNjZiY2MzYzYzZWNhMGU4NTdlMjYyZWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTM0MSw3ICsz
NDEsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRh
QnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6
dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQpCit2b2lkIENhY2hlZFJlc291cmNl
Ojp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZm
ZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBj
OTgyZGQ2OTM3YTBiYzJiZjM4YzQyNjEyNmZmZTZlNzhjNzk2NDc4Li41MzRlMDEyY2M0ZmE1ZGQy
YmUxZmQ2ZWVlNWFhNmFlNGU1ZmFlMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmly
dHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVz
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aAppbmRleCA5NmQ4OTgyZTkzNTAzNDc2OTZmYzk2OWQ1ODVhYjcwNzVkZTAyMGVkLi5jYTAxOTM0
ZDMxYmE1ZDUwOWZlYmU3ZDJmOTEyMjQ5ZDI3MTI2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtNDcsOCArNDcsNyBAQCBwdWJs
aWM6CiAgICAgfkxlZ2FjeVByZXZpZXdMb2FkZXIoKTsKIAogICAgIGJvb2wgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlkRmluaXNoTG9hZGlu
ZygpOwogICAgIHZvaWQgZGlkRmFpbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggNDg3NTZhMzNiNTg3MmI0NGIyZjBiYTA4
NDI0MWY4NmNmYWViY2FhMC4uYTI0YjhjNTlkNDYwYWZmNWUyZmVmODMxOTBjMjA4NjU3MjM2NWQz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5tbQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYwogICAgIHJldHVy
biBlbXB0eUNsaWVudCgpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAobV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlcikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNzEsNyArNzEsNyBAQCBib29sIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBhcHBlbmRpbmcgYnVmZmVy
IHdpdGggc2l6ZSAlbGQuIiwgYnVmZmVyLnNpemUoKSk7CiAgICAgbV9vcmlnaW5hbERhdGEuYXBw
ZW5kKGJ1ZmZlcik7CiAgICAgbV9jb252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNvdXJjZSgpOwotICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CisgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2Miw4ICsxNjIs
NyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZl
RGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29ucwogICAgIGlmICghbV9oYXNQcm9jZXNzZWRSZXNw
b25zZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBkYXRhQ29weSA9IGRhdGEuY29weSgp
OwotICAgIHJlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoZGF0YUNvcHkp
LCBkYXRhQ29weS0+c2l6ZSgpLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICByZXNvdXJjZUxvYWRl
ci0+ZGlkUmVjZWl2ZUJ1ZmZlcihkYXRhLCBkYXRhLnNpemUoKSwgRGF0YVBheWxvYWRCeXRlcyk7
CiB9CiAKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZEZpbmlz
aENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpCkBAIC0yNDMsMTEgKzI0Miw2IEBAIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRl
ciwgY29uc3QgUmVzb3VyY2VSCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVy
IGNyZWF0ZWQgd2l0aCBwcmV2aWV3IGZpbGUgbmFtZSBcIiVzXCIuIiwgbV9jb252ZXJ0ZXItPnBy
ZXZpZXdGaWxlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKLXsKLSAgICByZXR1cm4gZGlkUmVjZWl2ZUJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCBsZW5ndGgpLmdldCgpKTsKLX0KLQogYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiB7CiAgICAgcmV0dXJuICFt
X3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3Vy
Y2UuY3BwCmluZGV4IDYwMjYzMWJiN2NkMTA4NjBiMWEzMTIxMDQzYzk3ZDhlZmU0NDc2MWQuLjY3
YWM3N2UyYmY3NjEwNDVjOGMxOGQ1YzdhZGVjN2Y3MzM4YWI3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRl
eHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTIxMCwxMyArMjExLDEzIEBAIHZvaWQg
RXZlbnRTb3VyY2U6OmRpc3BhdGNoRXJyb3JFdmVudCgpCiAgICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAotdm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRXZlbnRTb3Vy
Y2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sKQogewog
ICAgIEFTU0VSVChtX3N0YXRlID09IE9QRU4pOwogICAgIEFTU0VSVChtX3JlcXVlc3RJbkZsaWdo
dCk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9pc1N1
c3BlbmRlZEZvckJhY2tGb3J3YXJkQ2FjaGUpOwogCi0gICAgYXBwZW5kKG1fcmVjZWl2ZUJ1ZmZl
ciwgbV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuZ3RoKSk7CisgICAgYXBwZW5kKG1fcmVjZWl2
ZUJ1ZmZlciwgbV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkp
OwogICAgIHBhcnNlRXZlbnRTdHJlYW0oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5o
CmluZGV4IGQwMTJkMzc3ZDE5NzY3NWYwZmUxMTQ1ZjE3MTlmMTdmZGRiZmVhM2IuLmQ2NjJhZTI4
MDZmNGIyNDg2N2IwMTYwOGUwNGRiYjRmOTdkYmEwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291
cmNlLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAppbmRleCA5ZTcyZTQ0YTJlYWM0ZDhlZjczMGI5
ODcxZDBlYzUwOGVkOWZhYzQ0Li40NjJjZjNiODc0MjMzODViZTgzYTAwMmU0M2Y3NDQ3Nzk5ODdl
ZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRG
aWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0
ZXIuaApAQCAtMjYsMTUgKzI2LDE3IEBACiAjaWZuZGVmIFBsYXRmb3JtQ29udGVudEZpbHRlcl9o
CiAjZGVmaW5lIFBsYXRmb3JtQ29udGVudEZpbHRlcl9oCiAKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTQsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+UGxhdGZvcm1Db250ZW50RmlsdGVyKCkgPSBkZWZhdWx0OwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkQWRk
aW5nRGF0YSgpID0gMDsKICAgICB2aXJ0dWFsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBy
ZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDM5NjE1Njg4
NGI0Yjc5ZTNlNTVkNTY5MWQ3MThjODg3NWZmOWZmNy4uYjg2ZDQ5ZDRhZjMzYzY0NTgyYjZiZWE0
MDYyMjYxNTk5MmQ1YWNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OnRha2VEYXRhKCkKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CiAg
ICAgaWYgKGhhc09uZVNlZ21lbnQoKSAmJiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1
aW50OF90Pj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQotICAgICAg
ICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4Y2hhbmdlKHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4o
bV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpLCBWZWN0b3I8dWludDhfdD4o
KSk7CisgICAgICAgIGNvbWJpbmVkRGF0YSA9IHN0ZDo6ZXhjaGFuZ2Uoc3RkOjpnZXQ8VmVjdG9y
PHVpbnQ4X3Q+Pihjb25zdF9jYXN0PERhdGFTZWdtZW50Jj4obV9zZWdtZW50c1swXS5zZWdtZW50
LmdldCgpKS5tX2ltbXV0YWJsZURhdGEpLCBWZWN0b3I8dWludDhfdD4oKSk7CiAgICAgZWxzZQog
ICAgICAgICBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1f
c2l6ZSk7CiAKQEAgLTIzMSw2ICsyMzEsOCBAQCB2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNsZWFyKCkKIAogUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNvcHkoKSBjb25zdAogeworICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJl
dHVybiBtX3NlZ21lbnRzLnNpemUoKSA/IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNb
MF0uc2VnbWVudC5jb3B5UmVmKCkpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIpOwogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1f
c2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CkBAIC0y
NDgsNiArMjUwLDEzIEBAIHZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21l
bnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0CiAgICAgICAgIGFwcGx5KFNw
YW4geyBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7
CiB9CiAKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnRBc1NoYXJl
ZEJ1ZmZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYpPiYgYXBwbHkp
IGNvbnN0Cit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfTsKKyAgICBm
b3IgKGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQorICAgICAgICBhcHBseShTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzZWdtZW50LnNlZ21lbnQuY29weVJlZigpKSk7Cit9CisKIGJvb2wgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBw
cmVmaXgpIGNvbnN0CiB7CiAgICAgaWYgKHByZWZpeC5lbXB0eSgpKQpAQCAtNDEzLDcgKzQyMiw3
IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVl
OwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2Vn
bWVudCkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVudD4m
JiBzZWdtZW50KQogewogICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKICAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CkBAIC02MDEsNyArNjEwLDcgQEAg
dm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIoKQogICAgICAgICBtX2J1ZmZl
ciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogfQogCi1TaGFyZWRCdWZmZXJE
YXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQs
IHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXpl
KQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxjb25zdCBE
YXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQp
KQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQog
ICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25X
aXRoaW5TZWdtZW50KQpAQCAtNjE3LDcgKzYyNiw3IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpT
aGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYgb3RoZXIsIHNp
CiAKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1f
c2VnbWVudDsKKyAgICBjb25zdCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3Nl
Z21lbnQ7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7
IH0sCiAgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggYzI3YzkyNjlmZmVmMjQ5YWI1ZThhYmEy
NGQ3NjJmYzQwYzFjMjMwMC4uMzQ4NGE2YTUzYjgwNDA2NGJlNTdhMjgzZWY0MThhOGE2MmQ1ODlh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTE3OCwxMiArMTc4
LDEzIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQo
Y29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2Vn
bWVudEFzU2hhcmVkQnVmZmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4m
Jik+JikgY29uc3Q7CiAKICAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdt
ZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVj
dG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKLSAgICAgICAgUmVmPERh
dGFTZWdtZW50PiBzZWdtZW50OworICAgICAgICBjb25zdCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+
IHNlZ21lbnQ7CiAgICAgfTsKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxE
YXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3Rf
aXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KQEAg
LTI1OSw3ICsyNjAsMTAgQEAgcHVibGljOgogICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2Yu
Li4oQXJncykpCiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIo
KSk7CiAgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQotICAg
ICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4u
KSkKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8Y29uc3QgRGF0YVNl
Z21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgaWYgY29u
c3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2Ft
ZV92PHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8QXJncz4+LCBE
YXRhU2VnbWVudD4gJiYuLi4pKQogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CkBAIC0yODYsOCArMjkwLDEwIEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIoKTsKKyAgICBT
aGFyZWRCdWZmZXIoY29uc3QgRGF0YVNlZ21lbnQmIHNlZ21lbnQpCisgICAgICAgIDogU2hhcmVk
QnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVudD4geyBzZWdtZW50IH0pIHsgfQogICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFT
ZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVm
PGNvbnN0IERhdGFTZWdtZW50PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKQEAgLTM1OSw3ICszNjUsNyBAQCBpbmxpbmUgVmVjdG9y
PHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3Mg
U2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxjb25zdCBEYXRhU2Vn
bWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUp
OwogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQ7IH0KQEAgLTM3MCw3ICszNzYsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5k
aWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAg
Y29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLmgKaW5kZXggY2JlODc3MWE0NWQ4NjJjYjVhYjA1ZWNhMzk5
OTI3ZTA3ODM4ZjU0MC4uMTI1MzE5YmNiMzhlNzFiYTc5NWE2YWZkMmRkMTNmYmQxOWEyZDNiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVy
cmlkZTsKICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tI
YW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCmluZGV4
IDJlZjI3MDFmZTY3OGJmOWI5MmRiMjEyYmJlYTVjOTE1YTNmYzNhMmYuLmY4Nzc5N2NjZDUwYjlh
YjVlYTQ4YzI1MWU0MmYwMGI1ZmJmNGZhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1t
CkBAIC0xNDUsMTIgKzE0NSwxMiBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
OjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHNlbWFw
aG9yZS53YWl0KCk7CiB9CiAKLXZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmFk
ZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewot
ICAgIFJldGFpblB0cjxOU0RhdGE+IGNvcGllZERhdGEgeyBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aF0gfTsKKyAgICBhdXRvIG5zRGF0YSA9IGRhdGEuY3Jl
YXRlTlNEYXRhKCk7CiAKICAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOwotICAgIFttX25l
RmlsdGVyU291cmNlIHJlY2VpdmVkRGF0YTpjb3BpZWREYXRhLmdldCgpIGRlY2lzaW9uSGFuZGxl
cjpbdGhpcywgJnNlbWFwaG9yZV0oTkVGaWx0ZXJTb3VyY2VTdGF0dXMgc3RhdHVzLCBOU0RpY3Rp
b25hcnkgKmRlY2lzaW9uSW5mbykgeworICAgIFttX25lRmlsdGVyU291cmNlIHJlY2VpdmVkRGF0
YTpuc0RhdGEuZ2V0KCkgZGVjaXNpb25IYW5kbGVyOlt0aGlzLCAmc2VtYXBob3JlXShORUZpbHRl
clNvdXJjZVN0YXR1cyBzdGF0dXMsIE5TRGljdGlvbmFyeSAqZGVjaXNpb25JbmZvKSB7CiAgICAg
ICAgIGhhbmRsZURlY2lzaW9uKHN0YXR1cywgcmVwbGFjZW1lbnREYXRhRnJvbURlY2lzaW9uSW5m
byhkZWNpc2lvbkluZm8pKTsKICAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgpOwogICAgIH1dOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyLmgKaW5kZXggNjc5YWU5MzI5NTE3ZTFmMzk0M2JhNTc2MmFj
OGY1NmU4NjBjOGMyNS4uZDVmYTEzMzBiMTYyY2NjY2UyMmU5NDc1ODYxNWE2ZTAxMTIyZDA0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBv
dmVycmlkZTsKICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRh
KCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlci5tbQppbmRleCAxYzk2MDQ3MTZiNDI2OTNkNWU0NmMyZTIzZTk0MWRh
MDBjODNlNGRlLi5hNjUxMTVjZWIxMjIyMzY3N2YwOWE0YTNkYTk5YjRhYzcyNjhkZjIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlci5tbQpAQCAtOTQsMTAgKzk0LDEwIEBAIHZvaWQgUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzCiAgICAgdXBkYXRlRmlsdGVyU3RhdGUoKTsKIH0KIAotdm9pZCBQYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoKQordm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKCFbbV9yZXBsYWNlbWVudERhdGEg
bGVuZ3RoXSk7Ci0gICAgbV9yZXBsYWNlbWVudERhdGEgPSBbbV93ZWJGaWx0ZXJFdmFsdWF0b3Ig
YWRkRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxl
bmd0aCBmcmVlV2hlbkRvbmU6Tk9dXTsKKyAgICBtX3JlcGxhY2VtZW50RGF0YSA9IFttX3dlYkZp
bHRlckV2YWx1YXRvciBhZGREYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogICAgIHVw
ZGF0ZUZpbHRlclN0YXRlKCk7CiAgICAgQVNTRVJUKG5lZWRzTW9yZURhdGEoKSB8fCBbbV9yZXBs
YWNlbWVudERhdGEgbGVuZ3RoXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCBkZTMzZjFhZjQxMmRjMDhiMmI5
NjFhMTk0OTQ1YzljYzkwYWE2NjI1Li5hNWE3M2ZlMDUxZTlkYjU0MjgyNTY1MGIxZjQ1NDIxYjUw
NDkxZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQmFja2luZ1N0b3JlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwotICAgICAg
ICBtX3BpeGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAg
ICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQ
b2ludCgpLCBtX3NpemUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICBBU1NFUlQoIW1fc2l6ZS5pc0VtcHR5KCkgJiYgIWlzT3ZlclNpemUobV9zaXplKSk7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIgeyBvdGhlci5tX3BpeGVscy0+ZGF0YSgpLCBv
dGhlci5tX3BpeGVscy0+c2l6ZSgpIH07Ci0gICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAg
ICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
ICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8
dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICB9CiAKQEAgLTIzMyw3ICsyMzMsNyBA
QCBwcml2YXRlOgogICAgICAgICByZXR1cm4gUGFja2VkQ29sb3I6OkFSR0IgeyByZXN1bHQgfS52
YWx1ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+IG1fcGl4ZWxzOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGl4ZWxzOwogICAg
IHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7IG51bGxwdHIgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsK
ICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0OyAvLyBUaGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUgdGhl
IGVudGlyZSBidWZmZXIgZXhjZXB0IGZvciBHSUYgYW5kIFBORyBmcmFtZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyLmgKaW5kZXggODg2OTFkYzI1NmQ2ZGQ2YzQ1ZjQ2ZTAxNTQ5Njc0MjQ1YWEz
NTMzNy4uYzk1OGY4NDRkYWMxNDM5NGUyNGRlZmVhYmE3NTRmOWQ4YTgxMjk5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTUxLDkgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFTZW50KFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25n
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KLSAgICB2
aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcGxhdGZvcm0s
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgZGF0YVJlY2VpdmVkKHBsYXRmb3Jt
LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVy
JikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFj
Y2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBs
b2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggZWMwYTdhY2Y0NzMyNjFjNzRlN2VlZmZhZGM5Y2NjM2MzZTU3ZjIy
OC4uNzcwOGE1OGQyYjU4MDhiOTQwMDJkMjA1ZTk4YTI3YmIyY2U2ZjMyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTM4
LDcgKzEzOCw3IEBAIHZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiwgaW50KQordm9pZCBXZWJDb3Jl
QVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNl
KHJlc291cmNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5oCmluZGV4IGNkZjE0M2YzYzNjZGU5NzFmZDc5ZGNmNzMyOGJmY2Q3YjMyNjAy
ZGMuLjYyNjdiZTAwYzU0ZWU2MTcwMmZiNzdiMmE1ZmI1NjdiMjdlYjlmZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3Jl
QVZDRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaApAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBv
dmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBmOTIx
ZjNkYTBlNjliMzM5OTc3YzllM2U0OTY2N2EyOGY1ZTk1Y2JkLi43MjY0NzI1YzhlNTYyMmRmMzhi
NDViY2Q5OWFjNzg3NTViOWViODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIG5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CiAKICAgICB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291
cmNlJik7CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVy
Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE4KICAgICBt
X3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9h
ZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90
KiwgaW50KQordm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VS
VCgmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSByZXNvdXJj
ZS5yZXNvdXJjZUJ1ZmZlcigpKQpAQCAtMTU2LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIGJvb2wgc2hvdWxkQ2FjaGVS
ZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBmaW5hbCB7
IH0KLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9p
ZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxlZChlcnJvcik7IH0KICAgICB2
b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxlZChlcnJvcik7IH0KICAgICB2b2lkIGxvYWRGaW5p
c2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbCB7IGxvYWRGaW5pc2hlZCgpOyB9CkBAIC0yMTEsOSArMjExLDkgQEAgdm9pZCBQbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgbV9wYXJlbnQubG9hZEZp
bmlzaGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
LSAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX2J1ZmZlci5hcHBl
bmQoYnVmZmVyKTsKICAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1f
YnVmZmVyLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcAppbmRleCA5MzAxOTA5OTQ1YjRhMjNkNjY3ODJmMzUwYjU2ZTQ0NzlmODAyNmYyLi5i
NGNmMWExMWViNGM3ZjI4NjM3MGRjYzIxZThkNDVmYjlhZjgwNmE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRl
OgogCiAgICAgLy8gUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IHZpcnR1YWwgbWV0aG9kcy4K
ICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hvdWxkQ29udGludWVQ
b2xpY3lDaGVjayk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTEwOTMsNyAr
MTA5Myw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
U2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6WWVzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwpAQCAt
MTEwNyw3ICsxMTA3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmEKICAgICAvLyB0aGF0IGZp
cnN0IHBhY2thZ2UgZGVsaXZlcnkgd291bGQgaW5jbHVkZSB0aGUgdGltZSBvZiBzZW5kaW5nIG91
dCB0aGUgcmVxdWVzdCBhbmQgZ2V0dGluZyB0aGUgZGF0YSBiYWNrLiBTaW5jZSB3ZSBjYW4ndCBk
aXN0aW5ndWlzaCB0aGUKICAgICAvLyBzZW5kaW5nIHRpbWUgZnJvbSB0aGUgcmVjZWl2aW5nIHRp
bWUsIGl0IGlzIGJldHRlciB0byBpZ25vcmUgaXQuCiAgICAgaWYgKCFzdGQ6OmlzbmFuKG1lbWJl
cnMtPmRvd25sb2FkU3RhcnRUaW1lKSkgewotICAgICAgICBtZW1iZXJzLT50b3RhbERvd25sb2Fk
ZWRCeXRlcyArPSBidWZmZXItPnNpemUoKTsKKyAgICAgICAgbWVtYmVycy0+dG90YWxEb3dubG9h
ZGVkQnl0ZXMgKz0gYnVmZmVyLnNpemUoKTsKICAgICAgICAgZG91YmxlIHRpbWVTaW5jZVN0YXJ0
ID0gKFdhbGxUaW1lOjpub3coKSAtIG1lbWJlcnMtPmRvd25sb2FkU3RhcnRUaW1lKS5zZWNvbmRz
KCk7CiAgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiUiV1OiBkb3dubG9hZGVkICUiIEdf
R1VJTlQ2NF9GT1JNQVQgIiBieXRlcyBpbiAlZiBzZWNvbmRzID1+ICUxLjBmIGJ5dGVzL3NlY29u
ZCIsIG1fcmVxdWVzdE51bWJlciwgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMsIHRpbWVT
aW5jZVN0YXJ0CiAgICAgICAgICAgICAsIHRpbWVTaW5jZVN0YXJ0ID8gbWVtYmVycy0+dG90YWxE
b3dubG9hZGVkQnl0ZXMgLyB0aW1lU2luY2VTdGFydCA6IDApOwpAQCAtMTExNSwyMCArMTExNSwx
OSBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYQogICAgICAgICBtZW1iZXJzLT5kb3dubG9hZFN0
YXJ0VGltZSA9IFdhbGxUaW1lOjpub3coKTsKICAgICB9CiAKLSAgICBidWZmZXItPmZvckVhY2hT
ZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgIGludCBsZW5ndGggPSBzZWdtZW50
LnNpemUoKTsKLSAgICAgICAgR1NUX0xPR19PQkpFQ1Qoc3JjLCAiUiV1OiBIYXZlICVkIGJ5dGVz
IG9mIGRhdGEiLCBtX3JlcXVlc3ROdW1iZXIsIGxlbmd0aCk7CisgICAgaW50IGxlbmd0aCA9IGJ1
ZmZlci5zaXplKCk7CisgICAgR1NUX0xPR19PQkpFQ1Qoc3JjLCAiUiV1OiBIYXZlICVkIGJ5dGVz
IG9mIGRhdGEiLCBtX3JlcXVlc3ROdW1iZXIsIGxlbmd0aCk7CiAKLSAgICAgICAgbWVtYmVycy0+
cmVhZFBvc2l0aW9uICs9IGxlbmd0aDsKLSAgICAgICAgQVNTRVJUKCFtZW1iZXJzLT5oYXZlU2l6
ZSB8fCBtZW1iZXJzLT5yZWFkUG9zaXRpb24gPD0gbWVtYmVycy0+c2l6ZSk7CisgICAgbWVtYmVy
cy0+cmVhZFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICBBU1NFUlQoIW1lbWJlcnMtPmhhdmVTaXpl
IHx8IG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA8PSBtZW1iZXJzLT5zaXplKTsKIAotICAgICAgICBn
c3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoR1NUX0VMRU1FTlRfQ0FTVChzcmMpLCBnc3RfbWVzc2Fn
ZV9uZXdfZWxlbWVudChHU1RfT0JKRUNUX0NBU1Qoc3JjKSwKLSAgICAgICAgICAgIGdzdF9zdHJ1
Y3R1cmVfbmV3KCJ3ZWJraXQtbmV0d29yay1zdGF0aXN0aWNzIiwgInJlYWQtcG9zaXRpb24iLCBH
X1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5yZWFkUG9zaXRpb24sICJzaXplIiwgR19UWVBFX1VJTlQ2
NCwgbWVtYmVycy0+c2l6ZSwgbnVsbHB0cikpKTsKKyAgICBnc3RfZWxlbWVudF9wb3N0X21lc3Nh
Z2UoR1NUX0VMRU1FTlRfQ0FTVChzcmMpLCBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudChHU1RfT0JK
RUNUX0NBU1Qoc3JjKSwKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcoIndlYmtpdC1uZXR3b3Jr
LXN0YXRpc3RpY3MiLCAicmVhZC1wb3NpdGlvbiIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnJl
YWRQb3NpdGlvbiwgInNpemUiLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5zaXplLCBudWxscHRy
KSkpOworCisgICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKKyAgICBHc3RCdWZmZXIq
IGJ1ZmZlciA9IGdzdEJ1ZmZlck5ld1dyYXBwZWRGYXN0KGZhc3RNZW1EdXAoYnVmZmVyLmRhdGEo
KSwgbGVuZ3RoKSwgbGVuZ3RoKTsKKyAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0
ZXIuZ2V0KCksIGJ1ZmZlcik7CiAKLSAgICAgICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3Ro
KTsKLSAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RCdWZmZXJOZXdXcmFwcGVkRmFzdChm
YXN0TWVtRHVwKHNlZ21lbnQuZGF0YSgpLCBsZW5ndGgpLCBsZW5ndGgpOwotICAgICAgICBnc3Rf
YWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7Ci0gICAgfSk7CiAg
ICAgc3RvcExvYWRlcklmTmVlZGVkKHNyYywgbWVtYmVycyk7CiAgICAgbWVtYmVycy0+cmVzcG9u
c2VDb25kaXRpb24ubm90aWZ5T25lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRl
eCA5YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVjMjIxMjY1OGY4YzRmNjhhLi41Zjk4NjQ3YTJhMjIw
MmEwNTk4OWI2Mjg0Yzk0OWI1MGI0Mzk5YTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgK
QEAgLTc2LDkgKzc2LDggQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1
cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKLSAgICAg
ICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICBtX2RhdGEgPSBjb250
aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CisgICAgICAgIGlmIChhdXRv
IGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOyAhY29udGlndW91c0RhdGEt
PmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoY29udGlndW91c0RhdGEp
OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6
VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9
IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CkBAIC0x
OTQsNyArMTkzLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNw
b3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVk
OgotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRh
OworICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBWZWN0b3I8U2Nh
bGFibGVJbWFnZURlY29kZXJGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlIFdURl9HVUFSREVE
X0JZX0xPQ0sobV9sb2NrKTsKICAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIGJvb2wgbV9w
cmVtdWx0aXBseUFscGhhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDI2Zjg4
NjQ5NmU1YTVhMTRlMjhhZmIxYWZhOWJmYzMwMTc3ZjUxY2YuLmQ2OGMwYTM1ZmMxZjRhYjYwMTdi
ZDM5ZWU0MzkxMDI2ODM1ZmM4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAgQVZJRkltYWdlUmVhZGVyOjpBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFW
SUZJbWFnZURlY29kZXI+JiYgZGVjb2RlcikKIAogQVZJRkltYWdlUmVhZGVyOjp+QVZJRkltYWdl
UmVhZGVyKCkgPSBkZWZhdWx0OwogCi1ib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGF2aWZE
ZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQoKSwgZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKICAgICAgICAgcmV0dXJuIGFsbERhdGFSZWNlaXZl
ZCA/IG1fZGVjb2Rlci0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKQEAgLTU4LDcgKzU4LDcgQEAgYm9v
bCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50JiBkYXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBVklGSW1h
Z2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVj
b2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhKQordm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFt
ZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
YXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXggNDk2ZjY5ZjgxMmJkNzViMGVkYTYz
NTdiYWE4NjBjZmNjYjViYTRiMy4uODVhY2IxN2NiY2ZjNTg4NWQ2YWM1NTI1YzdiNWM5ZWZmYzU4
YzY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
YXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1Ymxp
YzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYpOwogICAg
IH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0g
ICAgdm9pZCBkZWNvZGVGcmFtZShzaXplX3QgaW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJh
bWUmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpOworICAgIGJv
b2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
OworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2Rl
ckZyYW1lJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgc2l6ZV90IGltYWdlQ291bnQoKSBj
b25zdDsKICAgICBkb3VibGUgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
UmVhZGVyLmgKaW5kZXggYmQ0MzBlOGE4YmVhMmM4MTZiMmM1MjJiZjViYTc4ODQ2YzM4ZTBmZi4u
YzMxNDEzNDc5ZDQzMjUxYjI3OGVkZDY3YTQ0MTkxNmYwODAyMTlkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
UmVhZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQk1QSW1hZ2VSZWFkZXIgewogcHVibGlj
OgogICAgIC8vIFJlYWQgYSB2YWx1ZSBmcm9tIHxkYXRhW29mZnNldF18LCBjb252ZXJ0aW5nIGZy
b20gbGl0dGxlIHRvIG5hdGl2ZQogICAgIC8vIGVuZGlhbm5lc3MuCi0gICAgc3RhdGljIGlubGlu
ZSB1aW50MTZfdCByZWFkVWludDE2KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcmVh
ZFVpbnQxNihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAg
ICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRh
KClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZz
ZXQpCisgICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQzMl90IHJlc3VsdDsK
ICAgICAgICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCA0KTsKQEAgLTY5
LDcgKzY5LDcgQEAgcHVibGljOgogICAgIEJNUEltYWdlUmVhZGVyKFNjYWxhYmxlSW1hZ2VEZWNv
ZGVyKiBwYXJlbnQsIHNpemVfdCBkZWNvZGVkQW5kSGVhZGVyT2Zmc2V0LCBzaXplX3QgaW1nRGF0
YU9mZnNldCwgYm9vbCB1c2VzQW5kTWFzayk7CiAKICAgICB2b2lkIHNldEJ1ZmZlcihTY2FsYWJs
ZUltYWdlRGVjb2RlckZyYW1lKiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7IH0KLSAgICB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsg
bV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAKICAgICAvLyBEb2VzIHRoZSBhY3R1YWwgZGVjb2Rp
bmcuIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgZGVjb2Rpbmcgb25seQogICAgIC8vIHByb2dyZXNz
ZXMgYXMgZmFyIGFzIG5lY2Vzc2FyeSB0byBnZXQgdGhlIGltYWdlIHNpemUuIFJldHVybnMKQEAg
LTI3Miw3ICsyNzIsNyBAQCBwcml2YXRlOgogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUq
IG1fYnVmZmVyOwogCiAgICAgLy8gVGhlIGZpbGUgdG8gZGVjb2RlLgotICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxjb25z
dCBTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwg
cmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3Qg
bV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCAxMDgyZmRmMGRmZjIz
OTFlNTY1MzBhNDFmODdiYTQzOTgyMzI3NTM1Li5kNmJmZmMxMmIxZTFlNDZkNDNkMDQ3ZWRkYzJh
ZDk0YjVjODU1M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtMjM3LDcgKzIzNyw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9
CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkgeyBt
X2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6
ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnks
IHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAg
ICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgYm9vbCBtX3BhcnNlQ29t
cGxldGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGY0MjNjY2M5
Y2UxMjdlZjdhZTc2YzkxMjgyNGFiZTg3NzNmYjcyZDEuLjQzNTAzNThmM2JlZWI5ZjI0NTg2M2Nl
N2UwMGFlODI3NTBkZTc0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAt
MzE3LDcgKzMxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9ieXRlc1RvU2tpcCA9IHN0ZDo6bWF4
KG51bUJ5dGVzIC0gYnl0ZXNUb1NraXAsIHN0YXRpY19jYXN0PGxvbmc+KDApKTsKICAgICB9CiAK
LSAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgb25seVNpemUpCiAgICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9u
bHkgPSBvbmx5U2l6ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29k
ZXIuY3BwCmluZGV4IDIwNDczZjBlZWViYjU2YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5MDc0NDIuLjkz
M2EwMTNmMjFjNDdlOWNiNzk5ZWI3MmFiYjdlMzhjZmFiMWE2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lk
IEpQRUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAgIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOworICAgICAgICBjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGE7CiAgICAgICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgfSByZWFkZXIgPSB7ICpt
X2RhdGEsIDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyNzA5YjdjNjhi
ZjUzMGQxOTVkNzY2NmEzZDZhY2U1MDAxM2JiZTM0Li40MDQ5NjNhNDc5YzA1ZmMwYzZkNWMzMGVi
N2JlYzc4MTU2OWFiOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTQ4LDcg
KzE0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZWFkT2Zmc2V0ID0gMDsKICAgICB9CiAKLSAg
ICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCisgICAgYm9vbCBkZWNv
ZGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0
QXRGcmFtZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IHNpemVPbmx5Owog
ICAgICAgICBQTkdJbWFnZURlY29kZXIqIGRlY29kZXIgPSBzdGF0aWNfY2FzdDxQTkdJbWFnZURl
Y29kZXIqPihwbmdfZ2V0X3Byb2dyZXNzaXZlX3B0cihtX3BuZykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5jcHAKaW5kZXggYjFiZWM1NWU3OGM0MzQ4MDFjMjU0YWNlMGRmNTk5MzFhMzZi
NzRiZC4uNzcyZTgzMjY2ZTIzMGViNmRmZjdkYzFlZjdkYjU1MjM5NjNiZmIwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXRUJQSW1h
Z2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogICAgIC8vIFRoaXMgY2FuIGJlIGV4ZWN1dGVkIGJvdGggaW4gdGhlIG1haW4gdGhyZWFkICh3
aGVuIG5vdCB1c2luZyBhc3luYyBkZWNvZGluZykgb3IgaW4gdGhlIGRlY29kaW5nIHRocmVhZC4K
ICAgICAvLyBXaGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0aHJlYWQsIGEgY2FsbCB0byBz
ZXREYXRhKCkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0YQogICAgIC8v
IHRoZSBXZWJQRGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQg
c3RhdGUsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4KLSAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKKyAg
ICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CiAgICAg
V2ViUERhdGEgaW5wdXREYXRhID0geyBwcm90ZWN0ZWREYXRhLT5kYXRhKCksIHByb3RlY3RlZERh
dGEtPnNpemUoKSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAgICBXZWJQ
RGVtdXhlciogZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRlbXV4ZXJT
dGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IGJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQyYmU0
ZTJiZDExYWE4NDMuLmRjYWM1OTk3YTYxMzVkMmFiNzU5YTdhZDJlYmIwNDM1MmQ1MTRhNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiwxMSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6
UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIFJlc291cmNlSGFuZGxlQ2xpZW50
Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVzb3VyY2VIYW5k
bGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2
b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgYnVmZmVyLmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZm
ZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGM0ZjA1NDg1ZjI4NzBi
MTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUuLmU0NDJjOTczNGMxMTk4NDkwYTFjNmNhYzU3NzI1
ZmQ1MTk2YjNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTQ0LDEzICs0NCwxNCBAQCBPQkpDX0NMQVNT
IE5TQ2FjaGVkVVJMUmVzcG9uc2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUHJvdGVjdGlvblNw
YWNlOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdl
UG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY1LDkgKzY2LDkgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQg
bG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNU
b0JlU2VudCovKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5n
dGgqLykgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKTsKLSAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgLyplbmNvZGVkRGF0YUxl
bmd0aCovKSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpOworCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YzA0MjEwYzVhNTEzYWMzZjU0NzE0NmQ5Zjg1YzgyYmQ4
ODEzNzc2Li4zMGI0YmIwZmRhZWY3YWUyY2M3NGFjNjA5ZjdiMDA5OTdlNWE2ZGNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50LmNwcApAQCAtNzEsOSArNzEsOSBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVy
Q2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQordm9pZCBTeW5j
aHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKIHsKLSAg
ICBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVu
dDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCmluZGV4IDY4MzhlOWQ4Y2Y0Mzc5NmQyZjM5
NGJhMWY1NGYwOWQwYjY3ZThhYmQuLmM0Y2I3MmRjN2E2NTVmZDM2OTZhMzMzZmUwNWNkZWQ2Mjk3
NmFmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hy
b25vdXNMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKIGNsYXNzIFN5bmNocm9ub3VzTG9h
ZGVyTWVzc2FnZVF1ZXVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN5bmNocm9ub3Vz
TG9hZGVyTWVzc2FnZVF1ZXVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTeW5jaHJvbm91
c0xvYWRlck1lc3NhZ2VRdWV1ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTeW5j
aHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZSk7IH0KQEAgLTY2LDcgKzY4LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJl
c3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCAvKmVuY29k
ZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCmluZGV4IGZjMjcyNTQwODkyYjhlMmNkNzdkZThmNmQ5ZTU0YThjOGI1
OTdmNjEuLjE5ODE0YTM2NWM5ZjY2MWEyMWMyMjlhZGJkMDQ2MTFjMjA5NDdlNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJhbmdlUmVz
cG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQo
V2ViQ29yZU5TVQogCiAgICAgICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2
ZXIgPSBzdGQ6Om1pbihidWZmZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUluZGV4ICsg
MSk7CiAgICAgICAgICAgICBieXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXI7
Ci0gICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpTaGFyZWRC
dWZmZXJEYXRhVmlldyhidWZmZXJWaWV3LCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcikuY3Jl
YXRlU2hhcmVkQnVmZmVyKCldOworICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciBy
ZWNlaXZlZERhdGE6U2hhcmVkQnVmZmVyRGF0YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNGcm9tVGhp
c1ZpZXdUb0RlbGl2ZXIpLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKV07CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsKICAgICAgICAg
ICAgIFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0
cmljcyB7IH1dOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisgICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsK
ICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5i
dWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBl
bmQoYnVmZmVyKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRo
RmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRl
eCBmOTA5NmVlMmU5ZjI0MmZmMDRkNzA1YzJhYTEwOTNhNTVlNTczNWRiLi5lYTRhOWJmMjk3ODI5
ZWJkMDI5MTQ3NmNiZjhhN2U1NDk0NzIxMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAt
MTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vz
c2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxv
bmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFs
Qnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpY29t
cGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToobnVs
bGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERh
dGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CistICh2b2lk
KXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4mJilkYXRhOwogLSAodm9pZClyZXNv
dXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBy
ZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25z
ZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25I
YW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
KT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZv
aWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVz
b3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
ZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggNWUyZThlOGQ5ZDc2NjcyYTI0MTRm
NzZmNWMwOGYyNTllMDI5ZjUwNC4uM2M4YmUwOGMyOTM0ZTU0ZGEzYjc0OWNhNmRhMzRlZGE5NmRj
OWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRD
YWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBh
Y2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2Fk
RmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CkBAIC02NTIsMTMgKzY1MiwxMyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3Vy
YwogICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3Bv
bnNlOnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGll
bnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2NrZXIgeyBt
X3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFtt
X3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpXVEZNb3ZlKGJ1ZmZlcildOwor
ICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpidWZmZXIuY3JlYXRl
TlNEYXRhKCldOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6
cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC05MzEsMTUgKzkzMSwxNCBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwogICAgIHJl
dHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRSYW5n
ZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSByZWNlaXZlZERhdGE6KFJldGFpblB0cjxOU0RhdGE+JiYpZGF0YQogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2Up
OwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBS
ZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8g
bnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAgICAg
IHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOwor
ICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IFtkYXRhIGxl
bmd0aF07CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRl
ID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9u
LmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCi0gICAgICAg
ICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYu
Z2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxm
LmdldCgpIGRpZFJlY2VpdmVEYXRhOm5zRGF0YS5nZXQoKV07CisgICAgICAgICAgICBbZGF0YURl
bGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lv
biBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJl
Y2VpdmVEYXRhOmRhdGEuZ2V0KCldOwogICAgIH1dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50LmgKaW5kZXggMWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUzMzlkZmQyYzNiNWRlYzI1Ny4u
MGZlNjVhMjllNjM2MTZkYjQyZjdjOWVhMWQxODUyMjFjMjAwNDBjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPExl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgp
IHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDMxNWUwNjUxNTMwZGNkYjAyODAxNjU0
Yjc1N2Q4MTQ3M2MyMGZkMzAuLmFlNzE1NWVjZWYzNWQzZTE4ODhkOTE2NTY0NTdlMzgxMTU5ZGY0
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTMwMCw3ICszMDAsNyBAQCAtICh2b2lkKWNvbm5lY3Rp
b246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAq
KWRhdGEgbAogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NzkzCiAgICAgICAgIC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFu
eSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQog
ICAgICAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93
IHRyYW5zZmVyIHNpemUuCi0gICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1
ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKKyAg
ICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKICAgICB9OwogCiAgICAgW3NlbGYgY2Fs
bEZ1bmN0aW9uT25NYWluVGhyZWFkOldURk1vdmUod29yayldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMDhkMDU3YmJiNWYxN2MyMDQ1YmZmOTA2ZmY1YWRh
ODVmMTA0MjkzMC4uZjdmMjY2Y2U4ZDgxOTEwNjBjODU3YTJmOGE2YWQ5ZmRlYmQ4MTgyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC01NDYsOCArNTQ2LDgg
QEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogICAgICAgICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAv
LyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQo
KS4KICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1J
TUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExv
YWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1l
bnQKLSAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewot
ICAgICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERh
dGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgZGF0YSgpLT5mb3JF
YWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAg
ICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShidWZmZXIp
OwogICAgICAgICB9KTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndy
aXRlcigpLmVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuY3BwCmluZGV4IDA1OWYzYTM4NmI2Y2Y1ZmE3OWIzYzE4OTcwMTUzMTNmN2NkYjRlZjIuLjFk
ZTI1M2M5MmIxYjgxZTcyYWI3MGY5YmI1NjhkNDFmZGUzNzRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9p
ZCBNb2NrQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikKICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlclJlc3Bv
bnNlKTsKIH0KIAotdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90
KiwgaW50KQordm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImKQogewogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6OkFmdGVyQWRk
RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5k
ZXggNjM1YWM4NGJlNzkzODQ3YWE1NzIxM2QwMWZmYzFlNzRmNzZiNzU5My4uYjgzOTdiMzBkOGQ4
NWI3YmZmYjM2MjU0NjZmMDY4ODhjMTgyMTdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAg
ICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92
ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA4MmEyYThjNGIxOGFj
Y2U3OThiMjdjMmM4ZDAwOTU4OWZmNzVjYmE4Li40ZThhYjc4MWE0MDYxYWIxOGM1MDMzNzNiZGEz
OGY2YzU1ZDhhMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwCkBAIC0xMTUsMTIgKzExNSwxMiBAQCB2b2lkIFdvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29u
c3QgUgogICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogfQogCi12b2lkIFdvcmtlckZv
bnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgpCit2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAgICAgaWYgKG1fZXJyb3JPY2N1cnJl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3Ro
KTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV29ya2VyRm9udExvYWRS
ZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGRhYjcz
ZmM3YjFhOTNlZDRlM2ZlYjMxZDY3MDk4ZDk5YjUxNzZhMzkuLjdjYmFhOGU1NTEwYzhjNGZjYWYy
ZWI5MmM2ZjczYjNkMmExMmM2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNXb3JrZXJGb250TG9hZFJlcXVlc3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCBiZjVhNDRmZTM0OGQyZmZjZTkx
NmZiMTk0OTE1ZTY3YmZkYTlhZWMxLi5jZDI2ZWNkNmEzN2E3ZWQzOWZmNzFlZGRhMzVlOGVmYTkw
YjM3YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiB9CiAK
LXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuKQordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVzZVN0ckxlbikKIHsKICAgICBpZiAobV9m
YWlsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMiwxMyArMjEyLDExIEBAIHZvaWQgV29ya2Vy
U2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
KQogICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0
ZXh0L2phdmFzY3JpcHQiX3MsICJVVEYtOCIpOwogICAgIH0KIAotICAgIGlmICghbGVuKQorICAg
IGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKGxl
biA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEpKTsKIAotICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRh
LCBsZW4pKTsKKyAgICBzaXplX3QgbGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CisgICAg
bV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGxlbikpOwog
fQogCiB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5oCmluZGV4IGVhYWJlMWVhNWQxM2IzM2Y5YzNjYzY2ZGQ0OTU1N2ViNjll
MzdlZmMuLjBiYzNhMDI1YjM2NzllMjU2MzA4NjI0ZWVlYmE4OWRjY2M0NWM4MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtNzksNyArNzksNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVy
biBtX2Vycm9yOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wg
dXNlU3RyTGVuKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGZiYTM2MzIy
YjI5YTZkNWI3OTdiMzllZGMzYzNkMTcxMjRiM2I1YmMuLmNlMzcwOTY4OWQ5ZjA5MjFlMDkwM2Ew
Mzc3ZGIyNjhhNTQ1MGIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC01MSw3ICs1MSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCmluZGV4IDliMTEyYjlkYjJjZDg0ZDAzMmY1OWRhZmE4ZThlMzhlMDcwZTUz
ZjcuLmRjM2FlYThjYWQ5ZDA5NmI0MmJjYTY1YjI2MTIzMmYxMzc0M2QxZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTAzNCw3ICsxMDM0LDcgQEAgUmVmPFRleHRS
ZXNvdXJjZURlY29kZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVEZWNvZGVyKCkgY29uc3QKICAg
ICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04
Iik7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW4pCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pCiB7CiAgICAgaWYgKG1f
ZXJyb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNTIsMTcgKzEwNTIsMTYgQEAgdm9pZCBYTUxI
dHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikK
ICAgICBpZiAodXNlRGVjb2RlciAmJiAhbV9kZWNvZGVyKQogICAgICAgICBtX2RlY29kZXIgPSBj
cmVhdGVEZWNvZGVyKCk7CiAKLSAgICBpZiAoIWxlbikKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAgbGVuID0g
c3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKKyAgICBzaXplX3Qg
bGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1
ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CiAKICAgICBpZiAodXNlRGVjb2RlcikKLSAg
ICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxl
bikpOworICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUo
YnVmZmVyLmRhdGEoKSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5h
cnkgZGF0YS4KLSAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5kKGRhdGEsIGxl
bik7CisgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChidWZmZXIpOwogICAg
IH0KIAogICAgIGlmICghbV9lcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApp
bmRleCAyZDEzYmVjMzk0NjQ0OGI5YjRmOTI1ZDMyYmQ4NmJhMmQ4MDM3NzVhLi42YmYxOWY4MmJk
MmZmNzY3MDdkYTQ1NzE0NzUwN2U5OTFkMjQ2NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaApAQCAtMTYyLDcgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZv
aWQgbm90aWZ5SXNEb25lKGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IDYxN2Y0NzY4OTU2
NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJkZjYuLjdmNTEyYzZjMTFhOGU3MTA4Y2YwMDYyYjU4
NGQyN2I1ODkwOGQxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAt
OTYsMTAgKzk3LDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQodWludDY0
X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAgIG1fY2xpZW50
LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12
b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAg
bV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7CisgICAgICAgIG1f
Y2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlh
UmVzb3VyY2U6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZS5oCmluZGV4IDViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJlNzE3MThhMTY3Mzc1
ZTcuLjk1MTA2ZjY3MjI3M2I0NWYwYTI0YTQ3YTFhMmJkZDE0MDllMGY0MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApA
QCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0d29ya0xvYWRN
ZXRyaWNzOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Nyw3ICs1OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xp
Y3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRh
dGFTZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGF0YVJlY2VpdmVk
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENo
ZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRG
YWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaApp
bmRleCA3MWZkMDIyMjliYmIxYzU3MzI2ZmRmY2ZlMjZjMTFmNzYxYWJjZjcyLi4wNTRiODkzZTEx
MTEwZGNmOWE3MDAyNTJmNGY3OTViMDFhNTg3YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaApAQCAtNjgs
NyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVu
dGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9
OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTU4NjA5MWVhMDA0MWI2
ZjE1ODY5ZDQyYmJkYTcyNDMyOTc2OTBlYy4uYmE4ZDA0OGY2NWRjMzM5ODRmMGNkNDc2MzVhYjkx
MDE4NzliZDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBA
IHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0
aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCit2b2lkIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2Vp
dmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCA1MDVhNGVmZTU3MWQ0ODllNTBh
OTg4YmViODE4NWI3ZmVhYjNkYjEwLi4wY2IzMTVmZDhmZjUzMTk5MTU3ZGU3OGY4NDUyZDcxYzRm
NWUyOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03MSw3ICs3
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxs
ZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5
VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKaW5k
ZXggNGI5ZWU1NzRiOTJjN2MzNzE3YTRiYzI4MTlhNmJlM2ExOTA2NTcxNS4uZjQ3OWUwOTAyYjIx
NzkyOTU1ZDM3NjgxNGIyMWM4OWZmNTVkYjU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYz
LDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1NlbmQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggOGMxMDRk
ODE2MGI3YWFmZDA5OTcxNWRhNmQ0ZTZmN2M0NjM3ZmEwOC4uNjBiNjlhOTM2YmI3OGRmMjUxMDc0
OWM3NTRmZTZhYTIyOTNmZTAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHAKQEAgLTI1NCwxMSArMjU0LDEwIEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5v
dGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290
aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9u
c2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3Zv
aWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBk
YXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgotICAgIGF1dG8gc2l6ZSA9
IGJ1ZmZlci0+c2l6ZSgpOwotICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVCdWZmZXIoV1RG
TW92ZShidWZmZXIpLCBzaXplKTsKKyAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlQnVmZmVy
KGJ1ZmZlciwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZENvbXBs
ZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBlNmE3NjExNTk2MmI5NjU5ZTdiZmU3OGM2
ZjRkYzZmNTMxMmIzY2JlLi4wZTRjMWFlNDkyM2MzMzdmNWNmOWIwYTQwOGI1YTg4MjI5ZjU5NjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCkBAIC04MSw3
ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBS
ZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNo
YWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRM
ZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVu
dC5oCmluZGV4IDM0OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1NGQzOWUuLjhhMjg1
ODI2MTEzZjlkOGVlNjYwZGI2ODhiM2M1MzkzZmY5N2IyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcg
Ynl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkg
eyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDM2YWNjNjMxNDVmNDA1YjE5NTVkMzM1NDBkYWE3MDhmOWE2
MjkzNDEuLmU2ZmQyYWM3MGVjN2UwZTc1OTBhZGUyNzJlMTQyN2ZjZTk2ZGRlNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTg2MywyOSArODYzLDI5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
ZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4CiAgICAg
fSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1JlY2VpdmVkKQotICAg
ICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2
aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCk7Ci0gICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGJ1ZmZlci0+c2l6ZSgpOwor
ICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2Vp
dmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpOworICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZmZXIuc2l6ZSgpOwog
CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAogICAgIGlmIChtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBp
biBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhl
IGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1f
Y2FjaGUtPmNhcGFjaXR5KCkgLyA4OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNo
ZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAg
ICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAg
ICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLnNpemUoKSA8
PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZl
dGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZ
b3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KLSAgICB1
bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0g
MCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKKyAgICB1bnNp
Z25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXIuc2l6ZSgpOwogCiAgICAgaWYgKG1f
YnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLmFwcGVuZChidWZmZXIuZ2V0
KCkpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAg
ICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEy
NzMsNyArMTI3Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1l
ckZpcmVkKCkKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIAot
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzU3luY2hyb25v
dXMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGNmMTBjZjBlNzFhMWJjNjU1NDBlODdkNmJhNGMxYjljODU2
YzBhMWQuLjgxN2FlZjI2YzgzNmMzNGE3ZDQ0ZWU3Y2M5NWVkZDlhMjk4ZDZhNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNl
ckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVk
aXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJp
bmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgc2VuZEJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29k
ZWREYXRhTGVuZ3RoKTsKIAogICAgIHZvaWQgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAg
ICAgdm9pZCBpbnZhbGlkYXRlU2FuZGJveEV4dGVuc2lvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggYmMyYzMzN2U0ZWVlMDFhZjgzZTEzNjcyMzE3
YTlhOWVhYmM3YzZmOC4uZjBlZmQwNGJiMmUxOGY2ZjNjYmMxNjNmYWYyM2RhMDQ2NmJlZTU0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsx
NzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlzaCh7IH0sIHJlc3Bv
bnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImKQogewogICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmgKaW5kZXggZTc4MDhkOGU2NTU4MmY3OTM4ODgyOGQ1MTc1OGNiMTkzY2Y1NWZjNy4uYjIy
NWM0N2I5NGFmYTBiNDRlZGMyNjcwZGZjNThhZDdhZmM5MTQxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50
NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBm
aW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggMTdkNDc5MDdhM2Y2ZWU1MmJl
NjUwMWQxZGFiMGNhNjA3NTFkNmIwYi4uYWFhZTJiZmJkZjgzYTM5YWNlYzA2M2ZlYjI0NDYxNmRj
ODQ4ZWRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0
VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb20KICAgICBj
b21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgUHJlY29u
bmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggODU4MDhl
MTIxYjY4Y2E4YjczZTI1MThkMTkzYWIzOTU4MWVhZDFlNy4uOGM2YjBkZWVkNjZjNTEwMTliZTg5
ODRlZDViODdlMGMxZDc5MGY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAKaW5kZXggMjVk
NGUzN2Y5NDU0YmVlMzJmMDRkOGNjOGM0NzFkNWQzZjdlZDgyYi4uOGM4ZGMzNmIxZTUzOTM4Zjgx
ZWI0YWJhYWZmMDE5MGYyYjU0ZWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFu
YWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIK
ICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCkBAIC0xNzMsNyArMTc0LDcg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpzdGFydCgpCiAgICAgZG93bmxvYWRQ
dHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwogfQog
Ci12b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQg
U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrLmgKaW5kZXggYWI1OWVhZTUyNjY1MzA2MjEyYTI4ZTkzMjNhMmI4YjRmZmUwYzc4
Zi4uYjg5YWIzZWJkNzYyZjY4MTJhNWU5N2JmZjY5MGJhOTBmMDI1N2ZjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJE
b3dubG9hZFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oCkBAIC0zNyw2ICszNyw3IEBACiAKIG5h
bWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZm
ZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY2LDcgKzY3LDcgQEAgcHJpdmF0
ZToKICAgICBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29y
a0RhdGFUYXNrQ2xpZW50JiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgRG93bmxvYWRJRCk7CiAKICAgICAvLyBJUEMgTWVzc2FnZQotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBkaWRG
aW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMu
aW4KaW5kZXggMWQzYmZiN2NjMzEwOTc5OWNjODAwMWJiYTcxZDg5YzBmNmYyZDkyZi4uNTBkMmI0
MmE3MWIwZWRhYjc5ZmJjZTlkZGI5ZjE5OTgyZGI1MzU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2subWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0
LDcgQEAKIAogbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckRvd25sb2FkVGFzayBOb3RSZWZDb3Vu
dGVkIHsKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCi0gICAgRGlk
UmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJD
b3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1E
YXRhKElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2goKQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDRlNzkxOWIzZGRjMDJh
ZTE0ZDBlZDk2ODRiOGM2OGJiNmYyOGE0MzQuLjFiNzM5YmYxOTg0MGIwZjU4YzA4MWM2ZTk4Zjhj
Y2UxNmEzNGE4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAK
QEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNp
bmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgpAQCAtMjI1LDEzICsy
MjUsMTMgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpwcm9jZXNzUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBib29sIG4KICAgICAgICAgbV9sb2FkZXIuc2V0UmVz
cG9uc2UoV1RGTW92ZShyZXNwb25zZSkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2lzRG9uZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQVNTRVJUKCFtX3RpbWVvdXRUaW1lciB8fCAhbV90aW1lb3V0VGltZXItPmlzQWN0aXZlKCkp
OwotICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2Vp
dmVEYXRhIHsgZGF0YSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CisgICAgLy8gc2VuZFRvQ2xpZW50
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNv
ZGVkRGF0YUxlbmd0aCB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRS
ZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZm9ybURhdGEpCkBA
IC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZy
b21QcmVsb2FkZXIoKQogICAgICAgICAgICAgZGlkRmluaXNoV2l0aE1ldHJpY3MobV9wcmVsb2Fk
ZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBkaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UgeyBjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpIH0sIGxlbmd0aCk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKFJl
ZiB7IGNvbnN0X2Nhc3Q8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciY+KCpjaHVuaykg
fSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmgKaW5kZXggYzM0NTgwMjY3ZmIzMjY5ZTZkY2JkY2VmYzM0ZDA2ODJjNmEwODg2Yy4uNTIy
NWU1NDU5OTk1MWQ4ZjgxYzcwYWY4MmViYmEyNjg5ZTM1MDA2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBJUEMgewog
Y2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5j
ZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTkzLDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFNob3VsZFNldFNvdXJjZSA6
IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmluaXNo
V2l0aE1ldHJpY3MoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCmluZGV4IDE4
ZTYyOWYwZDE0NmVkMmQ0MjlkYjFiYTI4NzAxZTgzZmI5NmU2MmYuLjdkYjUzZTliZDAzODA0NTQ3
M2EyNWFmMzdkNDdjMTk1Nzk1ZTIzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgTm90UmVmQ291bnRlZCB7CiAgICAgRGlkRmFpbChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAgRGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisg
ICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5j
b2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2goKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggNWQ5YmQzMzMzOTIxMWNh
MWNkNDQ3Yjg3OTJmNTQ2MWVhODdlZGRmNC4uZTU2NTRjYzMxMzliNDlkNjFhOTg1MTNjZDAxNmJl
Y2Y3MzliYmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
CiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZm
ZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAg
ICBtX2JvZHlDYWxsYmFjayhSZWZQdHIgeyAmYnVmZmVyIH0sIHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIu
aAppbmRleCA2N2FiYzU1YzYwZmYyNGUzOWRkMDRlY2M1MDIxYjYwNWVlOGJlYmIxLi42ZWRiNTYx
OGRjYzQ3YTYxYWQwNzUyMzc4NTQ5OWZlZGUwODQ3YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsK
ICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5n
IEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQg
d2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CkBAIC03MSw3ICs3MSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0
ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJv
b2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDdhMjYy
MjE5ZGU3OGIyMzVkMTI1YTkyYjZlMjM2ZDMzMjYyZjdhMjcuLmQ5ZDc0NzUyNTMyZjE4OWViMWJl
MmMwM2Q3ZTI5ZTg1OWU4OTZlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJlc291cmNlRXJyb3Ig
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnByb2Nlc3NSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlmICghbV9yZXNwb25zZUVuY29k
aW5nLmlzRW1wdHkoKSkKQEAgLTE4Niw4ICsxODYsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4KICAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgi
dGV4dC9qYXZhc2NyaXB0Il9zLCAiVVRGLTgiKTsKICAgICB9CiAKLSAgICBpZiAoYXV0byBzaXpl
ID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRl
Y29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOworICAgIGlmICgh
YnVmZmVyLmlzRW1wdHkoKSkgeworICAgICAgICBidWZmZXIuZm9yRWFjaFNlZ21lbnQoWyZdKGF1
dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRl
Y29kZShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKKyAgICAgICAgfSk7CisgICAg
fQogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDQ0ZmMwNjg1ZmEwZmVkYzg3
NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEuLjdlODE4ZjM0MTNkYTI5Zjg2MWUxMDAzOTkxZThkNTM4
OTIzNDZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fz
a1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmlu
YWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAKaW5kZXggNDFkODIzNTAyNDc0N2I2ZmM0YTNhYzU0OGUxMzM0ZWQ2Y2I1ZWY3YS4uODE0ZWIz
MjBkNGU3NDhhMjlhZTA5MTM1YWZjMWRhNWYzNzUxNWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUxv
YWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25z
ZSwgUmUKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZv
aWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNw
ZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewog
ICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVh
bWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9
IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNp
emUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAg
ICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXIuc2l6ZSgpIDw9IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LmFwcGVuZChidWZmZXIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgK
aW5kZXggMWI4NDNkYjdlYzI3MGRiOWRhYjllOGEyNWYyYTQ4YThlY2FlMmE4YS4uOWFkY2E2MDVl
NzI4MGJiN2IzNGNlNzQ0ZDg3ODhiYmI0NDg5MjRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRU
b0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmgKaW5kZXggNDE2NjhhNWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVjYTkwN2VkYy4uMDc3
MmFmMWE4NmQyMjQxN2JmMTFmMTZiZDZiN2I1ODBmZTU3YTdhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
aApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TTXV0YWJsZVVSTFJlcXVlc3Q7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFVSTCYpOwogICAgIHZvaWQg
ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCB3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQg
dHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW0KaW5kZXggNDc3MWZkZTkyMGQ2Yjk4ZTgzZmMyOWRkM2FhZjk3YTBhNmQ5YTg4MC4u
NjQ5YjVjYTc4YzY4NzVlY2RlMGQzZDQzNmY5NTkwZGI1MTc5ZDBiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCkBAIC00NDMsMTIgKzQ0MywxMiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpk
aWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcgogICAg
ICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0
cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7Ci0gICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwg
InJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7CisgICAgV1RGRW1pdFNpZ25wb3N0
KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEuc2l6
ZSgpKTsKIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVE
YXRhKFdURk1vdmUoZGF0YSkpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0
YSk7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMg
bmVnb3RpYXRlZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYg
Y29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmgKaW5kZXggMTdmMDhjMjhlYTEyNWI1NTA5OTNlZWQyNGQ1OTYzYjg1MTBhMTE0
MS4uODczMDNjOGQxMWZmY2EzZjU2ZmZkMTZhMWY4ZThmODMwZWYyZGMwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMjgsNiArMjgsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTUzLDYgKzU0
LDggQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCisgICAgLy8gVE9E
TyA6IFNoYXJlZEJ1ZmZlckNvcHkgc2hvdWxkIGNvbnRhaW4gYSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIGFuZCB0aG9zZSBzaG91bGQgZ28gYXdheS4KKyAgICAvLyBBbGxvd3MgdG8gbm90IHVuZWNl
c3NhcmlseSBmbGF0dGVuIHRoZSBTaGFyZWRCdWZmZXIgYmVmb3JlIHNlbmRpbmcgaXQgb3ZlciBJ
UEMuCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8g
bV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KICAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCA5Y2RlZDk2OTM1MTVjYmRi
OTI1ZjU5NTRhMTZmNGJhZjA2N2EzMTYyLi42YzE5YmM5YmFiNjQxMDMzMzAwNzNiNDFjNWFlMWQ4
ZWQwMWMzYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTE4NSw5ICsx
ODUsOSBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgogICAgIEFTU0VSVCghaXNNYWluUnVuTG9v
cCgpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3BhcnNlVHJhY2tzTG9jayB9OwotICAgIEFT
U0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1cyk7Ci0gICAgQVNTRVJUKG1fZHVyYXRpb24uaXNJbnZh
bGlkKCkpOwotICAgIEFTU0VSVChtX3RyYWNrUmVhZGVycy5pc0VtcHR5KCkpOworICAgIEFTU0VS
VCghbV9wYXJzZVRyYWNrc1N0YXR1cyB8fCAobV9pbml0ICYmIGVycm9yQ29kZSkpOworICAgIEFT
U0VSVChtX2R1cmF0aW9uLmlzSW52YWxpZCgpIHx8IChtX2luaXQgJiYgZXJyb3JDb2RlKSk7Cisg
ICAgQVNTRVJUKG1fdHJhY2tSZWFkZXJzLmlzRW1wdHkoKSB8fCAobV9pbml0ICYmIGVycm9yQ29k
ZSkpOwogCiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBp
ZiAoZXJyb3JDb2RlKQpAQCAtMjIxLDYgKzIyMSw3IEBAIHZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6
OmRpZFBhcnNlVHJhY2tzKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9u
CiAgICAgfQogCiAgICAgbV9wYXJzZVRyYWNrc0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICBt
X2luaXQgPSB0cnVlOwogfQogCiB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQcm92aWRlTWVk
aWFEYXRhKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCwg
Y29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKaW5kZXggMzdlNGFkNDI3
NmIxMmFkNTE0M2RjMjI4Y2RlOTQ3NjM4N2U1Yzg4OC4uNjUwOTNlOWU0NmI0MGI1YTM5NzZmZGVm
MjllNjEzYzY0NTFmMzE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKQEAgLTg3LDYg
Kzg3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmPE1lZGlhVHJhY2tSZWFkZXI+PiBtX3Ry
YWNrUmVhZGVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fcGFyc2VUcmFja3NMb2NrKTsKICAgICBS
ZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50
aWZpZXI7CisgICAgYm9vbCBtX2luaXQgeyBmYWxzZSB9OwogfTsKIAogY29uc3RleHByIE1lZGlh
Rm9ybWF0UmVhZGVyOjpXcmFwcGVyQ2xhc3MgTWVkaWFGb3JtYXRSZWFkZXI6OndyYXBwZXJDbGFz
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4
IGUxMjY0Y2UyMWJhNTdmMmE0Mjc0OGUzM2ExZGFkODhhMGUyNThiYzIuLmQ3NjdmYzA2YjM2ZjE1
NmZmMzFjMzgzZTY0M2Q0MzQ0YzIxN2FhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgYXV0byBXZWJVUkxTY2hl
bWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJV
UkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKK2F1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xODcsMTEgKzE4NywxMSBAQCBh
dXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgLT4gRQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYg
KGlzU3luYygpKSB7Ci0gICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybiBFeGNl
cHRpb25UeXBlOjpOb25lOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxlci0+
aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGJ1ZmZlci5nZXQoKSksIG1fd2ViUGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRh
c2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNv
dXJjZUxvYWRlcklELCBidWZmZXIpLCBtX3dlYlBhZ2VJRCk7CiAgICAgcmV0dXJuIEV4Y2VwdGlv
blR5cGU6Ok5vbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaAppbmRleCBmNmZmNDZlZWE1ZjI5MGI3YjdlM2ZlNTkyMWRmOWYxOTRiYWNkMTE3Li5jMzIz
MDY5YjFjYzAzMWYwMjViMjJjODU5YTM1NDE4OGZkZDIzNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAg
ICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZv
cm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgRXhj
ZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsK
ICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCmlu
ZGV4IGI1MTNhMjY4MDhlYWExOGUzN2Y0ZmRmMDRhMjNkMjk2MGIyNzNiMmMuLjkyMzRiNWM2NTNm
OTFlYmE5MTBmYmRmOWJlMWUyMmEwMmMxMWM2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94
eS5jcHAKQEAgLTcyLDIwICs3MiwxNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6
ZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZQogICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRh
dGFTZW50KG1faWQsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KSwgMCk7CiB9CiAKLXZv
aWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQg
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0g
ICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGxlbmd0aCk7Cisg
ICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYnVmZmVyKTsK
ICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzaGFy
ZWRNZW1vcnlQdHIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpOwot
ICAgIG1lbWNweShzaGFyZWRNZW1vcnlQdHIsIGRhdGEsIGxlbmd0aCk7Ci0KICAgICBTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFu
ZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAvLyBUYWtlIG93
bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFuZCBtYXJrIGl0IGFzIG1lZGlhLXJlbGF0ZWQgbWVt
b3J5LgogICAgIGhhbmRsZS50YWtlT3duZXJzaGlwT2ZNZW1vcnkoTWVtb3J5TGVkZ2VyOjpNZWRp
YSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RG
TW92ZShoYW5kbGUpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoKSB9KSwgMCk7CisgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6
RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5k
bGUpLCBidWZmZXIuc2l6ZSgpIH0pLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNl
UHJveHk6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2VQcm94eS5oCmluZGV4IDQ3ZWE4NjY3MWIxM2QxMzk1YzNkYWQ5YmRhNzlhYmY2MTZjYmEx
NzkuLjk0OTQ2NDUyMmMyNjNlNmE1ZTgwNzNmNzRlOWQyNDM0YmFhOTM5MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlUHJveHkuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsK
ICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQg
ZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBs
b25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFs
OworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGxvYWRGYWlsZWQoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IGZpbmFsOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDMxMGZjYTc4NzVjMzJjM2NkNzQ3OGRiNjRmNTlhYzJjZjUwMTYzOTIuLmVjMjU5
M2IwM2U2MzYyYTcyYTQzNDdkNDNkZjZjNTdkNTU4Nzg1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUu
aCIKQEAgLTE4OSwxNiArMTkwLDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgbV9j
b3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdURk1vdmUocG9saWN5RGVj
aXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5j
b2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZvciAnJXMnIiwgZGF0YS5zaXplKCksIG1fY29y
ZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2Vz
cyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNl
Iik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0
aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAg
ICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnRlcmNl
cHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCksIGVuY29k
ZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikK
LSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2
ZURhdGEoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjA3LDcgKzIwNyw4IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
aW50NjRfdCBlCiAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNl
aXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSIpOwogICAgIG1fbnVtQnl0ZXNSZWNlaXZl
ZCArPSBkYXRhLnNpemUoKTsKIAotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRl
cyk7CisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpID8gUmVmIHsgKmRhdGEuYnVmZmVy
KCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNl
aXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0K
IAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtMjk1LDcgKzI5Niw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2Vzcykg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxv
YWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBXRUJSRVNPVVJDRUxP
QURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiIpOwogCi0gICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZm
ZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcElu
U2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9t
IHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7CkBAIC0zMTIsNyArMzEzLDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGUmIGhhbmQKIAogICAgIC8vIE9ubHkgc2VuZCBkYXRhIHRvIHRoZSBkaWRSZWNlaXZlRGF0
YSBjYWxsYmFjayBpZiBpdCBleGlzdHMuCiAgICAgaWYgKHVuc2lnbmVkIGJ1ZmZlclNpemUgPSBi
dWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3Vy
Y2UpOworICAgICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogCiAgICAg
aWYgKCFtX2NvcmVMb2FkZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IGEyMmU2MmYy
OGI1ZmE0Y2ZjOTFhYTVlNWNlODJjYTI3YWUyNmFkNTMuLmFjNTQyMmZjMDY3MTBiZDBlMDg3ZTBm
NDQwOWVkOTQwMTdjMGNmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogCiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29w
eTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODAsNyArODEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90
IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsU2VydmljZVdv
cmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5t
ZXNzYWdlcy5pbgppbmRleCAwMmExNGY1OWEzMDQ3NDRjMmQxODNlYTc5ZTk5ZWJhZWI0Y2ZiYmEy
Li5kYWEyNGQyN2M3MWE4M2NmN2MwZjE2OGRhMjZhNDliNDg3NjkyNjBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJj
ZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlkU2Vu
ZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCiAg
ICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2Us
IGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVj
ZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5j
b2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNoUmVzb3VyY2VM
b2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MpCiAgICAg
RGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERp
ZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4
IDhkMmM1ZjNlMjVjYTFhMjM3OGU1ZTMwMDVkNzU0OTJiZWFmMGIxZWEuLjJiN2U0ZDJjMjBmZGQx
OTk4ODI3MmRhOGJmY2M1YTYxODZjNmQzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTY1LDYgKzY1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVsZW1lbnQ7CiBzdHJ1Y3Qg
UGx1Z2luSW5mbzsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBA
IC0xNzYsMTEgKzE3NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2Ny
aXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIGZpbmFsOwogICAg
IHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwm
IHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykg
ZmluYWwgeyB9CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWlu
dDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAg
ICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50
OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmlu
YWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBm
aW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2Fz
Q2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RG
OjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFs
OwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0
ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURh
dGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBtYW51YWxT
dHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRG
YWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQo
Y29uc3QgV2ViTW91c2VFdmVudCYpIGZpbmFsOwpAQCAtMzYyLDcgKzM2Myw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVp
bnQ4X3QqLCBpbnQpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6
Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCmluZGV4IGI0ZWIxNGZmNTdkOTI1YmY3MGQ4YTVhZGQwZWI1N2E3MDkx
Mzg1ZWIuLmEzMDAxZDJlYWNlNjZjZDAzNzhlYjNjNDJjMDQ0NjgwMGQwZTE4MTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAt
OTQsNiArOTQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxBbmltYXRvci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5o
PgorI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2hlZWxF
dmVudFRlc3RNb25pdG9yLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5o
PgpAQCAtMTE5MSw3ICsxMTkyLDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3QKICAgICB9CiB9
CiAKLXZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBjb3VudCkKK3ZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fcGRmUGx1Z2luKQogICAg
ICAgICByZXR1cm47CkBAIC0xMjAwLDcgKzEyMDEsNyBAQCB2b2lkIFBERlBsdWdpbjo6UERGUGx1
Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVh
bQogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVxdWVzdC0+YWRk
RGF0YShkYXRhLCBjb3VudCk7CisgICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xp
ZW50OjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImKQpAQCAtMTcxOCwxNSArMTcxOSwxNSBAQCB2b2lkIFBERlBsdWdpbjo6c3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1aW50
MzJfdAogICAgICAgICBtX2lzUG9zdFNjcmlwdCA9IHRydWU7CiB9CiAKLXZvaWQgUERGUGx1Z2lu
OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCog
Ynl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFT
U0VSVF9VTlVTRUQoc3RyZWFtSUQsIHN0cmVhbUlEID09IHBkZkRvY3VtZW50UmVxdWVzdElEKTsK
IAogICAgIGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUoMCwgMCkpOwogCi0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCBi
eXRlcywgbGVuZ3RoKTsKLSAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gbGVuZ3RoOworICAgIENGRGF0
YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1ZmZlci5zaXplKCk7CiB9CiAKIHZvaWQgUERGUGx1
Z2luOjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKQpAQCAtMTc2Mywx
NCArMTc2NCwxNCBAQCB2b2lkIFBERlBsdWdpbjo6ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1aW50
NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAgICAgIENGRGF0YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5n
ZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVudExlbmd0aCk7CiB9CiAKLXZvaWQgUERGUGx1Z2lu
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxl
bmd0aCkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRh
ID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAgIGVuc3VyZURhdGFC
dWZmZXJMZW5ndGgobV9zdHJlYW1lZEJ5dGVzICsgbGVuZ3RoKTsKLSAgICBtZW1jcHkoQ0ZEYXRh
R2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdldCgpKSArIG1fc3RyZWFtZWRCeXRlcywgYnl0ZXMs
IGxlbmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKKyAgICBlbnN1cmVEYXRh
QnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyArIGJ1ZmZlci5zaXplKCkpOworICAgIG1lbWNw
eShDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihtX2RhdGEuZ2V0KCkpICsgbV9zdHJlYW1lZEJ5dGVz
LCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX3N0cmVhbWVkQnl0ZXMgKz0g
YnVmZmVyLnNpemUoKTsKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCiAgICAgLy8g
S2VlcCBvdXIgcmFuZ2VzLWxvb2t1cC10YWJsZSBjb21wYWN0IGJ5IGNvbnRpbnVvdXNseSB1cGRh
dGluZyBpdHMgZmlyc3QgcmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmgKaW5kZXggMWQ4NDQ4MDVmNGMxMGU5M2ZlZGNhYmRlZWMyMWRkMzVkZGY4ODIwMi4uZTRk
NjJmNGJlYTliZmMyZmE4MGVmNGQ2ZTkwYzVjY2YwNjc5NGY2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTU0LDEyICs1NCwxMyBAQCBjbGFzcyBBZmZp
bmVUcmFuc2Zvcm07CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZs
b2F0U2l6ZTsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwog
Y2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjAsNyArMTYxLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5n
JiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAv
LyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCi0gICAg
dmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJikgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBo
YXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9h
ZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgPSAwOwpAQCAtMTczLDcgKzE3NCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8g
VGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRh
LgotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAKICAg
ICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBsb2FkaW5n
LgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRl
eCA1MzRkYTUyZDQ3ZDYyODUwZTIwNWZmOWU5OWMzMGIzN2QzYmNiYTEyLi4wMzQ0ZjRiZTIzYTQz
NzY3MTk3Nzg5OTk3ZDc2MzdhMjAzMWI3ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6
CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQKICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAKQEAg
LTIzNSw5ICsyMzUsOSBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUgogICAgIG1fcGx1Z2luVmll
dy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCByZXNwb25z
ZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlw
ZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQgUGx1
Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3OjpT
dHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3Ry
ZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVn
aW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnVmZmVy
KTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZEZhaWwoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgCkBAIC0zNzQsNyArMzc0
LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVk
RGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZp
bGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6bWFu
dWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxp
emUuCiAgICAgaWYgKCFtX3BsdWdpbikKQEAgLTM4MiwxMSArMzgyLDExIEBAIHZvaWQgUGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1f
bWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9u
c2UpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwor
ICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoYnl0
ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGJ1
ZmZlcik7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmco
KQpAQCAtMTE3MSw5ICsxMTcxLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxT
dHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBpZiAobV9tYW51YWxTdHJl
YW1EYXRhKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLnRha2Uo
KTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQotICAg
ICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgp
LCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS50
YWtlKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsK
KyAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShidWZmZXIpOworICAgICAgICB9
KTsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1T
dGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmgKaW5kZXggZjY2MzEyYTgwYWNkMWUwMzUzMTBkZmFhM2E1ZjNhMTdiNzJhYWU1NS4u
MjU2MTVjYjMwZjIyNjQ2MzkyNDQ0ODhmMmJkN2M0MTIyNzkwNzliOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNzMsNyArNzMsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVkKCkgY29uc3QgeyByZXR1cm4gIW1fcGx1
Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCk7IH0KIAogICAgIHZvaWQgbWFudWFs
TG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMs
IGludCBsZW5ndGgpOworICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWFudWFsTG9hZERpZEZpbmlzaExvYWRp
bmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBl
ZTQwZmI5NTg1ZTc5ZDg2YjNjZmQyZjU3OWVkNDZlNjFiOWVjNjNlLi4zMTQ4MmViM2IzNjhkNzhh
NjFhN2VjMWQyNGM1OTgxMGJjOTFlZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlk
UmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFt
X2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTgwLDE0ICs4MCwxNCBAQCB2b2lkIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPgogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKICAgICAgICAgICAgIG1fcmVzcG9u
c2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOwotICAgICAgICBzdGQ6OmdldDxTaGFyZWRC
dWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBl
bmQoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX2lzRG93bmxv
YWQpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRv
d25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlk
UmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkp
IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBi
dWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2Zl
dGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0
PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRG
aW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1EYXRhKQpAQCAtMTM2LDE1ICsxMzYsMTUgQEAgdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRG
aW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRS
ZWNlaXZlQmxvYkNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICgh
bV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pc0Rvd25sb2FkKQot
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9h
ZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBkYXRhLCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0
X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7
IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElk
ZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgZGF0YSwgc2l6ZSB9
LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIgLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6
ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkRmluaXNoQmxvYkxvYWRpbmcoKQpAQCAtMjI4LDcgKzIyOCw3IEBA
IHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UoKQogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5p
c2goKTsKICAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7
Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOworICAgICAgICBkaWRSZWNl
aXZlRGF0YShidWZmZXIuY29weSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgaWYgKG1f
ZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxG
b3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgK
aW5kZXggZTk4N2UxOWFjOGI3Mzg4NzFhYWQ4MmI0YjM4NTYyOTY4YTJiNmM5Yy4uNzcyYWVlNmY5
N2EwOWEwNjZhYzExMDJkNGNkZTI3MDE1MmJjZDgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZv
cm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBjbGVhbnVwKCk7CiAgICAgCi0gICAgdm9pZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCk7CisgICAgdm9pZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkRmluaXNoQmxvYkxvYWRpbmcoKTsKIAogICAg
IHN0cnVjdCBCbG9iTG9hZGVyIGZpbmFsIDogV2ViQ29yZTo6RmV0Y2hMb2FkZXJDbGllbnQgewpA
QCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50
IEFQSQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZl
QmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKSBmaW5hbCB7IGNsaWVudC0+ZGlkUmVjZWl2ZUJsb2JDaHVu
ayhkYXRhKTsgfQogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpIGZpbmFsIHsgY2xpZW50LT5kaWRGYWlsKGVycm9yKTsgfQogICAgICAgICB2
b2lkIGRpZFN1Y2NlZWQoKSBmaW5hbCB7IGNsaWVudC0+ZGlkRmluaXNoQmxvYkxvYWRpbmcoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxNGEwODNjYTIwN2E5MDYz
Y2Y4MGIxZTdlOTY3MGE0ODdjZjRkMzk5Li5lZDRmNWRlOWQ1ZTU2MThkNDMyNDU1MDgyZjVkYTE4
OGFiZjliZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExNTIsMTAg
KzExNTIsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFy
dENvbnRlbnQoKQogICAgIHdlYlBhZ2UtPmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KG1fZnJh
bWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fcGx1Z2luVmlldykK
LSAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGxvYWRl
ci0+Y29tbWl0RGF0YShkYXRhKTsKIAogICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0YW5k
LWFsb25lIG1lZGlhIGRvY3VtZW50LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2VsIHRo
ZSBXZWJLaXQgbG9hZC4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQg
YWNyb3NzIGFsbCBwb3J0cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+LgpAQCAtMTE3Nyw3
ICsxMTc3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1
bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KgogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldyA9IHRydWU7CiAgICAgfQotICAg
IG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7Cisg
ICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciog
bG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiYjUyOWQzYWVjNGUyYzc1
ZjFhN2RlOTFiMTBiNTU4MmQ0NTIyYjQyLi4xZDMwYmMzOTM4M2FmZmYyY2E5YzI4NzUzZGQyZDdl
YzJiMjY0OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTUyLDcgKzE1Miw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5h
bDsKICAgICB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAKLSAgICB2
b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90
KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGZp
bmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIGZpbmFsOwogICAgIAogICAg
IHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggYTIwNWUwMDFjYTcxNTgyMDkxM2E4MWFlNGE4MzY1
MzBmOWEwZjY0OC4uNzJlMzU1NGM4ZTBhYTY5MGE2ZWM1NzgwMTc2ZjE5ZTBiOGQ3MGQyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00OSw3ICs0OSw3
IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAKIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6On5X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDBkYzE2N2U1YjdiYzNiMDNl
ZjM5MzFlYWIzNTZjNzgyNzkyOTUyOWUuLjY0OWJjODMxOWMyNzg2ZjAxZDYxN2MxMTE5OWRiMGM2
YzA3N2ZhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRlOwog
ICAgIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCA5NDJlZGM2MjNhNGU2NTNiYjE4OGFlZTA1MDY0NGEzZjRhMDMyZTg5Li5mODlmZjcyYTBk
MzFiZWMxMWVmODAyOTdlZmJhOTJjMmE3YmM2NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzA1NywxMiArNzA1NywxMiBAQCB2b2lkIFdl
YlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMU2NoZW1lSGFuZGxl
cklkZW50aWZpZXIgaGFuZAogICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodGFz
a0lkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNr
RGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVU
YXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmll
ciwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhKQogewogICAgIGF1dG8qIGhhbmRs
ZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxlcklk
ZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsKIAotICAgIGhhbmRsZXItPnRhc2tEaWRS
ZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5zaXplKCksIGRhdGEuZGF0YSgpKTsKKyAg
ICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuYnVmZmVy
KCkgPyAqZGF0YS5idWZmZXIoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkuZ2V0KCkpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVIYW5k
bGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhOTRiNWI5ZDdm
ZTMyZjI0YTg2ZGFhYWQ0NDg0MmIwY2RkMGFlYjJmLi40ODg2NjcwN2M0NjEzZDlhN2NkMzUyMTVk
ZmNhOTIzYzY5NzliZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC0xODQsNiArMTg0LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0
aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hh
cmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTg5Niw3ICsxODk3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVybFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJlZGlyZWN0
aW9uKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRQZXJm
b3JtUmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCB1cmxTY2hl
bWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNl
aXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
KTsKKyAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5k
bGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVu
dGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKICAgICB2b2lkIHVybFNjaGVt
ZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHNldElzVGFraW5nU25hcHNob3RzRm9yQXBwbGlj
YXRpb25TdXNwZW5zaW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYjI3MjI5NDcxZWFlODZlZTU5ODE5
ODNkZDU3YjVlN2E4MjkxY2Q0Yi4uYmRhNWY1MGFkZDIzYTk2NzQwZTg5ZDczM2Q3OWMxODdmMDUy
YmUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCkBAIC01NjQsNyArNTY0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUKICAgICBVUkxTY2hlbWVUYXNrV2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJLaXQ6OldlYlVS
TFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBwcm9wb3NlZFJlcXVlc3Qp
IC0+IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgYWN0dWFsUmVxdWVzdCkgQXN5bmMKICAgICBV
UkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkKICAgICBVUkxT
Y2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklk
ZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRp
ZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkK
LSAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5k
bGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
ZGF0YSkKKyAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJVUkxTY2hl
bWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0
YSkKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5k
bGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQog
CiAgICAgU2V0SXNTdXNwZW5kZWQoYm9vbCBzdXNwZW5kZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5
LmNwcAppbmRleCA2ZDhkMGNmMjc4NGVkMzA1NjYyNWM3ZjZlODQ2YTkzYTcxMWNiYWNkLi42MTZl
ZGEwOGYwYjhmY2FiMmQ1N2ZjNDc1MzI5MTA3YjgxNWNkMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eS5jcHAKQEAgLTk2LDEzICs5NiwxMyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eTo6dGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZQogICAg
IHRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLXZvaWQgV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCog
ZGF0YSkKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byogdGFzayA9IG1fdGFza3MuZ2V0KHRhc2tJ
ZGVudGlmaWVyKTsKICAgICBpZiAoIXRhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIHRhc2st
PmRpZFJlY2VpdmVEYXRhKHNpemUsIGRhdGEpOworICAgIHRhc2stPmRpZFJlY2VpdmVEYXRhKGRh
dGEpOwogfQogCiB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZENvbXBsZXRl
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCmluZGV4IDU4YmVjYzE3
YjVkODU5ODc0OTg4NGQzMDI1MTY4OWNjY2MxNzY5M2YuLmFiMjBiZDU3M2FhNGFmYzE1ODA1OTBm
MjcwNDY2MzAwNjg3NzQwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCkBAIC0zNSw2ICszNSw3
IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksNyArNjAsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKT4mJik7CiAgICAgdm9pZCB0YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
OwotICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lkIHRhc2tEaWRS
ZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgdGFza0RpZENvbXBsZXRlKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwog
ICAgIHZvaWQgdGFza0RpZFN0b3BMb2FkaW5nKFdlYlVSTFNjaGVtZVRhc2tQcm94eSYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVU
YXNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2No
ZW1lVGFza1Byb3h5LmNwcAppbmRleCAzNjA2YmJkYzY1MjE1ZGRjYTkyNjEzYTgxMDdkYWIxYjEx
ZWNiNjU2Li45ZTcyZDg0Yzk3ZGY2ZDI5NzE0YTgzYzUxYWMxNzc2M2U1ZmI2NTNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZVRhc2tQcm94eS5jcHAKQEAgLTE0MCwyMSArMTQwLDIxIEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFz
a1Byb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZl
RGF0YShzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkKK3ZvaWQgV2ViVVJMU2NoZW1l
VGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgaWYgKCFoYXNMb2FkZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1fd2FpdGluZ0ZvckNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIFdFQlVSTFNDSEVNRVRB
U0tQUk9YWV9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6IFJlY2VpdmVkIGRhdGEgZHVyaW5n
IHJlc3BvbnNlIHByb2Nlc3NpbmcsIHF1ZXVpbmcgaXQuIik7Ci0gICAgICAgIHF1ZXVlVGFzayhb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGFWZWN0b3IgPSBWZWN0b3Ig
eyBkYXRhLCBzaXplIH1dIHsKLSAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGFWZWN0b3Iu
c2l6ZSgpLCBkYXRhVmVjdG9yLmRhdGEoKSk7CisgICAgICAgIHF1ZXVlVGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGEgPSBSZWYgeyBkYXRhIH1dIHsKKyAgICAg
ICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKLSAgICBtX2NvcmVM
b2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIHNpemUsIDAsIERhdGFQYXlsb2FkVHlwZTo6RGF0
YVBheWxvYWRCeXRlcyk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShkYXRhLCAw
LCBEYXRhUGF5bG9hZFR5cGU6OkRhdGFQYXlsb2FkQnl0ZXMpOwogICAgIHByb2Nlc3NOZXh0UGVu
ZGluZ1Rhc2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAppbmRleCA3NTUwODc5NDE4MjBmZWVmYzVk
MDEyNzE1OGMwNjRjZTI1OGEwODM1Li5lZDkxZjM4ZTNhZGQxM2JlMTljYjIxNzdlZDQ0OGZkZDJm
YTc5NTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJV
UkxTY2hlbWVUYXNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRQZXJmb3Jt
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHNpemVfdCwgY29uc3Qg
dWludDhfdCogZGF0YSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCAwYmE5NzM1ZmYw
ZDNjNzc5NDBlZmQ2ZGM1ZmY3N2Y1YWRiYTczZjc2Li4yNzk2MDdkN2Q0MzM5OWM3OTMwNTI0OGI2
MzczMzE1ODg1OTIyM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTY5Myw2ICs2OTMsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBXZWJQcm9jZXNzOjpzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0CiAKIHZv
aWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0lu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgU2FuZGJveEluaXRpYWxpemF0aW9u
UGFyYW1ldGVycyYgc2FuZGJveFBhcmFtZXRlcnMpCiB7CisgICAgcmV0dXJuOwogI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgLy8gTmVlZCB0byBvdmVycmlk
ZSB0aGUgZGVmYXVsdCwgYmVjYXVzZSBzZXJ2aWNlIGhhcyBhIGRpZmZlcmVudCBidW5kbGUgSUQu
CiAgICAgYXV0byB3ZWJLaXRCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6
QCJjb20uYXBwbGUuV2ViS2l0Il07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvUGluZ0hhbmRsZS5oCmluZGV4IGEyNTU2MGExMGMyODgyZTFhYmQxNzg0NTY5NDg2ZWEx
M2VkODk2ZDQuLjMyODljMjM2MjlhMGRjMzFmYzBjMTk5ZWRmMTMyOTdiZWQ2MWExOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAKQEAgLTczLDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICAgICAgcGluZ0xvYWRDb21wbGV0ZSh7IH0sIHJlc3BvbnNlKTsKICAgICB9Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENv
bXBsZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgaW50KSBmaW5hbCB7IHBpbmdMb2Fk
Q29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgcGlu
Z0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgcGluZ0xv
YWRDb21wbGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmluYWwgeyByZXR1cm4gbV9zaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOTU5ZDc0OGI1
NmJlMTA3NmJkOTc3OTkyMmNkMzU2ZDIxYTY4MTc0ZS4uOGRmOTkzZjJkNzc1YjZjOTNkMmU4ZjA5
OTBmNzJmODVmNjE4ZTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC00OCwxMCAr
NDgsMTIgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDYWNoZWRGcmFtZTsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIFByb3RlY3Rpb25TcGFj
ZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogfQogCiBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkZyYW1l
TG9hZGVyQ2xpZW50PiB7CkBAIC0xNTEsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdp
bGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkUmVwbGFj
ZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJD
b3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZv
aWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkg
ZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA0M2U2M2Y0NTYzNDVlY2YxYzkyNGU1
Yjc3MmE2ZjU0MTczYTkxNDJiLi44N2E1ZDY1N2Y3YjczM2QwN2M1ZGI2MDFmNjk4MWY5MDQ5Nzcx
MzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtOTkyLDEwICs5OTIsOSBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiAj
ZW5kaWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChXZWJD
b3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpE
b2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEp
CiB7Ci0gICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5
dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7Ci0g
ICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOm5zRGF0YS5nZXQoKV07CisgICAg
W2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0
KCldOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKQEAgLTIwMTIsNyArMjAxMSw3IEBAIFJlZlB0
cjxXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9maWxlUGF0
aDsKICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4gbV9maWxlSGFuZGxlOwogCi0gICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGF1dG8gZGF0YUFycmF5ID0gYnVmZmVyLmNyZWF0ZU5TRGF0YUFycmF5KCk7CiAg
ICAgICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBkYXRhQXJyYXkuZ2V0KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCAwZTA1YjE4ZDY5NjM5
ODI4ZDQzM2M0NmQ3OTIxY2Y3MGRlN2RmOWQxLi4yYTg3NzBkZjgwYmI5ZjcwYzEwYmI5MWY5NTIw
ZDFlMTljODU5ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KQEAgLTk3Nyw3ICs5NzcsNyBAQCAtICh2b2lkKV9jb21taXREYXRhOihOU0RhdGEgKilk
YXRhCiAgICAgYXV0byogZG9jdW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgp
OwogICAgIGRvY3VtZW50LT5zZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoX3ByaXZhdGUtPnNob3Vs
ZENyZWF0ZVJlbmRlcmVycyk7CiAKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpLT5jb21taXREYXRhKChjb25zdCB1aW50OF90KilbZGF0YSBieXRlc10s
IFtkYXRhIGxlbmd0aF0pOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPmNvbW1pdERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZmIyNTgz
ZmU5NzI2NGM3M2VlYjIzZWJiNGQzOTkwYjNiODRhMDdmMy4uMTI3MGU1N2RkOTViMGQwMDAzYjVl
NTY3N2Q0NzQyYTEyNTUyZDg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAt
NjQxLDkgKzY0MSw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGxl
KERvY3VtZW50TG9hZGVyKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKLSAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBs
b2FkZXItPmNvbW1pdERhdGEoZGF0YSk7CiAKICAgICAvLyBJZiB0aGUgZG9jdW1lbnQgaXMgYSBz
dGFuZC1hbG9uZSBtZWRpYSBkb2N1bWVudCwgbm93IGlzIHRoZSByaWdodCB0aW1lIHRvIGNhbmNl
bCB0aGUgV2ViS2l0IGxvYWQuCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgYmUgc2hh
cmVkIGFjcm9zcyBhbGwgcG9ydHMuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzQ4NzYyPi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDA5NWIyNTM1YTY4NzU0N2JkNzg4NDZmOTA3NmFlNmM3
ZDAxNjI5NDguLjc5MjZmZDM2NzE4MDllODM4NDdhNDgwMzFhOGI5MGM2MzhmYWY3ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmcoKSkgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90Kiwg
aW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lk
IGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3
NGEzYWIwNTNhYmE5MTE0ODI3MDg1NzU2ZTk2NDI0N2M0NDFmNmYzLi4xY2JlMThmM2U3NjIyN2E4
NWQxNTRhOWU1N2M0NGM4Y2ZkYmZlNGUwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMjIgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBtYWtlIFNoYXJlZEJ1ZmZlcjo6
Y29weSgpIHJldHVybiBhIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ2MjIKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODY4Mjk1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0yMyAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0g
V1RSOiBoYW5kbGUgaGVhZGluZyBsZXZlbCBhcyBzcGVjaWFsIGNhc2UgaW4gaW50VmFsdWUgd2l0
aCBBVFNQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyLmNwcAppbmRleCBmMTJiOWYwODM2MDU1ODk0Y2Q2NWE4MjNkNWZmNmUzNGI5OGFkNTk4
Li4wNjY5ZDA3YzY0ZjlkZjU0OWMzZTUxMDJlZDY3YjY5Y2MyOTU0MmY5IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMzAz
LDYgKzMwMywxNSBAQCBURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAg
ICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3QsIGNvcHlJc0NvbnRpZ3VvdXMpCit7CisgICAgRVhQRUNUX1RSVUUoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKS0+Y29weSgpLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLT5jb3B5KCktPmlzQ29udGlndW91cygp
KTsKKyAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUg
dGVzdC4iOworICAgIEVYUEVDVF9UUlVFKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQs
IHN0cmxlbihzaW1wbGVUZXh0KSktPmNvcHkoKS0+aXNDb250aWd1b3VzKCkpOworICAgIEVYUEVD
VF9GQUxTRShGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKS0+Y29weSgpLT5pc0NvbnRpZ3VvdXMoKSk7Cit9CisKICNpZiBFTkFCTEUo
TUhUTUwpCiAvLyBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciB1bml0LXRlc3RzIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3Qg
TiA+Cg==
</data>
<flag name="commit-queue"
          id="473631"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447876</attachid>
            <date>2021-12-23 06:09:22 -0800</date>
            <delta_ts>2021-12-27 06:12:22 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-232424-20211224010919.patch</filename>
            <type>text/plain</type>
            <size>267497</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGI1M2U5ZWQ3YTlmOGZj
YzhhZGQyYzY5YzUxMGVmYzk4MzJmM2NiYy4uOTNiNTlkZjk2YTc4NzFiMDdiMzJhMWE5MDIyM2E2
YzljMDkxYmM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1MyBAQAorMjAyMS0xMi0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1
ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBtb2RpZnkgYWxsIGRpZFJlY2VpdmVEYXRhIG1ldGhv
ZCBzbyB0aGF0IHRoZXkgbm8gbG9uZ2VyIHVzZSB1aW50OF90L2ludAorICAgICAgICBhbmQgaW5z
dGVhZCB1c2UgU2hhcmVkQnVmZmVyLiBXZSBhbHNvIGRvIHRoZSBzYW1lIGZvciBhbnkgaW50ZXJt
ZWRpYXJpZXMKKyAgICAgICAgdXNlZCBieSB0aGUgdmFyaW91cyBkaWRSZWNlaXZlRGF0YSBpbXBs
ZW1lbnRhdGlvbnMuCisgICAgICAgIFRoaXMgd2lsbCBmYWNpbGl0YXRlIG1vdmluZyBuZXR3b3Jr
aW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLgorICAg
ICAgICBUaGlzIGFsc28gYWxsb3dzIHRvIHJlbW92ZSBzZXZlcmFsIG1lbW9yeSBhbGxvY2F0aW9u
cyBhbmQgY29waWVzLgorICAgICAgICBXZSBjYW4gbm93IGFsc28gY29uc2lkZXIgbW92aW5nIHRo
ZSB1bmRlcmx5aW5nIFNoYXJlZE1lbW9yeSBjcmVhdGVkIGluCisgICAgICAgIHRoZSBjb250ZW50
IHByb2Nlc3MgYWxsIHRoZSB3YXkgdG8gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4gQ292ZXJlZCBieSBhbGwgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpi
bG9iQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxl
bWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVNpbmsuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpt
YXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjphZGREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1p
dHRlZExvYWQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKToKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRh
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGRCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1
dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5SZXNv
dXJjZURhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZl
ckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50
OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJl
dmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lm
Qnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKC1bV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YTpsZW5ndGhS
ZWNlaXZlZDpdKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9h
ZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTIt
MjMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBTY2FsYWJs
ZUltYWdlRGVjb2RlciBzaG91bGQgYmUgdXNpbmcgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgRGF0
YVNlZ21lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzQ0MQorICAgICAgICByZGFyOi8vcHJvYmxlbS84NTg1NDIwNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERhdGFTZWdtZW50IHNob3VsZCBiZSBh
IFNoYXJlZEJ1ZmZlcidzIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIG5vdAorICAgICAgICBi
ZSB1c2VkIG91dHNpZGUgU2hhcmVkQnVmZmVyJ3MgY29kZS4KKyAgICAgICAgSGlzdG9yaWNhbGx5
LCB1c2luZyB0aGUgaW5uZXIgRGF0YVNlZ21lbnQgd2FzIHJlcXVpcmVkIGFzIGl0IHdhcyB0aHJl
YWQKKyAgICAgICAgc2FmZSB3aGlsZSBTaGFyZWRCdWZmZXIgd2Fzbid0OiBUaGlzIGlzIG5vIGxv
bmdlciB0aGUgY2FzZS4KKyAgICAgICAgU2hhcmVkQnVmZmVyIGFuZCBEYXRhU2VnbWVudCBhcmUg
c2VtYW50aWNhbGx5IHZlcnkgc2ltaWxhciwgc28gdGhpcyBpcworICAgICAgICBtb3N0bHkgYSBm
aW5kL3JlcGxhY2UgY2hhbmdlLgorICAgICAgICBGbGF0dGVuaW5nIHRoZSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIGlzIHN0aWxsIHJlcXVpcmVkIGFzIG1vc3QgZGVjb2RlcnMKKyAgICAgICAgcmVx
dWlyZSByZWFkaW5nIHRoZSByYXcgYnl0ZXMuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2Vy
dmFibGUgYmVoYXZpb3VyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNr
aW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpzZXRTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpJbWFnZUJhY2tpbmdTdG9y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJl
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6cmVhZFVpbnQxNik6CisgICAgICAgIChX
ZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6cmVhZFVpbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpC
TVBJbWFnZVJlYWRlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZVJlYWRlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHMjAwMEltYWdlRGVjb2Rlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlUmVhZGVyOjpkZWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDIxLTEyLTIy
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgbWFrZSBTaGFy
ZWRCdWZmZXI6OmNvcHkoKSByZXR1cm4gYSBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NjIyCisgICAgICAg
IHJkYXI6Ly9wcm9ibGVtLzg2ODI5NTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbWFrZSBTaGFyZWRCdWZmZXI6OmNvcHkoKSByZXR1cm4gYSBjb250
aWd1b3VzIFNoYXJlZEJ1ZmZlcgorCisgICAgICAgIEFQSSB0ZXN0cyBhZGRlZC4KKworICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKwogMjAyMS0xMi0yMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gVGVz
dCBhY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC5odG1sIGNyYXNoZXMgd2l0aCBBVFNQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA4ZGY3YWYyMmRhYjg0MjM0YTQ2ZmJjYTBiYzdmMjRkNDQ0YjRiM2RiLi5j
MzVmNGMyYjZjN2RkNjY0ODU3YTcyMzQzYjRmOWRiNzU3YzE5OGM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEwMiBAQAorMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0
d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRv
d25sb2FkVGFzay5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OmxvYWRCb2R5RnJvbVByZWxvYWRlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2Fk
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZl
ckNvcHkpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUGFy
c2VUcmFja3MpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFG
b3JtYXRSZWFkZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpQREZQbHVn
aW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBERlBs
dWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQ6OmRpZFJlY2VpdmVCbG9iQ2h1bmspOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExv
YWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVybFNjaGVtZVRh
c2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveCk6CisKIDIwMjEt
MTItMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZS1lbmFibGUgV2ViUHVzaEQuSGFuZGxlSW5qZWN0ZWRQdXNoIEFQSSB0ZXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvQ2hhbmdlTG9nCmluZGV4IDU3NjgxYjIxYTczNDM5ZTkwYmYyMWJhMjQ0OTU4MjU5N2UwMTk5
ODIuLmJiMWM1YjUzNmM0Zjk5MTVmYmFiZDlhYzMwMzdiYzQ0OGM3NzQ2YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAg
cmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg6CisKIDIwMjEtMTItMTQgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgU2hhcmVk
QnVmZmVyIGNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZWY5NDlkZTYw
Njg5NmNhOTkzZWRmOGYzNGQ5YzFiMzBhNWI2NTRhYi4uZDU5NTdkZGIxZjRhZjg4YTRiNWZkNzEz
MGYxMDcxNDlhYjUwOWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBuZXR3b3Jr
aW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
b21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2
aWV3TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAg
ICAoLVtXZWJGcmFtZSBfY29tbWl0RGF0YTpdKToKKwogMjAyMS0xMi0yMiAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggV2ViS2l0IEJ1aWxkIGlzc3Vl
cyB3aGVuIHVzaW5nIHN5c3RlbSBjb250ZW50IHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggYzIzMWYyMDdkYTI1Y2Qy
YTE1ODYwZDI4ZGIzY2UxN2U4NTc1NzdkNS4uZTYxM2FhNTA5Zjc0YzBkZTBlNmQzODM1MThlNTI2
ZjczYWE1OGVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKQEAgLTMyMCwxMyArMzIwLDEzIEBAIHZvaWQgRmV0Y2hCb2R5Q29u
c3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJp
bmcmIGNvCiAgICAgfQogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9zb3VyY2UpIHsK
LSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBz
aXplKSk7CisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2J1ZmZlci5hcHBlbmQoZGF0
YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApp
bmRleCA4NzFkMmMwODYzMzFhOTgyOTRhMTY2YTRiNDJlMzE4NGUwMzc3NzJiLi5kNDY1MWIyM2Rh
NzFjZjhmNGM4Yzk5NjcxZDIyN2ViNWFjOGQyYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKIAogICAgIGV4cGxpY2l0IEZldGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBtX3R5cGUo
dHlwZSkgeyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBib29sIGhh
c0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9CiAgICAgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3Bw
CmluZGV4IGE2MzMxMDhiNTQ3NzgzOTNmYzU0NzUwMDMyYTlhMmU4NmFkZTdmY2MuLjUzNjY4MTU1
YmRlYmMxYWVmMzlmNGQ5OWZiOWRhZGMxZWJlZjdhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0yOTgsMTEgKzI5OCwxMCBAQCB2
b2lkIEZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ0ZhaWxlZCgpCiAgICAgZmluaXNoQmxvYkxv
YWRpbmcoKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIEFTU0VSVChkYXRhKTsKICAgICBBU1NF
UlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7Ci0gICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291
cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpKQorICAgIGlm
ICghbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+ZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSkpCiAgICAgICAgIHN0b3AoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDVjYTdlMzk2YzQyMjcwMTkzNTZiMDgwNmU0
ZWVkYmU5NWU5MjhmNGIuLjgxZmQwNmVjZGQ2ZmMzOGM5ZTg1OTg3Y2ViZGZjMTZkZDg2ZjNjOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGZXRjaExvYWRlci5oIgogI2luY2x1ZGUgIkZldGNo
TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMCw3ICsxMDEsNyBA
QCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgLy8gQmxvYiBsb2FkaW5nIHJvdXRpbmVzCi0g
ICAgdm9pZCBibG9iQ2h1bmsoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9pZCBibG9i
Q2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBibG9iTG9hZGluZ1N1Y2NlZWRl
ZCgpOwogICAgIHZvaWQgYmxvYkxvYWRpbmdGYWlsZWQoKTsKICAgICB2b2lkIGZpbmlzaEJsb2JM
b2FkaW5nKCk7CkBAIC0xMTMsNyArMTE0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBGZXRj
aExvYWRlckNsaWVudCBBUEkKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhk
YXRhLCBzaXplKTsgfQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhidWZmZXIpOyB9CiAgICAgICAg
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkU3VjY2VlZCgpIGZpbmFsIHsgb3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IDAzZjg5
YjYxY2E1ZjdjNzE3NmI5ZDg4Y2QxMzY2MGU4NmI3YTI1NDguLjRiNDViZmQ4NzUwNDA2ZjZlN2Rh
NzE4Zjk5ODE2OTQ3MWE1ZTg0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuY3BwCkBAIC0xNDgsMTMgKzE0OCwxMyBAQCB2b2lkIEZldGNoTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcwogICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLXZv
aWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIHZhbHVlLCBpbnQg
c2l6ZSkKK3ZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBib29sKQogewogICAgIGlmICghbV9jb25zdW1lcikgewotICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlRGF0YSh2YWx1ZSwgc2l6ZSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jb25zdW1l
ci0+YXBwZW5kKHZhbHVlLCBzaXplKTsKKyAgICBtX2NvbnN1bWVyLT5hcHBlbmQoYnVmZmVyKTsK
IH0KIAogdm9pZCBGZXRjaExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5k
ZXggNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZC4uNWVlYWVmODJkMWRm
M2VmY2VkMjE0MDAzZGY1MTg4ODcwMzZmOTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQgQVBJLgogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sIHVz
ZVN0ckxlbikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ckNsaWVudC5oCmluZGV4IGZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0NWU3ODku
LjEwOWUwOGVjZjdhNDdlN2MwMzdlMzJkY2FhY2FiODZjODFjMThkM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN1
Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCmluZGV4IDBlN2IwMDVlODlhM2QxNzQwYjFjZjlhZGZmOGI0ZjJmMmZjNDNjOTkuLmRjYTBl
MjM4MmUzMmZjMDM3Mjg4N2ZkNDg1MjE0YTE3MzAxYjFiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzYyLDEyICszNjIsMTIgQEAg
dm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxsYmFjayhtX3Jlc3Bv
bnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6
Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZSB8fCBtX2NvbnN1
bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURhdGFDYWxsYmFjaykgewotICAg
ICAgICBTcGFuIGNodW5rIHsgZGF0YSwgc2l6ZSB9OworICAgICAgICBTcGFuIGNodW5rIHsgYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9OwogICAgICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJh
Y2soJmNodW5rKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM3NSw3ICszNzUsNyBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgIGF1dG8mIHNvdXJjZSA9ICptX3Jlc3BvbnNlLm1f
cmVhZGFibGVTdHJlYW1Tb3VyY2U7CiAKICAgICBpZiAoIXNvdXJjZS5pc1B1bGxpbmcoKSkgewot
ICAgICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChkYXRhLCBzaXplKTsK
KyAgICAgICAgbV9yZXNwb25zZS5ib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoYnVmZmVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgRmV0Y2hSZXNw
b25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCiAgICAgICAgIHN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBp
ZiAoIXNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpKSB7
CisgICAgaWYgKCFzb3VyY2UuZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSkp
IHsKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDY3LDcgKzQ2
Nyw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0
YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6Y29u
c3VtZUNodW5rKFJlZjxKU0M6OlVpbnQ4QXJyYXk+JiYgY2h1bmspCiB7Ci0gICAgYm9keSgpLmNv
bnN1bWVyKCkuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkpOworICAg
IGJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShjaHVuay0+ZGF0
YSgpLCBjaHVuay0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6Y29u
c3VtZUJvZHlBc1N0cmVhbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCmluZGV4IDZiMDUwNWQ4OGIxMzJlMjhjYjk1NGFiOWEwZTdlZmU4MTNmNzAyYWYu
LmY5OTI0OWMzOWY5ZDBiMmZjODdhMmY5YzQ2ZDc5MzkyODg4MTRiZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xNDMsNyArMTQzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKKyAgICAgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKIAogICAgICAg
ICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3RpZmljYXRpb25DYWxsYmFj
ayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggMjdhNmQ3MDMzNGNh
MzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1MmU3ZC4uYTY0MWY4MTA3YjRmZDE3OTExZmRiOTJiYjMw
ZjQ1ZTJlODJiNTJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTc3LDEwICsxNzcsMTAgQEAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIAogLy8gTUFSSzogLSBDYWNoZWRSYXdSZXNvdXJjZUNs
aWVudAogCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBI
VE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRh
TGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggY2UwMDlkNGU1ZWRjMzA5NzQ1
ZTAyN2IwNjMyYmQxZTZlODU4MDNiZS4uMGQzYmRiNzQ5ZDdhMzM2OGIzY2E2OGMyMTczMTYwNTkx
NTQ5ZDFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgLy8gQ2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQgb3ZlcnJpZGVzLgotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFsOwor
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVy
JikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgLy8gTW9kZWxQbGF5ZXJDbGllbnQg
b3ZlcnJpZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtU2luay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5oCmluZGV4IGQ1MTczZmJmOGI0MDM0MWM1Y2Y4ZDhhNGY1NWVlYWM4ZmY4
MzhhMzkuLmZlZTk4ODQyMjFiYjQzZThjYzA2MmVhYmNkMGE5OWVjNTRjMDM0NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgK
QEAgLTM1LDcgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3Vy
Y2U7CiBjbGFzcyBSZWFkYWJsZVN0cmVhbTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxl
U3RyZWFtU2luaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ckxvYWRlci5jcHAKaW5kZXggYjdmNzVlZGEzYjIzM2IxOWIyMGVkNzA0Mjg5NDliYjMzNTg5OGU4
MS4uNzM4NTJkNGMwYWYwMzg0NzVmMTViNjU0OWRjNjg5YmY4NTUxYjIwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKQEAg
LTE2MywxNiArMTY0LDE1IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyCiAgICAgICAgIG1fY2xp
ZW50LT5kaWRTdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRmls
ZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGJvb2wpCiB7Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIEFTU0VSVChkYXRhTGVuZ3RoID4gMCk7
CisgICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkpOwogCiAgICAgLy8gQmFpbCBvdXQgaWYgd2UgYWxy
ZWFkeSBlbmNvdW50ZXJlZCBhbiBlcnJvci4KICAgICBpZiAobV9lcnJvckNvZGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGludCBsZW5ndGggPSBkYXRhTGVuZ3RoOworICAgIGludCBsZW5ndGgg
PSBidWZmZXIuc2l6ZSgpOwogICAgIHVuc2lnbmVkIHJlbWFpbmluZ0J1ZmZlclNwYWNlID0gbV90
b3RhbEJ5dGVzIC0gbV9ieXRlc0xvYWRlZDsKICAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8
bG9uZyBsb25nPihyZW1haW5pbmdCdWZmZXJTcGFjZSkpIHsKICAgICAgICAgLy8gSWYgdGhlIGJ1
ZmZlciBoYXMgaGl0IG1heGltdW0gc2l6ZSwgaXQgY2FuJ3QgYmUgZ3Jvd24gYW55IG1vcmUuCkBA
IC0xODEsNyArMTgxLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCkgewotICAgICAgICAgICAg
dW5zaWduZWQgbmV3TGVuZ3RoID0gbV90b3RhbEJ5dGVzICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRhdGFMZW5ndGgpOworICAgICAgICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbV90b3RhbEJ5
dGVzICsgYnVmZmVyLnNpemUoKTsKICAgICAgICAgICAgIGlmIChuZXdMZW5ndGggPCBtX3RvdGFs
Qnl0ZXMpIHsKICAgICAgICAgICAgICAgICBmYWlsZWQoTm90UmVhZGFibGVFcnJvcik7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgRmlsZVJlYWRlckxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CiAgICAgaWYgKGxlbmd0aCA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBtZW1jcHkoc3Rh
dGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQsIGRhdGEs
IGxlbmd0aCk7CisgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihtX3Jhd0RhdGEtPmRhdGEo
KSkgKyBtX2J5dGVzTG9hZGVkLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpOwogICAgIG1fYnl0ZXNM
b2FkZWQgKz0gbGVuZ3RoOwogCiAgICAgbV9pc1Jhd0RhdGFDb252ZXJ0ZWQgPSBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggNTM5YzIzMDRhODJl
NjNhYWRmZTJjNTY3Yzk4ZDBiOGM2ODdhOGU5Zi4uYjdlNWI0MDU3ZmIyMDZmZjMyMzE1NWNjMGYx
NTAyZmNhMjBkMjY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNs
aWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4
IDVjNWJiMmFlYTgzOTkxOGIwNjk3NzU4ODFjZTNhMzY5YTQyOGU1YjkuLjc4MTc3NWE4NDE2NjI2
ZTgyOTBmZWFiODI0ZTdiMmFlZjVjYWIyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC02MTYsMTAgKzYxNiwx
MCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVhZGFibGVM
b2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudAogICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJl
Y2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoaWRlbnRpZmllciwgZG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYg
KGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtB
Z2VudCgpKQotICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIs
IGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbmV0d29ya0Fn
ZW50LT5kaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJl
c291cmNlTG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGQyOTU3ODEwZDgzODJjOTM1MWQ1YTkzZjE0NGFlZDE0
OTNiY2M2NTEuLjgyYWNjZWQyMGNmZDUxMzFiMjUwMmYwOTlhOWM0ZmEyZmRkNjE2ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKQEAgLTE5MywxMyArMTkzLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRMb2Fk
UmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoUGFnZSYsIERvY3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVz
b3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShGcmFt
ZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYsIFJl
c291cmNlTG9hZGVySWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEo
RnJhbWUqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVEYXRhKEZyYW1lKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBzdGF0aWMg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7
CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApA
QCAtNDE0LDcgKzQxNCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRMb2Fk
ZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJj
ZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxv
YWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXImLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRh
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3Rh
dGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYpOwpAQCAtMTA4MiwxNyArMTA4MiwxNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoRG9j
dW1lbgogICAgICAgICBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbCgqYWdl
bnRzLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIsIGlkZW50aWZpZXIpOwogfQogICAgIAotaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSog
ZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQoraW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSogZnJhbWUs
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05P
X0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzKGZyYW1lKSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCphZ2VudHMsIGlkZW50
aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgZGlk
UmVjZWl2ZURhdGFJbXBsKCphZ2VudHMsIGlkZW50aWZpZXIsIGJ1ZmZlciwgZW5jb2RlZERhdGFM
ZW5ndGgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBkaWRSZWNl
aXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyhnbG9iYWxTY29wZSksIGlkZW50aWZpZXIs
IGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhSW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgYnVmZmVyLCBidWZm
ZXIuc2l6ZSgpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApp
bmRleCAzOWIwMTFjZjA2ZjdmMzg1MzI0M2UwYTc2M2EzYjFkNDU0OTA0MTQ5Li4zMjhlYmU3ZTY0
MTE5NWU1YTQ2ODUwMjc1NTkxMGY3OGM0OGI1OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTkwLDEwICs5MCwxMCBAQCBz
aXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6YXBwZW5kRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJU
KCFoYXNDb250ZW50KCkpOwotICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0
aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhKTsKIH0KIAogdW5zaWduZWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCkBAIC0y
MjEsNyArMjIxLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQnVmZmVyUmVzb3VyY2VEYXRhKGNvbnN0
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEmIHIKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLU5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCitOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVB
ZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0
YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpAQCAtMjMw
LDE1ICsyMzAsMTUgQEAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCog
TmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2UKICAgICBpZiAoIXNob3VsZEJ1
ZmZlclJlc291cmNlRGF0YSgqcmVzb3VyY2VEYXRhKSkKICAgICAgICAgcmV0dXJuIHJlc291cmNl
RGF0YTsKIAotICAgIGlmIChyZXNvdXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRhdGFMZW5ndGgg
PiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQorICAgIGlmIChyZXNvdXJjZURh
dGEtPmRhdGFMZW5ndGgoKSArIGRhdGEuc2l6ZSgpID4gbV9tYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZSkKICAgICAgICAgbV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEtPmV2aWN0
Q29udGVudCgpOwogICAgIGlmIChyZXNvdXJjZURhdGEtPmlzQ29udGVudEV2aWN0ZWQoKSkKICAg
ICAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKIAotICAgIGlmIChlbnN1cmVGcmVlU3BhY2UoZGF0
YUxlbmd0aCkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKSB7CisgICAgaWYg
KGVuc3VyZUZyZWVTcGFjZShkYXRhLnNpemUoKSkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50
RXZpY3RlZCgpKSB7CiAgICAgICAgIG1fcmVxdWVzdElkc0RlcXVlLmFwcGVuZChyZXF1ZXN0SWQp
OwotICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSwgZGF0YUxlbmd0aCk7Ci0g
ICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YUxlbmd0aDsKKyAgICAgICAgcmVzb3VyY2VEYXRh
LT5hcHBlbmREYXRhKGRhdGEpOworICAgICAgICBtX2NvbnRlbnRTaXplICs9IGRhdGEuc2l6ZSgp
OwogICAgIH0KIAogICAgIHJldHVybiByZXNvdXJjZURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGRhYWU1ZmU0YTMxZTMxNTkz
NjM3OTA0MjNmNWZiZDMzNzBjNWNkMzkuLmM4Y2VkMTJhNjQwN2ZkY2Q1NzRlY2MyYTc4MTllZGU2
NjM4MDNkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAg
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNv
bnN0OwotICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBT
dHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUg
cmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIHNldFJlc291
cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxzZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBt
YXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOworICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5
YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmlu
ZGV4IDNjZWI0YjQ3ZjEwNjhhMGFmZWFmMDBmMTc5YzI4MDBjNDc2YmQ2YjEuLjViYmEzZmI4YmYz
ZjQwYzUwNWVjZjE2MWVhNWU3ZWVkY2U3ODFiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEy
NCwxNSArMTI0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNl
RGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVzZURldGVjdG9y
KTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKSBvdmVycmlkZQogICAgIHsKLSAg
ICAgICAgaWYgKCFkYXRhTGVuZ3RoKQorICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YUxlbmd0aCA9PSAtMSkKLSAgICAg
ICAgICAgIGRhdGFMZW5ndGggPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSkpOwotCi0gICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZChtX2RlY29kZXItPmRlY29k
ZShkYXRhLCBkYXRhTGVuZ3RoKSk7CisgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gdXNlU3Ry
TGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkp
KSA6IGJ1ZmZlci5zaXplKCk7CisgICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBkYXRhTGVuZ3RoKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGUKQEAg
LTU0OSw5ICs1NDcsOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgICAgICAgICAgaWYg
KHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCiAgICAgICAgICAgICAgICAgbV9y
ZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBwcmV2aW91c1Jlc291
cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+YmFzZTY0RW5jb2RlZCgp
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNCdWZmZXJl
ZERhdGEoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNCdWZmZXIgPSBwcmV2aW91
c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNCdWZmZXIt
PmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAg
IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBzZWdtZW50
LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgIHByZXZpb3VzUmVzb3Vy
Y2VEYXRhLT5idWZmZXIoKS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYm
IGJ1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRk
UmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgYnVmZmVyKTsKICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTc0LDI3ICs1NzEsMjcgQEAgdm9pZCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmkKICAgICAvLyBJZiB3ZSByZXZhbGlkYXRlZCB0aGUgcmVzb3VyY2UgYW5k
IGdvdCBOb3QgbW9kaWZpZWQsIHNlbmQgY29udGVudCBsZW5ndGggZm9sbG93aW5nIGRpZFJlY2Vp
dmVSZXNwb25zZQogICAgIC8vIGFzIHRoZXJlIHdpbGwgYmUgbm8gY2FsbHMgdG8gZGlkUmVjZWl2
ZURhdGEgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KICAgICBpZiAoaXNOb3RNb2RpZmllZCAmJiBj
YWNoZWRSZXNvdXJjZSAmJiBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSkKLSAgICAgICAg
ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgbnVsbHB0ciwgY2FjaGVkUmVzb3VyY2UtPmVuY29k
ZWRTaXplKCksIDApOworICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1faGlk
ZGVuUmVxdWVzdElkZW50aWZpZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKQogICAgICAgICByZXR1
cm47CiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0
SWQoaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAotICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1f
cmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBkYXRhLCBkYXRh
TGVuZ3RoKTsKKyAgICBpZiAoZGF0YS5kYXRhKCkpIHsKKyAgICAgICAgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRh
LT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEpOwogCiAgICAgICAgIC8vIEZv
ciBhIHN5bmNocm9ub3VzIFhIUiwgaWYgd2UgZGlkbid0IGFkZCBkYXRhIHRoZW4gd2UgY2FuIGFw
cGx5IGl0IGhlcmUgYXMgYmFzZTY0IGVuY29kZWQgY29udGVudC4KICAgICAgICAgLy8gT2Z0ZW4g
dGhlIGRhdGEgaXMgdGV4dCBhbmQgd2Ugd291bGQgaGF2ZSBhIGRlY29kZXIsIGJ1dCBmb3Igbm9u
LXRleHQgd2Ugd29uJ3QgaGF2ZSBhIGRlY29kZXIuCiAgICAgICAgIC8vIFN5bmMgWEhScyBtYXkg
bm90IGhhdmUgYSBjYWNoZWQgcmVzb3VyY2UsIHdoaWxlIG5vbi1zeW5jIFhIUnMgdXN1YWxseSB0
cmFuc2ZlciBkYXRhIG92ZXIgb24gY29tcGxldGlvbi4KICAgICAgICAgaWYgKG1fbG9hZGluZ1hI
UlN5bmNocm9ub3VzbHkgJiYgcmVzb3VyY2VEYXRhICYmICFyZXNvdXJjZURhdGEtPmhhc0J1ZmZl
cmVkRGF0YSgpICYmICFyZXNvdXJjZURhdGEtPmNhY2hlZFJlc291cmNlKCkpCi0gICAgICAgICAg
ICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChyZXF1ZXN0SWQsIGJhc2U2NEVu
Y29kZVRvU3RyaW5nKGRhdGEsIGRhdGFMZW5ndGgpLCB0cnVlKTsKKyAgICAgICAgICAgIG1fcmVz
b3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgYmFzZTY0RW5jb2RlVG9T
dHJpbmcoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPmRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCgpLCBk
YXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PmRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCgpLCBkYXRhLnNpemUoKSwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkRmluaXNo
TG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Ms
IFJlc291cmNlTG9hZGVyKikKQEAgLTEyNzEsNyArMTI2OCw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhS
ZXNwb25zCiAgICAgaWYgKGxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmFibGUgdG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMg
YWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfcyk7CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIGlmIChi
YXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gYmFzZTY0RGVjb2RlKGNvbnRl
bnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTEyOTYsOSArMTI5Myw5IEBAIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVx
dWVzdFdpdGhSZXNwb25zCiAgICAgfQogICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZHMo
V1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCByZXNwb25zZS5taW1lVHlwZSgpKTsKLSAg
ICBsb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW2xvYWRlciwgYnVmZmVyID0g
ZGF0YS5yZWxlYXNlTm9uTnVsbCgpXSgpIG11dGFibGUgeworICAgIGxvYWRlci0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZmZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxs
KCldKCkgewogICAgICAgICBpZiAoYnVmZmVyLT5zaXplKCkpCi0gICAgICAgICAgICBsb2FkZXIt
PmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSwgRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZURhdGEo
YnVmZmVyLCBidWZmZXItPnNpemUoKSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKICAgICAg
ICAgbG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICB9
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmgKaW5kZXggNmJjZDg3ZGRjZDhiMDQ0MTMwOGQxZDAxZWNhNmIwZTZk
YTE0MTNkNC4uY2E2Zjc0ZTFiODY5ODBmNDBiMTU1ZDEzZTE2YjcxYWRmYjk0MDQ1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0T2ZUeXBlKFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OkxvYWRUeXBlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKik7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBDYWNo
ZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4
IDQzMzJkNjkxYmJmODI2YTdjODdlYTgzYTMxN2U5NjExNWEyMDQ5OTMuLmI4NmY5YmE2Mzc2NWVj
NGRmZTg0ZjAyZGE0ZGY3ODIzMDljMTU4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVu
dEZpbHRlci5jcHAKQEAgLTE0NSwxNCArMTQ1LDE0IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29u
dGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
CiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7CiB9CiAKLWJvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKQorYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVk
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVu
dD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpGaWx0ZXJpbmcpIHsKLSAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50
RmlsdGVyIHJlY2VpdmVkICVkIGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgbGVuZ3RoLCBt
X21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBm
b3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0YSwgbGVuZ3RoXShQbGF0Zm9ybUNv
bnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIu
YWRkRGF0YShkYXRhLCBsZW5ndGgpOworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNv
bnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgZGF0
YS5zaXplKCksIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
CisgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsg
ZGF0YSB9XShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAg
ICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhKTsKICAgICAgICAgfSk7CiAKICAgICAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBD
b250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJl
c291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZm
ZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJj
ZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRl
bnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogfQogCiBzdGF0aWMg
Y29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuaAppbmRleCA4YjZkZWZmZmFiODBmNWRhYzI1ODdlMzcxYzAxODc5YjlmM2ZkZjc3Li42MGI0
ZGExYTliMzM2OGMyZGZlY2ZmNDJiODlmMzU1OGU4MzMxYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBj
b250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2
ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCk7CisgICAgYm9vbCBjb250aW51ZUFm
dGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgY29udGludWVB
ZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7CiAKICAgICBzdGF0aWMgYm9vbCBj
b250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBh
Y3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRleCAyMTVjMDRlYzk4OTVlOWYxZTZlMTQ3ZGE4
MjA5MzAwOTg1MjM5NjIzLi5mYTdhZDMwMzlhMjA1ZTkwNTcxMDhmM2M2ZjM5MjQxOWJjNDY0N2Rj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKQEAgLTMz
LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJDbGllbnQgewpAQCAt
NDEsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25z
dCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNvbnRlbnRG
aWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbE1haW5S
ZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZp
bHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDZiZjNhYzI5N2VjNmIy
NjNhMDc4NjQwYmNmM2FkNTc3OWRiMGZlZGIuLjk3ZTNkNjViM2U5MmRlMzI3ZjkyZjNiYWQ0Y2M1
MWMxNTQ5M2E1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApA
QCAtNDgzLDggKzQ4Myw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZygp
CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYW4gZW1wdHkgZG9jdW1lbnQsIGl0IHdpbGwgbm90IGhh
dmUgYWN0dWFsbHkgYmVlbiBjcmVhdGVkIHlldC4gQ29tbWl0IGR1bW15IGRhdGEgc28gdGhhdAog
ICAgICAgICAvLyBEb2N1bWVudFdyaXRlcjo6YmVnaW4oKSBnZXRzIGNhbGxlZCBhbmQgY3JlYXRl
cyB0aGUgRG9jdW1lbnQuCiAgICAgICAgIGlmICghbV9nb3RGaXJzdEJ5dGUpCi0gICAgICAgICAg
ICBjb21taXREYXRhKDAsIDApOwotICAgICAgICAKKyAgICAgICAgICAgIGNvbW1pdERhdGEoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSk7CisKICAgICAgICAgaWYgKCFmcmFtZUxvYWRlcigpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5maW5pc2hl
ZExvYWRpbmcodGhpcyk7CkBAIC0xMTU3LDggKzExNTcsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVy
Ojpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGlm
ICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmIGlzTG9hZGlu
Z01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIGF1dG8gY29udGVudCA9IG1fc3Vic3RpdHV0ZURh
dGEuY29udGVudCgpOwogICAgICAgICBpZiAoY29udGVudCAmJiBjb250ZW50LT5zaXplKCkpIHsK
LSAgICAgICAgICAgIGNvbnRlbnQtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7
Ci0gICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVkKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNp
emUoKSk7CisgICAgICAgICAgICBjb250ZW50LT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVy
KFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVkKGJ1ZmZl
cik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNMb2FkaW5nTWFp
blJlc291cmNlKCkpCkBAIC0xMTcxLDcgKzExNzEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpj
b250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIH0KIH0K
IAotdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdlIGFuZCBw
YXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRlc3Ryb3lz
IHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28gcmV0YWlu
IHRlbXBvcmFyaWx5LgpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
Y29tbWl0TG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIGlmIChBcmNo
aXZlRmFjdG9yeTo6aXNBcmNoaXZlTUlNRVR5cGUocmVzcG9uc2UoKS5taW1lVHlwZSgpKSkKICAg
ICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmNvbW1pdHRl
ZExvYWQodGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuY29t
bWl0dGVkTG9hZCh0aGlzLCBkYXRhKTsKIAogICAgIGlmIChpc011bHRpcGFydFJlcGxhY2luZ0xv
YWQoKSkKICAgICAgICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmRpZFJlcGxhY2VNdWx0aXBhcnRD
b250ZW50KCk7CkBAIC0xMjE1LDcgKzEyMTUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxk
VXNlQWN0aXZlU2VydmljZVdvcmtlckZyb21QYXJlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZQog
fQogI2VuZGlmCiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgdWludDhf
dCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fZ290Rmlyc3RCeXRlKSB7
CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1ZTsKQEAgLTEzMTMsMjQgKzEzMTMsMjQgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6
ZV90IGxlbmd0aCkKICNlbmRpZgogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCktPnBh
cnNpbmcoKSk7Ci0gICAgbV93cml0ZXIuYWRkRGF0YShieXRlcywgbGVuZ3RoKTsKKyAgICBtX3dy
aXRlci5hZGREYXRhKGRhdGEpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKLSAgICBkYXRhUmVjZWl2
ZWQoZGF0YSwgbGVuZ3RoKTsKKyAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKIH0KIAotdm9pZCBE
b2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZl
ZChkYXRhLCBsZW5ndGgpKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZp
bHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIpKQogICAgICAgICByZXR1cm47
CiAjZW5kaWYKIAotICAgIEFTU0VSVChkYXRhKTsKLSAgICBBU1NFUlQobGVuZ3RoKTsKKyAgICBB
U1NFUlQoYnVmZmVyLmRhdGEoKSk7CisgICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkpOwogICAgIEFT
U0VSVCghbV9yZXNwb25zZS5pc051bGwoKSk7CiAKICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBD
Rk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2Fk
cyBhcmUgZGVmZXJyZWQuCkBAIC0xMzQwLDEyICsxMzQwLDEyIEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogI2VuZGlm
CiAKICAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcikKLSAg
ICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaXNwYXRjaERpZFJlY2VpdmVEYXRhKHRo
aXMsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGRhdGEsIGxlbmd0
aCwgLTEpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpc3BhdGNoRGlkUmVj
ZWl2ZURhdGEodGhpcywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwg
YnVmZmVyLCAtMSk7CiAKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5tYWluUmVzb3VyY2VE
YXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoLCAtMSwgZmFsc2UpOworICAgIG1fYXBwbGljYXRpb25D
YWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChidWZmZXIsIC0xLCBmYWxzZSk7CiAK
ICAgICBpZiAoIWlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpKQotICAgICAgICBjb21taXRMb2Fk
KGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGNvbW1pdExvYWQoYnVmZmVyKTsKIH0KIAogdm9pZCBE
b2N1bWVudExvYWRlcjo6c2V0dXBGb3JSZXBsYWNlKCkKQEAgLTE2MTQsNyArMTYxNCw3IEBAIGJv
b2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgbV93cml0ZXIuc2V0
TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUt
PmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgp
LCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YSgqbV9wYXJzZWRB
cmNoaXZlRGF0YSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTIyNTcsOCArMjI1
Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENv
bnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9j
b21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVz
b3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAg
ICBjb21taXRMb2FkKG1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiB9CiAK
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpAQCAtMjQxMCw5ICsyNDA5
LDkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9u
RXZlbnQoU2VjdXJpdHlQb2xpY3lWaW9sYXRpb24KIH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBzaXplKQordm9pZCBEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7Ci0gICAgZGF0YVJlY2VpdmVkKGRhdGEsIHNpemUpOworICAgIGRhdGFSZWNlaXZl
ZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VM
b2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggYjQ2OTgxZDc1MGIyNWMxZmQzMDdmMTZm
ZGE3NGI3ZWUzMDZhNGMzOS4uMjhlMjhhNjg4YWU2YjU3ZTBmMGQxNGM0ZTdhMGMyNTU4Y2I2N2U0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTg2LDYgKzg2LDcg
QEAgY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0
ZVJlc291cmNlOwogY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOwpAQCAtMzc3LDcgKzM3OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0VGltaW5nKCkgeyBtX2xvYWRUaW1pbmcgPSB7IH07
IH0KIAogICAgIC8vIFRoZSBXZWJLaXQgbGF5ZXIgY2FsbHMgdGhpcyBmdW5jdGlvbiB3aGVuIGl0
J3MgcmVhZHkgZm9yIHRoZSBkYXRhIHRvIGFjdHVhbGx5IGJlIGFkZGVkIHRvIHRoZSBkb2N1bWVu
dC4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0
ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0RGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0JiBhcHBsaWNh
dGlvbkNhY2hlSG9zdCgpIGNvbnN0OwogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBhcHBsaWNh
dGlvbkNhY2hlSG9zdFVubGVzc0JlaW5nRGVzdHJveWVkKCkgY29uc3Q7CkBAIC00NzcsNyArNDc4
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tbWl0SWZSZWFkeSgpOwogICAgIHZvaWQgc2V0
TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHZvaWQgY29tbWl0
TG9hZChjb25zdCB1aW50OF90KiwgaW50KTsKKyAgICB2b2lkIGNvbW1pdExvYWQoY29uc3QgU2hh
cmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbGVhck1haW5SZXNvdXJjZUxvYWRlcigpOwogCiAgICAg
dm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKQEAgLTQ5Myw3ICs0OTQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgbWFpblJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmV2aWV3UmVzcG9uc2VSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKQEAgLTUwMywxMyAr
NTA0LDEzIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAg
Ly8gQ29udGVudEZpbHRlckNsaWVudAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25z
dCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9y
IGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmlu
ZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
LCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIGRhdGFSZWNlaXZl
ZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZl
ZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIGJvb2wgbWF5YmVMb2FkRW1wdHkoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cAppbmRleCBiOWM0MTM1MjU2NzYyNjcyMTkwN2FmMzY2ZGZiMWRlYzc5NGMyNDc0Li44NjRiNjVh
MWQxMTMxZmI2MzcxMjViMTczOTkxZTlkM2UwYTZlNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNDM3LDIwICs0Mzcs
MjAgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKLSAgICBkaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5pZGVudGlmaWVy
KCksIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPmlk
ZW50aWZpZXIoKSwgYnVmZmVyKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCiAgICAgaWYgKG1fZGVsYXlDYWxs
YmFja3NGb3JJbnRlZ3JpdHlDaGVjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlRGF0YShidWZmZXIsIGZhbHNlKTsKIH0KIAogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IFJlc291cmNlVGltaW5nJiByZXNvdXJjZVRpbWluZykKQEAgLTQ5MywyMCArNDkzLDE0
IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmCiAKICAgICAgICAgaWYgKG9wdGlvbnMoKS5maWx0
ZXJpbmdQb2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xpY3k6OkRpc2FibGUpIHsKICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2Up
OwotICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCkpIHsKLSAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRv
JiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0
YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2Ut
PnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVE
YXRhKCpidWZmZXIsIGZhbHNlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VS
VChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RGVmYXVsdCk7CiAK
ICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVz
b3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJlc3BvbnNlLCBtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0g
RmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSA/IFJlc291cmNlUmVzcG9uc2U6OlBl
cmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6Ok5vIDogUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9y
bUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzKSk7Ci0gICAgICAgICAgICBpZiAoYXV0byogYnVm
ZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewotICAgICAgICAgICAgICAgIGJ1
ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNp
emUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlciwgZmFsc2UpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC02NjcsMTEgKzY2MSw4IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNo
CiAgICAgfQogICAgIGRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAK
LSAgICBpZiAoZGF0YSkgewotICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYg
c2VnbWVudCkgewotICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgc2VnbWVu
dC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgIGlmIChk
YXRhKQorICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCAqZGF0YSk7CiAKICAgICBj
b25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNz
T3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9t
U3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1p
bmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcygp
LCByZXNwb25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggZjFmNDFlZTkxZDZjZThhMWM1ODYy
MzgxN2IzNThmNzc0NjUxZTBhNC4uYzg2YmE3ZjQ1MzgzYjZjMjg2MDAzMmQzYWViZmJhM2UwODYw
NzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuaApAQCAtODYsMTQgKzg2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ly8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRS
ZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3Zl
cnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNo
ZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNvbnN0IFJlc291cmNlVGltaW5nJik7CiAgICAgICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKIAogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKICAgICAgICAgdm9p
ZCBkaWRGYWlsKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKaW5kZXggYjA0
NmVmMGRlMjA0OGVmZDQzMTk3MDI2MjJiOTZhN2RmMmZlYWZhNy4uNGZmOTM4MTgwZmRkMjhmYzcx
NWQwODg4MTYwOGZjNjI4OTQ5MmU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRX
cml0ZXIuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6cmVwb3J0
RGF0YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZXNvbHZlU3R5bGUoRG9j
dW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVpbGQpOwogfQogCi12b2lkIERvY3VtZW50V3Jp
dGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQordm9pZCBE
b2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
Ly8gRklYTUU6IENoYW5nZSB0aGVzZSB0byBBU1NFUlQgb25jZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MjcgaGFzIGJlZW4gcmVzb2x2ZWQuCiAgICAgUkVMRUFT
RV9BU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Tm90U3RhcnRlZCk7CkBAIC0yNzMsNyArMjczLDcg
QEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6
ZV90IGxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQobV9wYXJzZXIp
OwotICAgIG1fcGFyc2VyLT5hcHBlbmRCeXRlcygqdGhpcywgYnl0ZXMsIGxlbmd0aCk7CisgICAg
bV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
fQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjppbnNlcnREYXRhU3luY2hyb25vdXNseShjb25zdCBT
dHJpbmcmIG1hcmt1cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXgg
MDcxNzJjOTczOWViNTczNWJjODFmOGRlZjJmYjliMjg1YzI1NGQwYi4uYzBhMzRhNmI3ZTljZmU5
NjQzMDQ1YTk1ZTc5MzIyNTIzNjNiMjY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
V3JpdGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBEb2N1bWVudFBhcnNlcjsKIGNsYXNzIEZyYW1lOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogY2xhc3MgRG9jdW1lbnRXcml0
ZXIgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGJlZ2luKCk7CiAgICAg
Ym9vbCBiZWdpbihjb25zdCBVUkwmLCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxl
ID0gdHJ1ZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSBudWxscHRyKTsKLSAgICB2b2lkIGFk
ZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIHZvaWQgYWRk
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGluc2VydERhdGFTeW5jaHJvbm91
c2x5KGNvbnN0IFN0cmluZyYpOyAvLyBGb3IgYW4gaW50ZXJuYWwgdXNlIG9ubHkgdG8gcHJldmVu
dCB0aGUgcGFyc2VyIGZyb20geWllbGRpbmcuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA3NThjYmU4MDY1
NGU4ODg5N2FjZDllZDQxMTk5MGM4Njg2Y2FmM2JhLi5kMjNjOTZiNmM1MjgwM2ZlYzJlNDU3Yjdl
YzdkYmM5ZWIzNzk5NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApA
QCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFj
ZU11bHRpcGFydENvbnRlbnQoKQogewogfQogCi12b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KQordm9p
ZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjI2OTljOWM1MTgzMmE1YWE4Yzg5YWJhYjJm
ZmM3ZTA5ODViZmMwMC4uMTE2YTE3ZDFmNWM5ZTY0N2UxZjE0MWExMDA4NmIwNzk4MzkzZjNlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0
Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBm
aW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVp
bnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRl
ciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5n
KERvY3VtZW50TG9hZGVyKikgZmluYWw7CiAKICAgICBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZmRjOTdkYzQ2MmM4NzUyNmFhMTg4Zjc5NjhkNjBhMGM4
M2Q2ODBkOS4uMTFjMGE4ZjY4NjE1MDZlMDk2MWU1MmE4ZmY0YzcyMGIyNWJlMjk4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBib29s
IEZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTChVUkwmIHVybCwgTm9kZSYgaW5p
dGlhdG9yTm9kZSkKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcjsKICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVlc3RGcm9tRGVsZWdhdGUocmVxdWVzdCwg
aWRlbnRpZmllciwgZXJyb3IpOwotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRl
TWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygpLCAtMSwgU3RyaW5nKCkpLCAwLCAtMSwgLTEsIGVy
cm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9j
dW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Uo
dXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpKSwgbnVsbHB0ciwgLTEsIGVycm9yKTsKIAogICAg
IHVybCA9IHJlcXVlc3QudXJsKCk7CiAKQEAgLTIwODcsOCArMjA4Nyw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUpOwogCiAgICAgICAgIC8vIFNlbmQgcmVtYWluaW5n
IG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBtYWluIHJlc291cmNlLgotICAgICAgICBub3RpZmllcigp
LnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1h
aW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9u
c2UoKSwKLSAgICAgICAgICAgIG51bGxwdHIsIHN0YXRpY19jYXN0PGludD4obV9kb2N1bWVudExv
YWRlci0+cmVzcG9uc2UoKS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSksIDAsIG1haW5SZXNvdWNl
RXJyb3IpOworICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNv
dXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50
PihtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwg
bWFpblJlc291Y2VFcnJvcik7CiAKICAgICAgICAgVmVjdG9yPFJlZjxGcmFtZT4+IHRhcmdldEZy
YW1lczsKICAgICAgICAgdGFyZ2V0RnJhbWVzLmFwcGVuZChtX2ZyYW1lKTsKQEAgLTIxMzYsNyAr
MjEzNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAg
ICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIg
Ynl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAgICAgICAgICAv
LyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywg
dGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgICAgICAgICAvLyBDb3VsZCBiZSBh
biBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KLSAgICAgICAgICAgIG5vdGlmaWVyKCku
c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRl
bnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIDAsIHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2Uu
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBlcnJvcik7CisgICAgICAgICAgICBub3RpZmll
cigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCks
IGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNlLCBudWxscHRyLCBzdGF0aWNfY2FzdDxpbnQ+
KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgZXJyb3IpOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gRklYTUU6IFdoeSBvbmx5IHRoaXMgZnJhbWUgYW5kIG5vdCBwYXJlbnQgZnJh
bWVzPwpAQCAtMzE2Niw3ICszMTY1LDggQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1l
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAg
ICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikg
PyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVz
IDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5v
KSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdh
dGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCBy
ZXNwb25zZSwgZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwLCAtMSwgZXJyb3IpOworCisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdh
dGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCBy
ZXNwb25zZSwgZGF0YSwgLTEsIGVycm9yKTsKICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIApA
QCAtMzY0Nyw3ICszNjQ3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXIKIAogICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNvdXJjZS5yZXNwb25zZSgpOwogICAgIHJlc3BvbnNl
LnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok1lbW9yeUNhY2hlKTsKLSAgICBu
b3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIu
Z2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLCAwLCByZXNvdXJjZS5lbmNv
ZGVkU2l6ZSgpLCAwLCBlcnJvcik7CisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdh
dGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0
LCByZXNwb25zZSwgbnVsbHB0ciwgcmVzb3VyY2UuZW5jb2RlZFNpemUoKSwgZXJyb3IpOwogfQog
CiB2b2lkIEZyYW1lTG9hZGVyOjphcHBseVVzZXJBZ2VudElmTmVlZGVkKFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFiYzEyODk4ZDEyMzY1Mi4uMzUyYTRjNGZiNTA0
ZjdjZDRkMmVjNDA2ZTZiYzI5MTFhNTVmZDA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTcsNyArNyw3IEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQogICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIApAQCAtNTAsNyArNTAsNyBAQAogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpZmRlZiBfX09CSkNfXyAKKyNpZmRlZiBfX09C
SkNfXwogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiB0eXBlZGVmIGlkIFJlbW90
ZUFYT2JqZWN0UmVmOwogI2Vsc2UKQEAgLTk4LDcgKzk4LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5k
bGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBXaWRnZXQ7CiAKQEAg
LTIxNCw5ICsyMTQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFy
dENvbnRlbnQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVu
dExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgPSAwOwotICAg
IAorCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgPSAwOwogCkBAIC0y
NzIsNyArMjcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25z
dCBVUkwmKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgCisKICAgICB2
aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFt
ZShDYWNoZWRGcmFtZSopID0gMDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMzgxLDcg
KzM4MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBBbGxvd3NDb250ZW50SmF2
YVNjcmlwdCBhbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIEFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OjpZZXM7IH0KLSAgICAKKwog
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5h
YmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlvcigpIHsgfQpA
QCAtMzkwLDcgKzM5MCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlUERGUGx1Z2luKGNvbnN0IFN0cmluZyYsIFN0cmluZ1Zp
ZXcpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKLSAgICAKKwogICAgIHZpcnR1YWwg
Ym9vbCBpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDVkMTIwZTI0N2FjMjYyNzExNjFkZTBkYzUyMzAyNGRjOGRlMzRkNjkuLjFhMTdh
NzBmYTU4YzcyMjhmNjM4OTM1OWRkMGQzMzlkMGUwNWNkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIzMSwxMyArMjMxLDEzIEBAIHZv
aWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCB1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXNTCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywg
Ynl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIE1lZGlhUmVzb3VyY2U6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAg
ICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAobV9j
bGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOwog
fQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggZmY2YzI4ODcxMDA4OGY0YjA1
NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NS4uN2I1NTc3MjBlZjA1MzNmYmFhMjI2NTY1MzhlZmRkOTZm
NjE3OWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5o
CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsK
ICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJj
ZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
IG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5jcHAKaW5kZXggNjA0M2FjOWJlMjY3ZWE0ZmJjNzFlMTExOGI5MDc5MTU1ZTM5MTUwMy4u
NWNhYWRmNjI5YzcwYWUwODZiNzdiZDcyY2QyODY3NTM2YjhmYTk3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0x
NDEsMzAgKzE0MSwxNCBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgIH0pOwogfQogCi12
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKLSAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0g
ICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVu
Y29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRU
eXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgaWYgKG1fY2xpZW50KSB7
Ci0gICAgICAgIGlmIChidWZmZXIpIHsKLSAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21l
bnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEodGhpcywgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBkYXRhLCBsZW5ndGgpOwotICAgIH0KKyAgICBpZiAobV9jbGllbnQpCisgICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIpOwogCi0gICAgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1
ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5
bG9hZFR5cGUpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
aAppbmRleCBiNTE3NGVkYzk0Yjk5MjM5MDIwNWYwZmFkNDUyZWE1YWMzODc4OTM4Li4xZWM3ZDYx
ZTNhMTc1YzIyYjU1ODc1OGQzN2VkMGM1NWJlNWYxM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtMzYsMTIgKzM2LDEz
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVk
QnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIHsgfQogICAgIHZp
cnR1YWwgYm9vbCB3YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAt
NjIsOCArNjMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBAIC03NCw4
ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLQogICAgIHZvaWQgbm90aWZ5RG9uZSgp
OwogCiAgICAgV2Vha1B0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudD4gbV9jbGll
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApp
bmRleCAxNDdiNDVlMDY0MzgxMjI3YjA1MjIwNjQ0MTg1MjNjMDc5ZjY0ZDE0Li43YzJhYjI5MTA3
MWRiYzM0NzI3NWRjZThkMzc5N2QyNDY3ODQxNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogI2lmIFVTRShRVUlDS19M
T09LKQogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgpAQCAtNzgsMTIgKzc5LDEyIEBAIHZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlciogbG9h
ZGVyLCBjb25zdCBSZXNvCiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLT5k
b2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgciwgbG9hZGVyKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIq
IGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJl
c291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkK
LSAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNyZW1lbnRQcm9ncmVzcyhsb2FkZXItPmlkZW50
aWZpZXIoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50
UHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGJ1ZmZlci5zaXplKCkpOwogCi0gICAgZGlz
cGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRl
bnRpZmllcigpLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlz
cGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRl
bnRpZmllcigpLCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWROb3RpZmllcjo6ZGlkRmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTE1OSwxMyArMTYw
LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3Bv
bnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLCBpZGVudGlmaWVyLCBsb2Fk
ZXIsIHIsIHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6
ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6
OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgLy8gTm90aWZ5aW5nIHRoZSBGcmFtZUxvYWRl
ckNsaWVudCBtYXkgY2F1c2UgdGhlIGZyYW1lIHRvIGJlIGRlc3Ryb3llZC4KICAgICBSZWY8RnJh
bWU+IHByb3RlY3QobV9mcmFtZSk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNw
YXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgZGF0YUxlbmd0
aCk7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVDb250
ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgYnVmZmVyLnNpemUoKSk7CiAKLSAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKCZtX2ZyYW1lLCBpZGVudGlmaWVy
LCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSgmbV9mcmFtZSwgaWRlbnRpZmllciwgYnVmZmVy
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRp
c3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MsIFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKQEAgLTE4Niw3
ICsxODcsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZhaWxMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cgogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJhbWUsIGxvYWRlciwgaWRlbnRpZmllciwgZXJy
b3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdh
dGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhE
b2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBpbnQgZW5jb2Rl
ZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIC8vIElmIHRo
ZSByZXF1ZXN0IGlzIG51bGwsIHdpbGxTZW5kUmVxdWVzdCBjYW5jZWxsZWQgdGhlIGxvYWQuIFdl
IHNob3VsZAogICAgIC8vIG9ubHkgZGlzcGF0Y2ggZGlkRmFpbExvYWRpbmcgaW4gdGhpcyBjYXNl
LgpAQCAtMTk5LDggKzIwMCw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsCiAgICAgaWYgKCFy
ZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9h
ZGVyLCBpZGVudGlmaWVyLCByZXNwb25zZSk7CiAKLSAgICBpZiAoZGF0YUxlbmd0aCA+IDApCi0g
ICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhLCBk
YXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXIt
PnNpemUoKSkKKyAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50aWZp
ZXIsICpidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKIAogICAgIGlmIChlcnJvci5pc051bGwo
KSkgewogICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAppbmRleCA0ZGJkNGNjNDlkNjUw
NDIxMTg0ZTYwYzI0ZGQ3MTRkY2JlMGJkYjBkLi5mNjQyNWJhN2JlOWZmMjZlOTlmN2JlN2NjMzJh
OGU1ZGZiYjAwZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBSZXNvdXJjZUxvYWROb3RpZmllciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVzb3VyY2VMb2FkTm90aWZpZXIpOwpAQCAtNTUs
MTggKzU2LDE4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiwgY29u
c3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAg
ICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciog
PSBudWxscHRyKTsKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2Fk
ZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29u
c3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpc3Bh
dGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2
b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIHZvaWQgc2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVN
ZXNzYWdlcyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxjb25zdCBT
aGFyZWRCdWZmZXI+LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIAogcHJpdmF0ZToKICAgICBGcmFtZSYgbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDZkZWJiMjU4OGEzZTgyYjIxYzYxZDdlOGYzNmU0ZjRi
YmJhMjVlNjAuLjY2NDdjMjcwODExODBlYmNlYzJiNWNhMjlmZDYwYjcyM2FiNjQ4MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjk5LDkgKzI5OSw5IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKCkKIAogICAgICAgICBhdXRvIGRhdGFT
aXplID0gZGVjb2RlUmVzdWx0LT5kYXRhLnNpemUoKTsKICAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSBkYXRhUmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UodXJsLCBk
ZWNvZGVSZXN1bHQudmFsdWUoKSk7Ci0gICAgICAgIHRoaXMtPmRpZFJlY2VpdmVSZXNwb25zZShk
YXRhUmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgZGF0YVNpemUsIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRlY29kZVJl
c3VsdC0+ZGF0YSkpXSgpIG11dGFibGUgeworICAgICAgICB0aGlzLT5kaWRSZWNlaXZlUmVzcG9u
c2UoZGF0YVJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIGRhdGFTaXplLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkZWNv
ZGVSZXN1bHQtPmRhdGEpKV0oKSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMtPnJlYWNoZWRUZXJt
aW5hbFN0YXRlKCkgJiYgZGF0YVNpemUgJiYgbV9yZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiSEVB
RCIpCi0gICAgICAgICAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGRhdGEp
LCBkYXRhU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgICAgICAgICB0
aGlzLT5kaWRSZWNlaXZlQnVmZmVyKGRhdGEsIGRhdGFTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVz
b3VyY2UpOwogCiAgICAgICAgICAgICBpZiAoIXRoaXMtPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkp
IHsKICAgICAgICAgICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOwpAQCAt
MzI4LDcgKzMyOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1
dGVSZXNvdXJjZSgpCiAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CkBAIC0zMzYs
MTAgKzMzNiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZyYWdtCiAgICAgaWYgKGRhdGFQYXlsb2Fk
VHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2VEYXRh
LnJlc2V0KCk7CiAKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBl
bmQoKmJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsKKyAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoYnVmZmVyKTsKIH0KIAogY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgp
IGNvbnN0CkBAIC01MzksNyArNTM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIsIENvbXBsZXRpb25IYW4KICAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywgbV9y
ZXNwb25zZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAg
ICAvLyBUaGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYXJlIG5vdCBxdWl0ZSB2YWxpZCBoZXJlLCBz
aW5jZSBhIHN1YmNsYXNzCiAgICAgLy8gbWlnaHQgb3ZlcnJpZGUgZGlkUmVjZWl2ZURhdGEgaW4g
YSB3YXkgdGhhdCBpbnZhbGlkYXRlcyB0aGVtLiBUaGlzCkBAIC01NDcsMzAgKzU0NCwyMiBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIGxvbmcgbAogICAgIC8vIEFTU0VSVChjb24gPT0gY29ubmVjdGlvbik7
CiAgICAgLy8gQVNTRVJUKCFtX3JlYWNoZWRUZXJtaW5hbFN0YXRlKTsKIAotICAgIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwg
ZGF0YVBheWxvYWRUeXBlKTsKKyAgICBkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERh
dGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
Cit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewotICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
bnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxv
YWRUeXBlKTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotICAgIC8vIFRoaXMgbWV0aG9kIHNob3Vs
ZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KLSAg
ICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYgIWxlbmd0aCkpOwotCiAgICAgLy8gUHJvdGVj
dCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nl
c3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5n
IHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KICAgICBSZWY8UmVz
b3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYWRkRGF0YU9yQnVmZmVy
KGRhdGEsIGxlbmd0aCwgYnVmZmVyLmdldCgpLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIGFkZEJ1
ZmZlcihidWZmZXIsIGRhdGFQYXlsb2FkVHlwZSk7CiAKICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0
IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0
aGUgcmlnaHQgdGhpbmcuCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBh
bmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAg
IC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmICht
X29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2Fs
bGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlk
UmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8
aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmll
cigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLCBzdGF0aWNf
Y2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1l
dHJpY3MpCkBAIC03MjksMTQgKzcxOCwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJgogICAg
IGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQog
ewotICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkQnl0ZXMpOworICAgIGRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZUJ1
ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVz
KTsKKyAgICBkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3MGVhMjIwZGMxN2M3Mzc2ZWQ2
NjBmYTdhNjFhODRlMzFjMzM0Y2JiLi4wOWIxMTkzMDJkNmNjZmMyMDFjYWUyMDlkMGY1MjFiMmE4
MTQyNTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMTA3LDgg
KzEwNyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjayk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY3LDggKzE2Nyw2IEBAIHByb3RlY3RlZDoKIAogICAg
IGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9jYW5jZWxsYXRpb25TdGF0dXMg
Pj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIAogICAgIHZv
aWQgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9v
cHRpb25zLnJlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQb2xpY3k7IH0KICAgICBSZWZlcnJlclBv
bGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5yZWZlcnJlclBv
bGljeTsgfQogCkBAIC0xOTIsNyArMTkwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKIAotICAgIHZvaWQgYWRkRGF0YU9y
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcios
IERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBhZGRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwog
ICAgIHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIApAQCAtMjAyLDggKzIwMCw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUq
LCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5k
bGUqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDM3ZDBiYjgyMWFiZDg2YTliNTYwNmUxMjdlZmM5NDEyYTUxYmIxYTkuLjk3MmYy
YWYyMjYwM2Y0MjRjZDg3NzVmNTkxMDEwZTJkNzY5MzhhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTE4LDMyICs1MTgsMTUgQEAgdm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlUG9saWN5KCkKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1
YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUgZGF0YVBheWxvYWRUeXBlKQogewogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRv
IHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIuZ2V0KCkpIHsKLSAgICAgICAgaWYgKHBy
ZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCkpCisgICAgICAgIGlmIChw
cmV2aWV3TG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKLSAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7Ci19Ci0KLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0jaWYgVVNFKFFV
SUNLX0xPT0spCi0gICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5n
ZXQoKSkgewotICAgICAgICBpZiAocHJldmlld0xvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZm
ZXIuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWRE
YXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewogICAgIEFT
U0VSVChtX3Jlc291cmNlKTsKIAogICAgIGlmIChtX3Jlc291cmNlLT5yZXNwb25zZSgpLmh0dHBT
dGF0dXNDb2RlKCkgPj0gNDAwICYmICFtX3Jlc291cmNlLT5zaG91bGRJZ25vcmVIVFRQU3RhdHVz
Q29kZUVycm9ycygpKQpAQCAtNTU1LDEzICs1MzgsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
LAogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2Ug
dG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KICAgICBSZWY8
U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIuY29weVJl
ZigpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKKyAgICBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5
bG9hZFR5cGUpOwogCiAgICAgaWYgKCFtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KSB7CiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogbGVuZ3RoKTsKKyAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyLm1h
a2VDb250aWd1b3VzKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuaAppbmRleCA4MzJjOWYwZTczZDM4NDY0YTc5NWY0MDM4NjBmNzljMzRlNzNi
YzdmLi4zZGJkNTMzOGFmZTQ5YjQ3ODU3ZDUzNDA5Nzg4NzUyZWFhMWFlZDRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzMsOCArNzMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNl
bmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0
b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9s
aWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBFeHBl
Y3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hl
Y2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlUmVx
dWVzdCYgbmV3UmVxdWVzdCk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5
RG9uZShMb2FkQ29tcGxldGlvblR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmgKaW5kZXggY2YyZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3NDQxMDc0
MmEwZC4uM2QxOTI4NjJmMjc3MjliMmYzOGRiNTRiZDgzNjc5OTUyNWMwMTlkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzgsNyArMzgsNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAg
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNw
b25zZTsgfQogICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1f
ZGF0YS5nZXQoKSB9KTsgfQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBhcHBl
bmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIHsgbV9kYXRhLmFwcGVuZChidWZmZXIpOyB9
CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCmluZGV4IDg0ZDc5YjBjOTlkZjEwZDk5
MzgwYjg0ODMxNzM3MWJjMWU4NTczYmYuLmNlZjBjOGYxZjE3ZDBmNTc2NTlhMzU0MWI1NGY2Mzg5
OTA2NGIxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJD
bGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNlVGltaW5n
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2ln
bmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sIC8qIHVzZVN0ckxlbiAqLykg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRp
bWluZyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVM
b2FkZXJDbGllbnRXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxv
YWRlckNsaWVudFdyYXBwZXIuaAppbmRleCA0MmFlNjQ5MDlhNWUwZmU0NGM2YTVlMDA2MGQ1OGM5
NjRlYzU2MDUxLi5mMzZhMmQ0MDdhZjg4MTU5MDQyODY2Yjg1ZTllMDE4NjFkYWFjNzI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdy
YXBwZXIuaApAQCAtNjYsMTAgKzY2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgIH0KIAotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9v
bCB1c2VTdHJMZW4pCiAgICAgewogICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCB1c2VTdHJMZW4pOwogICAgIH0KIAogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cAppbmRleCBkZmY4OTcwMWM5MzliYzczYzM3MDMyYWQ5YzQyYWQyMDYzMjZhZDZlLi43YzAzNDk0
NWVlMDNhNzRmNTMzMzliYjgxZmZhMGUwNmM2OWM3MTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0yMzEsMTQgKzIzMSwxMyBA
QCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcgogICAgIH0sIG1fdGFza01vZGUpOwogfQogCi12b2lk
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgdXNlU3RyTGVuKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBidWZm
ZXIoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVy
ID0gUmVmIHsgKm1fd29ya2VyQ2xpZW50V3JhcHBlciB9LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmll
ciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFJlZiB7ICptX3dvcmtlckNsaWVudFdyYXBwZXIgfSwg
d29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZm
ZXIgPSBSZWYgeyBkYXRhIH0sIHVzZVN0ckxlbl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8
IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIHByb3RlY3RlZFdvcmtl
ckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpOworICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0
YShidWZmZXIsIHVzZVN0ckxlbik7CiAgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVz
dElkZW50aWZpZXIsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIpOwog
ICAgIH0sIG1fdGFza01vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuaAppbmRleCA3MjNiNDU2ZWM4ZTllMzA2ZmMxOGNjOGYzNmRlNmRj
ZDhhZTMwNDcwLi4zMzlkNmY0NzMxMGExZWQyODkwMzZhZDBhNDA0ZjM4YTdhMjY4NjI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTEw
NSw3ICsxMDUsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBBbGwgZXhlY3V0ZWQgb24gdGhlIG1h
aW4gdGhyZWFkLgogICAgICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIG92ZXJy
aWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VU
aW1pbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDUxOTc4ZjQxMjM4NzRkYzU2NjBl
ZmY0NzA2NTk3MDdkNGU1ZDg1YTcuLmVkNzU2NjUyNmIyZDdlZmJmMWM1MTcwMjA5NWE4NzliYWY1
Njk0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgQXBwbGljYXRp
b25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrRm9yTWFpbkVycm9yKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiwgaW50LCBsb25nIGxv
bmcsIGJvb2wpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRhUmVj
ZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nLCBib29sKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5oCmluZGV4IGI5NjM1NmU3ODU2MTM4OTU2YWU0YzA1OTgzMTcwY2RmNzIzNjcyYTAuLmQyYWVh
ZWMzZTE0YzYzYmNiZjYwMWU5YWFmMDI0YzFmOWVjNDc2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC05NSw3
ICs5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1heWJlTG9hZE1haW5SZXNvdXJjZShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIHZvaWQgbWF5YmVMb2FkTWFp
blJlc291cmNlRm9yUmVkaXJlY3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3Vic3RpdHV0ZURh
dGEmKTsKICAgICBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yTWFpblJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIG1haW5S
ZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIGJvb2wgYWxsQXRPbmNlKTsKKyAgICB2b2lkIG1haW5S
ZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIGJvb2wgYWxsQXRPbmNlKTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ01h
aW5SZXNvdXJjZSgpOwogICAgIHZvaWQgZmFpbGVkTG9hZGluZ01haW5SZXNvdXJjZSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IDJiYjNmZTc1Yjk5NzdlODMzMjJhZTI1ODBmNzIxMmVl
NWJmMjE2MTAuLjI1NmU4OWIyMTFiMzhiMmQyMWRjZDY2NTc4MjY5ZTY2MDczNjczMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSwxMCBAQCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxv
YWRlciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3Bv
bnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGlmIChtX3Bh
dGguaXNFbXB0eSgpKQorICAgICAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNw
b25zZSgpLCBSZWZQdHIgeyAmZGF0YSgpIH0pOworICAgIGVsc2UKKyAgICAgICAgbG9hZGVyLmRl
bGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVy
LmNwcAppbmRleCA3YjJmYjZjOWMyNTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRjNzEyOTI2Li41NGZl
ZWQyY2E2NDEyYjQ1MjA5ODcwYzc3MzQzNjA5ZDg1MDliNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmNwcApAQCAtOTksOSArOTksOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
CiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UgPSBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmNyZWF0ZShtX3Jlc291cmNlLT51cmwoKSwgcmVzcG9uc2UsIG1fdHlwZSk7CiB9CiAKLXZv
aWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNl
LT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+
YXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVy
OjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgbmV3
UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDAyZDdhZDk3YTI4ZDQ3YzNmYWI1ZTNiYWIwN2ViZTliMDY5ZTIzMmQuLjBiMjk2
Mjg4ZjMxYTQzMjVkNDg0OWE0NDJlOGFlNjAyYzE3MzE5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
ZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHJl
ZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDUwNDY1Y2M2YzAxMzNlNWE3NzQ0NWNmOTQ3
MzMzZmUyMDY0MDg2MWQuLmEyZGFmYzlkODdjMjY3YTJmOTVlNDg1NWZkYjA4NGRhMjlkM2YyNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4
LDcgKzQ2OCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBt
X3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQg
Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLT5zaXplKCkpOwpAQCAtNTU4LDE1ICs1NTgsMTUgQEAgRW5jb2RlZERhdGFT
dGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkK
IHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0
YSk7CisgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YS5tYWtlQ29udGlndW91cygpKTsKICAg
ICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZElt
YWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3Zv
aWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpEb05vdEJ1ZmZlckRhdGEpOwotICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOwotICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRh
KGRhdGEsIGxlbmd0aCk7CisgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoYnVmZmVyKTsKKyAgICBD
YWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShidWZmZXIpOwogfQogCiB2b2lkIENhY2hlZEltYWdl
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKaW5kZXggZTg0MzA4NzBiNDhhZjNkYzk1YmJhM2NhZDFhNjRlMDY4YWUx
NTUxMy4uYTVkYzYzZjIzZGJkNDFhMjcwZWU1NmMzMmE0NDE3NzdkNmFkZGI0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVw
ZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShi
b29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3Vy
Y2U6OlN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKIApAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwog
ICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZv
aWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAg
ICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRl
eCA3MWUxNjA4MmZmZTY1NWQxMTFmMTY5OTBkMTIzMDUzNWJlYWNiZjk1Li5kMzM2MTEzMjEzZmJl
YmZmNGU5MWZmNjVmODNmZmUyNGQzZThhMGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBDYWNo
ZWRSYXdSZXNvdXJjZTo6Q2FjaGVkUmF3UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgVHlwZSB0eXBlLAogICAgIEFTU0VSVChpc01haW5Pck1lZGlhT3JJY29uT3JSYXdS
ZXNvdXJjZSgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2Fj
aGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAogewogICAgIHNpemVfdCBwcmV2aW91
c0RhdGFMZW5ndGggPSBlbmNvZGVkU2l6ZSgpOwotICAgIGlmICghZGF0YSB8fCBkYXRhLT5zaXpl
KCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQorICAgIGlmIChkYXRhLnNpemUoKSA8PSBwcmV2aW91
c0RhdGFMZW5ndGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIGRh
dGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CisgICAgcmV0dXJuIGRhdGEuZ2V0
U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCkBAIC03
Miw3ICs3Miw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgICAgICBwcmV2aW91c0RhdGFTaXplICs9
IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gbm90
aWZ5U2NvcGUobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSwgdHJ1ZSk7Ci0gICAgICAgIG5vdGlm
eUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGEoKSwgaW5jcmVtZW50
YWxEYXRhLnNpemUoKSk7CisgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5j
cmVtZW50YWxEYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKICAgICB9CiAgICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLT5zaXplKCkpOwogCkBAIC04OSwxMSArODksMTEgQEAgdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEpCiAgICAgfQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OnVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRh
dGEpOwotICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKTsKLSAg
ICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOworICAgIG5vdGlmeUNs
aWVudHNEYXRhV2FzUmVjZWl2ZWQoYnVmZmVyKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
RGF0YShidWZmZXIpOwogfQogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKQEAgLTExMCw5ICsxMTAsOSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
CiAgICAgICAgIGlmIChkYXRhKSB7CiAgICAgICAgICAgICBpZiAoZGF0YSAhPSBtX2RhdGEuZ2V0
KCkpCiAgICAgICAgICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAg
ICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFs
RGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEg
PSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuaygqbV9kYXRhKSkgewogICAgICAgICAgICAg
ICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgbm90aWZ5
Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50
YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVj
ZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKQEAgLTEz
MCwxNSArMTMwLDE1IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QKICAgICB9CiB9CiAKLXZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6bm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
LSAgICBpZiAoIWxlbmd0aCkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKLSAgICAgICAgYy0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBk
YXRhLCBsZW5ndGgpOworICAgICAgICBjLT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CiB9
CiAKIHN0YXRpYyB2b2lkIGl0ZXJhdGVSZWRpcmVjdHMoQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmF3UmVzb3VyY2U+JiYgaGFuZGxlLCBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCYgY2xpZW50
LCBWZWN0b3I8c3RkOjpwYWlyPFJlc291cmNlUmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZT4+JiYg
cmVkaXJlY3RzSW5SZXZlcnNlT3JkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTcwLDkgKzE3MCw5IEBAIHZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgYykK
ICAgICAgICAgICAgIGlmICghaGFzQ2xpZW50KCpjbGllbnQpKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgICAgICBtX2RhdGEt
PmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgICAgICAgICAgbV9k
YXRhLT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChoYXNDbGllbnQoKmNsaWVudCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgc2VnbWVudC5kYXRhKCksIHNl
Z21lbnQuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2Vp
dmVkKCp0aGlzLCBidWZmZXIpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IGE3ODY1ZjhhZDE3OGFlZmIz
MjIwYTU2ZGNmZjE5NTk5M2NmOTVhZTQuLjM2ZTQ3YTFkYmEyMzEyOGRjNTMwNzNiNzBiNWYzZjg1
MzgwNGFlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oCkBAIC0yOCw2ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q2FjaGVkUmVzb3VyY2VDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCiBjbGFzcyBDYWNoZWRSYXdS
ZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CkBAIC01Miw3ICs1Myw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAg
ICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQpAQCAtNjYsOCArNjcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dp
dGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgbWF5
VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0Vu
Y29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqKSBjb25zdDsKLSAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2Fz
UmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgdm9pZCBwcmV2aWV3UmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZUNsaWVudC5oCmluZGV4IDIzZWFiOGRmMjk1OGZmOGI0OWYzNTQ1YjUwODNmZTI5
ODllZjEyMjAuLmNkNjUwYTJmMzEzNmNlOWIyNjJmYmRmYzgyOTI4YmYyMTA3OWZiY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNs
aWVudC5oCkBAIC0zMSw2ICszMSw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNlVGlt
aW5nOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CkBAIC00Niw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25z
ZShDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IHVpbnQ4X3QqIC8qIGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
eyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVRpbWluZyYpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcAppbmRleCA5ZGUwYTA0Y2Q1ZWM1ZjNmYWQyZmIxNmQ3YjMyMmM4NThhMzhh
NmIyLi43YjljNjFmOTY2MTc1NDZiNjZiY2MzYzYzZWNhMGU4NTdlMjYyZWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTM0MSw3ICsz
NDEsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRh
QnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6
dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQpCit2b2lkIENhY2hlZFJlc291cmNl
Ojp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZm
ZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBj
OTgyZGQ2OTM3YTBiYzJiZjM4YzQyNjEyNmZmZTZlNzhjNzk2NDc4Li41MzRlMDEyY2M0ZmE1ZGQy
YmUxZmQ2ZWVlNWFhNmFlNGU1ZmFlMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmly
dHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVz
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aAppbmRleCA5NmQ4OTgyZTkzNTAzNDc2OTZmYzk2OWQ1ODVhYjcwNzVkZTAyMGVkLi5jYTAxOTM0
ZDMxYmE1ZDUwOWZlYmU3ZDJmOTEyMjQ5ZDI3MTI2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtNDcsOCArNDcsNyBAQCBwdWJs
aWM6CiAgICAgfkxlZ2FjeVByZXZpZXdMb2FkZXIoKTsKIAogICAgIGJvb2wgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlkRmluaXNoTG9hZGlu
ZygpOwogICAgIHZvaWQgZGlkRmFpbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggNDg3NTZhMzNiNTg3MmI0NGIyZjBiYTA4
NDI0MWY4NmNmYWViY2FhMC4uYTI0YjhjNTlkNDYwYWZmNWUyZmVmODMxOTBjMjA4NjU3MjM2NWQz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5tbQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYwogICAgIHJldHVy
biBlbXB0eUNsaWVudCgpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAobV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlcikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNzEsNyArNzEsNyBAQCBib29sIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBhcHBlbmRpbmcgYnVmZmVy
IHdpdGggc2l6ZSAlbGQuIiwgYnVmZmVyLnNpemUoKSk7CiAgICAgbV9vcmlnaW5hbERhdGEuYXBw
ZW5kKGJ1ZmZlcik7CiAgICAgbV9jb252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNvdXJjZSgpOwotICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CisgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2Miw4ICsxNjIs
NyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZl
RGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29ucwogICAgIGlmICghbV9oYXNQcm9jZXNzZWRSZXNw
b25zZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBkYXRhQ29weSA9IGRhdGEuY29weSgp
OwotICAgIHJlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoZGF0YUNvcHkp
LCBkYXRhQ29weS0+c2l6ZSgpLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICByZXNvdXJjZUxvYWRl
ci0+ZGlkUmVjZWl2ZUJ1ZmZlcihkYXRhLCBkYXRhLnNpemUoKSwgRGF0YVBheWxvYWRCeXRlcyk7
CiB9CiAKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZEZpbmlz
aENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpCkBAIC0yNDMsMTEgKzI0Miw2IEBAIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRl
ciwgY29uc3QgUmVzb3VyY2VSCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVy
IGNyZWF0ZWQgd2l0aCBwcmV2aWV3IGZpbGUgbmFtZSBcIiVzXCIuIiwgbV9jb252ZXJ0ZXItPnBy
ZXZpZXdGaWxlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKLXsKLSAgICByZXR1cm4gZGlkUmVjZWl2ZUJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCBsZW5ndGgpLmdldCgpKTsKLX0KLQogYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiB7CiAgICAgcmV0dXJuICFt
X3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3Vy
Y2UuY3BwCmluZGV4IDYwMjYzMWJiN2NkMTA4NjBiMWEzMTIxMDQzYzk3ZDhlZmU0NDc2MWQuLjY3
YWM3N2UyYmY3NjEwNDVjOGMxOGQ1YzdhZGVjN2Y3MzM4YWI3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRl
eHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTIxMCwxMyArMjExLDEzIEBAIHZvaWQg
RXZlbnRTb3VyY2U6OmRpc3BhdGNoRXJyb3JFdmVudCgpCiAgICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAotdm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRXZlbnRTb3Vy
Y2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sKQogewog
ICAgIEFTU0VSVChtX3N0YXRlID09IE9QRU4pOwogICAgIEFTU0VSVChtX3JlcXVlc3RJbkZsaWdo
dCk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9pc1N1
c3BlbmRlZEZvckJhY2tGb3J3YXJkQ2FjaGUpOwogCi0gICAgYXBwZW5kKG1fcmVjZWl2ZUJ1ZmZl
ciwgbV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuZ3RoKSk7CisgICAgYXBwZW5kKG1fcmVjZWl2
ZUJ1ZmZlciwgbV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkp
OwogICAgIHBhcnNlRXZlbnRTdHJlYW0oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5o
CmluZGV4IGQwMTJkMzc3ZDE5NzY3NWYwZmUxMTQ1ZjE3MTlmMTdmZGRiZmVhM2IuLmQ2NjJhZTI4
MDZmNGIyNDg2N2IwMTYwOGUwNGRiYjRmOTdkYmEwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291
cmNlLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAppbmRleCA5ZTcyZTQ0YTJlYWM0ZDhlZjczMGI5
ODcxZDBlYzUwOGVkOWZhYzQ0Li40NjJjZjNiODc0MjMzODViZTgzYTAwMmU0M2Y3NDQ3Nzk5ODdl
ZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRG
aWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0
ZXIuaApAQCAtMjYsMTUgKzI2LDE3IEBACiAjaWZuZGVmIFBsYXRmb3JtQ29udGVudEZpbHRlcl9o
CiAjZGVmaW5lIFBsYXRmb3JtQ29udGVudEZpbHRlcl9oCiAKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTQsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+UGxhdGZvcm1Db250ZW50RmlsdGVyKCkgPSBkZWZhdWx0OwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkQWRk
aW5nRGF0YSgpID0gMDsKICAgICB2aXJ0dWFsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBy
ZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDM5NjE1Njg4
NGI0Yjc5ZTNlNTVkNTY5MWQ3MThjODg3NWZmOWZmNy4uYjg2ZDQ5ZDRhZjMzYzY0NTgyYjZiZWE0
MDYyMjYxNTk5MmQ1YWNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OnRha2VEYXRhKCkKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CiAg
ICAgaWYgKGhhc09uZVNlZ21lbnQoKSAmJiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1
aW50OF90Pj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQotICAgICAg
ICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4Y2hhbmdlKHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4o
bV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpLCBWZWN0b3I8dWludDhfdD4o
KSk7CisgICAgICAgIGNvbWJpbmVkRGF0YSA9IHN0ZDo6ZXhjaGFuZ2Uoc3RkOjpnZXQ8VmVjdG9y
PHVpbnQ4X3Q+Pihjb25zdF9jYXN0PERhdGFTZWdtZW50Jj4obV9zZWdtZW50c1swXS5zZWdtZW50
LmdldCgpKS5tX2ltbXV0YWJsZURhdGEpLCBWZWN0b3I8dWludDhfdD4oKSk7CiAgICAgZWxzZQog
ICAgICAgICBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1f
c2l6ZSk7CiAKQEAgLTIzMSw2ICsyMzEsOCBAQCB2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNsZWFyKCkKIAogUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNvcHkoKSBjb25zdAogeworICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJl
dHVybiBtX3NlZ21lbnRzLnNpemUoKSA/IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNb
MF0uc2VnbWVudC5jb3B5UmVmKCkpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIpOwogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1f
c2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CkBAIC0y
NDgsNiArMjUwLDEzIEBAIHZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21l
bnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0CiAgICAgICAgIGFwcGx5KFNw
YW4geyBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7
CiB9CiAKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnRBc1NoYXJl
ZEJ1ZmZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYpPiYgYXBwbHkp
IGNvbnN0Cit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfTsKKyAgICBm
b3IgKGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQorICAgICAgICBhcHBseShTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzZWdtZW50LnNlZ21lbnQuY29weVJlZigpKSk7Cit9CisKIGJvb2wgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBw
cmVmaXgpIGNvbnN0CiB7CiAgICAgaWYgKHByZWZpeC5lbXB0eSgpKQpAQCAtNDEzLDcgKzQyMiw3
IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVl
OwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2Vn
bWVudCkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVudD4m
JiBzZWdtZW50KQogewogICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKICAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CkBAIC02MDEsNyArNjEwLDcgQEAg
dm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIoKQogICAgICAgICBtX2J1ZmZl
ciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogfQogCi1TaGFyZWRCdWZmZXJE
YXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQs
IHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXpl
KQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxjb25zdCBE
YXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQp
KQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQog
ICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25X
aXRoaW5TZWdtZW50KQpAQCAtNjE3LDcgKzYyNiw3IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpT
aGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYgb3RoZXIsIHNp
CiAKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1f
c2VnbWVudDsKKyAgICBjb25zdCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3Nl
Z21lbnQ7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7
IH0sCiAgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggYzI3YzkyNjlmZmVmMjQ5YWI1ZThhYmEy
NGQ3NjJmYzQwYzFjMjMwMC4uMzQ4NGE2YTUzYjgwNDA2NGJlNTdhMjgzZWY0MThhOGE2MmQ1ODlh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTE3OCwxMiArMTc4
LDEzIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQo
Y29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2Vn
bWVudEFzU2hhcmVkQnVmZmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4m
Jik+JikgY29uc3Q7CiAKICAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdt
ZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVj
dG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKLSAgICAgICAgUmVmPERh
dGFTZWdtZW50PiBzZWdtZW50OworICAgICAgICBjb25zdCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+
IHNlZ21lbnQ7CiAgICAgfTsKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxE
YXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3Rf
aXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KQEAg
LTI1OSw3ICsyNjAsMTAgQEAgcHVibGljOgogICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2Yu
Li4oQXJncykpCiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIo
KSk7CiAgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQotICAg
ICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4u
KSkKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8Y29uc3QgRGF0YVNl
Z21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgaWYgY29u
c3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2Ft
ZV92PHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8QXJncz4+LCBE
YXRhU2VnbWVudD4gJiYuLi4pKQogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CkBAIC0yODYsOCArMjkwLDEwIEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIoKTsKKyAgICBT
aGFyZWRCdWZmZXIoY29uc3QgRGF0YVNlZ21lbnQmIHNlZ21lbnQpCisgICAgICAgIDogU2hhcmVk
QnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVudD4geyBzZWdtZW50IH0pIHsgfQogICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFT
ZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVm
PGNvbnN0IERhdGFTZWdtZW50PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKQEAgLTM1OSw3ICszNjUsNyBAQCBpbmxpbmUgVmVjdG9y
PHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3Mg
U2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxjb25zdCBEYXRhU2Vn
bWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUp
OwogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQ7IH0KQEAgLTM3MCw3ICszNzYsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5k
aWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAg
Y29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLmgKaW5kZXggY2JlODc3MWE0NWQ4NjJjYjVhYjA1ZWNhMzk5
OTI3ZTA3ODM4ZjU0MC4uMTI1MzE5YmNiMzhlNzFiYTc5NWE2YWZkMmRkMTNmYmQxOWEyZDNiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVy
cmlkZTsKICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tI
YW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCmluZGV4
IDJlZjI3MDFmZTY3OGJmOWI5MmRiMjEyYmJlYTVjOTE1YTNmYzNhMmYuLmY4Nzc5N2NjZDUwYjlh
YjVlYTQ4YzI1MWU0MmYwMGI1ZmJmNGZhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1t
CkBAIC0xNDUsMTIgKzE0NSwxMiBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
OjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHNlbWFw
aG9yZS53YWl0KCk7CiB9CiAKLXZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmFk
ZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewot
ICAgIFJldGFpblB0cjxOU0RhdGE+IGNvcGllZERhdGEgeyBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aF0gfTsKKyAgICBhdXRvIG5zRGF0YSA9IGRhdGEuY3Jl
YXRlTlNEYXRhKCk7CiAKICAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOwotICAgIFttX25l
RmlsdGVyU291cmNlIHJlY2VpdmVkRGF0YTpjb3BpZWREYXRhLmdldCgpIGRlY2lzaW9uSGFuZGxl
cjpbdGhpcywgJnNlbWFwaG9yZV0oTkVGaWx0ZXJTb3VyY2VTdGF0dXMgc3RhdHVzLCBOU0RpY3Rp
b25hcnkgKmRlY2lzaW9uSW5mbykgeworICAgIFttX25lRmlsdGVyU291cmNlIHJlY2VpdmVkRGF0
YTpuc0RhdGEuZ2V0KCkgZGVjaXNpb25IYW5kbGVyOlt0aGlzLCAmc2VtYXBob3JlXShORUZpbHRl
clNvdXJjZVN0YXR1cyBzdGF0dXMsIE5TRGljdGlvbmFyeSAqZGVjaXNpb25JbmZvKSB7CiAgICAg
ICAgIGhhbmRsZURlY2lzaW9uKHN0YXR1cywgcmVwbGFjZW1lbnREYXRhRnJvbURlY2lzaW9uSW5m
byhkZWNpc2lvbkluZm8pKTsKICAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgpOwogICAgIH1dOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyLmgKaW5kZXggNjc5YWU5MzI5NTE3ZTFmMzk0M2JhNTc2MmFj
OGY1NmU4NjBjOGMyNS4uZDVmYTEzMzBiMTYyY2NjY2UyMmU5NDc1ODYxNWE2ZTAxMTIyZDA0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBv
dmVycmlkZTsKICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRh
KCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlci5tbQppbmRleCAxYzk2MDQ3MTZiNDI2OTNkNWU0NmMyZTIzZTk0MWRh
MDBjODNlNGRlLi5hNjUxMTVjZWIxMjIyMzY3N2YwOWE0YTNkYTk5YjRhYzcyNjhkZjIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlci5tbQpAQCAtOTQsMTAgKzk0LDEwIEBAIHZvaWQgUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzCiAgICAgdXBkYXRlRmlsdGVyU3RhdGUoKTsKIH0KIAotdm9pZCBQYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoKQordm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKCFbbV9yZXBsYWNlbWVudERhdGEg
bGVuZ3RoXSk7Ci0gICAgbV9yZXBsYWNlbWVudERhdGEgPSBbbV93ZWJGaWx0ZXJFdmFsdWF0b3Ig
YWRkRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxl
bmd0aCBmcmVlV2hlbkRvbmU6Tk9dXTsKKyAgICBtX3JlcGxhY2VtZW50RGF0YSA9IFttX3dlYkZp
bHRlckV2YWx1YXRvciBhZGREYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogICAgIHVw
ZGF0ZUZpbHRlclN0YXRlKCk7CiAgICAgQVNTRVJUKG5lZWRzTW9yZURhdGEoKSB8fCBbbV9yZXBs
YWNlbWVudERhdGEgbGVuZ3RoXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCBkZTMzZjFhZjQxMmRjMDhiMmI5
NjFhMTk0OTQ1YzljYzkwYWE2NjI1Li5hNWE3M2ZlMDUxZTlkYjU0MjgyNTY1MGIxZjQ1NDIxYjUw
NDkxZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQmFja2luZ1N0b3JlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwotICAgICAg
ICBtX3BpeGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAg
ICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQ
b2ludCgpLCBtX3NpemUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICBBU1NFUlQoIW1fc2l6ZS5pc0VtcHR5KCkgJiYgIWlzT3ZlclNpemUobV9zaXplKSk7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIgeyBvdGhlci5tX3BpeGVscy0+ZGF0YSgpLCBv
dGhlci5tX3BpeGVscy0+c2l6ZSgpIH07Ci0gICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAg
ICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
ICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8
dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICB9CiAKQEAgLTIzMyw3ICsyMzMsNyBA
QCBwcml2YXRlOgogICAgICAgICByZXR1cm4gUGFja2VkQ29sb3I6OkFSR0IgeyByZXN1bHQgfS52
YWx1ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+IG1fcGl4ZWxzOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGl4ZWxzOwogICAg
IHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7IG51bGxwdHIgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsK
ICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0OyAvLyBUaGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUgdGhl
IGVudGlyZSBidWZmZXIgZXhjZXB0IGZvciBHSUYgYW5kIFBORyBmcmFtZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyLmgKaW5kZXggODg2OTFkYzI1NmQ2ZGQ2YzQ1ZjQ2ZTAxNTQ5Njc0MjQ1YWEz
NTMzNy4uYzk1OGY4NDRkYWMxNDM5NGUyNGRlZmVhYmE3NTRmOWQ4YTgxMjk5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTUxLDkgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFTZW50KFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25n
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KLSAgICB2
aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcGxhdGZvcm0s
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgZGF0YVJlY2VpdmVkKHBsYXRmb3Jt
LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVy
JikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFj
Y2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBs
b2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggZWMwYTdhY2Y0NzMyNjFjNzRlN2VlZmZhZGM5Y2NjM2MzZTU3ZjIy
OC4uNzcwOGE1OGQyYjU4MDhiOTQwMDJkMjA1ZTk4YTI3YmIyY2U2ZjMyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTM4
LDcgKzEzOCw3IEBAIHZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiwgaW50KQordm9pZCBXZWJDb3Jl
QVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNl
KHJlc291cmNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5oCmluZGV4IGNkZjE0M2YzYzNjZGU5NzFmZDc5ZGNmNzMyOGJmY2Q3YjMyNjAy
ZGMuLjYyNjdiZTAwYzU0ZWU2MTcwMmZiNzdiMmE1ZmI1NjdiMjdlYjlmZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3Jl
QVZDRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaApAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBv
dmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBmOTIx
ZjNkYTBlNjliMzM5OTc3YzllM2U0OTY2N2EyOGY1ZTk1Y2JkLi43MjY0NzI1YzhlNTYyMmRmMzhi
NDViY2Q5OWFjNzg3NTViOWViODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIG5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CiAKICAgICB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291
cmNlJik7CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVy
Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE4KICAgICBt
X3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9h
ZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90
KiwgaW50KQordm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VS
VCgmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSByZXNvdXJj
ZS5yZXNvdXJjZUJ1ZmZlcigpKQpAQCAtMTU2LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIGJvb2wgc2hvdWxkQ2FjaGVS
ZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBmaW5hbCB7
IH0KLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9p
ZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxlZChlcnJvcik7IH0KICAgICB2
b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxlZChlcnJvcik7IH0KICAgICB2b2lkIGxvYWRGaW5p
c2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbCB7IGxvYWRGaW5pc2hlZCgpOyB9CkBAIC0yMTEsOSArMjExLDkgQEAgdm9pZCBQbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgbV9wYXJlbnQubG9hZEZp
bmlzaGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
LSAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX2J1ZmZlci5hcHBl
bmQoYnVmZmVyKTsKICAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1f
YnVmZmVyLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcAppbmRleCA5MzAxOTA5OTQ1YjRhMjNkNjY3ODJmMzUwYjU2ZTQ0NzlmODAyNmYyLi5i
N2IwN2ZmMTQ1NGQ1NjFhMzAyMTA4YWUzMjI5MWU4ZjgzNDM3YmQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRl
OgogCiAgICAgLy8gUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IHZpcnR1YWwgbWV0aG9kcy4K
ICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hvdWxkQ29udGludWVQ
b2xpY3lDaGVjayk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTEwOTMsNyAr
MTA5Myw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
U2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6WWVzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKQEAgLTEx
MDcsNyArMTEwNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhCiAgICAgLy8gdGhhdCBmaXJz
dCBwYWNrYWdlIGRlbGl2ZXJ5IHdvdWxkIGluY2x1ZGUgdGhlIHRpbWUgb2Ygc2VuZGluZyBvdXQg
dGhlIHJlcXVlc3QgYW5kIGdldHRpbmcgdGhlIGRhdGEgYmFjay4gU2luY2Ugd2UgY2FuJ3QgZGlz
dGluZ3Vpc2ggdGhlCiAgICAgLy8gc2VuZGluZyB0aW1lIGZyb20gdGhlIHJlY2VpdmluZyB0aW1l
LCBpdCBpcyBiZXR0ZXIgdG8gaWdub3JlIGl0LgogICAgIGlmICghc3RkOjppc25hbihtZW1iZXJz
LT5kb3dubG9hZFN0YXJ0VGltZSkpIHsKLSAgICAgICAgbWVtYmVycy0+dG90YWxEb3dubG9hZGVk
Qnl0ZXMgKz0gYnVmZmVyLT5zaXplKCk7CisgICAgICAgIG1lbWJlcnMtPnRvdGFsRG93bmxvYWRl
ZEJ5dGVzICs9IGRhdGEuc2l6ZSgpOwogICAgICAgICBkb3VibGUgdGltZVNpbmNlU3RhcnQgPSAo
V2FsbFRpbWU6Om5vdygpIC0gbWVtYmVycy0+ZG93bmxvYWRTdGFydFRpbWUpLnNlY29uZHMoKTsK
ICAgICAgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJSJXU6IGRvd25sb2FkZWQgJSIgR19HVUlO
VDY0X0ZPUk1BVCAiIGJ5dGVzIGluICVmIHNlY29uZHMgPX4gJTEuMGYgYnl0ZXMvc2Vjb25kIiwg
bV9yZXF1ZXN0TnVtYmVyLCBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcywgdGltZVNpbmNl
U3RhcnQKICAgICAgICAgICAgICwgdGltZVNpbmNlU3RhcnQgPyBtZW1iZXJzLT50b3RhbERvd25s
b2FkZWRCeXRlcyAvIHRpbWVTaW5jZVN0YXJ0IDogMCk7CkBAIC0xMTE1LDIwICsxMTE1LDE5IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhCiAgICAgICAgIG1lbWJlcnMtPmRvd25sb2FkU3RhcnRU
aW1lID0gV2FsbFRpbWU6Om5vdygpOwogICAgIH0KIAotICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21l
bnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgaW50IGxlbmd0aCA9IHNlZ21lbnQuc2l6
ZSgpOwotICAgICAgICBHU1RfTE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2Yg
ZGF0YSIsIG1fcmVxdWVzdE51bWJlciwgbGVuZ3RoKTsKKyAgICBpbnQgbGVuZ3RoID0gZGF0YS5z
aXplKCk7CisgICAgR1NUX0xPR19PQkpFQ1Qoc3JjLCAiUiV1OiBIYXZlICVkIGJ5dGVzIG9mIGRh
dGEiLCBtX3JlcXVlc3ROdW1iZXIsIGxlbmd0aCk7CiAKLSAgICAgICAgbWVtYmVycy0+cmVhZFBv
c2l0aW9uICs9IGxlbmd0aDsKLSAgICAgICAgQVNTRVJUKCFtZW1iZXJzLT5oYXZlU2l6ZSB8fCBt
ZW1iZXJzLT5yZWFkUG9zaXRpb24gPD0gbWVtYmVycy0+c2l6ZSk7CisgICAgbWVtYmVycy0+cmVh
ZFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICBBU1NFUlQoIW1lbWJlcnMtPmhhdmVTaXplIHx8IG1l
bWJlcnMtPnJlYWRQb3NpdGlvbiA8PSBtZW1iZXJzLT5zaXplKTsKIAotICAgICAgICBnc3RfZWxl
bWVudF9wb3N0X21lc3NhZ2UoR1NUX0VMRU1FTlRfQ0FTVChzcmMpLCBnc3RfbWVzc2FnZV9uZXdf
ZWxlbWVudChHU1RfT0JKRUNUX0NBU1Qoc3JjKSwKLSAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVf
bmV3KCJ3ZWJraXQtbmV0d29yay1zdGF0aXN0aWNzIiwgInJlYWQtcG9zaXRpb24iLCBHX1RZUEVf
VUlOVDY0LCBtZW1iZXJzLT5yZWFkUG9zaXRpb24sICJzaXplIiwgR19UWVBFX1VJTlQ2NCwgbWVt
YmVycy0+c2l6ZSwgbnVsbHB0cikpKTsKKyAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoR1NU
X0VMRU1FTlRfQ0FTVChzcmMpLCBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudChHU1RfT0JKRUNUX0NB
U1Qoc3JjKSwKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcoIndlYmtpdC1uZXR3b3JrLXN0YXRp
c3RpY3MiLCAicmVhZC1wb3NpdGlvbiIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnJlYWRQb3Np
dGlvbiwgInNpemUiLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5zaXplLCBudWxscHRyKSkpOwor
CisgICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKKyAgICBHc3RCdWZmZXIqIGJ1ZmZl
ciA9IGdzdEJ1ZmZlck5ld1dyYXBwZWRGYXN0KGZhc3RNZW1EdXAoZGF0YS5kYXRhKCksIGxlbmd0
aCksIGxlbmd0aCk7CisgICAgZ3N0X2FkYXB0ZXJfcHVzaChtZW1iZXJzLT5hZGFwdGVyLmdldCgp
LCBidWZmZXIpOwogCi0gICAgICAgIGNoZWNrVXBkYXRlQmxvY2tzaXplKGxlbmd0aCk7Ci0gICAg
ICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVmZmVyTmV3V3JhcHBlZEZhc3QoZmFzdE1lbUR1
cChzZWdtZW50LmRhdGEoKSwgbGVuZ3RoKSwgbGVuZ3RoKTsKLSAgICAgICAgZ3N0X2FkYXB0ZXJf
cHVzaChtZW1iZXJzLT5hZGFwdGVyLmdldCgpLCBidWZmZXIpOwotICAgIH0pOwogICAgIHN0b3BM
b2FkZXJJZk5lZWRlZChzcmMsIG1lbWJlcnMpOwogICAgIG1lbWJlcnMtPnJlc3BvbnNlQ29uZGl0
aW9uLm5vdGlmeU9uZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggOWM0MDU1
NzgyNDFkMGM1MTI3MDI5NTE1YzIyMTI2NThmOGM0ZjY4YS4uNWY5ODY0N2EyYTIyMDJhMDU5ODli
NjI4NGM5NDliNTBiNDM5OWExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03Niw5
ICs3Niw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5j
b2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1
dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAgIGlmIChj
b250aWd1b3VzRGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0Rh
dGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOworICAgICAgICBpZiAoYXV0byBjb250aWd1
b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsgIWNvbnRpZ3VvdXNEYXRhLT5pc0VtcHR5
KCkpCisgICAgICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGNvbnRpZ3VvdXNEYXRhKTsKICAgICAg
ICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFp
bGFibGUpIHsKICAgICAgICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwog
ICAgICAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpAQCAtMTk0LDcgKzE5
Myw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKIHByb3RlY3RlZDoKLSAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBS
ZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1h
Z2VEZWNvZGVyRnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fbG9jayk7CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlw
bHlBbHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCAyNmY4ODY0OTZlNWE1
YTE0ZTI4YWZiMWFmYTliZmMzMDE3N2Y1MWNmLi5kNjhjMGEzNWZjMWY0YWI2MDE3YmQzOWVlNDM5
MTAyNjgzNWZjODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCkBAIC00MSw3ICs0
MSw3IEBAIEFWSUZJbWFnZVJlYWRlcjo6QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VE
ZWNvZGVyPiYmIGRlY29kZXIpCiAKIEFWSUZJbWFnZVJlYWRlcjo6fkFWSUZJbWFnZVJlYWRlcigp
ID0gZGVmYXVsdDsKIAotYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKK2Jvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChhdmlmRGVjb2RlclNl
dElPTWVtb3J5KG1fYXZpZkRlY29kZXIuZ2V0KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkg
IT0gQVZJRl9SRVNVTFRfT0spCiAgICAgICAgIHJldHVybiBhbGxEYXRhUmVjZWl2ZWQgPyBtX2Rl
Y29kZXItPnNldEZhaWxlZCgpIDogZmFsc2U7CkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgQVZJRklt
YWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQVZJRkltYWdlUmVhZGVy
OjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFt
ZSYgYnVmZmVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSkKK3ZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwg
U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgaWYgKG1fZGVjb2Rlci0+ZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJ
RkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9h
dmlmL0FWSUZJbWFnZVJlYWRlci5oCmluZGV4IDQ5NmY2OWY4MTJiZDc1YjBlZGE2MzU3YmFhODYw
Y2ZjY2I1YmE0YjMuLjg1YWNiMTdjYmNmYzU4ODVkNmFjNTUyNWM3YjVjOWVmZmM1OGM2NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJ
RkltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAg
QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmKTsKICAgICB+QVZJRklt
YWdlUmVhZGVyKCk7CiAKLSAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQg
ZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKKyAgICBib29sIHBhcnNl
SGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2
b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHNpemVfdCBpbWFnZUNvdW50KCkgY29uc3Q7CiAg
ICAgZG91YmxlIHJlcGV0aXRpb25Db3VudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5o
CmluZGV4IGJkNDMwZThhOGJlYTJjODE2YjJjNTIyYmY1YmE3ODg0NmMzOGUwZmYuLmMzMTQxMzQ3
OWQ0MzI1MWIyNzhlZGQ2N2E0NDE5MTZmMDgwMjE5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5o
CkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEJNUEltYWdlUmVhZGVyIHsKIHB1YmxpYzoKICAgICAv
LyBSZWFkIGEgdmFsdWUgZnJvbSB8ZGF0YVtvZmZzZXRdfCwgY29udmVydGluZyBmcm9tIGxpdHRs
ZSB0byBuYXRpdmUKICAgICAvLyBlbmRpYW5uZXNzLgotICAgIHN0YXRpYyBpbmxpbmUgdWludDE2
X3QgcmVhZFVpbnQxNihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBpbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgcmVzdWx0OwogICAgICAgICBtZW1jcHkoJnJlc3VsdCwgJmRhdGEuZGF0YSgpW29mZnNl
dF0sIDIpOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCi0gICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAg
IHN0YXRpYyBpbmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MzJfdCByZXN1bHQ7CiAgICAgICAg
IG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgNCk7CkBAIC02OSw3ICs2OSw3
IEBAIHB1YmxpYzoKICAgICBCTVBJbWFnZVJlYWRlcihTY2FsYWJsZUltYWdlRGVjb2RlciogcGFy
ZW50LCBzaXplX3QgZGVjb2RlZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90IGltZ0RhdGFPZmZzZXQs
IGJvb2wgdXNlc0FuZE1hc2spOwogCiAgICAgdm9pZCBzZXRCdWZmZXIoU2NhbGFibGVJbWFnZURl
Y29kZXJGcmFtZSogYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0gICAgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9
ICZkYXRhOyB9CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkgeyBt
X2RhdGEgPSAmZGF0YTsgfQogCiAgICAgLy8gRG9lcyB0aGUgYWN0dWFsIGRlY29kaW5nLiBJZiB8
b25seVNpemV8IGlzIHRydWUsIGRlY29kaW5nIG9ubHkKICAgICAvLyBwcm9ncmVzc2VzIGFzIGZh
ciBhcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBpbWFnZSBzaXplLiBSZXR1cm5zCkBAIC0yNzIsNyAr
MjcyLDcgQEAgcHJpdmF0ZToKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBtX2J1ZmZl
cjsKIAogICAgIC8vIFRoZSBmaWxlIHRvIGRlY29kZS4KLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8Y29uc3QgU2hhcmVk
QnVmZmVyPiBtX2RhdGE7CiAKICAgICAvLyBBbiBpbmRleCBpbnRvIHxtX2RhdGF8IHJlcHJlc2Vu
dGluZyBob3cgbXVjaCB3ZSd2ZSBhbHJlYWR5IGRlY29kZWQuCiAgICAgc2l6ZV90IG1fZGVjb2Rl
ZE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKaW5kZXggMTA4MmZkZjBkZmYyMzkxZTU2NTMw
YTQxZjg3YmE0Mzk4MjMyNzUzNS4uZDZiZmZjMTJiMWUxZTQ2ZDQzZDA0N2VkZGMyYWQ5NGI1Yzg1
NTNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKQEAgLTIzNyw3ICsyMzcsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZv
aWQgc2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpIHsgbV9kYXRhID0g
JmRhdGE7IH0KICAgICAvLyBGSVhNRTogaGFsdEF0RnJhbWUgc2hvdWxkIGJlIHNpemVfdC4KICAg
ICBib29sIGRlY29kZShXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OkdJRlF1ZXJ5LCB1bnNpZ25l
ZCBoYWx0QXRGcmFtZSk7CiAKQEAgLTMxNiw2ICszMTYsNiBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8R0lGRnJhbWVDb250ZXh0PiA+IG1fZnJhbWVzOwogICAgIHNpemVf
dCBtX2N1cnJlbnREZWNvZGluZ0ZyYW1lOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIGJvb2wgbV9wYXJzZUNvbXBsZXRlZDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmNDIzY2NjOWNlMTI3ZWY3
YWU3NmM5MTI4MjRhYmU4NzczZmI3MmQxLi40MzUwMzU4ZjNiZWViOWYyNDU4NjNjZTdlMDBhZTgy
NzUwZGU3NGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTMxNyw3ICsz
MTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYnl0ZXNUb1NraXAgPSBzdGQ6Om1heChudW1CeXRl
cyAtIGJ5dGVzVG9Ta2lwLCBzdGF0aWNfY2FzdDxsb25nPigwKSk7CiAgICAgfQogCi0gICAgYm9v
bCBkZWNvZGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEs
IGJvb2wgb25seVNpemUpCisgICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIG9ubHlTaXplKQogICAgIHsKICAgICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0gb25s
eVNpemU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCAyMDQ3M2YwZWVlYmI1NmM3MTMxNGY2NTU2YmRhMDkwMzM0OTA3NDQyLi45MzNhMDEzZjIx
YzQ3ZTljYjc5OWViNzJhYmI3ZTM4Y2ZhYjFhNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAv
SlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBKUEVHMjAw
MEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogICAgIH0KIAogICAgIHN0cnVjdCBSZWFkZXIgewotICAgICAgICBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKKyAgICAgICAgY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhOwogICAgICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIH0gcmVhZGVyID0geyAqbV9kYXRhLCAw
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMjcwOWI3YzY4YmY1MzBkMTk1
ZDc2NjZhM2Q2YWNlNTAwMTNiYmUzNC4uNDA0OTYzYTQ3OWMwNWZjMGM2ZDVjMzBlYjdiZWM3ODE1
NjlhYjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIG1fcmVhZE9mZnNldCA9IDA7CiAgICAgfQogCi0gICAgYm9vbCBk
ZWNvZGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJv
b2wgc2l6ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKQorICAgIGJvb2wgZGVjb2RlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUp
CiAgICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBzaXplT25seTsKICAgICAgICAg
UE5HSW1hZ2VEZWNvZGVyKiBkZWNvZGVyID0gc3RhdGljX2Nhc3Q8UE5HSW1hZ2VEZWNvZGVyKj4o
cG5nX2dldF9wcm9ncmVzc2l2ZV9wdHIobV9wbmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuY3BwCmluZGV4IGIxYmVjNTVlNzhjNDM0ODAxYzI1NGFjZTBkZjU5OTMxYTM2Yjc0YmQuLjc3
MmU4MzI2NmUyMzBlYjZkZmY3ZGMxZWY3ZGI1NTIzOTYzYmZiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rl
cjo6ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAv
LyBUaGlzIGNhbiBiZSBleGVjdXRlZCBib3RoIGluIHRoZSBtYWluIHRocmVhZCAod2hlbiBub3Qg
dXNpbmcgYXN5bmMgZGVjb2RpbmcpIG9yIGluIHRoZSBkZWNvZGluZyB0aHJlYWQuCiAgICAgLy8g
V2hlbiBleGVjdXRlZCBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLCBhIGNhbGwgdG8gc2V0RGF0YSgp
IGZyb20gdGhlIG1haW4gdGhyZWFkIG1heSBjaGFuZ2UgdGhlIGRhdGEKICAgICAvLyB0aGUgV2Vi
UERlbXV4ZXIgaXMgdXNpbmcsIGxlYXZpbmcgaXQgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBz
byB3ZSBuZWVkIHRvIHByb3RlY3QgdGhlIGRhdGEuCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CisgICAgUmVmUHRy
PGNvbnN0IFNoYXJlZEJ1ZmZlcj4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOwogICAgIFdlYlBEYXRh
IGlucHV0RGF0YSA9IHsgcHJvdGVjdGVkRGF0YS0+ZGF0YSgpLCBwcm90ZWN0ZWREYXRhLT5zaXpl
KCkgfTsKICAgICBXZWJQRGVtdXhTdGF0ZSBkZW11eGVyU3RhdGU7CiAgICAgV2ViUERlbXV4ZXIq
IGRlbXV4ZXIgPSBXZWJQRGVtdXhQYXJ0aWFsKCZpbnB1dERhdGEsICZkZW11eGVyU3RhdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmNwcAppbmRleCBiYThmZDRmZjRmMWU0MWM5YWQ0ZmE3NGE0MmJlNGUyYmQxMWFh
ODQzLi5kY2FjNTk5N2E2MTM1ZDJhYjc1OWE3YWQyZWJiMDQzNTJkNTE0YTczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcApAQCAtMzYsOSArMzYsMTEgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OlJlc291cmNl
SGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291
cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNv
dXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGJ1
ZmZlci5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7Cisg
ICAgICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgfSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBjNGYwNTQ4NWYyODcwYjExNmRhN2M3
NjBkM2MwZmNlOTZlYzJiNGE1Li5lNDQyYzk3MzRjMTE5ODQ5MGExYzZjYWM1NzcyNWZkNTE5NmIz
YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5oCkBAIC00NCwxMyArNDQsMTQgQEAgT0JKQ19DTEFTUyBOU0NhY2hl
ZFVSTFJlc3BvbnNlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNs
YXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBlbnVtIENhY2hlU3RvcmFnZVBvbGljeSB7
CiAgICAgU3RvcmFnZUFsbG93ZWQsCkBAIC02NSw5ICs2Niw5IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9u
ZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQq
LykgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsg
fQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291
cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCk7Ci0gICAgCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykg
eyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKTsKKwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5jcHAKaW5kZXggNGMwNDIxMGM1YTUxM2FjM2Y1NDcxNDZkOWY4NWM4MmJkODgxMzc3Ni4u
MzBiNGJiMGZkYWVmN2FlMmNjNzRhYzYwOWY3YjAwOTk3ZTVhNmRjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5jcHAKQEAgLTcxLDkgKzcxLDkgQEAgdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVIKICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKK3ZvaWQgU3luY2hyb25vdXNM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCiB7Ci0gICAgbV9kYXRh
LmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZEZp
bmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hy
b25vdXNMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuaAppbmRleCA2ODM4ZTlkOGNmNDM3OTZkMmYzOTRiYTFmNTRm
MDlkMGI2N2U4YWJkLi5jNGNiNzJkYzdhNjU1ZmQzNjk2YTMzM2ZlMDVjZGVkNjI5NzZhZmEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJv
bm91c0xvYWRlckNsaWVudC5oCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOworCiBjbGFzcyBTeW5jaHJvbm91c0xvYWRlck1lc3Nh
Z2VRdWV1ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTeW5jaHJvbm91c0xvYWRlck1l
c3NhZ2VRdWV1ZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U3luY2hyb25vdXNMb2FkZXJN
ZXNzYWdlUXVldWU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3luY2hyb25vdXNM
b2FkZXJNZXNzYWdlUXVldWUpOyB9CkBAIC02Niw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAv
KmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgLyplbmNvZGVkRGF0YUxl
bmd0aCovKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZh
aWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAjaWYg
VVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVy
YXRvci5tbQppbmRleCBmYzI3MjU0MDg5MmI4ZTJjZDc3ZGU4ZjZkOWU1NGE4YzhiNTk3ZjYxLi4x
OTgxNGEzNjVjOWY2NjFhMjFjMjI5YWRiZDA0NjExYzIwOTQ3ZTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVO
U1UKIAogICAgICAgICAgICAgc2l6ZV90IGJ5dGVzRnJvbVRoaXNWaWV3VG9EZWxpdmVyID0gc3Rk
OjptaW4oYnVmZmVyVmlldy5zaXplKCksIHJhbmdlLmVuZCAtIGJ5dGVJbmRleCArIDEpOwogICAg
ICAgICAgICAgYnl0ZUluZGV4ICs9IGJ5dGVzRnJvbVRoaXNWaWV3VG9EZWxpdmVyOwotICAgICAg
ICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZERhdGE6U2hhcmVkQnVmZmVyRGF0
YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIpLmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpXTsKKyAgICAgICAgICAgIFt0YXNrIHJlc291cmNlOm51bGxwdHIgcmVjZWl2ZWRE
YXRhOlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGJ1ZmZlclZpZXcsIGJ5dGVzRnJvbVRoaXNWaWV3VG9E
ZWxpdmVyKS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCldOwogICAgICAgICB9
CiAgICAgICAgIGlmIChieXRlSW5kZXggPj0gcmFuZ2UuZW5kKSB7CiAgICAgICAgICAgICBbdGFz
ayByZXNvdXJjZUZpbmlzaGVkOm51bGxwdHIgbWV0cmljczpOZXR3b3JrTG9hZE1ldHJpY3MgeyB9
XTsKQEAgLTIzOCw3ICsyMzgsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAorICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAg
aWYgKCFtX2dlbmVyYXRvcikKQEAgLTI0Niw3ICsyNDYsNyBAQCBwcml2YXRlOgogICAgICAgICBh
dXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7CiAgICAgICAg
IGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+YnVmZmVyLmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKGJ1ZmZl
cik7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVk
UmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKaW5kZXggZjkwOTZl
ZTJlOWYyNDJmZjA0ZDcwNWMyYWExMDkzYTU1ZTU3MzVkYi4uZWE0YTliZjI5NzgyOWViZDAyOTE0
NzZjYmY4YTdlNTQ5NDcyMTI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKQEAgLTE1OCw3ICsx
NTgsNyBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gOiBO
U09iamVjdCB7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UqKXJlc291cmNlIHNlbnRCeXRlczoodW5zaWduZWQgbG9uZyBsb25nKWJ5dGVz
U2VudCB0b3RhbEJ5dGVzVG9CZVNlbnQ6KHVuc2lnbmVkIGxvbmcgbG9uZyl0b3RhbEJ5dGVzVG9C
ZVNlbnQ7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKXJlc3BvbnNlIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKWNvbXBsZXRpb25I
YW5kbGVyOwogLSAoQk9PTClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZTsKLS0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhOworLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZERhdGE6KFJldGFpblB0cjxOU0RhdGE+JiYpZGF0YTsKIC0gKHZvaWQpcmVzb3VyY2U6KG51
bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRS
ZWRpcmVjdDooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVz
dDooV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpY29t
cGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhF
cnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CiAtICh2b2lkKXJlc291
cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxv
YWRGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IDVlMmU4ZThkOWQ3NjY3MmEyNDE0Zjc2ZjVjMDhm
MjU5ZTAyOWY1MDQuLjNjOGJlMDhjMjkzNGU1NGRhM2I3NDljYTZkYTM0ZWRhOTZkYzliOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTYwOCw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNw
b25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25l
ZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwpAQCAtNjUyLDEzICs2NTIsMTMgQEAgYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2tDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmMKICAgICBy
ZXR1cm4gW21fdGFzayByZXNvdXJjZTomcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTpyZXNw
b25zZV07CiB9CiAKLXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tD
bGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9j
ayB9OwogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBbbV90YXNrIHJl
c291cmNlOiZyZXNvdXJjZSByZWNlaXZlZERhdGE6V1RGTW92ZShidWZmZXIpXTsKKyAgICBbbV90
YXNrIHJlc291cmNlOiZyZXNvdXJjZSByZWNlaXZlZERhdGE6YnVmZmVyLmNyZWF0ZU5TRGF0YSgp
XTsKIH0KIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnJlZGlyZWN0
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
OTMxLDE1ICs5MzEsMTQgQEAgLSAoQk9PTClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBSZXMKICAgICByZXR1cm4gcmVz
cG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50UmFuZ2UpLmlzRW1w
dHkoKTsKIH0KIAotLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KWRhdGEKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
cmVjZWl2ZWREYXRhOihSZXRhaW5QdHI8TlNEYXRhPiYmKWRhdGEKIHsKICAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBb
c2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRy
IHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwotICAgICAgICBzdHJvbmdT
ZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKKyAgICAgICAg
c3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBbZGF0YSBsZW5ndGhdOwog
ICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxO
U1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0
ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQotICAgICAgICAgICAgW2Rh
dGFEZWxlZ2F0ZSBVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzdHJvbmdTZWxmLmdldCgpLnNl
c3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopc3Ryb25nU2VsZi5nZXQoKSBk
aWRSZWNlaXZlRGF0YTpuc0RhdGEuZ2V0KCldOworICAgICAgICAgICAgW2RhdGFEZWxlZ2F0ZSBV
UkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24gZGF0YVRh
c2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopc3Ryb25nU2VsZi5nZXQoKSBkaWRSZWNlaXZlRGF0
YTpkYXRhLmdldCgpXTsKICAgICB9XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5o
CmluZGV4IDFmNGExOTMxMzMxMmM1ZGQ2YTQ4YWQ1MzM5ZGZkMmMzYjVkZWMyNTcuLjBmZTY1YTI5
ZTYzNjE2ZGI0MmY3YzllYTFkMTg1MjIxYzIwMDQwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50LmgKQEAgLTMxLDEyICszMSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxMZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVnYWN5UHJldmlld0xv
YWRlckNsaWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbQppbmRleCAzMTVlMDY1MTUzMGRjZGIwMjgwMTY1NGI3NTdkODE0
NzNjMjBmZDMwLi5hZTcxNTVlY2VmMzVkM2UxODg4ZDkxNjU2NDU3ZTM4MTE1OWRmNDM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLm1tCkBAIC0zMDAsNyArMzAwLDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VS
TENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGwK
ICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTc5MwogICAgICAgICAvLyAtMSBtZWFucyB3ZSBkbyBub3QgcHJvdmlkZSBhbnkgZGF0YSBh
Ym91dCB0cmFuc2ZlciBzaXplIHRvIGluc3BlY3RvciBzbyBpdCB3b3VsZCB1c2UKICAgICAgICAg
Ly8gQ29udGVudC1MZW5ndGggaGVhZGVycyBvciBjb250ZW50IHNpemUgdG8gc2hvdyB0cmFuc2Zl
ciBzaXplLgotICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIobV9o
YW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCAtMSk7CisgICAgICAgIG1f
aGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpLCAtMSk7CiAgICAgfTsKIAogICAgIFtzZWxmIGNhbGxGdW5jdGlv
bk9uTWFpblRocmVhZDpXVEZNb3ZlKHdvcmspXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCmluZGV4IDA4ZDA1N2JiYjVmMTdjMjA0NWJmZjkwNmZmNWFkYTg1ZjEwNDI5
MzAuLmY3ZjI2NmNlOGQ4MTkxMDYwYzg1N2EyZjhhNmFkOWZkZWJkODE4MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNTQ2LDggKzU0Niw4IEBAIEVuY29k
ZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkK
ICAgICAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsgLy8gRG9jdW1l
bnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGZyYW1lLT5pbml0KCkuCiAgICAg
ICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5zZXRNSU1FVHlwZSgi
aW1hZ2Uvc3ZnK3htbCIpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+
d3JpdGVyKCkuYmVnaW4oVVJMKCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5IGRvY3VtZW50Ci0gICAg
ICAgIGRhdGEoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAg
ICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKHNlZ21l
bnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgIGRhdGEoKS0+Zm9yRWFjaFNlZ21l
bnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgeworICAgICAgICAgICAgbG9hZGVy
LmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoYnVmZmVyKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5l
bmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcApp
bmRleCAwNTlmM2EzODZiNmNmNWZhNzliM2MxODk3MDE1MzEzZjdjZGI0ZWYyLi4xZGUyNTNjOTJi
MWI4MWU3MmFiNzBmOWJiNTY4ZDQxZmRlMzc0ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiAg
ICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSk7CiB9
CiAKLXZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCosIGludCkK
K3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsK
ICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCmluZGV4IDYzNWFj
ODRiZTc5Mzg0N2FhNTcyMTNkMDFmZmMxZTc0Zjc2Yjc1OTMuLmI4Mzk3YjMwZDhkODViN2JmZmIz
NjI1NDY2ZjA2ODg4YzE4MjE3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggODJhMmE4YzRiMThhY2NlNzk4YjI3
YzJjOGQwMDk1ODlmZjc1Y2JhOC4uNGU4YWI3ODFhNDA2MWFiMThjNTAzMzczYmRhMzhmNmM1NWQ4
YTAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmNwcApAQCAtMTE1LDEyICsxMTUsMTIgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFIKICAg
ICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKIH0KIAotdm9pZCBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
KQordm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBib29sKQogewogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAg
bV9kYXRhLmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBkYWI3M2ZjN2IxYTkz
ZWQ0ZTNmZWIzMWQ2NzA5OGQ5OWI1MTc2YTM5Li43Y2JhYThlNTUxMGM4YzRmY2FmMmViOTJjNmY3
M2IzZDJhMTJjNjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzV29ya2Vy
Rm9udExvYWRSZXF1ZXN0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggYmY1YTQ0ZmUzNDhkMmZmY2U5MTZmYjE5NDkx
NWU2N2JmZGE5YWVjMS4uY2QyNmVjZDZhMzdhN2VkMzlmZjcxZWRkYTM1ZThlZmE5MGIzN2M0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAt
MjAwLDcgKzIwMCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdv
cmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbikKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pCiB7CiAgICAgaWYgKG1fZmFpbGVkKQog
ICAgICAgICByZXR1cm47CkBAIC0yMTIsMTMgKzIxMiwxMSBAQCB2b2lkIFdvcmtlclNjcmlwdExv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAg
ICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9qYXZh
c2NyaXB0Il9zLCAiVVRGLTgiKTsKICAgICB9CiAKLSAgICBpZiAoIWxlbikKKyAgICBpZiAoYnVm
ZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmIChsZW4gPT0gLTEp
Ci0gICAgICAgIGxlbiA9IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KSk7CiAKLSAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7
CisgICAgc2l6ZV90IGxlbiA9IHVzZVN0ckxlbiA/IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihidWZmZXIuZGF0YSgpKSkgOiBidWZmZXIuc2l6ZSgpOworICAgIG1fc2NyaXB0
LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBsZW4pKTsKIH0KIAogdm9p
ZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuaAppbmRleCBlYWFiZTFlYTVkMTNiMzNmOWMzY2M2NmRkNDk1NTdlYjY5ZTM3ZWZjLi4w
YmMzYTAyNWIzNjc5ZTI1NjMwODYyNGVlZWJhODlkY2NjNDVjODJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGlj
OgogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
cjsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sIHVzZVN0ckxl
bikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRl
bnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCBmYmEzNjMyMmIyOWE2ZDVi
Nzk3YjM5ZWRjM2MzZDE3MTI0YjNiNWJjLi5jZTM3MDk2ODlkOWYwOTIxZTA5MDNhMDM3N2RiMjY4
YTU0NTBiMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNTEsNyArNTEsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2goKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAppbmRleCA5YjExMmI5ZGIyY2Q4NGQwMzJmNTlkYWZhOGU4ZTM4ZTA3MGU1M2Y3Li5kYzNh
ZWE4Y2FkOWQwOTZiNDJiY2E2NWIyNjEyMzJmMTM3NDNkMWUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKQEAgLTEwMzQsNyArMTAzNCw3IEBAIFJlZjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlRGVjb2RlcigpIGNvbnN0CiAgICAgcmV0dXJu
IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJVVEYtOCIpOwogfQog
Ci12b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKQogewogICAgIGlmIChtX2Vycm9yKQog
ICAgICAgICByZXR1cm47CkBAIC0xMDUyLDE3ICsxMDUyLDE2IEBAIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgaWYg
KHVzZURlY29kZXIgJiYgIW1fZGVjb2RlcikKICAgICAgICAgbV9kZWNvZGVyID0gY3JlYXRlRGVj
b2RlcigpOwogCi0gICAgaWYgKCFsZW4pCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChsZW4gPT0gLTEpCi0gICAgICAgIGxlbiA9IHN0cmxlbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CisgICAgc2l6ZV90IGxlbiA9IHVz
ZVN0ckxlbiA/IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0
YSgpKSkgOiBidWZmZXIuc2l6ZSgpOwogCiAgICAgaWYgKHVzZURlY29kZXIpCi0gICAgICAgIG1f
cmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKKyAg
ICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5k
YXRhKCksIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEu
Ci0gICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChkYXRhLCBsZW4pOworICAg
ICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAg
ICBpZiAoIW1fZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMmQx
M2JlYzM5NDY0NDhiOWI0ZjkyNWQzMmJkODZiYTJkODAzNzc1YS4uNmJmMTlmODJiZDJmZjc2NzA3
ZGE0NTcxNDc1MDdlOTkxZDI0NjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
QEAgLTE2Miw3ICsxNjIsNyBAQCBwcml2YXRlOgogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGll
bnQKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlm
eUlzRG9uZShib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAppbmRleCA2MTdmNDc2ODk1NjQyZGVjMjMy
NTRiNTQwZWU4MTkxMWFjNGEyZGY2Li43ZjUxMmM2YzExYThlNzEwOGNmMDA2MmI1ODRkMjdiNTg5
MDhkMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTk2LDEwICs5
NywxMCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNl
bnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1v
dGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgZGF0YSkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50
LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUoZGF0YSkpOworICAgICAgICBtX2NsaWVudC0+
ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNl
OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuaAppbmRleCA1YjdhN2UyYTc0MjQ0MzJkODZjYjI4YTFiZTcxNzE4YTE2NzM3NWU3Li45NTEw
NmY2NzIyNzNiNDVmMGEyNGE0N2ExYTJiZGQxNDA5ZTBmNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTM1LDYg
KzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsK
IGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTcsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sp
PiYmKTsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkYXRhU2VudCh1
aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxl
ZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKaW5kZXggNzFm
ZDAyMjI5YmJiMWM1NzMyNmZkZmNmZTI2YzExZjc2MWFiY2Y3Mi4uMDU0Yjg5M2UxMTExMGRjZjlh
NzAwMjUyZjRmNzk1YjAxYTU4N2I5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTY4LDcgKzY4LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsg
fQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlIHsgfTsKICAgICB2
b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk1ODYwOTFlYTAwNDFiNmYxNTg2OWQ0
MmJiZGE3MjQzMjk3NjkwZWMuLmJhOGQwNDhmNjVkYzMzOTg0ZjBjZDQ3NjM1YWI5MTAxODc5YmQz
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNl
KTsKIH0KIAotdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQordm9pZCBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpCiB7CiAgICAgQ09SU19DSEVDS0VSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggNTA1YTRlZmU1NzFkNDg5ZTUwYTk4OGJlYjgx
ODViN2ZlYWIzZGIxMC4uMGNiMzE1ZmQ4ZmY1MzE5OTE1N2RlNzhmODQ1MmQ3MWM0ZjVlMjk4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzEsNyArNzIsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBk
aWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4
cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCmluZGV4IDRiOWVl
NTc0YjkyYzdjMzcxN2E0YmMyODE5YTZiZTNhMTkwNjU3MTUuLmY0NzllMDkwMmIyMTc5Mjk1NWQz
NzY4MTRiMjFjODlmZjU1ZGI1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Myw3ICs2Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3Rp
YXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0
YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9T
ZW5kKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IDhjMTA0ZDgxNjBiN2Fh
ZmQwOTk3MTVkYTZkNGU2ZjdjNDYzN2ZhMDguLjYwYjY5YTkzNmJiNzhkZjI1MTA3NDljNzU0ZmU2
YWEyMjkzZmUwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwCkBAIC0yNTQsMTEgKzI1NCwxMCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdAogICAg
IG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNl
aXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5ldHdv
cmtMb2FkOjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdGhlIGVuY29kZWQgZGF0YSBsZW5n
dGgsIG5vdCB0aGUgZGVjb2RlZCBkYXRhIGxlbmd0aC4KLSAgICBhdXRvIHNpemUgPSBidWZmZXIt
PnNpemUoKTsKLSAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSwgc2l6ZSk7CisgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIs
IGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhF
cnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmgKaW5kZXggZTZhNzYxMTU5NjJiOTY1OWU3YmZlNzhjNmY0ZGM2ZjUz
MTJiM2NiZS4uMGU0YzFhZTQ5MjNjMzM3ZjVjZjliMGE0MDhiNWE4ODIyOWY1OTY1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaApAQCAtODEsNyArODEsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2Uo
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExT
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7
CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAppbmRl
eCAzNDhjZmZiOWU4ZTI1ZWU4M2JiYjM5YTAyY2QzY2Y2ZDI4NTRkMzllLi44YTI4NTgyNjExM2Y5
ZDhlZTY2MGRiNjg4YjNjNTM5M2ZmOTdiMmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2Vu
dCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAppbmRleCAzNmFjYzYzMTQ1ZjQwNWIxOTU1ZDMzNTQwZGFhNzA4ZjlhNjI5MzQxLi5l
NmZkMmFjNzBlYzdlMGU3NTkwYWRlMjcyZTE0MjdmY2U5NmRkZTUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC04NjMsMjkgKzg2MywyOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZERpZFJl
Y2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleAogICAgIH0pOwogfQog
Ci12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkKLSAgICAgICAgTE9B
REVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRh
IChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpOwotICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZmZXItPnNpemUoKTsKKyAgICAgICAg
TE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0
YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLnNpemUoKTsKIAogICAgIEFT
U0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKICAgICBpZiAobV9idWZmZXJlZERh
dGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBv
ZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4K
ICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5j
YXBhY2l0eSgpIC8gODsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgp
ICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlm
IChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci5zaXplKCkgPD0gbWF4aW11
bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBw
ZW5kKGJ1ZmZlcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUucmVzZXQoKTsKICAgICB9CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQog
ICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IEF0IGxlYXN0IG9uIE9TIFggWW9zZW1pdGUg
d2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNvdXJjZSBoYW5kbGUuCi0gICAgdW5zaWduZWQg
ZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7CisgICAgdW5zaWduZWQgZW5j
b2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLnNpemUoKTsKIAogICAgIGlmIChtX2J1ZmZlcmVk
RGF0YSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAg
ICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0
QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMjczLDcgKzEy
NzMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgp
CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKLXZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNlbmRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXpl
X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAppbmRleCBjZjEwY2YwZTcxYTFiYzY1NTQwZTg3ZDZiYTRjMWI5Yzg1NmMwYTFkLi44
MTdhZWYyNmM4MzZjMzRhN2Q0NGVlN2NjOTVlZGQ5YTI5OGQ2YTRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTEx
NSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVk
ZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3Jl
ZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmlu
YWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgpIGZpbmFsOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgYnVmZmVyaW5nVGltZXJG
aXJlZCgpOwotICAgIHZvaWQgc2VuZEJ1ZmZlcihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIHNlbmRCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiAKICAgICB2b2lkIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogICAgIHZvaWQg
aW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuY3BwCmluZGV4IGJjMmMzMzdlNGVlZTAxYWY4M2UxMzY3MjMxN2E5YTllYWJj
N2M2ZjguLmYwZWZkMDRiYjJlMThmNmYzY2JjMTYzZmFmMjNkYTA0NjZiZWU1NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAg
dm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgTmVnb3RpYXRlZExlZ2FjeVQKICAgICBkaWRGaW5pc2goeyB9LCByZXNwb25zZSk7CiB9
CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JikKIHsKICAgICBQSU5HX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIpOwogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmlu
ZGV4IGU3ODA4ZDhlNjU1ODJmNzkzODg4MjhkNTE3NThjYjE5M2NmNTVmYzcuLmIyMjVjNDdiOTRh
ZmEwYjQ0ZWRjMjY3MGRmYzU4YWQ3YWZjOTE0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRo
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90
YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAg
ICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IDE3ZDQ3OTA3YTNmNmVlNTJiZTY1MDFkMWRh
YjBjYTYwNzUxZDZiMGIuLmFhYWUyYmZiZGY4M2EzOWFjZWMwNjNmZWIyNDQ2MTZkYzg0OGVkYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3Bw
CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNr
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCmluZGV4IDg1ODA4ZTEyMWI2OGNh
OGI3M2UyNTE4ZDE5M2FiMzk1ODFlYWQxZTcuLjhjNmIwZGVlZDY2YzUxMDE5YmU4OTg0ZWQ1Yjg3
ZTBjMWQ3OTBmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJl
Y29ubmVjdFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRh
KHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5
dGVzVG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVk
aXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZh
aWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJEb3dubG9hZFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCmluZGV4IDI1ZDRlMzdmOTQ1
NGJlZTMyZjA0ZDhjYzhjNDcxZDVkM2Y3ZWQ4MmIuLjhjOGRjMzZiMWU1MzkzOGY4MWViNGFiYWFm
ZjAxOTBmMmI1NGVkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2Fk
VGFzay5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNs
dWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVk
ZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgpAQCAtMTczLDcgKzE3NCw3IEBAIHZvaWQg
U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6c3RhcnQoKQogICAgIGRvd25sb2FkUHRyLT5kaWRD
cmVhdGVEZXN0aW5hdGlvbihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKIH0KIAotdm9pZCBT
ZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VX
b3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
Q29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlz
TWFpblJ1bkxvb3AoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFz
ay5oCmluZGV4IGFiNTllYWU1MjY2NTMwNjIxMmEyOGU5MzIzYTJiOGI0ZmZlMGM3OGYuLmI4OWFi
M2ViZDc2MmY2ODEyYTVlOTdiZmY2OTBiYTkwZjAyNTdmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRU
YXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaApAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Niw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAg
U2VydmljZVdvcmtlckRvd25sb2FkVGFzayhOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFz
a0NsaWVudCYsIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIERvd25sb2FkSUQpOwogCiAgICAgLy8gSVBDIE1lc3NhZ2UKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
JiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURh
dGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7
CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckRvd25sb2FkVGFzay5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluCmluZGV4
IDFkM2JmYjdjYzMxMDk3OTljYzgwMDFiYmE3MWQ4OWMwZjZmMmQ5MmYuLjUwZDJiNDJhNzFiMGVk
YWI3OWZiY2U5ZGRiOWYxOTk4MmRiNTM1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAK
IG1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2sgTm90UmVmQ291bnRlZCB7CiAg
ICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQotICAgIERpZFJlY2VpdmVE
YXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWRE
YXRhTGVuZ3RoKQorICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRh
LCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZFJlY2VpdmVGb3JtRGF0YShJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgRGlkRmluaXNoKCkKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA0ZTc5MTliM2RkYzAyYWUxNGQwZWQ5
Njg0YjhjNjhiYjZmMjhhNDM0Li4xYjczOWJmMTk4NDBiMGY1OGMwODFjNmU5OGY4Y2NlMTZhMzRh
ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0zNiw3
ICszNiw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKQEAgLTIyNSwxMyArMjI1LDEzIEBA
IHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6cHJvY2Vzc1Jlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgYm9vbCBuCiAgICAgICAgIG1fbG9hZGVyLnNldFJlc3BvbnNlKFdU
Rk1vdmUocmVzcG9uc2UpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxl
bmd0aCkKIHsKICAgICBpZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VS
VCghbV90aW1lb3V0VGltZXIgfHwgIW1fdGltZW91dFRpbWVyLT5pc0FjdGl2ZSgpKTsKLSAgICBz
ZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSB7
IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0pOworICAgIC8vIHNlbmRUb0NsaWVudChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhIHsgZGF0YSwgZW5jb2RlZERhdGFM
ZW5ndGggfSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZUZv
cm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmIGZvcm1EYXRhKQpAQCAtNDAxLDcg
KzQwMSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6bG9hZEJvZHlGcm9tUHJlbG9h
ZGVyKCkKICAgICAgICAgICAgIGRpZEZpbmlzaFdpdGhNZXRyaWNzKG1fcHJlbG9hZGVyLT5uZXR3
b3JrTG9hZE1ldHJpY3MoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlIHsgY2h1bmstPmRhdGEoKSwgY2h1
bmstPnNpemUoKSB9LCBsZW5ndGgpOworICAgICAgICBkaWRSZWNlaXZlRGF0YShSZWYgeyBjb25z
dF9jYXN0PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImPigqY2h1bmspIH0sIGxlbmd0
aCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmlu
ZGV4IGMzNDU4MDI2N2ZiMzI2OWU2ZGNiZGNlZmMzNGQwNjgyYzZhMDg4NmMuLjUyMjVlNTQ1OTk5
NTFkOGY4MWM3MGFmODJlYmJhMjY4OWUzNTAwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENv
bm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFz
cyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Myw3ICs5
NCw3IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBTaG91bGRTZXRTb3VyY2UgOiBib29sIHsg
Tm8sIFllcyB9OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZpbmlzaFdpdGhNZXRy
aWNzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2subWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgppbmRleCAxOGU2MjlmMGQx
NDZlZDJkNDI5ZGIxYmEyODcwMWU4M2ZiOTZlNjJmLi43ZGI1M2U5YmQwMzgwNDU0NzNhMjVhZjM3
ZDQ3YzE5NTc5NWUyMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5tZXNzYWdlcy5pbgpAQCAtMjcsNyArMjcsNyBAQCBtZXNzYWdlcyAtPiBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrIE5vdFJlZkNvdW50ZWQgewogICAgIERpZEZhaWwoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBlcnJvcikKICAgICBEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZFJl
Y2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKQogICAgIERpZFJlY2VpdmVGb3JtRGF0YShJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIGRh
dGEpCiAgICAgRGlkRmluaXNoKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4IDVkOWJkMzMzMzkyMTFjYTFjZDQ0N2I4
NzkyZjU0NjFlYTg3ZWRkZjQuLmU1NjU0Y2MzMTM5YjQ5ZDYxYTk4NTEzY2QwMTZiZWNmNzM5YmJj
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyLmNwcApAQCAtMTc1LDEwICsxNzUsMTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMK
ICAgICAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAg
IGlmIChtX2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9ib2R5
Q2FsbGJhY2soUmVmUHRyIHsgJmJ1ZmZlciB9LCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsK
IH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5kZXgg
NjdhYmM1NWM2MGZmMjRlMzlkZDA0ZWNjNTAyMWI2MDVlZThiZWJiMS4uNmVkYjU2MThkY2M0N2E2
MWFkMDc1MjM3ODU0OTlmZWRlMDg0N2MyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
CiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9p
ZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0g
RnVuY3Rpb248dm9pZChSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKICAgICB2b2lkIHdhaXRGb3JC
b2R5KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQpAQCAtNzEsNyArNzEsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBib29sIHNob3Vs
ZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA3YTI2MjIxOWRlNzhi
MjM1ZDEyNWE5MmI2ZTIzNmQzMzI2MmY3YTI3Li5kOWQ3NDc1MjUzMmYxODllYjFiZTJjMDNkN2Uy
OWU4NTllODk2ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9yIFNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
bwogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0Vt
cHR5KCkpCkBAIC0xODYsOCArMTg2LDExIEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAg
ICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvamF2
YXNjcmlwdCJfcywgIlVURi04Iik7CiAgICAgfQogCi0gICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZl
ci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKKyAgICBpZiAoIWJ1ZmZlci5p
c0VtcHR5KCkpIHsKKyAgICAgICAgYnVmZmVyLmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdt
ZW50KSB7CisgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoc2Vn
bWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAog
dm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAppbmRleCA0NGZjMDY4NWZhMGZlZGM4NzQyMTkxNmU5
MTNhNjc0YjFjMGZkYmVhLi43ZTgxOGYzNDEzZGEyOWY4NjFlMTAwMzk5MWU4ZDUzODkyMzQ2ZWUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApA
QCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9y
Q3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZp
bmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4
IDQxZDgyMzUwMjQ3NDdiNmZjNGEzYWM1NDhlMTMzNGVkNmNiNWVmN2EuLjgxNGViMzIwZDRlNzQ4
YTI5YWUwOTEzNWFmYzFkYTVmMzc1MTVlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAKQEAgLTEyMCwxNSArMTIwLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFNwZWN1
bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTcGVjdWxhdGl2
ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NF
UlQoIW1fY2FjaGVFbnRyeSk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewog
ICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0
YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEw
MjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBi
dWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLnNpemUoKSA8PSBtYXhpbXVtQ2Fj
aGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQo
YnVmZmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS5yZXNldCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IDFi
ODQzZGI3ZWMyNzBkYjlkYWI5ZThhMjVmMmE0OGE4ZWNhZTJhOGEuLjlhZGNhNjA1ZTcyODBiYjdi
MzRjZTc0NGQ4Nzg4YmJiNDQ4OTI0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQg
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmlu
ZGV4IDQxNjY4YTViMWNkNzM4Njk2N2I4ZmQ5NzNlOTY3MzJlY2E5MDdlZGMuLjA3NzJhZjFhODZk
MjI0MTdiZjExZjE2YmQ2YjdiNTgwZmU1N2E3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTM4
LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU011dGFibGVVUkxSZXF1ZXN0OwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRMUyhjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZENvbXBs
ZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRyYW5zZmVy
U2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxvYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
CmluZGV4IDQ3NzFmZGU5MjBkNmI5OGU4M2ZjMjlkZDNhYWY5N2EwYTZkOWE4ODAuLjY0OWI1Y2E3
OGM2ODc1ZWNkZTBkM2Q0MzZmOTU5MGRiNTE3OWQwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpA
QCAtNDQzLDEyICs0NDMsMTIgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkQ29tcGxl
dGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXIKICAgICAgICAgbV9j
bGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwog
fQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQog
ewotICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZl
ZCAlemQgYnl0ZXMiLCBkYXRhLT5zaXplKCkpOworICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2su
Z2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZlZCAlemQgYnl0ZXMiLCBkYXRhLnNpemUoKSk7CiAK
ICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZN
b3ZlKGRhdGEpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEpOwogfQog
CiB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0
ZWRMZWdhY3lUTFMsIFdlYktpdDo6UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oCmluZGV4IDE3ZjA4YzI4ZWExMjViNTUwOTkzZWVkMjRkNTk2M2I4NTEwYTExNDEuLjg3MzAz
YzhkMTFmZmNhM2Y1NmZmZDE2YTFmOGU4ZjgzMGVmMmRjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC01Myw2ICs1NCw4IEBAIHB1
YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1
cm4gbV9idWZmZXI7IH0KICAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAorICAgIC8vIFRPRE8gOiBTaGFy
ZWRCdWZmZXJDb3B5IHNob3VsZCBjb250YWluIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQg
dGhvc2Ugc2hvdWxkIGdvIGF3YXkuCisgICAgLy8gQWxsb3dzIHRvIG5vdCB1bmVjZXNzYXJpbHkg
ZmxhdHRlbiB0aGUgU2hhcmVkQnVmZmVyIGJlZm9yZSBzZW5kaW5nIGl0IG92ZXIgSVBDLgogICAg
IGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
Rm9ybWF0UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKaW5kZXggOWNkZWQ5NjkzNTE1Y2JkYjkyNWY1OTU0
YTE2ZjRiYWYwNjdhMzE2Mi4uNmMxOWJjOWJhYjY0MTAzMzMwMDczYjQxYzVhZTFkOGVkMDFjM2I3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVk
aWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCkBAIC0xODUsOSArMTg1LDkgQEAg
dm9pZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUGFyc2VUcmFja3MoU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudDo6SW5pdGlhbGl6YXRpb24KICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAK
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYXJzZVRyYWNrc0xvY2sgfTsKLSAgICBBU1NFUlQoIW1f
cGFyc2VUcmFja3NTdGF0dXMpOwotICAgIEFTU0VSVChtX2R1cmF0aW9uLmlzSW52YWxpZCgpKTsK
LSAgICBBU1NFUlQobV90cmFja1JlYWRlcnMuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fcGFy
c2VUcmFja3NTdGF0dXMgfHwgKG1faW5pdCAmJiBlcnJvckNvZGUpKTsKKyAgICBBU1NFUlQobV9k
dXJhdGlvbi5pc0ludmFsaWQoKSB8fCAobV9pbml0ICYmIGVycm9yQ29kZSkpOworICAgIEFTU0VS
VChtX3RyYWNrUmVhZGVycy5pc0VtcHR5KCkgfHwgKG1faW5pdCAmJiBlcnJvckNvZGUpKTsKIAog
ICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAgaWYgKGVycm9y
Q29kZSkKQEAgLTIyMSw2ICsyMjEsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJz
ZVRyYWNrcyhTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgogICAgIH0K
IAogICAgIG1fcGFyc2VUcmFja3NDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAgbV9pbml0ID0g
dHJ1ZTsKIH0KIAogdm9pZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJvdmlkZU1lZGlhRGF0YShS
ZWY8TWVkaWFTYW1wbGU+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0
cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oCmluZGV4IDM3ZTRhZDQyNzZiMTJhZDUx
NDNkYzIyOGNkZTk0NzYzODdlNWM4ODguLjY1MDkzZTllNDZiNDBiNWEzOTc2ZmRlZjI5ZTYxM2M2
NDUxZjMxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oCkBAIC04Nyw2ICs4Nyw3IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZjxNZWRpYVRyYWNrUmVhZGVyPj4gbV90cmFja1JlYWRl
cnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3BhcnNlVHJhY2tzTG9jayk7CiAgICAgUmVmUHRyPGNv
bnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwor
ICAgIGJvb2wgbV9pbml0IHsgZmFsc2UgfTsKIH07CiAKIGNvbnN0ZXhwciBNZWRpYUZvcm1hdFJl
YWRlcjo6V3JhcHBlckNsYXNzIE1lZGlhRm9ybWF0UmVhZGVyOjp3cmFwcGVyQ2xhc3MoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBlMTI2NGNl
MjFiYTU3ZjJhNDI3NDhlMzNhMWRhZDg4YTBlMjU4YmMyLi5kNzY3ZmMwNmIzNmYxNTZmZjMxYzM4
M2U2NDNkNDM0NGMyMTdhYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBF
CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKLWF1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KSAtPiBFeGNlcHRpb25UeXBlCithdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTg3LDExICsxODcsMTEgQEAgYXV0byBXZWJV
UkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpIC0+IEUKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMo
KSkgewotICAgICAgICBtX3N5bmNEYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAg
ICBtX3N5bmNEYXRhLmFwcGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlw
ZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZp
ZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIuZ2V0KCkpLCBtX3dlYlBhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVj
ZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2Fk
ZXJJRCwgYnVmZmVyKSwgbV93ZWJQYWdlSUQpOwogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpO
b25lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5k
ZXggZjZmZjQ2ZWVhNWYyOTBiN2I3ZTNmZTU5MjFkZjlmMTk0YmFjZDExNy4uYzMyMzA2OWIxY2Mw
MzFmMDI1YjIyYzg1OWEzNTQxODhmZGQyMzcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0
aW9uVHlwZSB3aWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsICBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRQZXJmb3JtUmVkaXJl
Y3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5
cGUgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgRXhj
ZXB0aW9uVHlwZSBkaWRDb21wbGV0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAK
ICAgICB2b2lkIHN0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAppbmRleCBiNTEz
YTI2ODA4ZWFhMThlMzdmNGZkZjA0YTIzZDI5NjBiMjczYjJjLi45MjM0YjVjNjUzZjkxZWJhOTEw
ZmJkZjliZTFlMjJhMDJjMTFjNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCkBA
IC03MiwyMCArNzIsMTcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFTZW50
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmUKICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRhU2VudCht
X2lkLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCksIDApOwogfQogCi12b2lkIFJlbW90
ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFJlbW90ZU1l
ZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8g
c2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShsZW5ndGgpOworICAgIGF1dG8g
c2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGJ1ZmZlcik7CiAgICAgaWYg
KCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2hhcmVkTWVtb3J5
UHRyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKTsKLSAgICBtZW1j
cHkoc2hhcmVkTWVtb3J5UHRyLCBkYXRhLCBsZW5ndGgpOwotCiAgICAgU2hhcmVkTWVtb3J5OjpI
YW5kbGUgaGFuZGxlOwogICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgLy8gVGFrZSBvd25lcnNoaXAg
b2Ygc2hhcmVkIG1lbW9yeSBhbmQgbWFyayBpdCBhcyBtZWRpYS1yZWxhdGVkIG1lbW9yeS4KICAg
ICBoYW5kbGUudGFrZU93bmVyc2hpcE9mTWVtb3J5KE1lbW9yeUxlZGdlcjo6TWVkaWEpOwotICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6
OkRhdGFSZWNlaXZlZChtX2lkLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFu
ZGxlKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCkgfSksIDApOworICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNl
aXZlZChtX2lkLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVm
ZmVyLnNpemUoKSB9KSwgMCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5Ojph
Y2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJv
eHkuaAppbmRleCA0N2VhODY2NzFiMTNkMTM5NWMzZGFkOWJkYTc5YWJmNjE2Y2JhMTc5Li45NDk0
NjQ1MjJjMjYzZTZhNWU4MDczZjc0ZTlkMjQzNGJhYTkzOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZVByb3h5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2b2lkIGRhdGFTZW50
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5z
aWduZWQgbG9uZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2
b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsK
ICAgICB2b2lkIGxvYWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRl
eCAzMTBmY2E3ODc1YzMyYzNjZDc0NzhkYjY0ZjU5YWMyY2Y1MDE2MzkyLi5lYzI1OTNiMDNlNjM2
MmE3MmE0MzQ3ZDQzZGY2YzU3ZDU1ODc4NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC0x
ODksMTYgKzE5MCwxNSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIG1fY29yZUxvYWRl
ci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewog
ICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YSBvZiBzaXplICVsdSBmb3IgJyVzJyIsIGRhdGEuc2l6ZSgpLCBtX2NvcmVMb2FkZXIt
PnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxk
IG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAg
ICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2Nv
cmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgbV9pbnRl
cmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CisgICAgICAgIG1faW50ZXJjZXB0Q29udHJv
bGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpLCBlbmNvZGVkRGF0YUxl
bmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAg
ICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkg
fSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKFdU
Rk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTIwNyw3ICsyMDcsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3Qg
ZQogICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6
IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEiKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gZGF0
YS5zaXplKCk7CiAKLSAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAg
IGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIoKSA/IFJlZiB7ICpkYXRhLmJ1ZmZlcigpIH0gOiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEo
YnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTI5NSw3ICsyOTYsNyBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3Vy
Y2U6OkhhbmRsZSYgaGFuZAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVy
bCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZToiKTsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1
ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIHNlbnQgZnJvbSB0aGUgbmV0
d29yayBwcm9jZXNzLiIpOwpAQCAtMzEyLDcgKzMxMyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBo
YW5kCiAKICAgICAvLyBPbmx5IHNlbmQgZGF0YSB0byB0aGUgZGlkUmVjZWl2ZURhdGEgY2FsbGJh
Y2sgaWYgaXQgZXhpc3RzLgogICAgIGlmICh1bnNpZ25lZCBidWZmZXJTaXplID0gYnVmZmVyLT5z
aXplKCkpCi0gICAgICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIucmVs
ZWFzZU5vbk51bGwoKSwgYnVmZmVyU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAg
ICAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIucmVsZWFzZU5vbk51bGwo
KSwgYnVmZmVyU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKIAogICAgIGlmICghbV9j
b3JlTG9hZGVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhMjJlNjJmMjhiNWZhNGNm
YzkxYWE1ZTVjZTgyY2EyN2FlMjZhZDUzLi5hYzU0MjJmYzA2NzEwYmQwZTA4N2UwZjQ0MDllZDk0
MDE3YzBjZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogbmFtZXNwYWNlIElQQyB7
CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgwLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwog
ICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5
dGVzVG9CZVNlbnQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMu
aW4KaW5kZXggMDJhMTRmNTlhMzA0NzQ0YzJkMTgzZWE3OWU5OWViYWViNGNmYmJhMi4uZGFhMjRk
MjdjNzFhODNjZjdjMGYxNjhkYTI2YTQ5YjQ4NzY5MjYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVz
c2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIg
TGVnYWN5UmVjZWl2ZXIgewogICAgIFdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlKQogICAgIERpZFNlbmREYXRhKHVp
bnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KQogICAgIERpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBib29sIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQotICAgIERpZFJlY2VpdmVEYXRh
KElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKQorICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBp
bnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZEZpbmlzaFJlc291cmNlTG9hZChXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKQogICAgIERpZEZhaWxS
ZXNvdXJjZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKICAgICBEaWRGYWlsU2Vy
dmljZVdvcmtlckxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA4ZDJjNWYz
ZTI1Y2ExYTIzNzhlNWUzMDA1ZDc1NDkyYmVhZjBiMWVhLi4yYjdlNGQyYzIwZmRkMTk5ODgyNzJk
YThiZmNjNWE2MTg2YzZkM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC02NSw2ICs2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBFbGVtZW50Owogc3RydWN0IFBsdWdpbklu
Zm87CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTc2LDEx
ICsxNzcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHN0
cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0
VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsg
fQogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxh
c3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVh
ZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBz
dHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0
ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAg
IHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgZmluYWw7CiAg
ICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxl
ZCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9k
aWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5n
JiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2
b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlk
RmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29s
IHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdl
Yk1vdXNlRXZlbnQmKSBmaW5hbDsKQEAgLTM2Miw3ICszNjMsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90Kiwg
aW50KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwogICAgICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQppbmRleCBiNGViMTRmZjU3ZDkyNWJmNzBkOGE1YWRkMGViNTdhNzA5MTM4NWViLi5h
MzAwMWQyZWFjZTY2Y2QwMzc4ZWIzYzQyYzA0NDY4MDBkMGUxODE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTk0LDYgKzk0
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsQW5pbWF0b3IuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2Nyb2xsYmFyVGhlbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1doZWVsRXZlbnRUZXN0
TW9uaXRvci5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KQEAgLTEx
OTEsNyArMTE5Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0CiAgICAgfQogfQogCi12b2lk
IFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgY291bnQpCit2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKCFtX3BkZlBsdWdpbikKICAgICAgICAgcmV0
dXJuOwpAQCAtMTIwMCw3ICsxMjAxLDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVh
bUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW0KICAgICBp
ZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlcXVlc3QtPmFkZERhdGEoZGF0
YSwgY291bnQpOworICAgIHJlcXVlc3QtPmFkZERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KTsKIH0KIAogdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlk
RmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikKQEAgLTE3MTgsMTUgKzE3MTksMTUgQEAgdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiwgdWludDMyX3QKICAg
ICAgICAgbV9pc1Bvc3RTY3JpcHQgPSB0cnVlOwogfQogCi12b2lkIFBERlBsdWdpbjo6c3RyZWFt
RGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQordm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5V
U0VEKHN0cmVhbUlELCBzdHJlYW1JRCA9PSBwZGZEb2N1bWVudFJlcXVlc3RJRCk7CiAKICAgICBp
ZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxl
KDAsIDApKTsKIAotICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnl0ZXMsIGxl
bmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKKyAgICBDRkRhdGFBcHBlbmRC
eXRlcyhtX2RhdGEuZ2V0KCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1f
c3RyZWFtZWRCeXRlcyArPSBidWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6c3Ry
ZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTE3NjMsMTQgKzE3NjQs
MTQgQEAgdm9pZCBQREZQbHVnaW46OmVuc3VyZURhdGFCdWZmZXJMZW5ndGgodWludDY0X3QgdGFy
Z2V0TGVuZ3RoKQogICAgICAgICBDRkRhdGFJbmNyZWFzZUxlbmd0aChtX2RhdGEuZ2V0KCksIHRh
cmdldExlbmd0aCAtIGN1cnJlbnRMZW5ndGgpOwogfQogCi12b2lkIFBERlBsdWdpbjo6bWFudWFs
U3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2
b2lkIFBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIG1fZGF0YSA9IGFkb3B0
Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKLSAgICBlbnN1cmVEYXRhQnVmZmVyTGVu
Z3RoKG1fc3RyZWFtZWRCeXRlcyArIGxlbmd0aCk7Ci0gICAgbWVtY3B5KENGRGF0YUdldE11dGFi
bGVCeXRlUHRyKG1fZGF0YS5nZXQoKSkgKyBtX3N0cmVhbWVkQnl0ZXMsIGJ5dGVzLCBsZW5ndGgp
OwotICAgIG1fc3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CisgICAgZW5zdXJlRGF0YUJ1ZmZlckxl
bmd0aChtX3N0cmVhbWVkQnl0ZXMgKyBidWZmZXIuc2l6ZSgpKTsKKyAgICBtZW1jcHkoQ0ZEYXRh
R2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdldCgpKSArIG1fc3RyZWFtZWRCeXRlcywgYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1ZmZlci5z
aXplKCk7CiAKICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQogICAgIC8vIEtlZXAgb3Vy
IHJhbmdlcy1sb29rdXAtdGFibGUgY29tcGFjdCBieSBjb250aW51b3VzbHkgdXBkYXRpbmcgaXRz
IGZpcnN0IHJhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmlu
ZGV4IDFkODQ0ODA1ZjRjMTBlOTNmZWRjYWJkZWVjMjFkZDM1ZGRmODgyMDIuLmU0ZDYyZjRiZWE5
YmZjMmZhODBlZjRkNmU5MGM1Y2NmMDY3OTRmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5oCkBAIC01NCwxMiArNTQsMTMgQEAgY2xhc3MgQWZmaW5lVHJhbnNm
b3JtOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owog
Y2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNj
cm9sbGJhcjsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYwLDcgKzE2MSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RN
b2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVy
cywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMg
dGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVj
ZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
ID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gaGFzIGZpbmlz
aGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWlu
dDY0X3Qgc3RyZWFtSUQpID0gMDsKQEAgLTE3Myw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9k
aWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMs
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRo
ZSBwbHVnLWluIHRoYXQgdGhlIG1hbnVhbCBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2
aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0
ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogCiAgICAgLy8gVGVs
bHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2
aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNTM0ZGE1
MmQ0N2Q2Mjg1MGUyMDVmZjllOTljMzBiMzdkM2JjYmExMi4uMDM0NGY0YmUyM2E0Mzc2NzE5Nzc4
OTk5N2Q3NjM3YTIwMzFiN2VhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIC8v
IE5ldHNjYXBlUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogCkBAIC0yMzUsOSAr
MjM1LDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFIKICAgICBtX3BsdWdpblZpZXctPm1fcGx1
Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UobV9zdHJlYW1JRCwgcmVzcG9uc2VVUkwsIHN0
cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRl
cnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6
OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpk
aWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewotICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJl
Y2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ5dGVzLCBsZW5ndGgpOworICAgIG1fcGx1Z2luVmlldy0+
bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ1ZmZlcik7CiB9CiAK
IHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIApAQCAtMzc0LDcgKzM3NCw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGVNUyhy
ZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgp
KTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWRE
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBUaGUg
cGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxlZCB0byBpbml0aWFsaXplLgogICAg
IGlmICghbV9wbHVnaW4pCkBAIC0zODIsMTEgKzM4MiwxMSBAQCB2b2lkIFBsdWdpblZpZXc6Om1h
bnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkK
IAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0
cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAg
ICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChieXRlcywgbGVuZ3RoKTsKKyAgICAgICAg
bV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGJ5dGVzLCBsZW5n
dGgpOworICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShidWZmZXIpOwog
fQogCiB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCkKQEAgLTEx
NzEsOSArMTE3MSw5IEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkK
IAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkg
ewotICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCk7Ci0gICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKLSAgICAgICAgICAg
IG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVu
dC5zZWdtZW50LT5zaXplKCkpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEudGFrZSgpLT5m
b3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAg
ICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKKyAgICAgICAgfSk7CiAgICAg
fQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZp
bmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
CmluZGV4IGY2NjMxMmE4MGFjZDFlMDM1MzEwZGZhYTNhNWYzYTE3YjcyYWFlNTUuLjI1NjE1Y2Iz
MGYyMjY0NjM5MjQ0NDg4ZjJiZDdjNDEyMjc5MDc5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCgpIGNvbnN0IHsgcmV0dXJuICFtX3BsdWdpbiB8fCBt
X3BsdWdpbi0+aXNCZWluZ0Rlc3Ryb3llZCgpOyB9CiAKICAgICB2b2lkIG1hbnVhbExvYWREaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZv
aWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVu
Z3RoKTsKKyAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCk7CiAg
ICAgdm9pZCBtYW51YWxMb2FkRGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZWU0MGZiOTU4
NWU3OWQ4NmIzY2ZkMmY1NzllZDQ2ZTYxYjllYzYzZS4uMzE0ODJlYjNiMzY4ZDc4YTYxYTdlYzFk
MjRjNTk4MTBiYzkxZWQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVS
ZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0
aW9uKQogICAgICAgICByZXR1cm47CkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4KICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZm
ZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCiAgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKLSAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVp
bGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBz
dGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKGJ1ZmZl
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV9pc0Rvd25sb2FkKQotICAg
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pihi
dWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVE
YXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2Zl
dGNoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLmdl
dCgpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50
aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90
PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJl
ZjxGb3JtRGF0YT4mJiBmb3JtRGF0YSkKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJl
ZjxGb3JtRGF0YT4mCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJs
b2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fY29ubmVj
dGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faXNEb3dubG9hZCkKLSAgICAgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpE
aWRSZWNlaXZlRGF0YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXpl
KSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIs
IHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVy
KTsKICAgICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IGRhdGEsIHNpemUgfSwgc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2Vp
dmVEYXRhIHsgYnVmZmVyICwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwg
bV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
KCkKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAg
ICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgewotICAgICAg
ICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEo
YnVmZmVyLmNvcHkoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlz
aCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+
JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGU5
ODdlMTlhYzhiNzM4ODcxYWFkODJiNGIzODU2Mjk2OGEyYjZjOWMuLjc3MmFlZTZmOTdhMDlhMDY2
YWMxMTAyZDRjZGUyNzAxNTJiY2Q4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFu
ZEZpbmlzaChSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFp
bChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5p
c2goKSBmaW5hbDsKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYW51
cCgpOwogICAgIAotICAgIHZvaWQgZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QpOworICAgIHZvaWQgZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBTaGFyZWRC
dWZmZXImKTsKICAgICB2b2lkIGRpZEZpbmlzaEJsb2JMb2FkaW5nKCk7CiAKICAgICBzdHJ1Y3Qg
QmxvYkxvYWRlciBmaW5hbCA6IFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50IHsKQEAgLTY5LDcg
KzY5LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBGZXRjaExvYWRlckNsaWVudCBBUEkKICAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IGNsaWVudC0+ZGlkUmVjZWl2ZUJsb2JDaHVu
ayhkYXRhLCBzaXplKTsgfQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkgZmluYWwgeyBjbGllbnQtPmRpZFJlY2VpdmVCbG9iQ2h1bmsoZGF0YSk7
IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yKSBmaW5hbCB7IGNsaWVudC0+ZGlkRmFpbChlcnJvcik7IH0KICAgICAgICAgdm9pZCBkaWRT
dWNjZWVkKCkgZmluYWwgeyBjbGllbnQtPmRpZEZpbmlzaEJsb2JMb2FkaW5nKCk7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTRhMDgzY2EyMDdhOTA2M2NmODBiMWU3
ZTk2NzBhNDg3Y2Y0ZDM5OS4uZWQ0ZjVkZTlkNWU1NjE4ZDQzMjQ1NTA4MmY1ZGExODhhYmY5YmY0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTUyLDEwICsxMTUyLDEw
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkKICAgICB3ZWJQYWdlLT5kaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudChtX2ZyYW1lKTsKIH0K
IAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKCFtX3BsdWdpblZpZXcpCi0gICAgICAg
IGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOworICAgICAgICBsb2FkZXItPmNvbW1p
dERhdGEoZGF0YSk7CiAKICAgICAvLyBJZiB0aGUgZG9jdW1lbnQgaXMgYSBzdGFuZC1hbG9uZSBt
ZWRpYSBkb2N1bWVudCwgbm93IGlzIHRoZSByaWdodCB0aW1lIHRvIGNhbmNlbCB0aGUgV2ViS2l0
IGxvYWQuCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgYmUgc2hhcmVkIGFjcm9zcyBh
bGwgcG9ydHMuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzQ4NzYyPi4KQEAgLTExNzcsNyArMTE3Nyw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
bV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXcgPSB0cnVlOwogICAgIH0KLSAgICBtX3BsdWdp
blZpZXctPm1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgpOworICAgIG1fcGx1
Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGRhdGEpOwogfQogCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYmI1MjlkM2FlYzRlMmM3NWYxYTdkZTkx
YjEwYjU1ODJkNDUyMmI0Mi4uMWQzMGJjMzkzODNhZmZmMmNhOWMyODc1M2RkMmQ3ZWMyYjI2NDkx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAgICAg
dm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb21t
aXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkg
ZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwg
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExv
YWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHVw
ZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IGEyMDVlMDAxY2E3MTU4MjA5MTNhODFhZTRhODM2NTMwZjlhMGY2
NDguLjcyZTM1NTRjOGUwYWE2OTBhNmVjNTc4MDE3NmYxOWUwYjhkNzBkMjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFN0cgogCiBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojp+V2ViUHJldmll
d0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3ZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShtX3BhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZGMxNjdlNWI3YmMzYjAzZWYzOTMxZWFi
MzU2Yzc4Mjc5Mjk1MjllLi42NDliYzgzMTljMjc4NmYwMWQ2MTdjMTExOTlkYjBjNmMwNzdmYTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDYsNyArNDYs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViUHJldmlld0xvYWRlckNsaWVudChjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoKSBvdmVycmlkZTsKICAgICBib29s
IHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTQy
ZWRjNjIzYTRlNjUzYmIxODhhZWUwNTA2NDRhM2Y0YTAzMmU4OS4uZjg5ZmY3MmEwZDMxYmVjMTFl
ZjgwMjk3ZWZiYTkyYzJhN2JjNjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTcwNTcsMTIgKzcwNTcsMTIgQEAgdm9pZCBXZWJQYWdlOjp1
cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlm
aWVyIGhhbmQKICAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHRhc2tJZGVudGlm
aWVyLCByZXNwb25zZSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2Vp
dmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJl
Y2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0
IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSkKIHsKICAgICBhdXRvKiBoYW5kbGVyID0gbV9p
ZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuZ2V0KGhhbmRsZXJJZGVudGlmaWVy
KTsKICAgICBBU1NFUlQoaGFuZGxlcik7CiAKLSAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURh
dGEodGFza0lkZW50aWZpZXIsIGRhdGEuc2l6ZSgpLCBkYXRhLmRhdGEoKSk7CisgICAgaGFuZGxl
ci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLmJ1ZmZlcigpID8gKmRh
dGEuYnVmZmVyKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLmdldCgpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkQ29tcGxldGUoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50
aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmll
ciB0YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTk0YjViOWQ3ZmUzMmYyNGE4
NmRhYWFkNDQ4NDJiMGNkZDBhZWIyZi4uNDg4NjY3MDdjNDYxM2Q5YTdjZDM1MjE1ZGZjYTkyM2M2
OTc5YmViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTg0LDYgKzE4NCw3IEBAIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNs
YXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE4OTYsNyArMTg5Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrV2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJV
UkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGly
ZWN0aW9uKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0Rp
ZFJlY2VpdmVSZXNwb25zZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEo
V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRl
bnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAg
dm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwg
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlk
Q29tcGxldGUoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
TG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwogCiAgICAgdm9pZCBzZXRJc1Rha2luZ1NuYXBzaG90c0ZvckFwcGxpY2F0aW9uU3Vz
cGVuc2lvbihib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGIyNzIyOTQ3MWVhZTg2ZWU1OTgxOTgzZGQ1N2I1
ZTdhODI5MWNkNGIuLmJkYTVmNTBhZGQyM2E5Njc0MGU4OWQ3MzNkNzljMTg3ZjA1MmJlMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgpAQCAtNTY0LDcgKzU2NCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1h
bmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAg
VVJMU2NoZW1lVGFza1dpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcHJvcG9zZWRSZXF1ZXN0KSAtPiAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IGFjdHVhbFJlcXVlc3QpIEFzeW5jCiAgICAgVVJMU2NoZW1l
VGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVu
dGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCBwcm9wb3NlZFJlcXVlc3QpCiAgICAgVVJMU2NoZW1lVGFz
a0RpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVy
IGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFz
a0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCi0gICAgVVJM
U2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50
aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmll
ciB0YXNrSWRlbnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpCisg
ICAgVVJMU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxl
cklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRl
bnRpZmllciB0YXNrSWRlbnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEpCiAgICAg
VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50
aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmll
ciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKIAogICAgIFNl
dElzU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKaW5k
ZXggNmQ4ZDBjZjI3ODRlZDMwNTY2MjVjN2Y2ZTg0NmE5M2E3MTFjYmFjZC4uNjE2ZWRhMDhmMGI4
ZmNhYjJkNTdmYzQ3NTMyOTEwN2I4MTVjZDIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3Bw
CkBAIC05NiwxMyArOTYsMTMgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tE
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGUKICAgICB0YXNrLT5k
aWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIFdlYlVSTFNjaGVtZUhhbmRs
ZXJQcm94eTo6dGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRp
ZmllciB0YXNrSWRlbnRpZmllciwgc2l6ZV90IHNpemUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpCit2
b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIGF1dG8qIHRhc2sgPSBtX3Rhc2tzLmdldCh0YXNrSWRlbnRpZmll
cik7CiAgICAgaWYgKCF0YXNrKQogICAgICAgICByZXR1cm47CiAKLSAgICB0YXNrLT5kaWRSZWNl
aXZlRGF0YShzaXplLCBkYXRhKTsKKyAgICB0YXNrLT5kaWRSZWNlaXZlRGF0YShkYXRhKTsKIH0K
IAogdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRDb21wbGV0ZShXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaAppbmRleCA1OGJlY2MxN2I1ZDg1OTg3
NDk4ODRkMzAyNTE2ODljY2NjMTc2OTNmLi5hYjIwYmQ1NzNhYTRhZmMxNTgwNTkwZjI3MDQ2NjMw
MDY4Nzc0MGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCB0YXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
JiYpOwogICAgIHZvaWQgdGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2
b2lkIHRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IHNpemVfdCwgY29uc3QgdWludDhfdCogZGF0YSk7CisgICAgdm9pZCB0YXNrRGlkUmVjZWl2ZURh
dGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKTsKICAgICB2b2lkIHRhc2tEaWRDb21wbGV0ZShXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lk
IHRhc2tEaWRTdG9wTG9hZGluZyhXZWJVUkxTY2hlbWVUYXNrUHJveHkmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQ
cm94eS5jcHAKaW5kZXggMzYwNmJiZGM2NTIxNWRkY2E5MjYxM2E4MTA3ZGFiMWIxMWVjYjY1Ni4u
OWU3MmQ4NGM5N2RmNmQyOTcxNGE4M2M1MWFjMTc3NjNlNWZiNjUzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJv
eHkuY3BwCkBAIC0xNDAsMjEgKzE0MCwyMSBAQCB2b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAg
IH0pOwogfQogCi12b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEoc2l6
ZV90IHNpemUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpCit2b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94
eTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQogewog
ICAgIGlmICghaGFzTG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRp
bmdGb3JDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBXRUJVUkxTQ0hFTUVUQVNLUFJPWFlf
UkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBSZWNlaXZlZCBkYXRhIGR1cmluZyByZXNwb25z
ZSBwcm9jZXNzaW5nLCBxdWV1aW5nIGl0LiIpOwotICAgICAgICBxdWV1ZVRhc2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkYXRhVmVjdG9yID0gVmVjdG9yIHsgZGF0YSwg
c2l6ZSB9XSB7Ci0gICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShkYXRhVmVjdG9yLnNpemUoKSwg
ZGF0YVZlY3Rvci5kYXRhKCkpOworICAgICAgICBxdWV1ZVRhc2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBkYXRhID0gUmVmIHsgZGF0YSB9XSB7CisgICAgICAgICAgICBk
aWRSZWNlaXZlRGF0YShkYXRhKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgbV9jb3JlTG9hZGVyLT5k
aWRSZWNlaXZlRGF0YShkYXRhLCBzaXplLCAwLCBEYXRhUGF5bG9hZFR5cGU6OkRhdGFQYXlsb2Fk
Qnl0ZXMpOworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgMCwgRGF0YVBh
eWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKICAgICBwcm9jZXNzTmV4dFBlbmRpbmdUYXNr
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlVSTFNjaGVtZVRhc2tQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lVGFza1Byb3h5LmgKaW5kZXggNzU1MDg3OTQxODIwZmVlZmM1ZDAxMjcxNThj
MDY0Y2UyNThhMDgzNS4uZWQ5MWYzOGUzYWRkMTNiZTE5Y2IyMTc3ZWQ0NDhmZGQyZmE3OTU0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1l
VGFza1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJM
U2NoZW1lVGFza1Byb3h5LmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUGVyZm9ybVJlZGlyZWN0
aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYm
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShzaXplX3QsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggMGJhOTczNWZmMGQzYzc3OTQw
ZWZkNmRjNWZmNzdmNWFkYmE3M2Y3Ni4uMjc5NjA3ZDdkNDMzOTljNzkzMDUyNDhiNjM3MzMxNTg4
NTkyMjNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCkBAIC02OTMsNiArNjkzLDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gV2Vi
UHJvY2Vzczo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdAogCiB2b2lkIFdlYlBy
b2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMmIHNhbmRib3hQYXJhbWV0ZXJzKQogeworICAgIHJldHVybjsKICNpZiBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIC8vIE5lZWQgdG8gb3ZlcnJpZGUgdGhlIGRl
ZmF1bHQsIGJlY2F1c2Ugc2VydmljZSBoYXMgYSBkaWZmZXJlbnQgYnVuZGxlIElELgogICAgIGF1
dG8gd2ViS2l0QnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFw
cGxlLldlYktpdCJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9QaW5nSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1Bp
bmdIYW5kbGUuaAppbmRleCBhMjU1NjBhMTBjMjg4MmUxYWJkMTc4NDU2OTQ4NmVhMTNlZDg5NmQ0
Li4zMjg5YzIzNjI5YTBkYzMxZmMwYzE5OWVkZjEzMjk3YmVkNjFhMTliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCkBA
IC03Myw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgICAgIHBpbmdMb2FkQ29tcGxldGUoeyB9LCByZXNwb25zZSk7CiAgICAgfQotICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgp
OyB9CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRl
KCk7IH0KICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IHBpbmdMb2FkQ29t
cGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxl
dGUoZXJyb3IpOyB9CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZSopIGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDk1OWQ3NDhiNTZiZTEwNzZi
ZDk3Nzk5MjJjZDM1NmQyMWE2ODE3NGUuLjhkZjk5M2YyZDc3NWI2YzkzZDJlOGYwOTkwZjcyZjg1
ZjYxOGU1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNDgsMTAgKzQ4LDEyIEBA
IGNsYXNzIFNlc3Npb25JRDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ2FjaGVkRnJhbWU7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFz
cyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIH0KIAogY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJGcmFtZUxvYWRlckNs
aWVudD4gewpAQCAtMTUxLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVwbGFj
ZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFJlcGxhY2VNdWx0aXBh
cnRDb250ZW50KCkgZmluYWw7CiAKLSAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGNvbW1p
dHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciopIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpIGZpbmFsOwog
ICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggNDNlNjNmNDU2MzQ1ZWNmMWM5MjRlNWI3NzJhNmY1
NDE3M2E5MTQyYi4uODdhNWQ2NTdmN2I3MzNkMDdjNWRiNjAxZjY5ODFmOTA0OTc3MTM5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTk5MiwxMCArOTkyLDkgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogI2VuZGlmCiB9
CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3Zv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAg
IGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29w
eToodm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT10pOwotICAgIFtkYXRh
U291cmNlKGxvYWRlcikgX3JlY2VpdmVkRGF0YTpuc0RhdGEuZ2V0KCldOworICAgIFtkYXRhU291
cmNlKGxvYWRlcikgX3JlY2VpdmVkRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0K
IAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCkBAIC0yMDEyLDcgKzIwMTEsNyBAQCBSZWZQdHI8V2ViQ29y
ZTo6TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZVByZXZpZXdMbwogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBhdGg7CiAgICAg
ICAgIFJldGFpblB0cjxOU0ZpbGVIYW5kbGU+IG1fZmlsZUhhbmRsZTsKIAotICAgICAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAg
ICBhdXRvIGRhdGFBcnJheSA9IGJ1ZmZlci5jcmVhdGVOU0RhdGFBcnJheSgpOwogICAgICAgICAg
ICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gZGF0YUFycmF5LmdldCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMGUwNWIxOGQ2OTYzOTgyOGQ0MzNj
NDZkNzkyMWNmNzBkZTdkZjlkMS4uMmE4NzcwZGY4MGJiOWY3MGMxMGJiOTFmOTUyMGQxZTE5Yzg1
OWQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBA
IC05NzcsNyArOTc3LDcgQEAgLSAodm9pZClfY29tbWl0RGF0YTooTlNEYXRhICopZGF0YQogICAg
IGF1dG8qIGRvY3VtZW50ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBk
b2N1bWVudC0+c2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzKF9wcml2YXRlLT5zaG91bGRDcmVhdGVS
ZW5kZXJlcnMpOwogCi0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKS0+Y29tbWl0RGF0YSgoY29uc3QgdWludDhfdCopW2RhdGEgYnl0ZXNdLCBbZGF0YSBs
ZW5ndGhdKTsKKyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5jb21taXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpKTsKIH0K
IAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGZiMjU4M2ZlOTcyNjRj
NzNlZWIyM2ViYjRkMzk5MGIzYjg0YTA3ZjMuLjEyNzBlNTdkZDk1YjBkMDAwM2I1ZTU2NzdkNDc0
MmExMjU1MmQ4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTY0MSw5ICs2
NDEsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVu
dExvYWRlciopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0
dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7Ci0gICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgbG9hZGVyLT5j
b21taXREYXRhKGRhdGEpOwogCiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGEgc3RhbmQtYWxv
bmUgbWVkaWEgZG9jdW1lbnQsIG5vdyBpcyB0aGUgcmlnaHQgdGltZSB0byBjYW5jZWwgdGhlIFdl
YktpdCBsb2FkLgogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlZCBhY3Jv
c3MgYWxsIHBvcnRzLiA8aHR0cDovL3dlYmtpdC5vcmcvYi80ODc2Mj4uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCAwOTViMjUzNWE2ODc1NDdiZDc4ODQ2ZjkwNzZhZTZjN2QwMTYyOTQ4
Li43OTI2ZmQzNjcxODA5ZTgzODQ3YTQ4MDMxYThiOTBjNjM4ZmFmN2U0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0
YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWROYW1lID0gU3RyaW5nKCkpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBjb21taXR0
ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwg
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hl
ZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
d2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzRhM2FiMDUz
YWJhOTExNDgyNzA4NTc1NmU5NjQyNDdjNDQxZjZmMy4uMWNiZTE4ZjNlNzYyMjdhODVkMTU0YTll
NTdjNDRjOGNmZGJmZTRlMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgbWFrZSBTaGFyZWRCdWZmZXI6OmNvcHkoKSBy
ZXR1cm4gYSBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NjIyCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2
ODI5NTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTItMjMgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIFdUUjogaGFu
ZGxlIGhlYWRpbmcgbGV2ZWwgYXMgc3BlY2lhbCBjYXNlIGluIGludFZhbHVlIHdpdGggQVRTUEkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5j
cHAKaW5kZXggZjEyYjlmMDgzNjA1NTg5NGNkNjVhODIzZDVmZjZlMzRiOThhZDU5OC4uMDY2OWQw
N2M2NGY5ZGY1NDljM2U1MTAyZWQ2N2I2OWNjMjk1NDJmOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTMwMyw2ICszMDMs
MTUgQEAgVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogICAgIGNoZWNr
KGJ1aWxkZXIudGFrZSgpKTsKIH0KIAorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0
LCBjb3B5SXNDb250aWd1b3VzKQoreworICAgIEVYUEVDVF9UUlVFKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCktPmNvcHkoKS0+aXNDb250aWd1b3VzKCkpOworICAgIEVYUEVDVF9GQUxTRShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS0+Y29weSgpLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAg
Y29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsK
KyAgICBFWFBFQ1RfVFJVRShTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4o
c2ltcGxlVGV4dCkpLT5jb3B5KCktPmlzQ29udGlndW91cygpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVU
ZXh0KSktPmNvcHkoKS0+aXNDb250aWd1b3VzKCkpOworfQorCiAjaWYgRU5BQkxFKE1IVE1MKQog
Ly8gU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgdW5pdC10ZXN0cyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc2l6ZV90IE4gPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447999</attachid>
            <date>2021-12-27 06:12:31 -0800</date>
            <delta_ts>2021-12-27 17:39:00 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-232424-20211228011228.patch</filename>
            <type>text/plain</type>
            <size>287835</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3MDk2ZjA2YzcyZmVh
MmZjMWUwMzk0MDIyMzg5MWVlZGJmZGM4MC4uM2MwZTc2MGRkMzJhNWY4OWQ1M2E1NzIyYjg0YTA0
NTU1NjQ3N2ZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1MyBAQAorMjAyMS0xMi0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1
ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBtb2RpZnkgYWxsIGRpZFJlY2VpdmVEYXRhIG1ldGhv
ZCBzbyB0aGF0IHRoZXkgbm8gbG9uZ2VyIHVzZSB1aW50OF90L2ludAorICAgICAgICBhbmQgaW5z
dGVhZCB1c2UgU2hhcmVkQnVmZmVyLiBXZSBhbHNvIGRvIHRoZSBzYW1lIGZvciBhbnkgaW50ZXJt
ZWRpYXJpZXMKKyAgICAgICAgdXNlZCBieSB0aGUgdmFyaW91cyBkaWRSZWNlaXZlRGF0YSBpbXBs
ZW1lbnRhdGlvbnMuCisgICAgICAgIFRoaXMgd2lsbCBmYWNpbGl0YXRlIG1vdmluZyBuZXR3b3Jr
aW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLgorICAg
ICAgICBUaGlzIGFsc28gYWxsb3dzIHRvIHJlbW92ZSBzZXZlcmFsIG1lbW9yeSBhbGxvY2F0aW9u
cyBhbmQgY29waWVzLgorICAgICAgICBXZSBjYW4gbm93IGFsc28gY29uc2lkZXIgbW92aW5nIHRo
ZSB1bmRlcmx5aW5nIFNoYXJlZE1lbW9yeSBjcmVhdGVkIGluCisgICAgICAgIHRoZSBjb250ZW50
IHByb2Nlc3MgYWxsIHRoZSB3YXkgdG8gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4gQ292ZXJlZCBieSBhbGwgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpi
bG9iQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxl
bWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVNpbmsuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpt
YXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjphZGREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1p
dHRlZExvYWQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKToKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRh
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGRCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1
dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5SZXNv
dXJjZURhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZl
ckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50
OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJl
dmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lm
Qnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKC1bV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YTpsZW5ndGhS
ZWNlaXZlZDpdKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9h
ZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTIt
MjMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBTY2FsYWJs
ZUltYWdlRGVjb2RlciBzaG91bGQgYmUgdXNpbmcgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgRGF0
YVNlZ21lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzQ0MQorICAgICAgICByZGFyOi8vcHJvYmxlbS84NTg1NDIwNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERhdGFTZWdtZW50IHNob3VsZCBiZSBh
IFNoYXJlZEJ1ZmZlcidzIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIG5vdAorICAgICAgICBi
ZSB1c2VkIG91dHNpZGUgU2hhcmVkQnVmZmVyJ3MgY29kZS4KKyAgICAgICAgSGlzdG9yaWNhbGx5
LCB1c2luZyB0aGUgaW5uZXIgRGF0YVNlZ21lbnQgd2FzIHJlcXVpcmVkIGFzIGl0IHdhcyB0aHJl
YWQKKyAgICAgICAgc2FmZSB3aGlsZSBTaGFyZWRCdWZmZXIgd2Fzbid0OiBUaGlzIGlzIG5vIGxv
bmdlciB0aGUgY2FzZS4KKyAgICAgICAgU2hhcmVkQnVmZmVyIGFuZCBEYXRhU2VnbWVudCBhcmUg
c2VtYW50aWNhbGx5IHZlcnkgc2ltaWxhciwgc28gdGhpcyBpcworICAgICAgICBtb3N0bHkgYSBm
aW5kL3JlcGxhY2UgY2hhbmdlLgorICAgICAgICBGbGF0dGVuaW5nIHRoZSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIGlzIHN0aWxsIHJlcXVpcmVkIGFzIG1vc3QgZGVjb2RlcnMKKyAgICAgICAgcmVx
dWlyZSByZWFkaW5nIHRoZSByYXcgYnl0ZXMuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2Vy
dmFibGUgYmVoYXZpb3VyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNr
aW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpzZXRTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpJbWFnZUJhY2tpbmdTdG9y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJl
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6cmVhZFVpbnQxNik6CisgICAgICAgIChX
ZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6cmVhZFVpbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpC
TVBJbWFnZVJlYWRlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZVJlYWRlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHMjAwMEltYWdlRGVjb2Rlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlUmVhZGVyOjpkZWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDIxLTEyLTIy
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgbWFrZSBTaGFy
ZWRCdWZmZXI6OmNvcHkoKSByZXR1cm4gYSBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NjIyCisgICAgICAg
IHJkYXI6Ly9wcm9ibGVtLzg2ODI5NTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbWFrZSBTaGFyZWRCdWZmZXI6OmNvcHkoKSByZXR1cm4gYSBjb250
aWd1b3VzIFNoYXJlZEJ1ZmZlcgorCisgICAgICAgIEFQSSB0ZXN0cyBhZGRlZC4KKworICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKwogMjAyMS0xMi0yNiAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gVGVz
dCBhY2Nlc3NpYmlsaXR5L2FyaWEtaW5oZXJpdHMtcHJlc2VudGF0aW9uYWwuaHRtbCBpcyBmYWls
aW5nIHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2UyN2UxNGM2OWZkMjQ0YWU3YjI0NDVlM2U0OTg3
YzZmNzFiYjI4My4uYTA4M2U5YjQ5OTQ1MjM1MjIwYTA2ZTg4NDI1NWJhOGMwODhmNWVjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMDIgQEAKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFu
ZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRh
cjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpQcmVjb25u
ZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJl
Y29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZyb21QcmVsb2FkZXIp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNw
ZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRS
ZWFkZXI6OmRpZFBhcnNlVHJhY2tzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFSZWNlaXZlZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBs
dWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpTdHJlYW06
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9h
ZERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVkZWxpdmVy
TWFudWFsU3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRs
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6
dGFza0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZVRhc2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2tQ
cm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJV
UkxTY2hlbWVUYXNrUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRi
b3gpOgorCiAyMDIxLTEyLTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXBsYWNlIFdlYktpdC9Db2NvYUNvbG9yLmggd2l0aCBXZWJDb3JlL0NvbG9yQ29jb2Eu
aCwgbm90IGNvbmZ1c2luZyBhdCBhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggNTc2ODFiMjFh
NzM0MzllOTBiZjIxYmEyNDQ5NTgyNTk3ZTAxOTk4Mi4uYmIxYzViNTM2YzRmOTkxNWZiYWJkOWFj
MzAzN2JjNDQ4Yzc3NDZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3Rv
cnMgdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Bp
bmdIYW5kbGUuaDoKKwogMjAyMS0xMi0xNCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCBlZjk0OWRlNjA2ODk2Y2E5OTNlZGY4ZjM0ZDljMWIzMGE1YjY1
NGFiLi5kNTk1N2RkYjFmNGFmODhhNGI1ZmQ3MTMwZjEwNzE0OWFiNTA5YTJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTItMjIgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291
cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQK
KyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMb2FkZXJDbGllbnQpOgorICAgICAgICAq
IFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9jb21taXREYXRhOl0p
OgorCiAyMDIxLTEyLTIyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCBXZWJLaXQgQnVpbGQgaXNzdWVzIHdoZW4gdXNpbmcgc3lzdGVtIGNvbnRlbnQg
cGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcAppbmRleCBjMjMxZjIwN2RhMjVjZDJhMTU4NjBkMjhkYjNjZTE3ZTg1NzU3N2Q1Li5l
NjEzYWE1MDlmNzRjMGRlMGU2ZDM4MzUxOGU1MjZmNzNhYTU4ZWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMzIwLDEz
ICszMjAsMTMgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICB9CiB9CiAKLXZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXpl
KQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIGlmIChtX3NvdXJjZSkgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKKyAgICAgICAgbV9zb3VyY2UtPmVu
cXVldWUoYnVmZmVyLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBl
bmQoYnVmZmVyKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDg3MWQyYzA4NjMzMWE5ODI5NGExNjZh
NGI0MmUzMTg0ZTAzNzc3MmIuLmQ0NjUxYjIzZGE3MWNmOGY0YzhjOTk2NzFkMjI3ZWI1YWM4ZDJh
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQgRmV0Y2hCb2R5
Q29uc3VtZXIoVHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KIAotICAgIHZvaWQgYXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBT
aGFyZWRCdWZmZXImKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9i
dWZmZXI7IH0KICAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggYTYzMzEwOGI1NDc3ODM5M2ZjNTQ3
NTAwMzJhOWEyZTg2YWRlN2ZjYy4uNTM2NjgxNTViZGViYzFhZWYzOWY0ZDk5ZmI5ZGFkYzFlYmVm
N2EwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25l
ci5jcHAKQEAgLTI5OCwxMSArMjk4LDEwIEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2Fk
aW5nRmFpbGVkKCkKICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZldGNoQm9k
eU93bmVyOjpibG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lk
IEZldGNoQm9keU93bmVyOjpibG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
Ci0gICAgQVNTRVJUKGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsK
LSAgICBpZiAoIW1fcmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShkYXRhLCBzaXplKSkpCisgICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5l
bnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSkKICAgICAgICAgc3RvcCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKaW5k
ZXggNWNhN2UzOTZjNDIyNzAxOTM1NmIwODA2ZTRlZWRiZTk1ZTkyOGY0Yi4uODFmZDA2ZWNkZDZm
YzM4YzllODU5ODdjZWJkZmMxNmRkODZmM2M5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZl
dGNoTG9hZGVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUVycm9yLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTAwLDcgKzEwMSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAg
ICAvLyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50
OF90Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImKTsK
ICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0Zh
aWxlZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMyw3ICsxMTQsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZpbmFsIHsgb3duZXIu
YmxvYkNodW5rKGJ1ZmZlcik7IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWwgeyBvd25lci5i
bG9iTG9hZGluZ1N1Y2NlZWRlZCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5jcHAKaW5kZXggMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2
YjdhMjU0OC4uNGI0NWJmZDg3NTA0MDZmNmU3ZGE3MThmOTk4MTY5NDcxYTVlODQ1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTE0OCwxMyAr
MTQ4LDEzIEBAIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogdmFsdWUsIGludCBzaXplKQordm9pZCBGZXRjaExvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAgICAgaWYg
KCFtX2NvbnN1bWVyKSB7Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBz
aXplKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBtX2NvbnN1bWVyLT5hcHBlbmQodmFsdWUsIHNpemUpOworICAg
IG1fY29uc3VtZXItPmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA0NjEyZDBlMGUzYTdlZmUzMDYwMzk2YjBk
NzVhMmZhM2JjNGVkZGFkLi41ZWVhZWY4MmQxZGYzZWZjZWQyMTQwMDNkZjUxODg4NzAzNmY5Nzdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC01OCw3
ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVu
dCBBUEkuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgdXNlU3RyTGVuKSBmaW5hbDsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKaW5kZXggZmVkM2U1ZWFlNzFh
NTdjOTUyYWExNzFhZGNjYmRkOWJkMDQ1ZTc4OS4uMTA5ZTA4ZWNmN2E0N2U3YzAzN2UzMmRjYWFj
YWI4NmM4MWMxOGQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXJDbGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikg
eyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMGU3YjAwNWU4OWEzZDE3NDBi
MWNmOWFkZmY4YjRmMmYyZmM0M2M5OS4uZGNhMGUyMzgyZTMyZmMwMzcyODg3ZmQ0ODUyMTRhMTcz
MDFiMWJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwCkBAIC0zNjIsMTIgKzM2MiwxMiBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdQogICAg
ICAgICByZXNwb25zZUNhbGxiYWNrKG1fcmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNoUmVzcG9u
c2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQordm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9yZXNwb25zZS5tX3Jl
YWRhYmxlU3RyZWFtU291cmNlIHx8IG1fY29uc3VtZURhdGFDYWxsYmFjayk7CiAKICAgICBpZiAo
bV9jb25zdW1lRGF0YUNhbGxiYWNrKSB7Ci0gICAgICAgIFNwYW4gY2h1bmsgeyBkYXRhLCBzaXpl
IH07CisgICAgICAgIFNwYW4gY2h1bmsgeyBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpIH07
CiAgICAgICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAg
YXV0byYgc291cmNlID0gKm1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZTsKIAogICAg
IGlmICghc291cmNlLmlzUHVsbGluZygpKSB7Ci0gICAgICAgIG1fcmVzcG9uc2UuYm9keSgpLmNv
bnN1bWVyKCkuYXBwZW5kKGRhdGEsIHNpemUpOworICAgICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5j
b25zdW1lcigpLmFwcGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0z
ODMsNyArMzgzLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgc3RvcCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghc291cmNlLmVucXVldWUoQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpIHsKKyAgICBpZiAoIXNvdXJjZS5lbnF1ZXVlKGJ1
ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSkgewogICAgICAgICBzdG9wKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpz
ZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRk
aW4KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQ2h1bmsoUmVmPEpTQzo6VWludDhBcnJh
eT4mJiBjaHVuaykKIHsKLSAgICBib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoY2h1bmstPmRhdGEo
KSwgY2h1bmstPmJ5dGVMZW5ndGgoKSk7CisgICAgYm9keSgpLmNvbnN1bWVyKCkuYXBwZW5kKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkpKTsK
IH0KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFzU3RyZWFtKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggNmIwNTA1ZDg4YjEz
MmUyOGNiOTU0YWI5YTBlN2VmZTgxM2Y3MDJhZi4uZjk5MjQ5YzM5ZjlkMGIyZmM4N2EyZjljNDZk
NzkzOTI4ODgxNGJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGRpZFN1
Y2NlZWQoKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGZpbmFsOwogCiAgICAgICAgIEZldGNoUmVzcG9uc2UmIG1fcmVzcG9uc2U7
CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIG1fcmVzcG9uc2VDYWxsYmFjazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAppbmRleCAyN2E2ZDcwMzM0Y2EzMjA2YTk0ZTkxOTk0MzM2MzdjNGEzMDUyZTdk
Li5hNjQxZjgxMDdiNGZkMTc5MTFmZGI5MmJiMzBmNDVlMmU4MmI1MmZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuY3BwCkBAIC0xNzcsMTAgKzE3NywxMCBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRN
TE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogCiAv
LyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1vZGVsRWxlbWVu
dDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsK
LSAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQo
YnVmZmVyKTsKIH0KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuaAppbmRleCBjZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlLi4wZDNi
ZGI3NDlkN2EzMzY4YjNjYTY4YzIxNzMxNjA1OTE1NDlkMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAg
LTExNiw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgZmluYWw7CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVycmlkZXMu
Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAKICAgICAvLyBNb2RlbFBsYXllckNsaWVudCBvdmVycmlkZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggZDUxNzNm
YmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOS4uZmVlOTg4NDIyMWJiNDNlOGNjMDYy
ZWFiY2QwYTk5ZWM1NGMwMzQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwot
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5r
IDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCBiN2Y3NWVkYTNi
MjMzYjE5YjIwZWQ3MDQyODk0OWJiMzM1ODk4ZTgxLi43Mzg1MmQ0YzBhZjAzODQ3NWYxNWI2NTQ5
ZGM2ODliZjg1NTFiMjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxv
YWRlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNv
dXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMTYzLDE2ICsxNjQsMTUgQEAgdm9pZCBGaWxl
UmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBjb25zdCBSZXNvdXIKICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0TG9hZGluZygpOwogfQog
Ci12b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCkKIHsKLSAgICBBU1NFUlQoZGF0YSk7
Ci0gICAgQVNTRVJUKGRhdGFMZW5ndGggPiAwKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSk7
CiAKICAgICAvLyBCYWlsIG91dCBpZiB3ZSBhbHJlYWR5IGVuY291bnRlcmVkIGFuIGVycm9yLgog
ICAgIGlmIChtX2Vycm9yQ29kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGxlbmd0aCA9
IGRhdGFMZW5ndGg7CisgICAgaW50IGxlbmd0aCA9IGJ1ZmZlci5zaXplKCk7CiAgICAgdW5zaWdu
ZWQgcmVtYWluaW5nQnVmZmVyU3BhY2UgPSBtX3RvdGFsQnl0ZXMgLSBtX2J5dGVzTG9hZGVkOwog
ICAgIGlmIChsZW5ndGggPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlbWFpbmluZ0J1ZmZlclNw
YWNlKSkgewogICAgICAgICAvLyBJZiB0aGUgYnVmZmVyIGhhcyBoaXQgbWF4aW11bSBzaXplLCBp
dCBjYW4ndCBiZSBncm93biBhbnkgbW9yZS4KQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIEZpbGVS
ZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX3Zh
cmlhYmxlTGVuZ3RoKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBtX3RvdGFs
Qnl0ZXMgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF0YUxlbmd0aCk7CisgICAgICAgICAgICB1
bnNpZ25lZCBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBidWZmZXIuc2l6ZSgpOwogICAgICAg
ICAgICAgaWYgKG5ld0xlbmd0aCA8IG1fdG90YWxCeXRlcykgewogICAgICAgICAgICAgICAgIGZh
aWxlZChOb3RSZWFkYWJsZUVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDYs
NyArMjA2LDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobGVuZ3RoIDw9IDApCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4obV9yYXdEYXRhLT5k
YXRhKCkpICsgbV9ieXRlc0xvYWRlZCwgZGF0YSwgbGVuZ3RoKTsKKyAgICBtZW1jcHkoc3RhdGlj
X2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQsIGJ1ZmZlci5k
YXRhKCksIGxlbmd0aCk7CiAgICAgbV9ieXRlc0xvYWRlZCArPSBsZW5ndGg7CiAKICAgICBtX2lz
UmF3RGF0YUNvbnZlcnRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuaAppbmRleCA1MzljMjMwNGE4MmU2M2FhZGZlMmM1NjdjOThkMGI4YzY4N2E4ZTlm
Li5iN2U1YjQwNTdmYjIwNmZmMzIzMTU1Y2MwZjE1MDJmY2EyMGQyNjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJv
b2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
Jikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNWM1YmIyYWVhODM5OTE4YjA2OTc3NTg4MWNl
M2EzNjlhNDI4ZTViOS4uNzgxNzc1YTg0MTY2MjZlODI5MGZlYWI4MjRlN2IyYWVmNWNhYjJmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKQEAgLTYxNiwxMCArNjE2LDEwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50
CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25z
ZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCi0gICAgICAgIG5ldHdvcmtBZ2Vu
dC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERh
dGFMZW5ndGgpOworICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50aWZp
ZXIsIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZDI5
NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MS4uODJhY2NlZDIwY2ZkNTEzMWIy
NTAyZjA5OWE5YzRmYTJmZGQ2MTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTkzLDEzICsxOTMsMTMgQEAgcHVi
bGljOgogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShQYWdl
JiwgRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRl
ciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2Uo
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKLSAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIERvY3VtZW50
TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZy
YW1lKiwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdChXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgUmVzb3VyY2VS
ZXF1ZXN0Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9h
ZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC00MTQsNyArNDE0LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNlKik7CiAgICAg
c3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllcik7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVE
YXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2
b2lkIGRpZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRY
SFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC0xMDgyLDE3ICsx
MDgyLDE3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVuCiAgICAgICAgIGRpZFJlY2VpdmVUaHJl
YWRhYmxlTG9hZGVyUmVzcG9uc2VJbXBsKCphZ2VudHMsIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ciwgaWRlbnRpZmllcik7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYg
KGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQotICAgICAgICBkaWRS
ZWNlaXZlRGF0YUltcGwoKmFnZW50cywgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwoKmFnZW50cywgaWRl
bnRpZmllciwgYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLWlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUmIGdsb2JhbFNjb3BlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiBnbG9iYWxTY29wZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyh2b2lkKCkpOwotICAgIGRpZFJlY2VpdmVEYXRhSW1wbChpbnN0cnVtZW50aW5nQWdl
bnRzKGdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZGF0YUxlbmd0
aCk7CisgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMoZ2xvYmFsU2Nv
cGUpLCBpZGVudGlmaWVyLCBidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUqIGZyYW1l
LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJlc291
cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDM5YjAxMWNmMDZmN2YzODUzMjQzZTBh
NzYzYTNiMWQ0NTQ5MDQxNDkuLjMyOGViZTdlNjQxMTk1ZTVhNDY4NTAyNzU1OTEwZjc4YzQ4YjU4
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcApAQCAtOTAsMTAgKzkwLDEwIEBAIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhQnVmZmVy
LnNpemUoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjph
cHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgbV9kYXRh
QnVmZmVyLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXIuYXBwZW5k
KGRhdGEpOwogfQogCiB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpkZWNvZGVEYXRhVG9Db250ZW50KCkKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBz
aG91bGRCdWZmZXJSZXNvdXJjZURhdGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YSYgcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3Vy
Y2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgZGF0YUxlbmd0aCkKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3Qq
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIFJlc291cmNlRGF0
YSogcmVzb3VyY2VEYXRhID0gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAg
ICAgaWYgKCFyZXNvdXJjZURhdGEpCkBAIC0yMzAsMTUgKzIzMCwxNSBAQCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVB
ZGRSZXNvdXJjZQogICAgIGlmICghc2hvdWxkQnVmZmVyUmVzb3VyY2VEYXRhKCpyZXNvdXJjZURh
dGEpKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VEYXRhOwogCi0gICAgaWYgKHJlc291cmNlRGF0
YS0+ZGF0YUxlbmd0aCgpICsgZGF0YUxlbmd0aCA+IG1fbWF4aW11bVNpbmdsZVJlc291cmNlQ29u
dGVudFNpemUpCisgICAgaWYgKHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0aCgpICsgZGF0YS5zaXpl
KCkgPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQogICAgICAgICBtX2NvbnRl
bnRTaXplIC09IHJlc291cmNlRGF0YS0+ZXZpY3RDb250ZW50KCk7CiAgICAgaWYgKHJlc291cmNl
RGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VEYXRhOwog
Ci0gICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRhTGVuZ3RoKSAmJiAhcmVzb3VyY2VEYXRhLT5p
c0NvbnRlbnRFdmljdGVkKCkpIHsKKyAgICBpZiAoZW5zdXJlRnJlZVNwYWNlKGRhdGEuc2l6ZSgp
KSAmJiAhcmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRFdmljdGVkKCkpIHsKICAgICAgICAgbV9yZXF1
ZXN0SWRzRGVxdWUuYXBwZW5kKHJlcXVlc3RJZCk7Ci0gICAgICAgIHJlc291cmNlRGF0YS0+YXBw
ZW5kRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgbV9jb250ZW50U2l6ZSArPSBkYXRh
TGVuZ3RoOworICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSk7CisgICAgICAg
IG1fY29udGVudFNpemUgKz0gZGF0YS5zaXplKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc291
cmNlRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmgKaW5kZXggZGFhZTVmZTRhMzFlMzE1OTM2Mzc5MDQyM2Y1ZmJkMzM3MGM1Y2QzOS4uYzhj
ZWQxMmE2NDA3ZmRjZDU3NGVjYzJhNzgxOWVkZTY2MzgwM2RhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTEwOCw3ICsxMDgsNyBA
QCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAg
ICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYXBwZW5kRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgICAgIHZvaWQg
YXBwZW5kRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2Rl
RGF0YVRvQ29udGVudCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKQEAgLTE0MSw3
ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAgICBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9IGZhbHNl
KTsKLSAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7
CisgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBtYXliZURlY29k
ZURhdGFUb0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIHZvaWQgYWRkQ2Fj
aGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc291cmNlKik7CiAg
ICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggM2NlYjRiNDdmMTA2OGEwYWZlYWYwMGYx
NzljMjgwMGM0NzZiZDZiMS4uOWE2MWViNDJkODFlNzkzYzljZjQ5YmNkNTZmZDIzMDRkZjQ5YWU0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTI0LDE1ICsxMjQsMTMgQEAgcHVibGljOgogICAg
ICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4i
X3MsIHRleHRFbmNvZGluZywgdXNlRGV0ZWN0b3IpOwogICAgIH0KIAotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlCisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1
c2VTdHJMZW4pIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIWRhdGFMZW5ndGgpCisgICAg
ICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGlmIChkYXRhTGVuZ3RoID09IC0xKQotICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0cmxlbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7Ci0KLSAgICAgICAgbV9yZXNwb25z
ZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsKKyAgICAg
ICAgc2l6ZV90IGRhdGFMZW5ndGggPSB1c2VTdHJMZW4gPyBzdHJsZW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEoKSkpIDogYnVmZmVyLnNpemUoKTsKKyAgICAgICAg
bV9yZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGRh
dGFMZW5ndGgpKTsKICAgICB9CiAKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZQpAQCAtNTQ5LDkgKzU0Nyw4IEBAIHZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIGlkZW50aWZpCiAgICAgICAgICAgICBpZiAocHJldmlvdXNSZXNvdXJjZURhdGEtPmhhc0Nv
bnRlbnQoKSkKICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlQ29u
dGVudChyZXF1ZXN0SWQsIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5jb250ZW50KCksIHByZXZpb3Vz
UmVzb3VyY2VEYXRhLT5iYXNlNjRFbmNvZGVkKCkpOwogICAgICAgICAgICAgZWxzZSBpZiAocHJl
dmlvdXNSZXNvdXJjZURhdGEtPmhhc0J1ZmZlcmVkRGF0YSgpKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byBwcmV2aW91c0J1ZmZlciA9IHByZXZpb3VzUmVzb3VyY2VEYXRhLT5idWZmZXIoKTsKLSAg
ICAgICAgICAgICAgICBwcmV2aW91c0J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNl
Z21lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJl
c291cmNlRGF0YShyZXF1ZXN0SWQsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgcHJldmlvdXNSZXNvdXJjZURhdGEtPmJ1ZmZlcigpLT5mb3JFYWNoU2Vn
bWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAgICAgICAg
ICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBidWZm
ZXIpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBA
IC01NzQsMjQgKzU3MSwyOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgIC8vIElmIHdl
IHJldmFsaWRhdGVkIHRoZSByZXNvdXJjZSBhbmQgZ290IE5vdCBtb2RpZmllZCwgc2VuZCBjb250
ZW50IGxlbmd0aCBmb2xsb3dpbmcgZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAgLy8gYXMgdGhlcmUg
d2lsbCBiZSBubyBjYWxscyB0byBkaWRSZWNlaXZlRGF0YSBmcm9tIHRoZSBuZXR3b3JrIHN0YWNr
LgogICAgIGlmIChpc05vdE1vZGlmaWVkICYmIGNhY2hlZFJlc291cmNlICYmIGNhY2hlZFJlc291
cmNlLT5lbmNvZGVkU2l6ZSgpKQotICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBu
dWxscHRyLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCk7CisgICAgICAgIGRpZFJl
Y2VpdmVEYXRhKGlkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNhY2hlZFJlc291
cmNlLT5lbmNvZGVkU2l6ZSgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRp
ZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmllcnMuY29udGFp
bnMoaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyByZXF1ZXN0SWQg
PSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgIGludCBkYXRhTGVuZ3RoID0gZGF0YS5zaXplKCk7CiAKLSAgICBpZiAoZGF0YSkgewotICAg
ICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURh
dGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgZGF0
YSwgZGF0YUxlbmd0aCk7CisgICAgaWYgKGRhdGEuZGF0YSgpKSB7CisgICAgICAgIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1fcmVzb3Vy
Y2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBkYXRhKTsKIAogICAgICAg
ICAvLyBGb3IgYSBzeW5jaHJvbm91cyBYSFIsIGlmIHdlIGRpZG4ndCBhZGQgZGF0YSB0aGVuIHdl
IGNhbiBhcHBseSBpdCBoZXJlIGFzIGJhc2U2NCBlbmNvZGVkIGNvbnRlbnQuCiAgICAgICAgIC8v
IE9mdGVuIHRoZSBkYXRhIGlzIHRleHQgYW5kIHdlIHdvdWxkIGhhdmUgYSBkZWNvZGVyLCBidXQg
Zm9yIG5vbi10ZXh0IHdlIHdvbid0IGhhdmUgYSBkZWNvZGVyLgogICAgICAgICAvLyBTeW5jIFhI
UnMgbWF5IG5vdCBoYXZlIGEgY2FjaGVkIHJlc291cmNlLCB3aGlsZSBub24tc3luYyBYSFJzIHVz
dWFsbHkgdHJhbnNmZXIgZGF0YSBvdmVyIG9uIGNvbXBsZXRpb24uCiAgICAgICAgIGlmIChtX2xv
YWRpbmdYSFJTeW5jaHJvbm91c2x5ICYmIHJlc291cmNlRGF0YSAmJiAhcmVzb3VyY2VEYXRhLT5o
YXNCdWZmZXJlZERhdGEoKSAmJiAhcmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgpKQotICAg
ICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBi
YXNlNjRFbmNvZGVUb1N0cmluZyhkYXRhLCBkYXRhTGVuZ3RoKSwgdHJ1ZSk7CisgICAgICAgICAg
ICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChyZXF1ZXN0SWQsIGJhc2U2NEVu
Y29kZVRvU3RyaW5nKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSksIHRydWUpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGRhdGFMZW5ndGggPSBlbmNvZGVkRGF0YUxlbmd0aDsKKyAgICAgICAgZW5j
b2RlZERhdGFMZW5ndGggPSAwOwogICAgIH0KIAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5k
YXRhUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAoKSwgZGF0YUxlbmd0aCwgZW5jb2RlZERh
dGFMZW5ndGgpOwpAQCAtMTI3MSw3ICsxMjcyLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMK
ICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5
IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBkYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJhc2U2NEVu
Y29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAg
ICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI5Niw5ICsxMjk3LDkgQEAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0
aFJlc3BvbnMKICAgICB9CiAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkcyhXVEZNb3Zl
KGV4cGxpY2l0SGVhZGVycykpOwogICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOwotICAgIGxvYWRl
ci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZmZXIgPSBkYXRhLnJl
bGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAgbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9u
c2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0oKSB7
CiAgICAgICAgIGlmIChidWZmZXItPnNpemUoKSkKLSAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVj
ZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdo
b2xlUmVzb3VyY2UpOworICAgICAgICAgICAgbG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIs
IGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogICAgICAgICBsb2Fk
ZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkpOwogICAgIH0pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuaAppbmRleCA2YmNkODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRhMTQxM2Q0
Li5jYTZmNzRlMWI4Njk4MGY0MGIxNTVkMTNlMTZiNzFhZGZiOTQwNDU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IENhY2hl
ZFJlc291cmNlKik7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJj
ZUxvYWRlciopOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291
cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggNDMzMmQ2
OTFiYmY4MjZhN2M4N2VhODNhMzE3ZTk2MTE1YTIwNDk5My4uYjg2ZjliYTYzNzY1ZWM0ZGZlODRm
MDJkYTRkZjc4MjMwOWMxNThkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcApAQCAtMTQ1LDE0ICsxNDUsMTQgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFm
dGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb24KICAgICBy
ZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAotYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90
ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZp
bHRlcmluZykgewotICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIg
cmVjZWl2ZWQgJWQgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBsZW5ndGgsIG1fbWFpblJl
c291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIGZvckVhY2hD
b250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhLCBsZW5ndGhdKFBsYXRmb3JtQ29udGVudEZp
bHRlciYgY29udGVudEZpbHRlcikgewotICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRh
KGRhdGEsIGxlbmd0aCk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZp
bHRlciByZWNlaXZlZCAlenUgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBkYXRhLnNpemUo
KSwgbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAg
ICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW2RhdGEgPSBSZWYgeyBkYXRhIH1d
KFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgeworICAgICAgICAgICAgY29u
dGVudEZpbHRlci5hZGREYXRhKGRhdGEpOwogICAgICAgICB9KTsKIAogICAgICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRG
aWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAg
IEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2Uu
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
OwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVy
KCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJl
c291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5z
aXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCmlu
ZGV4IDhiNmRlZmZmYWI4MGY1ZGFjMjU4N2UzNzFjMDE4NzliOWYzZmRmNzcuLjYwYjRkYTFhOWIz
MzY4YzJkZmVjZmY0MmI4OWYzNTU4ZTgzMzFjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRpbnVl
QWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIGJvb2wgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwotICAgIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICBib29sIGNvbnRpbnVlQWZ0ZXJEYXRh
UmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBjb250aW51ZUFmdGVyTm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKIAogICAgIHN0YXRpYyBib29sIGNvbnRpbnVl
QWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxv
YWRlciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlckNsaWVudC5oCmluZGV4IDIxNWMwNGVjOTg5NWU5ZjFlNmUxNDdkYTgyMDkzMDA5
ODUyMzk2MjMuLmZhN2FkMzAzOWEyMDVlOTA1NzEwOGYzYzZmMzkyNDE5YmM0NjQ3ZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaApAQCAtMzMsNiArMzMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
dWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQ29udGVudEZpbHRlckNsaWVudCB7CkBAIC00MSw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkZXJlZigpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY29udGVudEZpbHRlckRp
ZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTWFpblJlc291cmNl
TG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNv
bnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggNmJmM2FjMjk3ZWM2YjI2M2EwNzg2
NDBiY2YzYWQ1Nzc5ZGIwZmVkYi4uOTdlM2Q2NWIzZTkyZGUzMjdmOTJmM2JhZDRjYzUxYzE1NDkz
YTU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC00ODMs
OCArNDgzLDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nKCkKICAgICAg
ICAgLy8gSWYgdGhpcyBpcyBhbiBlbXB0eSBkb2N1bWVudCwgaXQgd2lsbCBub3QgaGF2ZSBhY3R1
YWxseSBiZWVuIGNyZWF0ZWQgeWV0LiBDb21taXQgZHVtbXkgZGF0YSBzbyB0aGF0CiAgICAgICAg
IC8vIERvY3VtZW50V3JpdGVyOjpiZWdpbigpIGdldHMgY2FsbGVkIGFuZCBjcmVhdGVzIHRoZSBE
b2N1bWVudC4KICAgICAgICAgaWYgKCFtX2dvdEZpcnN0Qnl0ZSkKLSAgICAgICAgICAgIGNvbW1p
dERhdGEoMCwgMCk7Ci0gICAgICAgIAorICAgICAgICAgICAgY29tbWl0RGF0YShTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpKTsKKwogICAgICAgICBpZiAoIWZyYW1lTG9hZGVyKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmZpbmlzaGVkTG9hZGlu
Zyh0aGlzKTsKQEAgLTExNTcsOCArMTE1Nyw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRp
bnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgaWYgKCFpc1N0
b3BwaW5nKCkgJiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgaXNMb2FkaW5nTWFpblJl
c291cmNlKCkpIHsKICAgICAgICAgYXV0byBjb250ZW50ID0gbV9zdWJzdGl0dXRlRGF0YS5jb250
ZW50KCk7CiAgICAgICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQtPnNpemUoKSkgewotICAgICAg
ICAgICAgY29udGVudC0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAg
ICAgICAgICAgICBkYXRhUmVjZWl2ZWQoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsK
KyAgICAgICAgICAgIGNvbnRlbnQtPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1
dG8mJiBidWZmZXIpIHsKKyAgICAgICAgICAgICAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc0xvYWRpbmdNYWluUmVzb3Vy
Y2UoKSkKQEAgLTExNzEsNyArMTE3MSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVl
QWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgfQogfQogCi12b2lk
IERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICAvLyBCb3RoIHVubG9hZGluZyB0aGUgb2xkIHBhZ2UgYW5kIHBhcnNpbmcg
dGhlIG5ldyBwYWdlIG1heSBleGVjdXRlIEphdmFTY3JpcHQgd2hpY2ggZGVzdHJveXMgdGhlIGRh
dGFzb3VyY2UKICAgICAvLyBieSBzdGFydGluZyBhIG5ldyBsb2FkLCBzbyByZXRhaW4gdGVtcG9y
YXJpbHkuCkBAIC0xMTg2LDcgKzExODYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRM
b2FkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiAgICAgaWYgKEFyY2hpdmVGYWN0
b3J5Ojppc0FyY2hpdmVNSU1FVHlwZShyZXNwb25zZSgpLm1pbWVUeXBlKCkpKQogICAgICAgICBy
ZXR1cm47CiAjZW5kaWYKLSAgICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuY29tbWl0dGVkTG9hZCh0
aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIGZyYW1lTG9hZGVyLT5jbGllbnQoKS5jb21taXR0ZWRM
b2FkKHRoaXMsIGRhdGEpOwogCiAgICAgaWYgKGlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpKQog
ICAgICAgICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQo
KTsKQEAgLTEyMTUsNyArMTIxNSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRVc2VBY3Rp
dmVTZXJ2aWNlV29ya2VyRnJvbVBhcmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lCiB9CiAjZW5k
aWYKIAotdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRl
cywgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmICghbV9nb3RGaXJzdEJ5dGUpIHsKICAgICAg
ICAgbV9nb3RGaXJzdEJ5dGUgPSB0cnVlOwpAQCAtMTMxMywyNCArMTMxMywyNCBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVu
Z3RoKQogI2VuZGlmCiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2luZygp
KTsKLSAgICBtX3dyaXRlci5hZGREYXRhKGJ5dGVzLCBsZW5ndGgpOworICAgIG1fd3JpdGVyLmFk
ZERhdGEoZGF0YSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2
b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwotICAgIGRhdGFSZWNlaXZlZChkYXRh
LCBsZW5ndGgpOworICAgIGRhdGFSZWNlaXZlZChidWZmZXIpOwogfQogCi12b2lkIERvY3VtZW50
TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3Zv
aWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgaWYgKG1fY29udGVudEZp
bHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGRhdGEs
IGxlbmd0aCkpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5j
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKICNlbmRp
ZgogCi0gICAgQVNTRVJUKGRhdGEpOwotICAgIEFTU0VSVChsZW5ndGgpOworICAgIEFTU0VSVChi
dWZmZXIuZGF0YSgpKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSk7CiAgICAgQVNTRVJUKCFt
X3Jlc3BvbnNlLmlzTnVsbCgpKTsKIAogICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIENGTmV0d29y
ayB3aGVyZSBjYWxsYmFja3MgY2FuIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRzIGFyZSBk
ZWZlcnJlZC4KQEAgLTEzNDAsMTIgKzEzNDAsMTIgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0
YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiAjZW5kaWYKIAogICAg
IGlmIChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKQotICAgICAgICBm
cmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEodGhpcywgbV9p
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgZGF0YSwgbGVuZ3RoLCAtMSk7
CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hEaWRSZWNlaXZlRGF0
YSh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCBidWZmZXIs
IC0xKTsKIAotICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNl
aXZlZChkYXRhLCBsZW5ndGgsIC0xLCBmYWxzZSk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9z
dC0+bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGJ1ZmZlciwgLTEsIGZhbHNlKTsKIAogICAgIGlm
ICghaXNNdWx0aXBhcnRSZXBsYWNpbmdMb2FkKCkpCi0gICAgICAgIGNvbW1pdExvYWQoZGF0YSwg
bGVuZ3RoKTsKKyAgICAgICAgY29tbWl0TG9hZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50
TG9hZGVyOjpzZXR1cEZvclJlcGxhY2UoKQpAQCAtMTYxNCw3ICsxNjE0LDcgQEAgYm9vbCBEb2N1
bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRNSU1FVHlw
ZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1l
bnQoKSk7Ci0gICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5S
ZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKCptX3BhcnNlZEFyY2hpdmVE
YXRhKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMjI1Nyw4ICsyMjU3LDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgp
CiAKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRl
ZCA9IGZhbHNlOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURh
dGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1p
dExvYWQobWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKTsKIH0KIAogdm9pZCBE
b2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCkBAIC0yNDEwLDkgKzI0MDksOSBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChT
ZWN1cml0eVBvbGljeVZpb2xhdGlvbgogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRh
UmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKLSAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgc2l6ZSk7CisgICAgZGF0YVJlY2VpdmVkKGJ1ZmZl
cik7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JD
b250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBiNDY5ODFkNzUwYjI1YzFmZDMwN2YxNmZkYTc0Yjdl
ZTMwNmE0YzM5Li4yOGUyOGE2ODhhZTZiNTdlMGYwZDE0YzRlN2EwYzI1NThjYjY3ZTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtODYsNiArODYsNyBAQCBjbGFz
cyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3Vy
Y2U7CiBjbGFzcyBVc2VyQ29udGVudFVSTFBhdHRlcm47CkBAIC0zNzcsNyArMzc4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzZXRUaW1pbmcoKSB7IG1fbG9hZFRpbWluZyA9IHsgfTsgfQogCiAg
ICAgLy8gVGhlIFdlYktpdCBsYXllciBjYWxscyB0aGlzIGZ1bmN0aW9uIHdoZW4gaXQncyByZWFk
eSBmb3IgdGhlIGRhdGEgdG8gYWN0dWFsbHkgYmUgYWRkZWQgdG8gdGhlIGRvY3VtZW50LgotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6
ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3QmIGFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KCkgY29uc3Q7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3QqIGFwcGxpY2F0aW9uQ2Fj
aGVIb3N0VW5sZXNzQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKQEAgLTQ3Nyw3ICs0NzgsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBjb21taXRJZlJlYWR5KCk7CiAgICAgdm9pZCBzZXRNYWluRG9j
dW1lbnRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBjb21taXRMb2FkKGNv
bnN0IHVpbnQ4X3QqLCBpbnQpOworICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHNl
dHVwRm9yUmVwbGFjZSgpOwpAQCAtNDkzLDcgKzQ5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBt
YWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNw
b25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwpAQCAtNTAzLDEzICs1MDQsMTMg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAvLyBDb250
ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgY29udGVu
dEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0
aXR1dGVEYXRhJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgYm9vbCBtYXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IGI5YzQxMzUyNTY3NjI2NzIxOTA3YWYzNjZkZmIxZGVjNzk0YzI0NzQuLjg2NGI2NWExZDExMzFm
YjYzNzEyNWIxNzM5OTFlOWQzZTBhNmU3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00MzcsMjAgKzQzNywyMCBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBpZGVudAogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2Uo
aWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVz
b3VyY2UpOwotICAgIGRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGF0
YSwgZGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+aWRlbnRpZmll
cigpLCBidWZmZXIpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAKICAgICBpZiAobV9kZWxheUNhbGxiYWNrc0Zv
ckludGVncml0eUNoZWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRh
KGJ1ZmZlciwgZmFsc2UpOwogfQogCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Zmlu
aXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
UmVzb3VyY2VUaW1pbmcmIHJlc291cmNlVGltaW5nKQpAQCAtNDkzLDIwICs0OTMsMTQgQEAgdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWYKIAogICAgICAgICBpZiAob3B0aW9ucygpLmZpbHRlcmluZ1Bv
bGljeSA9PSBSZXNwb25zZUZpbHRlcmluZ1BvbGljeTo6RGlzYWJsZSkgewogICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7Ci0gICAg
ICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkg
ewotICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21l
bnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKSkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1
ZmZlciwgZmFsc2UpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlc3Bv
bnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpEZWZhdWx0KTsKIAogICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCBSZXNvdXJjZVJl
c3BvbnNlOjpmaWx0ZXIocmVzcG9uc2UsIG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRjaE9w
dGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlID8gUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4
cG9zZUFsbEhlYWRlcnNDaGVjazo6Tm8gOiBSZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3JtRXhwb3Nl
QWxsSGVhZGVyc0NoZWNrOjpZZXMpKTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBt
X3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyLT5m
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsK
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRv
KiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQorICAgICAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSgqYnVmZmVyLCBmYWxzZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTY2NywxMSArNjYxLDggQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICB9
CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlm
IChkYXRhKSB7Ci0gICAgICAgIGRhdGEtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50
KSB7Ci0gICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBzZWdtZW50LmRhdGEo
KSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgaWYgKGRhdGEpCisg
ICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsICpkYXRhKTsKIAogICAgIGNvbnN0IGF1
dG8qIHRpbWluZyA9IHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwo
KTsKICAgICBhdXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21TeW5jaHJv
bm91c0xvYWQocmVxdWVzdFVSTCwgbV9vcHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWluZywgdGlt
aW5nID8gKnRpbWluZyA6IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCksIHJlc3Bv
bnNlLCBzZWN1cml0eU9yaWdpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCBmMWY0MWVlOTFkNmNlOGExYzU4NjIzODE3YjM1
OGY3NzQ2NTFlMGE0Li5jODZiYTdmNDUzODNiNmMyODYwMDMyZDNhZWJmYmEzZTA4NjA3NjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
CkBAIC04NiwxNCArODYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudAogICAgICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJlc291cmNl
JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
Qnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsK
KyAgICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAg
ICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VUaW1pbmcmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRpbWlu
Z0ZvcldvcmtlckxvYWQoY29uc3QgUmVzb3VyY2VUaW1pbmcmKTsKICAgICAgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOwogCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwogICAgICAgICB2b2lkIGRpZEZh
aWwoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
ICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAppbmRleCBiMDQ2ZWYwZGUy
MDQ4ZWZkNDMxOTcwMjYyMmI5NmE3ZGYyZmVhZmE3Li40ZmY5MzgxODBmZGQyOGZjNzE1ZDA4ODgx
NjA4ZmM2Mjg5NDkyZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5j
cHAKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjpyZXBvcnREYXRhUmVj
ZWl2ZWQoKQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnJlc29sdmVTdHlsZShEb2N1bWVudDo6
UmVzb2x2ZVN0eWxlVHlwZTo6UmVidWlsZCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRXcml0ZXI6OmFk
ZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCit2b2lkIERvY3VtZW50
V3JpdGVyOjphZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGSVhN
RTogQ2hhbmdlIHRoZXNlIHRvIEFTU0VSVCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MDQyNyBoYXMgYmVlbiByZXNvbHZlZC4KICAgICBSRUxFQVNFX0FTU0VS
VChtX3N0YXRlICE9IFN0YXRlOjpOb3RTdGFydGVkKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lk
IERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVu
Z3RoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChtX3BhcnNlcik7Ci0gICAg
bV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBieXRlcywgbGVuZ3RoKTsKKyAgICBtX3BhcnNl
ci0+YXBwZW5kQnl0ZXMoKnRoaXMsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZv
aWQgRG9jdW1lbnRXcml0ZXI6Omluc2VydERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYg
bWFya3VwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAppbmRleCAwNzE3MmM5
NzM5ZWI1NzM1YmM4MWY4ZGVmMmZiOWIyODVjMjU0ZDBiLi5jMGEzNGE2YjdlOWNmZTk2NDMwNDVh
OTVlNzkzMjI1MjM2M2IyNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIu
aApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIERvY3VtZW50UGFyc2VyOwogY2xhc3MgRnJhbWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBEb2N1bWVudFdyaXRlciB7CkBA
IC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYmVnaW4oKTsKICAgICBib29sIGJl
Z2luKGNvbnN0IFVSTCYsIGJvb2wgZGlzcGF0Y2hXaW5kb3dPYmplY3RBdmFpbGFibGUgPSB0cnVl
LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IG51bGxwdHIpOwotICAgIHZvaWQgYWRkRGF0YShj
b25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CisgICAgdm9pZCBhZGREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHkoY29u
c3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRoZSBw
YXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDc1OGNiZTgwNjU0ZTg4ODk3
YWNkOWVkNDExOTkwYzg2ODZjYWYzYmEuLmQyM2M5NmI2YzUyODAzZmVjMmU0NTdiN2VjN2RiYzll
YjM3OTk1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC04NzAs
NyArODcwLDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlw
YXJ0Q29udGVudCgpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0
dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBT
aGFyZWRCdWZmZXImKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCAyMjY5OWM5YzUxODMyYTVhYThjODlhYmFiMmZmYzdlMDk4
NWJmYzAwLi4xMTZhMTdkMWY1YzllNjQ3ZTFmMTQxYTEwMDg2YjA3OTgzOTNmM2VhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCos
IGludCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29u
c3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1l
bnRMb2FkZXIqKSBmaW5hbDsKIAogICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCBmZGM5N2RjNDYyYzg3NTI2YWExODhmNzk2OGQ2MGEwYzgzZDY4MGQ5
Li4xMWMwYThmNjg2MTUwNmUwOTYxZTUyYThmZjRjNzIwYjI1YmUyOTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE2ODcsNyArMTY4Nyw3IEBAIGJvb2wgRnJhbWVM
b2FkZXI6OndpbGxMb2FkTWVkaWFFbGVtZW50VVJMKFVSTCYgdXJsLCBOb2RlJiBpbml0aWF0b3JO
b2RlKQogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgIFJlc291
cmNlRXJyb3IgZXJyb3I7CiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZShyZXF1ZXN0LCBpZGVudGlm
aWVyLCBlcnJvcik7Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdl
cyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCBSZXNvdXJjZVJl
c3BvbnNlKHVybCwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSksIDAsIC0xLCAtMSwgZXJyb3IpOwor
ICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExv
YWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0
cmluZygpLCAtMSwgU3RyaW5nKCkpLCBudWxscHRyLCAtMSwgZXJyb3IpOwogCiAgICAgdXJsID0g
cmVxdWVzdC51cmwoKTsKIApAQCAtMjA4Nyw4ICsyMDg3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZSh0aXRsZSk7CiAKICAgICAgICAgLy8gU2VuZCByZW1haW5pbmcgbm90aWZp
Y2F0aW9ucyBmb3IgdGhlIG1haW4gcmVzb3VyY2UuCi0gICAgICAgIG5vdGlmaWVyKCkuc2VuZFJl
bWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgbWFpblJlc291
cmNlSWRlbnRpZmllciwgbWFpblJlc291cmNlUmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpLAot
ICAgICAgICAgICAgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50PihtX2RvY3VtZW50TG9hZGVyLT5y
ZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwgbWFpblJlc291Y2VFcnJvcik7
CisgICAgICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1
bWVudExvYWRlci5nZXQoKSwgbWFpblJlc291cmNlSWRlbnRpZmllciwgbWFpblJlc291cmNlUmVx
dWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpLCBudWxscHRyLCBzdGF0aWNfY2FzdDxpbnQ+KG1fZG9j
dW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCBtYWluUmVz
b3VjZUVycm9yKTsKIAogICAgICAgICBWZWN0b3I8UmVmPEZyYW1lPj4gdGFyZ2V0RnJhbWVzOwog
ICAgICAgICB0YXJnZXRGcmFtZXMuYXBwZW5kKG1fZnJhbWUpOwpAQCAtMjEzNiw3ICsyMTM1LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAgICAg
IC8vIEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywg
dGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAgICAgICAgIC8vIEhvd2V2
ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdv
bid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAgICAgICAgIC8vIENvdWxkIGJlIGFuIGlzc3Vl
IHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgotICAgICAgICAgICAgbm90aWZpZXIoKS5zZW5kUmVt
YWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVy
LCByZXF1ZXN0LCByZXNwb25zZSwgMCwgc3RhdGljX2Nhc3Q8aW50PihyZXNwb25zZS5leHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKSksIDAsIGVycm9yKTsKKyAgICAgICAgICAgIG5vdGlmaWVyKCkuc2Vu
ZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRp
ZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIG51bGxwdHIsIHN0YXRpY19jYXN0PGludD4ocmVzcG9u
c2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCBlcnJvcik7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBGSVhNRTogV2h5IG9ubHkgdGhpcyBmcmFtZSBhbmQgbm90IHBhcmVudCBmcmFtZXM/CkBA
IC0zMTY2LDcgKzMxNjUsOCBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICAgICAg
ICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291
cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKICAg
ICAgICAgfQogICAgIH0KLSAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNl
LCBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAs
IC0xLCBlcnJvcik7CisKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNl
LCBkYXRhLCAtMSwgZXJyb3IpOwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCkBAIC0zNjQ3
LDcgKzM2NDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cgogCiAgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSA9IHJlc291cmNlLnJlc3BvbnNlKCk7CiAgICAgcmVzcG9uc2Uuc2V0U291
cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TWVtb3J5Q2FjaGUpOwotICAgIG5vdGlmaWVy
KCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwg
aWRlbnRpZmllciwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsIDAsIHJlc291cmNlLmVuY29kZWRTaXpl
KCksIDAsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHJlc3Bv
bnNlLCBudWxscHRyLCByZXNvdXJjZS5lbmNvZGVkU2l6ZSgpLCBlcnJvcik7CiB9CiAKIHZvaWQg
RnJhbWVMb2FkZXI6OmFwcGx5VXNlckFnZW50SWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBlZTlm
M2QwYzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThkMTIzNjUyLi4zNTJhNGM0ZmI1MDRmN2NkNGQy
ZWM0MDZlNmJjMjkxMWE1NWZkMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtNyw3ICs3LDcgQEAKICAqIGFyZSBtZXQ6CiAgKgogICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCiAgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCkBAIC01MCw3ICs1MCw3IEBACiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotI2lmZGVmIF9fT0JKQ19fIAorI2lmZGVmIF9fT0JKQ19fCiAj
aW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIHR5cGVkZWYgaWQgUmVtb3RlQVhPYmpl
Y3RSZWY7CiAjZWxzZQpAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsKIApAQCAtMjE0LDkg
KzIxNCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRD
b250ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVu
dCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVy
KiwgY29uc3QgdWludDhfdCosIGludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRM
b2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSA9IDA7Ci0gICAgCisKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKSA9IDA7CiAKQEAgLTI3Miw3ICsy
NzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYp
IGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5
UG9saWN5KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICAKKwogICAgIHZpcnR1YWwg
dm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hl
ZEZyYW1lKikgPSAwOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zODEsNyArMzgxLDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIEFsbG93c0NvbnRlbnRKYXZhU2NyaXB0
IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gQWxsb3dzQ29udGVudEphdmFTY3JpcHQ6OlllczsgfQotICAgIAorCiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmFibGVJbkFw
cEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCkgeyB9CkBAIC0zOTAs
NyArMzkwLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRVc2VQREZQbHVnaW4oY29uc3QgU3RyaW5nJiwgU3RyaW5nVmlldykgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgotICAgIAorCiAgICAgdmlydHVhbCBib29sIGlz
UGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggNWQxMjBlMjQ3YWMyNjI3MTE2MWRlMGRjNTIzMDI0ZGM4ZGUzNGQ2OS4uMWExN2E3MGZhNThj
NzIyOGY2Mzg5MzU5ZGQwZDMzOWQwZTA1Y2QyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcApAQCAtMjMxLDEzICsyMzEsMTMgQEAgdm9pZCBNZWRp
YVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1MKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1Nl
bnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAgIFJlZlB0
cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgZGF0YUxlbmd0aCk7
CisgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CiB9CiAKIHZv
aWQgTWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmZjZjMjg4NzEwMDg4ZjRiMDU0Y2U0NzYz
ZDVkYTBkZGM5MmMyMDY1Li43YjU1NzcyMGVmMDUzM2ZiYWEyMjY1NjUzOGVmZGQ5NmY2MTc5ZmI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTg2
LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIGJv
b2wgc2hvdWxkQ2FjaGVSZXNwb25zZShDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJlc291cmNlJiwgdW5z
aWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cAppbmRleCA2MDQzYWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkxNTAzLi41Y2FhZGY2
MjljNzBhZTA4NmI3N2JkNzJjZDI4Njc1MzZiOGZhOTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAgLTE0MSwzMCAr
MTQxLDE0IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwCiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
ZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBl
KTsKLX0KLQotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKLSAgICBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERh
dGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBpZiAobV9jbGllbnQpIHsKLSAgICAg
ICAgaWYgKGJ1ZmZlcikgewotICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0o
YXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0
YSh0aGlzLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGRhdGEsIGxlbmd0aCk7Ci0gICAgfQorICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlcik7CiAKLSAgICBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CisgICAgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlw
ZSk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCmluZGV4
IGI1MTc0ZWRjOTRiOTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzguLjFlYzdkNjFlM2ExNzVj
MjJiNTU4NzU4ZDM3ZWQwYzU1YmU1ZjEzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC0zNiwxMiArMzYsMTMgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xp
ZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xp
ZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXIm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCBi
b29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Miw4ICs2
Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc0LDggKzc0LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotCiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKICAg
ICBXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCmluZGV4IDYy
YmI1NmUzNGU2ZjQ2ZDI2MjgzNmNmY2E0NjViNGRiMGUzMDgzY2YuLjFhYzBlNjdjN2Y2OGRlZDBl
Y2I3OGUxMWMwMjQ2OWIxMDkxZDUzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRl
ci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAj
aW5jbHVkZSAiUXVpY2tMb29rLmgiCkBAIC03OCwxMiArNzksMTIgQEAgdm9pZCBSZXNvdXJjZUxv
YWROb3RpZmllcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNv
bnN0IFJlc28KICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXItPmRvY3VtZW50
TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCByLCBsb2FkZXIpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCkKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQotICAgICAg
ICBwYWdlLT5wcm9ncmVzcygpLmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRpZmllcigp
LCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNyZW1lbnRQcm9ncmVz
cyhsb2FkZXItPmlkZW50aWZpZXIoKSwgYnVmZmVyLnNpemUoKSk7CiAKLSAgICBkaXNwYXRjaERp
ZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVy
KCksIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaXNwYXRjaERp
ZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVy
KCksIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5v
dGlmaWVyOjpkaWRGaW5pc2hMb2FkKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtMTUzLDEzICsxNTQsMTMgQEAg
dm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgUmUKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUsIGlkZW50aWZpZXIsIGxvYWRlciwgciwg
cmVzb3VyY2VMb2FkZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRj
aERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0
Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKICAgICAvLyBOb3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVyQ2xpZW50
IG1heSBjYXVzZSB0aGUgZnJhbWUgdG8gYmUgZGVzdHJveWVkLgogICAgIFJlZjxGcmFtZT4gcHJv
dGVjdChtX2ZyYW1lKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlk
UmVjZWl2ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhTGVuZ3RoKTsKKyAg
ICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgobG9hZGVyLCBpZGVudGlmaWVyLCBidWZmZXIuc2l6ZSgpKTsKIAotICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoJm1fZnJhbWUsIGlkZW50aWZpZXIsIGRhdGEs
IGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhKCZtX2ZyYW1lLCBpZGVudGlmaWVyLCBidWZmZXIsIGVuY29k
ZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2Fk
TWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQpAQCAtMTgwLDcgKzE4MSw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRGYWlsTG9hZGluZygmbV9mcmFtZSwgbG9hZGVyLCBpZGVudGlmaWVyLCBlcnJvcik7CiB9
CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgLy8gSWYgdGhlIHJlcXVl
c3QgaXMgbnVsbCwgd2lsbFNlbmRSZXF1ZXN0IGNhbmNlbGxlZCB0aGUgbG9hZC4gV2Ugc2hvdWxk
CiAgICAgLy8gb25seSBkaXNwYXRjaCBkaWRGYWlsTG9hZGluZyBpbiB0aGlzIGNhc2UuCkBAIC0x
OTMsOCArMTk0LDggQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0Rl
bGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwKICAgICBpZiAoIXJlc3BvbnNl
LmlzTnVsbCgpKQogICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXIsIGlk
ZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlmIChkYXRhTGVuZ3RoID4gMCkKLSAgICAgICAg
ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5n
dGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgp
KQorICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlciwgaWRlbnRpZmllciwgKmJ1
ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKSB7CiAg
ICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCmluZGV4IDZkYTE2MDMyNWY0MmZlZjU0MGM2
YmQ1MGJiMTgyZTg2OWRhZGU5ZTMuLjJiMjVkOGEzZGQ2MTk0MGY1Y2FmNTRkYTljNzQ2NWIwYTI4
ZDM0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3Rp
Zmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5o
CkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlc291cmNlTG9hZE5vdGlmaWVyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSZXNvdXJjZUxvYWROb3RpZmllcik7CkBAIC01NSwxOCArNTYs
MTggQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkZXIq
LCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9h
ZGVyKiwgY29uc3QgdWludDhfdCosIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBTaGFy
ZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQg
ZGlkRmFpbFRvTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAog
ICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKiA9IG51bGxw
dHIpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVE
YXRhKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRG
aW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9pZCBzZW5kUmVtYWluaW5nRGVs
ZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1
ZmZlcj4sIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAg
ICAgYm9vbCBpc0luaXRpYWxSZXF1ZXN0SWRlbnRpZmllcihSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAppbmRleCA2ZGViYjI1ODhhM2U4MmIyMWM2MWQ3ZThmMzZlNGY0YmJiYTI1ZTYwLi42NjQ3
YzI3MDgxMTgwZWJjZWMyYjVjYTI5ZmQ2MGI3MjNhYjY0ODM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI5OSw5ICsyOTksOSBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpsb2FkRGF0YVVSTCgpCiAKICAgICAgICAgYXV0byBkYXRhU2l6ZSA9IGRlY29kZVJl
c3VsdC0+ZGF0YS5zaXplKCk7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgZGF0YVJlc3BvbnNl
ID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHVybCwgZGVjb2RlUmVzdWx0LnZh
bHVlKCkpOwotICAgICAgICB0aGlzLT5kaWRSZWNlaXZlUmVzcG9uc2UoZGF0YVJlc3BvbnNlLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRhdGFTaXplLCBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkZWNvZGVSZXN1bHQtPmRhdGEpKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGRhdGFSZXNwb25z
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBkYXRhU2l6
ZSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGVjb2RlUmVzdWx0LT5kYXRh
KSldKCkgewogICAgICAgICAgICAgaWYgKCF0aGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpICYm
IGRhdGFTaXplICYmIG1fcmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkhFQUQiKQotICAgICAgICAg
ICAgICAgIHRoaXMtPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShkYXRhKSwgZGF0YVNpemUsIERh
dGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgdGhpcy0+ZGlkUmVjZWl2
ZUJ1ZmZlcihkYXRhLCBkYXRhU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKIAogICAg
ICAgICAgICAgaWYgKCF0aGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAgICAgICAgICAg
ICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKQEAgLTMyOCw3ICszMjgsNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQog
ICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmFk
ZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAg
aWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzM2LDEwICszMzYsNyBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBGcmFnbQogICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKQogICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogCi0g
ICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKCpidWZmZXIpOwot
ICAgIGVsc2UKLSAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cisg
ICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdApAQCAtNTM5
LDcgKzUzNiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByLCBDb21wbGV0aW9uSGFuCiAgICAgICAgIGZyYW1lTG9hZGVy
KCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIG1fcmVzcG9uc2UpOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhlIGZvbGxv
d2luZyBhc3NlcnRpb25zIGFyZSBub3QgcXVpdGUgdmFsaWQgaGVyZSwgc2luY2UgYSBzdWJjbGFz
cwogICAgIC8vIG1pZ2h0IG92ZXJyaWRlIGRpZFJlY2VpdmVEYXRhIGluIGEgd2F5IHRoYXQgaW52
YWxpZGF0ZXMgdGhlbS4gVGhpcwpAQCAtNTQ3LDMwICs1NDQsMjIgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBsb25nIGwKICAgICAvLyBBU1NFUlQoY29uID09IGNvbm5lY3Rpb24pOwogICAgIC8vIEFTU0VS
VCghbV9yZWFjaGVkVGVybWluYWxTdGF0ZSk7CiAKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlw
ZSk7CisgICAgZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRh
UGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdU
Rk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0K
LXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKLXsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0
YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCi0gICAgQVNTRVJUKCFidWZm
ZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKLQogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlz
IGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwog
ICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhh
bXBsZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYuCiAgICAgUmVmPFJlc291cmNlTG9hZGVyPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGFkZERhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgs
IGJ1ZmZlci5nZXQoKSwgZGF0YVBheWxvYWRUeXBlKTsKKyAgICBhZGRCdWZmZXIoYnVmZmVyLCBk
YXRhUGF5bG9hZFR5cGUpOwogCiAgICAgLy8gRklYTUU6IElmIHdlIGdldCBhIHJlc291cmNlIHdp
dGggbW9yZSB0aGFuIDJCIGJ5dGVzLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJpZ2h0IHRoaW5n
LgogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcg
c3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBh
biBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRM
b2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2Zy
YW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSwgc3RhdGljX2Nhc3Q8aW50PihlbmNv
ZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtNzI5
LDE0ICs3MTgsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5
bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYKICAgICBkaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNl
aXZlRGF0YShkYXRhLCBsZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVz
KTsKKyAgICBkaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZEJ5dGVzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShi
dWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgZGlkUmVj
ZWl2ZUJ1ZmZlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKaW5kZXggOTA3NWNiYzBhMzA0MGVhMTUwYTg2MjVjZGEwODkwYjFl
ZTEzOGM3Mi4uMTA5OGU0ZjI3ODg5Y2RhN2IzYTljZmQ0ZDU0NmFlMmZkOWE3YzU2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTEwNyw4ICsxMDcsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAKQEAgLTE2Nyw4ICsxNjcsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNl
bGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsg
fQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNp
Z25lZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLSAgICAKICAgICB2b2lkIHNldFJlZmVycmVy
UG9saWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJl
clBvbGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQ
b2xpY3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KIApAQCAt
MTkyLDcgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSA9IDA7CiAKLSAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1
aW50OF90KiwgdW5zaWduZWQsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5
cGUpOworICAgIHZvaWQgYWRkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBE
YXRhUGF5bG9hZFR5cGUpOwogICAgIHZvaWQgbG9hZERhdGFVUkwoKTsKICAgICB2b2lkIGZpbmlz
aE5ldHdvcmtMb2FkKCk7CiAKQEAgLTIwMiw4ICsyMDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNw
b25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwg
UmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgU2hhcmVkQnVm
ZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCAzN2Qw
YmI4MjFhYmQ4NmE5YjU2MDZlMTI3ZWZjOTQxMmE1MWJiMWE5Li45NzJmMmFmMjI2MDNmNDI0Y2Q4
Nzc1ZjU5MTAxMGUyZDc2OTM4YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTUxOCwzMiArNTE4LDE1IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZVBvbGljeSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVy
ID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7Ci0gICAgICAgIGlmIChwcmV2aWV3TG9hZGVyLT5k
aWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgpKQorICAgICAgICBpZiAocHJldmlld0xvYWRlci0+
ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBs
ZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQot
Ci12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotI2lmIFVTRShRVUlDS19MT09LKQotICAg
IGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIuZ2V0KCkpIHsKLSAgICAg
ICAgaWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLmdldCgpKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0
YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKICAgICBBU1NFUlQobV9yZXNvdXJj
ZSk7CiAKICAgICBpZiAobV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID49
IDQwMCAmJiAhbV9yZXNvdXJjZS0+c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSkK
QEAgLTU1NSwxMyArNTM4LDEzIEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAvLyBhbnl0
aGluZyBpbmNsdWRpbmcgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0
OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCiAgICAgUmVmPFN1YnJlc291cmNlTG9h
ZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgYnVmZmVyLmNvcHlSZWYoKSwgZW5jb2RlZERh
dGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CisgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIAog
ICAgIGlmICghbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCkgewogICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291
cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7Cisg
ICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlci5tYWtlQ29udGlndW91cygp
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgK
aW5kZXggODMyYzlmMGU3M2QzODQ2NGE3OTVmNDAzODYwZjc5YzM0ZTczYmM3Zi4uM2RiZDUzMzhh
ZmU0OWI0Nzg1N2Q1MzQwOTc4ODc1MmVhYTFhZWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTczLDggKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25I
YW5kbGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CkBAIC05Miw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3Ry
aW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25D
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1Jl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBp
bnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAgICB2b2lkIG5vdGlmeURvbmUoTG9hZENvbXBs
ZXRpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
CmluZGV4IGNmMmRlMGM2MmQ5NWYzMzI1YjQyYjQ2ZTI0MDM3NzQ0MTA3NDJhMGQuLjNkMTkyODYy
ZjI3NzI5YjJmMzhkYjU0YmQ4MzY3OTk1MjVjMDE5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVy
ZW5jZV9jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7
IH0KLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1f
ZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSB7IG1fZGF0YS5hcHBlbmQoYnVmZmVyKTsgfQogICAgIHZvaWQgY2xl
YXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNv
dXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVz
cG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXJDbGllbnQuaAppbmRleCA4NGQ3OWIwYzk5ZGYxMGQ5OTM4MGI4NDgzMTczNzFi
YzFlODU3M2JmLi5jZWYwYzhmMWYxN2QwZjU3NjU5YTM1NDFiNTRmNjM4OTkwNjRiMWM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKQEAgLTM3
LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVGhyZWFkYWJsZUxvYWRlckNsaWVudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwpAQCAtNDQsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRE
YXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcg
Lyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwg
aW50IC8qZGF0YUxlbmd0aCovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCAvKiB1c2VTdHJMZW4gKi8pIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3Jh
cHBlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFw
cGVyLmgKaW5kZXggNDJhZTY0OTA5YTVlMGZlNDRjNmE1ZTAwNjBkNThjOTY0ZWM1NjA1MS4uZjM2
YTJkNDA3YWY4ODE1OTA0Mjg2NmI4NWU5ZTAxODYxZGFhYzcyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKQEAgLTY2
LDEwICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQorICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKQog
ICAgIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5ndGgpOworICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlciwgdXNlU3RyTGVuKTsKICAgICB9CiAKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggZGZmODk3
MDFjOTM5YmM3M2MzNzAzMmFkOWM0MmFkMjA2MzI2YWQ2ZS4uN2MwMzQ5NDVlZTAzYTc0ZjUzMzM5
YmI4MWZmYTBlMDZjNjljNzE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMjMxLDE0ICsyMzEsMTMgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXIKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFp
blRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIHVzZVN0ckxlbikKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGRhdGEsIGRhdGFM
ZW5ndGgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFJlZiB7ICptX3dv
cmtlckNsaWVudFdyYXBwZXIgfSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJl
cXVlc3RJZGVudGlmaWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVu
dFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdvcmtlclJlcXVlc3RJ
ZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gUmVmIHsgZGF0
YSB9LCB1c2VTdHJMZW5dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29y
a2xldEdsb2JhbFNjb3BlKCkpOwotICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVy
LT5kaWRSZWNlaXZlRGF0YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAg
cHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCB1c2VT
dHJMZW4pOwogICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyKTsKICAgICB9LCBtX3Rhc2tN
b2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmgKaW5kZXggNzIzYjQ1NmVjOGU5ZTMwNmZjMThjYzhmMzZkZTZkY2Q4YWUzMDQ3MC4uMzM5
ZDZmNDczMTBhMWVkMjg5MDM2YWQwYTQwNGYzOGE3YTI2ODYyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCkBAIC0xMDUsNyArMTA1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgLy8gQWxsIGV4ZWN1dGVkIG9uIHRoZSBtYWluIHRocmVhZC4KICAg
ICAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAgICAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAg
ICAgICAgIHZvaWQgZGlkRmluaXNoVGltaW5nKGNvbnN0IFJlc291cmNlVGltaW5nJikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA1MTk3OGY0MTIzODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRl
NWQ4NWE3Li5lZDc1NjY1MjZiMmQ3ZWZiZjFjNTE3MDIwOTVhODc5YmFmNTY5NDQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpt
YXliZUxvYWRGYWxsYmFja0Zvck1haW5FcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3Vy
Y2VEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCosIGludCwgbG9uZyBsb25nLCBib29sKQordm9p
ZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIGxvbmcgbG9uZywgYm9vbCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCBiOTYz
NTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNkZjcyMzY3MmEwLi5kMmFlYWVjM2UxNGM2M2JjYmY2
MDFlOWFhZjAyNGMxZjllYzQ3NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtOTUsNyArOTUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgU3Vic3RpdHV0ZURhdGEmKTsKICAgICB2b2lkIG1heWJlTG9hZE1haW5SZXNvdXJjZUZvclJl
ZGlyZWN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVEYXRhJik7CiAgICAgYm9v
bCBtYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25zZShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYWluUmVzb3VyY2VEYXRhUmVj
ZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSk7CisgICAgdm9pZCBtYWluUmVzb3VyY2VEYXRhUmVj
ZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBi
b29sIGFsbEF0T25jZSk7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsK
ICAgICB2b2lkIGZhaWxlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcAppbmRleCAyYmIzZmU3NWI5OTc3ZTgzMzIyYWUyNTgwZjcyMTJlZTViZjIxNjEwLi4yNTZl
ODliMjExYjM4YjJkMjFkY2Q2NjU3ODI2OWU2NjA3MzY3MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcApAQCAtNTEsNyArNTEsMTAgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikK
IHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGgu
aXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkK
KyAgICAgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgUmVmUHRy
IHsgJmRhdGEoKSB9KTsKKyAgICBlbHNlCisgICAgICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VB
bmREYXRhKHJlc3BvbnNlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1
bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggN2Iy
ZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNi4uNTRmZWVkMmNhNjQxMmI0NTIw
OTg3MGM3NzM0MzYwOWQ4NTA5Yjc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTk5LDkgKzk5LDkgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogICAgIG1fYXBwbGlj
YXRpb25DYWNoZVJlc291cmNlID0gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUobV9y
ZXNvdXJjZS0+dXJsKCksIHJlc3BvbnNlLCBtX3R5cGUpOwogfQogCi12b2lkIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEs
IGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChidWZmZXIp
OwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaAppbmRleCAwMmQ3
YWQ5N2EyOGQ0N2MzZmFiNWUzYmFiMDdlYmU5YjA2OWUyMzJkLi4wYjI5NjI4OGYzMWE0MzI1ZDQ4
NDlhNDQyZThhZTYwMmMxNzMxOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCkBA
IC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZv
aWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7
CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcAppbmRleCA1MDQ2NWNjNmMwMTMzZTVhNzc0NDVjZjk0NzMzM2ZlMjA2NDA4NjFk
Li5hMmRhZmM5ZDg3YzI2N2EyZjk1ZTQ4NTVmZGIwODRkYTI5ZDNmMjc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBp
bmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURh
dGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFs
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgbV9k
YXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+
c2l6ZSgpKTsKQEAgLTU1OCwxNSArNTU4LDE1IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZElt
YWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB2b2lkIENhY2hlZElt
YWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpOwotICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOworICAgIHVwZGF0
ZUJ1ZmZlckludGVybmFsKGRhdGEubWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZEltYWdl
Ojp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVChk
YXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJE
YXRhKTsKLSAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LCBsZW5ndGgpKTsKLSAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgp
OworICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGJ1ZmZlcik7CisgICAgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
CmluZGV4IGU4NDMwODcwYjQ4YWYzZGM5NWJiYTNjYWQxYTY0ZTA2OGFlMTU1MTMuLmE1ZGM2M2Yy
M2RiZDQxYTI3MGVlNTZjMzJhNDQxNzc3ZDZhZGRiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEo
KTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOwotICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGU7CiAKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hh
bmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZl
ckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHVwZGF0
ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBs
YWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggNzFlMTYwODJmZmU2
NTVkMTExZjE2OTkwZDEyMzA1MzViZWFjYmY5NS4uZDMzNjExMzIxM2ZiZWJmZjRlOTFmZjY1Zjgz
ZmZlMjRkM2U4YTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCwxMiArNDgsMTIgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6
OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUg
dHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9ySWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9
CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNl
OjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2Fj
aGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRhTGVuZ3RoID0g
ZW5jb2RlZFNpemUoKTsKLSAgICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3Vz
RGF0YUxlbmd0aCkKKyAgICBpZiAoZGF0YS5zaXplKCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0
YShwcmV2aW91c0RhdGFMZW5ndGgpOworICAgIHJldHVybiBkYXRhLmdldFNvbWVEYXRhKHByZXZp
b3VzRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQpAQCAtNzIsNyArNzIsNyBAQCB2
b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKICAgICAgICAgcHJldmlvdXNEYXRhU2l6ZSArPSBpbmNyZW1lbnRhbERh
dGEuc2l6ZSgpOwogCiAgICAgICAgIFNldEZvclNjb3BlPGJvb2w+IG5vdGlmeVNjb3BlKG1faW5J
bmNyZW1lbnRhbERhdGFOb3RpZnksIHRydWUpOwotICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS5kYXRhKCksIGluY3JlbWVudGFsRGF0YS5zaXplKCkp
OworICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS5j
cmVhdGVTaGFyZWRCdWZmZXIoKSk7CiAgICAgfQogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+
c2l6ZSgpKTsKIApAQCAtODksMTEgKzg5LDExIEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIH0KIH0K
IAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKLSAgICBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGRhdGEsIGxlbmd0aCk7Ci0gICAgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBub3RpZnlDbGllbnRzRGF0YVdhc1Jl
Y2VpdmVkKGJ1ZmZlcik7CisgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoYnVmZmVyKTsK
IH0KIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CkBAIC0xMTAsOSArMTEwLDkgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdAogICAgICAgICBpZiAo
ZGF0YSkgewogICAgICAgICAgICAgaWYgKGRhdGEgIT0gbV9kYXRhLmdldCgpKQogICAgICAgICAg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAgICAgICBpZiAo
YXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRh
KSkgeworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5j
cmVtZW50YWxEYXRhQ2h1bmsoKm1fZGF0YSkpIHsKICAgICAgICAgICAgICAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2Fz
UmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVu
dGFsRGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CkBAIC0xMzAsMTUgKzEzMCwxNSBA
QCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0CiAgICAgfQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFsZW5n
dGgpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
PiB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjID0g
dy5uZXh0KCkpCi0gICAgICAgIGMtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgbGVuZ3RoKTsK
KyAgICAgICAgYy0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOwogfQogCiBzdGF0aWMgdm9p
ZCBpdGVyYXRlUmVkaXJlY3RzKENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiYmIGhhbmRsZSwgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQmIGNsaWVudCwgVmVjdG9yPHN0ZDo6
cGFpcjxSZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2U+PiYmIHJlZGlyZWN0c0luUmV2
ZXJzZU9yZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MCw5ICsxNzAsOSBAQCB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGMpCiAgICAgICAgICAgICBp
ZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICAgICAgbV9kYXRhLT5mb3JFYWNoU2VnbWVu
dChbJl0oYXV0byYgc2VnbWVudCkgeworICAgICAgICAgICAgICAgIG1fZGF0YS0+Zm9yRWFjaFNl
Z21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoaGFzQ2xpZW50KCpjbGllbnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2xp
ZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgYnVm
ZmVyKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
ICghaGFzQ2xpZW50KCpjbGllbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCBhNzg2NWY4YWQxNzhhZWZiMzIyMGE1NmRjZmYxOTU5
OTNjZjk1YWU0Li4zNmU0N2ExZGJhMjMxMjhkYzUzMDczYjcwYjVmM2Y4NTM4MDRhZTZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAt
MjgsNiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNl
Q2xpZW50OwogY2xhc3MgUmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2UgZmluYWwg
OiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZp
bmFsOwotICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJ
Z25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KQEAgLTY2LDggKzY3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3aXRjaENsaWVudHNUb1Jl
dmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNv
ZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxh
Y2VtZW50OyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxj
dWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKikg
Y29uc3Q7Ci0gICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZm
ZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVm
ZmVyJikgY29uc3Q7CisgICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwogICAgIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgcHJl
dmlld1Jlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQuaAppbmRleCAyM2VhYjhkZjI5NThmZjhiNDlmMzU0NWI1MDgzZmUyOTg5ZWYxMjIwLi5jZDY1
MGEyZjMxMzZjZTliMjYyZmJkZmM4MjkyOGJmMjEwNzlmYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaApAQCAtMzEs
NiArMzEsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgOiBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgpAQCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiAvKiBk
YXRhICovLCBpbnQgLyogbGVuZ3RoICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRUaW1p
bmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
aW5kZXggOWRlMGEwNGNkNWVjNWYzZmFkMmZiMTZkN2IzMjJjODU4YTM4YTZiMi4uN2I5YzYxZjk2
NjE3NTQ2YjY2YmNjM2M2M2VjYTBlODU3ZTI2MmVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGlj
eTo6QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggYzk4MmRkNjkzN2EwYmMy
YmYzOGM0MjYxMjZmZmU2ZTc4Yzc5NjQ3OC4uNTM0ZTAxMmNjNGZhNWRkMmJlMWZkNmVlZTVhYTZh
ZTRlNWZhZTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZW5j
b2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4
dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51
bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5kZXggOTZkODk4
MmU5MzUwMzQ3Njk2ZmM5NjlkNTg1YWI3MDc1ZGUwMjBlZC4uY2EwMTkzNGQzMWJhNWQ1MDlmZWJl
N2QyZjkxMjI0OWQyNzEyNmFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTQ3LDggKzQ3LDcgQEAgcHVibGljOgogICAgIH5MZWdh
Y3lQcmV2aWV3TG9hZGVyKCk7CiAKICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lk
IGRpZEZhaWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLm1tCmluZGV4IDQ4NzU2YTMzYjU4NzJiNDRiMmYwYmEwODQyNDFmODZjZmFlYmNh
YTAuLmEyNGI4YzU5ZDQ2MGFmZjVlMmZlZjgzMTkwYzIwODY1NzIzNjVkMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTYzLDcg
KzYzLDcgQEAgc3RhdGljIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtYWtlQ2xpZW50
KGNvbnN0IFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGMKICAgICByZXR1cm4gZW1wdHlDbGllbnQo
KTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBMT0coTmV0
d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRoIHNpemUgJWxk
LiIsIGJ1ZmZlci5zaXplKCkpOwogICAgIG1fb3JpZ2luYWxEYXRhLmFwcGVuZChidWZmZXIpOwog
ICAgIG1fY29udmVydGVyLT51cGRhdGVNYWluUmVzb3VyY2UoKTsKLSAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZUJ1ZmZlcihidWZmZXIpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZm
ZXIpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNjIsOCArMTYyLDcgQEAgdm9pZCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0Nv
bnZlcnRlciYsIGNvbnMKICAgICBpZiAoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gZGF0YUNvcHkgPSBkYXRhLmNvcHkoKTsKLSAgICByZXNvdXJj
ZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGRhdGFDb3B5KSwgZGF0YUNvcHktPnNp
emUoKSwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVC
dWZmZXIoZGF0YSwgZGF0YS5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFBy
ZXZpZXdDb252ZXJ0ZXImKQpAQCAtMjQzLDExICsyNDIsNiBAQCBMZWdhY3lQcmV2aWV3TG9hZGVy
OjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291
cmNlUgogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBjcmVhdGVkIHdpdGgg
cHJldmlldyBmaWxlIG5hbWUgXCIlc1wiLiIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUo
KS51dGY4KCkuZGF0YSgpKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0
dXJuIGRpZFJlY2VpdmVCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKS5n
ZXQoKSk7Ci19Ci0KIGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogewogICAgIHJldHVybiAhbV9zaG91bGREZWNpZGVQ
b2xpY3lCZWZvcmVMb2FkaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCA2
MDI2MzFiYjdjZDEwODYwYjFhMzEyMTA0M2M5N2Q4ZWZlNDQ3NjFkLi42N2FjNzdlMmJmNzYxMDQ1
YzhjMThkNWM3YWRlYzdmNzMzOGFiNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNw
cApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CkBAIC0yMTAsMTMgKzIxMSwxMyBAQCB2b2lkIEV2ZW50U291cmNlOjpk
aXNwYXRjaEVycm9yRXZlbnQoKQogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6Ok5vKSk7CiB9CiAKLXZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCkKIHsKICAgICBBU1NFUlQobV9z
dGF0ZSA9PSBPUEVOKTsKICAgICBBU1NFUlQobV9yZXF1ZXN0SW5GbGlnaHQpOwogICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW1faXNTdXNwZW5kZWRGb3JCYWNr
Rm9yd2FyZENhY2hlKTsKIAotICAgIGFwcGVuZChtX3JlY2VpdmVCdWZmZXIsIG1fZGVjb2Rlci0+
ZGVjb2RlKGRhdGEsIGxlbmd0aCkpOworICAgIGFwcGVuZChtX3JlY2VpdmVCdWZmZXIsIG1fZGVj
b2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKTsKICAgICBwYXJzZUV2
ZW50U3RyZWFtKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCBkMDEyZDM3
N2QxOTc2NzVmMGZlMTE0NWYxNzE5ZjE3ZmRkYmZlYTNiLi5kNjYyYWUyODA2ZjRiMjQ4NjdiMDE2
MDhlMDRkYmI0Zjk3ZGJhMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC04NCw3
ICs4NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1D
b250ZW50RmlsdGVyLmgKaW5kZXggOWU3MmU0NGEyZWFjNGQ4ZWY3MzBiOTg3MWQwZWM1MDhlZDlm
YWM0NC4uNDYyY2YzYjg3NDIzMzg1YmU4M2EwMDJlNDNmNzQ0Nzc5OTg3ZWU0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKQEAgLTI2LDE1
ICsyNiwxNyBAQAogI2lmbmRlZiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXJfaAogI2RlZmluZSBQbGF0
Zm9ybUNvbnRlbnRGaWx0ZXJfaAogCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1Db250ZW50RmlsdGVyIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU0LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
flBsYXRmb3JtQ29udGVudEZpbHRlcigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSA9IDA7
CiAgICAgdmlydHVhbCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRh
KCkgY29uc3QgPSAwOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQzOTYxNTY4ODRiNGI3OWUzZTU1ZDU2
OTFkNzE4Yzg4NzVmZjlmZjcuLmI4NmQ0OWQ0YWYzM2M2NDU4MmI2YmVhNDA2MjI2MTU5OTJkNWFj
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMTM4LDcg
KzEzOCw3IEBAIFZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtlRGF0
YSgpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwogICAgIGlmIChoYXNPbmVT
ZWdtZW50KCkgJiYgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KG1fc2Vn
bWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKLSAgICAgICAgY29tYmluZWREYXRh
ID0gc3RkOjpleGNoYW5nZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNbMF0u
c2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOworICAgICAgICBj
b21iaW5lZERhdGEgPSBzdGQ6OmV4Y2hhbmdlKHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oY29u
c3RfY2FzdDxEYXRhU2VnbWVudCY+KG1fc2VnbWVudHNbMF0uc2VnbWVudC5nZXQoKSkubV9pbW11
dGFibGVEYXRhKSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOwogICAgIGVsc2UKICAgICAgICAgY29tYmlu
ZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwogCkBAIC0y
MzEsNiArMjMxLDggQEAgdm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjbGVhcigpCiAKIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5KCkg
Y29uc3QKIHsKKyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICByZXR1cm4gbV9zZWdtZW50
cy5zaXplKCkgPyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29w
eVJlZigpKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsK
ICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwpAQCAtMjQ4LDYgKzI1MCwxMyBA
QCB2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdAogICAgICAgICBhcHBseShTcGFuIHsgc2VnbWVudC5z
ZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpIH0pOwogfQogCit2b2lkIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoY29uc3Qg
RnVuY3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmKT4mIGFwcGx5KSBjb25zdAoreworICAg
IGF1dG8gcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH07CisgICAgZm9yIChhdXRvJiBzZWdt
ZW50IDogbV9zZWdtZW50cykKKyAgICAgICAgYXBwbHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Vn
bWVudC5zZWdtZW50LmNvcHlSZWYoKSkpOworfQorCiBib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAog
ewogICAgIGlmIChwcmVmaXguZW1wdHkoKSkKQEAgLTQxMyw3ICs0MjIsNyBAQCBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcigpCiAgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKIH0KIAotU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCitTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKIHsK
ICAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAw
LCBXVEZNb3ZlKHNlZ21lbnQpIH0pOwpAQCAtNjAxLDcgKzYxMCw3IEBAIHZvaWQgU2hhcmVkQnVm
ZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKCkKICAgICAgICAgbV9idWZmZXIgPSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYg
c2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9z
aXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShz
aXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkK
QEAgLTYxNyw3ICs2MjYsNyBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0
YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaQogCiBSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QK
IHsKLSAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAg
Y29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwogICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAogICAgICAgICBb
c2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCmluZGV4IGMyN2M5MjY5ZmZlZjI0OWFiNWU4YWJhMjRkNzYyZmM0MGMxYzIz
MDAuLjM0ODRhNmE1M2I4MDQwNjRiZTU3YTI4M2VmNDE4YThhNjJkNTg5YTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xNzgsMTIgKzE3OCwxMyBAQCBwdWJsaWM6
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1
ZmZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYpPiYpIGNvbnN0Owog
CiAgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2Vl
cCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAg
ICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247Ci0gICAgICAgIFJlZjxEYXRhU2VnbWVudD4gc2Vn
bWVudDsKKyAgICAgICAgY29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBzZWdtZW50OwogICAg
IH07CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CkBAIC0yNTksNyArMjYwLDEw
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQogICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKCkpOwogICAgICAgICBl
bHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKLSAgICAgICAgICAgICYmIChz
dGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAg
ICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPGNvbnN0IERhdGFTZWdtZW50Pj4gJiYuLi4p
KQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9m
Li4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxzdGQ6OnJlbW92
ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PEFyZ3M+PiwgRGF0YVNlZ21lbnQ+ICYm
Li4uKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBh
dXRvIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pOwpAQCAtMjg2LDggKzI5MCwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyKGNv
bnN0IERhdGFTZWdtZW50JiBzZWdtZW50KQorICAgICAgICA6IFNoYXJlZEJ1ZmZlcihSZWY8Y29u
c3QgRGF0YVNlZ21lbnQ+IHsgc2VnbWVudCB9KSB7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxjb25zdCBEYXRhU2Vn
bWVudD4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCk7CkBAIC0zNTksNyArMzY1LDcgQEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAKIGNsYXNzIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmll
dyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0g
c3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhj
b25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdt
ZW50OyB9CkBAIC0zNzAsNyArMzc2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgot
ICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxjb25z
dCBEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0
aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5oCmluZGV4IGNiZTg3NzFhNDVkODYyY2I1YWIwNWVjYTM5OTkyN2UwNzgzOGY1NDAu
LjEyNTMxOWJjYjM4ZTcxYmE3OTVhNmFmZDJkZDEzZmJkMTlhMmQzYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCAyZWYyNzAxZmU2Nzhi
ZjliOTJkYjIxMmJiZWE1YzkxNWEzZmMzYTJmLi5mODc3OTdjY2Q1MGI5YWI1ZWE0OGMyNTFlNDJm
MDBiNWZiZjRmYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtMTQ1LDEyICsx
NDUsMTIgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNl
aXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXMKICAgICBzZW1hcGhvcmUud2FpdCgpOwog
fQogCi12b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyOjphZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBSZXRhaW5QdHI8
TlNEYXRhPiBjb3BpZWREYXRhIHsgW05TRGF0YSBkYXRhV2l0aEJ5dGVzOih2b2lkKilkYXRhIGxl
bmd0aDpsZW5ndGhdIH07CisgICAgYXV0byBuc0RhdGEgPSBkYXRhLmNyZWF0ZU5TRGF0YSgpOwog
CiAgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKLSAgICBbbV9uZUZpbHRlclNvdXJjZSBy
ZWNlaXZlZERhdGE6Y29waWVkRGF0YS5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6W3RoaXMsICZzZW1h
cGhvcmVdKE5FRmlsdGVyU291cmNlU3RhdHVzIHN0YXR1cywgTlNEaWN0aW9uYXJ5ICpkZWNpc2lv
bkluZm8pIHsKKyAgICBbbV9uZUZpbHRlclNvdXJjZSByZWNlaXZlZERhdGE6bnNEYXRhLmdldCgp
IGRlY2lzaW9uSGFuZGxlcjpbdGhpcywgJnNlbWFwaG9yZV0oTkVGaWx0ZXJTb3VyY2VTdGF0dXMg
c3RhdHVzLCBOU0RpY3Rpb25hcnkgKmRlY2lzaW9uSW5mbykgewogICAgICAgICBoYW5kbGVEZWNp
c2lvbihzdGF0dXMsIHJlcGxhY2VtZW50RGF0YUZyb21EZWNpc2lvbkluZm8oZGVjaXNpb25JbmZv
KSk7CiAgICAgICAgIHNlbWFwaG9yZS5zaWduYWwoKTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlci5oCmluZGV4IDY3OWFlOTMyOTUxN2UxZjM5NDNiYTU3NjJhYzhmNTZlODYwYzhjMjUu
LmQ1ZmExMzMwYjE2MmNjY2NlMjJlOTQ3NTg2MTVhNmUwMTEyMmQwNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGUgeyB9CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJy
aWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIubW0KaW5kZXggMWM5NjA0NzE2YjQyNjkzZDVlNDZjMmUyM2U5NDFkYTAwYzgzZTRkZS4uYTY1
MTE1Y2ViMTIyMjM2NzdmMDlhNGEzZGE5OWI0YWM3MjY4ZGYyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIubW0KQEAgLTk0LDEwICs5NCwxMCBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwog
ICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7CiB9CiAKLXZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQg
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIEFTU0VSVCghW21fcmVwbGFjZW1lbnREYXRhIGxlbmd0aF0pOwotICAg
IG1fcmVwbGFjZW1lbnREYXRhID0gW21fd2ViRmlsdGVyRXZhbHVhdG9yIGFkZERhdGE6W05TRGF0
YSBkYXRhV2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5E
b25lOk5PXV07CisgICAgbV9yZXBsYWNlbWVudERhdGEgPSBbbV93ZWJGaWx0ZXJFdmFsdWF0b3Ig
YWRkRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKICAgICB1cGRhdGVGaWx0ZXJTdGF0
ZSgpOwogICAgIEFTU0VSVChuZWVkc01vcmVEYXRhKCkgfHwgW21fcmVwbGFjZW1lbnREYXRhIGxl
bmd0aF0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQmFja2luZ1N0b3JlLmgKaW5kZXggZGUzM2YxYWY0MTJkYzA4YjJiOTYxYTE5NDk0NWM5Y2M5
MGFhNjYyNS4uYTQ3NTA3NGExMDhhMWI1ODdiM2I2YThiOTg4MDU5ZGFkZTQ3ZTU0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9y
ZS5oCkBAIC0yMzMsNiArMjMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFBhY2tlZENv
bG9yOjpBUkdCIHsgcmVzdWx0IH0udmFsdWU7CiAgICAgfQogCisgICAgLy8gbV9waXhlbHMgdHlw
ZSBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIHRoZSBvbmUgc2V0IGluIEltYWdlQmFja2luZ1N0b3Jl
Q2Fpcm8uY3BwCiAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
PiBtX3BpeGVsczsKICAgICB1aW50MzJfdCogbV9waXhlbHNQdHIgeyBudWxscHRyIH07CiAgICAg
SW50U2l6ZSBtX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCmluZGV4IDg4NjkxZGMy
NTZkNmRkNmM0NWY0NmUwMTU0OTY3NDI0NWFhMzUzMzcuLmM5NThmODQ0ZGFjMTQzOTRlMjRkZWZl
YWJhNzU0ZjlkOGE4MTI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC01MSw5
ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0
KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBs
b25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgLy8gVGhpcyBtZXRo
b2Qgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1c2VzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIuCi0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmIHBsYXRmb3JtLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKSB7IGRhdGFSZWNlaXZlZChwbGF0Zm9ybSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
bGVuZ3RoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVjMGE3YWNmNDcz
MjYxYzc0ZTdlZWZmYWRjOWNjYzNjM2U1N2YyMjguLjc3MDhhNThkMmI1ODA4Yjk0MDAyZDIwNWU5
OGEyN2JiMmNlNmYzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIFdlYkNvcmVBVkNG
UmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
dWludDhfdCosIGludCkKK3ZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAg
ICBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShyZXNvdXJjZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaAppbmRleCBjZGYxNDNmM2Mz
Y2RlOTcxZmQ3OWRjZjczMjhiZmNkN2IzMjYwMmRjLi42MjY3YmUwMGM1NGVlNjE3MDJmYjc3YjJh
NWZiNTY3YjI3ZWI5ZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZD
RlJlc291cmNlTG9hZGVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENh
Y2hlZFJlc291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW0KaW5kZXggZjkyMWYzZGEwZTY5YjMzOTk3N2M5ZTNlNDk2NjdhMjhm
NWU5NWNiZC4uNzI2NDcyNWM4ZTU2MjJkZjM4YjQ1YmNkOTlhYzc4NzU1YjllYjg4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpA
QCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2
b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZp
bmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVk
QnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBmdWxmaWxsUmVx
dWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdCBOCiAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiB9CiAK
LXZvaWQgQ2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCosIGludCkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
U2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwog
ICAgIGlmIChhdXRvKiBkYXRhID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKQEAgLTE1Niw3
ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0
KSk7IH0KICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcs
IHVuc2lnbmVkIGxvbmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7
IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQo
ZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQpAQCAt
MjExLDkgKzIxMSw5IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmlu
aXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIFBsYXRmb3Jt
UmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUGxhdGZvcm1SZXNv
dXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlcik7CiAgICAgbV9wYXJlbnQubmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggOTMwMTkwOTk0NWI0YTIz
ZDY2NzgyZjM1MGI1NmU0NDc5ZjgwMjZmMi4uYjdiMDdmZjE0NTRkNTYxYTMwMjEwOGFlMzIyOTFl
OGY4MzQzN2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBs
b2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olll
cyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRf
V0VCX1NSQyhtX3NyYy5nZXQoKSk7CkBAIC0xMTA3LDcgKzExMDcsNyBAQCB2b2lkIENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgUmVmPEZyYQogICAgIC8vIHRoYXQgZmlyc3QgcGFja2FnZSBkZWxpdmVyeSB3b3VsZCBpbmNs
dWRlIHRoZSB0aW1lIG9mIHNlbmRpbmcgb3V0IHRoZSByZXF1ZXN0IGFuZCBnZXR0aW5nIHRoZSBk
YXRhIGJhY2suIFNpbmNlIHdlIGNhbid0IGRpc3Rpbmd1aXNoIHRoZQogICAgIC8vIHNlbmRpbmcg
dGltZSBmcm9tIHRoZSByZWNlaXZpbmcgdGltZSwgaXQgaXMgYmV0dGVyIHRvIGlnbm9yZSBpdC4K
ICAgICBpZiAoIXN0ZDo6aXNuYW4obWVtYmVycy0+ZG93bmxvYWRTdGFydFRpbWUpKSB7Ci0gICAg
ICAgIG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzICs9IGJ1ZmZlci0+c2l6ZSgpOworICAg
ICAgICBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyArPSBkYXRhLnNpemUoKTsKICAgICAg
ICAgZG91YmxlIHRpbWVTaW5jZVN0YXJ0ID0gKFdhbGxUaW1lOjpub3coKSAtIG1lbWJlcnMtPmRv
d25sb2FkU3RhcnRUaW1lKS5zZWNvbmRzKCk7CiAgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3Jj
LCAiUiV1OiBkb3dubG9hZGVkICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBieXRlcyBpbiAlZiBzZWNv
bmRzID1+ICUxLjBmIGJ5dGVzL3NlY29uZCIsIG1fcmVxdWVzdE51bWJlciwgbWVtYmVycy0+dG90
YWxEb3dubG9hZGVkQnl0ZXMsIHRpbWVTaW5jZVN0YXJ0CiAgICAgICAgICAgICAsIHRpbWVTaW5j
ZVN0YXJ0ID8gbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgLyB0aW1lU2luY2VTdGFydCA6
IDApOwpAQCAtMTExNSwyMCArMTExNSwxOSBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYQogICAg
ICAgICBtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSA9IFdhbGxUaW1lOjpub3coKTsKICAgICB9
CiAKLSAgICBidWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAg
ICAgIGludCBsZW5ndGggPSBzZWdtZW50LnNpemUoKTsKLSAgICAgICAgR1NUX0xPR19PQkpFQ1Qo
c3JjLCAiUiV1OiBIYXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBtX3JlcXVlc3ROdW1iZXIsIGxlbmd0
aCk7CisgICAgaW50IGxlbmd0aCA9IGRhdGEuc2l6ZSgpOworICAgIEdTVF9MT0dfT0JKRUNUKHNy
YywgIlIldTogSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgbV9yZXF1ZXN0TnVtYmVyLCBsZW5ndGgp
OwogCi0gICAgICAgIG1lbWJlcnMtPnJlYWRQb3NpdGlvbiArPSBsZW5ndGg7Ci0gICAgICAgIEFT
U0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBvc2l0aW9uIDw9IG1lbWJl
cnMtPnNpemUpOworICAgIG1lbWJlcnMtPnJlYWRQb3NpdGlvbiArPSBsZW5ndGg7CisgICAgQVNT
RVJUKCFtZW1iZXJzLT5oYXZlU2l6ZSB8fCBtZW1iZXJzLT5yZWFkUG9zaXRpb24gPD0gbWVtYmVy
cy0+c2l6ZSk7CiAKLSAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKEdTVF9FTEVNRU5U
X0NBU1Qoc3JjKSwgZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQoR1NUX09CSkVDVF9DQVNUKHNyYyks
Ci0gICAgICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGlj
cyIsICJyZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9u
LCAic2l6ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7CisgICAg
Z3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKEdTVF9FTEVNRU5UX0NBU1Qoc3JjKSwgZ3N0X21lc3Nh
Z2VfbmV3X2VsZW1lbnQoR1NUX09CSkVDVF9DQVNUKHNyYyksCisgICAgICAgIGdzdF9zdHJ1Y3R1
cmVfbmV3KCJ3ZWJraXQtbmV0d29yay1zdGF0aXN0aWNzIiwgInJlYWQtcG9zaXRpb24iLCBHX1RZ
UEVfVUlOVDY0LCBtZW1iZXJzLT5yZWFkUG9zaXRpb24sICJzaXplIiwgR19UWVBFX1VJTlQ2NCwg
bWVtYmVycy0+c2l6ZSwgbnVsbHB0cikpKTsKKworICAgIGNoZWNrVXBkYXRlQmxvY2tzaXplKGxl
bmd0aCk7CisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RCdWZmZXJOZXdXcmFwcGVkRmFzdChm
YXN0TWVtRHVwKGRhdGEuZGF0YSgpLCBsZW5ndGgpLCBsZW5ndGgpOworICAgIGdzdF9hZGFwdGVy
X3B1c2gobWVtYmVycy0+YWRhcHRlci5nZXQoKSwgYnVmZmVyKTsKIAotICAgICAgICBjaGVja1Vw
ZGF0ZUJsb2Nrc2l6ZShsZW5ndGgpOwotICAgICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdEJ1
ZmZlck5ld1dyYXBwZWRGYXN0KGZhc3RNZW1EdXAoc2VnbWVudC5kYXRhKCksIGxlbmd0aCksIGxl
bmd0aCk7Ci0gICAgICAgIGdzdF9hZGFwdGVyX3B1c2gobWVtYmVycy0+YWRhcHRlci5nZXQoKSwg
YnVmZmVyKTsKLSAgICB9KTsKICAgICBzdG9wTG9hZGVySWZOZWVkZWQoc3JjLCBtZW1iZXJzKTsK
ICAgICBtZW1iZXJzLT5yZXNwb25zZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VE
ZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5oCmluZGV4IDljNDA1NTc4MjQxZDBjNTEyNzAyOTUxNWMyMjEyNjU4Zjhj
NGY2OGEuLmIyODk2YWUzMGExYjhjYzNkZjEyYTA3NDEyY2Y1MDIyMTdmYzY4MzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VE
ZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuaApAQCAtNzYsOSArNzYsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtl
Q29udGlndW91cygpOwotICAgICAgICBpZiAoY29udGlndW91c0RhdGEtPmRhdGEoKSkKLSAgICAg
ICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYo
KTsKKyAgICAgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworCiAgICAgICAgIGlm
IChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxl
KSB7CiAgICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAg
ICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKQEAgLTE5NCw3ICsxOTMsNyBA
QCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRy
PGNvbnN0IFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFZlY3RvcjxTY2FsYWJsZUltYWdlRGVj
b2RlckZyYW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2FjaGUgV1RGX0dVQVJERURfQllfTE9DSyhtX2xv
Y2spOwogICAgIG11dGFibGUgTG9jayBtX2xvY2s7CiAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxw
aGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9h
dmlmL0FWSUZJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKaW5kZXggMjZmODg2NDk2ZTVhNWExNGUy
OGFmYjFhZmE5YmZjMzAxNzdmNTFjZi4uZDY4YzBhMzVmYzFmNGFiNjAxN2JkMzllZTQzOTEwMjY4
MzVmYzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcApAQCAtNDEsNyArNDEsNyBA
QCBBVklGSW1hZ2VSZWFkZXI6OkFWSUZJbWFnZVJlYWRlcihSZWZQdHI8QVZJRkltYWdlRGVjb2Rl
cj4mJiBkZWNvZGVyKQogCiBBVklGSW1hZ2VSZWFkZXI6On5BVklGSW1hZ2VSZWFkZXIoKSA9IGRl
ZmF1bHQ7CiAKLWJvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
Citib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01l
bW9yeShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFW
SUZfUkVTVUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVy
LT5zZXRGYWlsZWQoKSA6IGZhbHNlOwpAQCAtNTgsNyArNTgsNyBAQCBib29sIEFWSUZJbWFnZVJl
YWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmIGRhdAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVj
b2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1
ZmZlciwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpCit2
b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQog
ewogICAgIGlmIChtX2RlY29kZXItPmZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFn
ZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9B
VklGSW1hZ2VSZWFkZXIuaAppbmRleCA0OTZmNjlmODEyYmQ3NWIwZWRhNjM1N2JhYTg2MGNmY2Ni
NWJhNGIzLi44NWFjYjE3Y2JjZmM1ODg1ZDZhYzU1MjVjN2I1YzllZmZjNThjNjY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFn
ZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2
aWYvQVZJRkltYWdlUmVhZGVyLmgKQEAgLTM5LDggKzM5LDggQEAgcHVibGljOgogICAgIEFWSUZJ
bWFnZVJlYWRlcihSZWZQdHI8QVZJRkltYWdlRGVjb2Rlcj4mJik7CiAgICAgfkFWSUZJbWFnZVJl
YWRlcigpOwogCi0gICAgYm9vbCBwYXJzZUhlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIGRlY29k
ZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Jik7CisgICAgYm9vbCBwYXJzZUhlYWRl
cihjb25zdCBTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBk
ZWNvZGVGcmFtZShzaXplX3QgaW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25z
dCBTaGFyZWRCdWZmZXImKTsKICAgICBzaXplX3QgaW1hZ2VDb3VudCgpIGNvbnN0OwogICAgIGRv
dWJsZSByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAppbmRl
eCBiZDQzMGU4YThiZWEyYzgxNmIyYzUyMmJmNWJhNzg4NDZjMzhlMGZmLi5jMzE0MTM0NzlkNDMy
NTFiMjc4ZWRkNjdhNDQxOTE2ZjA4MDIxOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaApAQCAt
NDIsNyArNDIsNyBAQCBjbGFzcyBCTVBJbWFnZVJlYWRlciB7CiBwdWJsaWM6CiAgICAgLy8gUmVh
ZCBhIHZhbHVlIGZyb20gfGRhdGFbb2Zmc2V0XXwsIGNvbnZlcnRpbmcgZnJvbSBsaXR0bGUgdG8g
bmF0aXZlCiAgICAgLy8gZW5kaWFubmVzcy4KLSAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJl
YWRVaW50MTYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEs
IGludCBvZmZzZXQpCisgICAgc3RhdGljIGlubGluZSB1aW50MTZfdCByZWFkVWludDE2KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IHJlc3VsdDsKICAgICAgICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCAy
KTsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIAotICAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0
aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBp
bnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgdWludDMyX3QgcmVzdWx0OwogICAgICAgICBtZW1j
cHkoJnJlc3VsdCwgJmRhdGEuZGF0YSgpW29mZnNldF0sIDQpOwpAQCAtNjksNyArNjksNyBAQCBw
dWJsaWM6CiAgICAgQk1QSW1hZ2VSZWFkZXIoU2NhbGFibGVJbWFnZURlY29kZXIqIHBhcmVudCwg
c2l6ZV90IGRlY29kZWRBbmRIZWFkZXJPZmZzZXQsIHNpemVfdCBpbWdEYXRhT2Zmc2V0LCBib29s
IHVzZXNBbmRNYXNrKTsKIAogICAgIHZvaWQgc2V0QnVmZmVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVy
RnJhbWUqIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IGJ1ZmZlcjsgfQotICAgIHZvaWQgc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0
YTsgfQorICAgIHZvaWQgc2V0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIHsgbV9kYXRh
ID0gJmRhdGE7IH0KIAogICAgIC8vIERvZXMgdGhlIGFjdHVhbCBkZWNvZGluZy4gSWYgfG9ubHlT
aXplfCBpcyB0cnVlLCBkZWNvZGluZyBvbmx5CiAgICAgLy8gcHJvZ3Jlc3NlcyBhcyBmYXIgYXMg
bmVjZXNzYXJ5IHRvIGdldCB0aGUgaW1hZ2Ugc2l6ZS4gUmV0dXJucwpAQCAtMjcyLDcgKzI3Miw3
IEBAIHByaXZhdGU6CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogbV9idWZmZXI7CiAK
ICAgICAvLyBUaGUgZmlsZSB0byBkZWNvZGUuCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOwogCiAgICAgLy8gQW4gaW5kZXggaW50byB8bV9kYXRhfCByZXByZXNlbnRpbmcg
aG93IG11Y2ggd2UndmUgYWxyZWFkeSBkZWNvZGVkLgogICAgIHNpemVfdCBtX2RlY29kZWRPZmZz
ZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IDEwODJmZGYwZGZmMjM5MWU1NjUzMGE0MWY4
N2JhNDM5ODIzMjc1MzUuLmQ2YmZmYzEyYjFlMWU0NmQ0M2QwNDdlZGRjMmFkOTRiNWM4NTUzZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGljOgogICAg
IHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNl
dERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRh
OyB9CiAgICAgLy8gRklYTUU6IGhhbHRBdEZyYW1lIHNob3VsZCBiZSBzaXplX3QuCiAgICAgYm9v
bCBkZWNvZGUoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpHSUZRdWVyeSwgdW5zaWduZWQgaGFs
dEF0RnJhbWUpOwogCkBAIC0zMTYsNiArMzE2LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEdJRkZyYW1lQ29udGV4dD4gPiBtX2ZyYW1lczsKICAgICBzaXplX3QgbV9j
dXJyZW50RGVjb2RpbmdGcmFtZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBib29sIG1fcGFyc2VDb21wbGV0ZWQ7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZjQyM2NjYzljZTEyN2VmN2FlNzZj
OTEyODI0YWJlODc3M2ZiNzJkMS4uNDM1MDM1OGYzYmVlYjlmMjQ1ODYzY2U3ZTAwYWU4Mjc1MGRl
NzRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0zMTcsNyArMzE3LDcg
QEAgcHVibGljOgogICAgICAgICBtX2J5dGVzVG9Ta2lwID0gc3RkOjptYXgobnVtQnl0ZXMgLSBi
eXRlc1RvU2tpcCwgc3RhdGljX2Nhc3Q8bG9uZz4oMCkpOwogICAgIH0KIAotICAgIGJvb2wgZGVj
b2RlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29s
IG9ubHlTaXplKQorICAgIGJvb2wgZGVjb2RlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBvbmx5U2l6ZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IG9ubHlTaXpl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
MjA0NzNmMGVlZWJiNTZjNzEzMTRmNjU1NmJkYTA5MDMzNDkwNzQ0Mi4uOTMzYTAxM2YyMWM0N2U5
Y2I3OTllYjcyYWJiN2UzOGNmYWIxYTY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcy
MDAwSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgSlBFRzIwMDBJbWFn
ZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAg
ICB9CiAKICAgICBzdHJ1Y3QgUmVhZGVyIHsKLSAgICAgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmIGRhdGE7CisgICAgICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YTsK
ICAgICAgICAgc2l6ZV90IG9mZnNldDsKICAgICB9IHJlYWRlciA9IHsgKm1fZGF0YSwgMCB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IDI3MDliN2M2OGJmNTMwZDE5NWQ3NjY2
YTNkNmFjZTUwMDEzYmJlMzQuLjQwNDk2M2E0NzljMDVmYzBjNmQ1YzMwZWI3YmVjNzgxNTY5YWI5
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVi
bGljOgogICAgICAgICBtX3JlYWRPZmZzZXQgPSAwOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2Rl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIHNp
emVPbmx5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSkKKyAgICBib29sIGRlY29kZShjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKQogICAg
IHsKICAgICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0gc2l6ZU9ubHk7CiAgICAgICAgIFBOR0lt
YWdlRGVjb2RlciogZGVjb2RlciA9IHN0YXRpY19jYXN0PFBOR0ltYWdlRGVjb2Rlcio+KHBuZ19n
ZXRfcHJvZ3Jlc3NpdmVfcHRyKG1fcG5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCBiMWJlYzU1ZTc4YzQzNDgwMWMyNTRhY2UwZGY1OTkzMWEzNmI3NGJkLi43NzJlODMy
NjZlMjMwZWI2ZGZmN2RjMWVmN2RiNTUyMzk2M2JmYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdl
RGVjb2Rlci5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdFQlBJbWFnZURlY29kZXI6OmRl
Y29kZShzaXplX3QgZnJhbWVJbmRleCwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gVGhp
cyBjYW4gYmUgZXhlY3V0ZWQgYm90aCBpbiB0aGUgbWFpbiB0aHJlYWQgKHdoZW4gbm90IHVzaW5n
IGFzeW5jIGRlY29kaW5nKSBvciBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLgogICAgIC8vIFdoZW4g
ZXhlY3V0ZWQgaW4gdGhlIGRlY29kaW5nIHRocmVhZCwgYSBjYWxsIHRvIHNldERhdGEoKSBmcm9t
IHRoZSBtYWluIHRocmVhZCBtYXkgY2hhbmdlIHRoZSBkYXRhCiAgICAgLy8gdGhlIFdlYlBEZW11
eGVyIGlzIHVzaW5nLCBsZWF2aW5nIGl0IGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSwgc28gd2Ug
bmVlZCB0byBwcm90ZWN0IHRoZSBkYXRhLgotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOworICAgIFJlZlB0cjxjb25z
dCBTaGFyZWRCdWZmZXI+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKICAgICBXZWJQRGF0YSBpbnB1
dERhdGEgPSB7IHByb3RlY3RlZERhdGEtPmRhdGEoKSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07
CiAgICAgV2ViUERlbXV4U3RhdGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11
eGVyID0gV2ViUERlbXV4UGFydGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHAKaW5kZXggYmE4ZmQ0ZmY0ZjFlNDFjOWFkNGZhNzRhNDJiZTRlMmJkMTFhYTg0My4u
ZGNhYzU5OTdhNjEzNWQyYWI3NTlhN2FkMmViYjA0MzUyZDUxNGE3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5j
cHAKQEAgLTM2LDkgKzM2LDExIEBAIFJlc291cmNlSGFuZGxlQ2xpZW50OjpSZXNvdXJjZUhhbmRs
ZUNsaWVudCgpID0gZGVmYXVsdDsKIAogUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhh
bmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VI
YW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgp
CiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBidWZmZXIu
Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgeworICAgICAg
ICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOworICAg
IH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggYzRmMDU0ODVmMjg3MGIxMTZkYTdjNzYwZDNj
MGZjZTk2ZWMyYjRhNS4uZTQ0MmM5NzM0YzExOTg0OTBhMWM2Y2FjNTc3MjVmZDUxOTZiM2JiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuaApAQCAtNDQsMTMgKzQ0LDE0IEBAIE9CSkNfQ0xBU1MgTlNDYWNoZWRVUkxS
ZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOwogY2xhc3MgQ3JlZGVudGlhbDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBj
bGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBS
ZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogZW51bSBDYWNoZVN0b3JhZ2VQb2xpY3kgewogICAg
IFN0b3JhZ2VBbGxvd2VkLApAQCAtNjUsOSArNjYsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypi
eXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsg
fQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpOwotICAgIAorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDRjMDQyMTBjNWE1MTNhYzNmNTQ3MTQ2ZDlmODVjODJiZDg4MTM3NzYuLjMwYjRi
YjBmZGFlZjdhZTJjYzc0YWM2MDlmN2IwMDk5N2U1YTZkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQu
Y3BwCkBAIC03MSw5ICs3MSw5IEBAIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJl
Y2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSCiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCit2b2lkIFN5bmNocm9ub3VzTG9hZGVy
Q2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQogewotICAgIG1fZGF0YS5hcHBl
bmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOwogfQogCiB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9u
b3VzTG9hZGVyQ2xpZW50LmgKaW5kZXggNjgzOGU5ZDhjZjQzNzk2ZDJmMzk0YmExZjU0ZjA5ZDBi
NjdlOGFiZC4uYzRjYjcyZGM3YTY1NWZkMzY5NmEzMzNmZTA1Y2RlZDYyOTc2YWZhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNM
b2FkZXJDbGllbnQuaApAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVl
dWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3luY2hyb25vdXNMb2FkZXJNZXNzYWdl
UXVldWU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN5bmNocm9ub3VzTG9hZGVyTWVzc2Fn
ZVF1ZXVlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN5bmNocm9ub3VzTG9hZGVy
TWVzc2FnZVF1ZXVlKTsgfQpAQCAtNjYsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgLyplbmNv
ZGVkRGF0YUxlbmd0aCovKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgq
Lykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogI2lmIFVTRShQ
Uk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
bW0KaW5kZXggZmMyNzI1NDA4OTJiOGUyY2Q3N2RlOGY2ZDllNTRhOGM4YjU5N2Y2MS4uMTk4MTRh
MzY1YzlmNjYxYTIxYzIyOWFkYmQwNDYxMWMyMDk0N2U2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAK
ICAgICAgICAgICAgIHNpemVfdCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlciA9IHN0ZDo6bWlu
KGJ1ZmZlclZpZXcuc2l6ZSgpLCByYW5nZS5lbmQgLSBieXRlSW5kZXggKyAxKTsKICAgICAgICAg
ICAgIGJ5dGVJbmRleCArPSBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcjsKLSAgICAgICAgICAg
IFt0YXNrIHJlc291cmNlOm51bGxwdHIgcmVjZWl2ZWREYXRhOlNoYXJlZEJ1ZmZlckRhdGFWaWV3
KGJ1ZmZlclZpZXcsIGJ5dGVzRnJvbVRoaXNWaWV3VG9EZWxpdmVyKS5jcmVhdGVTaGFyZWRCdWZm
ZXIoKV07CisgICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpT
aGFyZWRCdWZmZXJEYXRhVmlldyhidWZmZXJWaWV3LCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZl
cikuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpXTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoYnl0ZUluZGV4ID49IHJhbmdlLmVuZCkgewogICAgICAgICAgICAgW3Rhc2sgcmVz
b3VyY2VGaW5pc2hlZDpudWxscHRyIG1ldHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CkBA
IC0yMzgsNyArMjM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKKyAgICB2b2lkIGRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgZmlu
YWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICgh
bV9nZW5lcmF0b3IpCkBAIC0yNDYsNyArMjQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byog
ZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAo
IWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFwcGVuZChidWZmZXIpOwog
ICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdl
cygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCmluZGV4IGY5MDk2ZWUyZTlm
MjQyZmYwNGQ3MDVjMmFhMTA5M2E1NWU1NzM1ZGIuLmVhNGE5YmYyOTc4MjllYmQwMjkxNDc2Y2Jm
OGE3ZTU0OTQ3MjEyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCkBAIC0xNTgsNyArMTU4LDcg
QEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmpl
Y3QgewogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQg
dG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50
OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxl
cjsKIC0gKEJPT0wpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YTsKKy0gKHZvaWQpcmVzb3VyY2U6KG51
bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRE
YXRhOihSZXRhaW5QdHI8TlNEYXRhPiYmKWRhdGE7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJs
ZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJl
Y3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRp
b25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJjZToo
bnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmFp
bGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbQppbmRleCA1ZTJlOGU4ZDlkNzY2NzJhMjQxNGY3NmY1YzA4ZjI1OWUw
MjlmNTA0Li4zYzhiZTA4YzI5MzRlNTRkYTNiNzQ5Y2E2ZGEzNGVkYTk2ZGM5YjhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLm1tCkBAIC02MDgsNyArNjA4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2Uo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9u
ZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xD
aGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
QEAgLTY1MiwxMyArNjUyLDEzIEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xp
ZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0dXJu
IFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2Vd
OwogfQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50
OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsK
ICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgW21fdGFzayByZXNvdXJj
ZTomcmVzb3VyY2UgcmVjZWl2ZWREYXRhOldURk1vdmUoYnVmZmVyKV07CisgICAgW21fdGFzayBy
ZXNvdXJjZTomcmVzb3VyY2UgcmVjZWl2ZWREYXRhOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKV07CiB9
CiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpyZWRpcmVjdFJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTkzMSwx
NSArOTMxLDE0IEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVz
b3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAgcmV0dXJuIHJlc3BvbnNl
Lmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5KCk7
CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
cmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRh
CistICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2Vp
dmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4mJilkYXRhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChy
ZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYu
c2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNl
bGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKLSAgICAgICAgc3Ryb25nU2VsZi5n
ZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CisgICAgICAgIHN0cm9u
Z1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gW2RhdGEgbGVuZ3RoXTsKICAgICAg
ICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxT
ZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAg
ICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJM
U2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKLSAgICAgICAgICAgIFtkYXRhRGVs
ZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9u
IGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkUmVj
ZWl2ZURhdGE6bnNEYXRhLmdldCgpXTsKKyAgICAgICAgICAgIFtkYXRhRGVsZWdhdGUgVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uIGRhdGFUYXNrOihO
U1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkUmVjZWl2ZURhdGE6ZGF0
YS5nZXQoKV07CiAgICAgfV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCBmMzIzYWYyNjQw
MTZiNjYzOTMxMWFjMjMyNDZlYzVlZDgwYTM5NTQ1Li4zYmQyY2M3NDI4NmVjNDY3ODY0MDI0OGM1
ZTFjZmVjYzVhMDI2N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAg
Ym9vbCBDdXJsQ2FjaGVNYW5hZ2VyOjpnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYgcmUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ3Vy
bENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUmIGpvYiwgY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJl
Y2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiBqb2IsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjU1LDExICsyNTUs
MTEgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSYgam9iLCBjb25zdCB1aW50OF90KiBkYXRhLAogICAgICAgICBpZiAoaXQtPnZhbHVlLT5nZXRK
b2IoKSAhPSAmam9iKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghaXQtPnZh
bHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLCBzaXplKSkKKyAgICAgICAgaWYgKCFpdC0+dmFsdWUt
PnNhdmVDYWNoZWREYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpCiAgICAgICAgICAgICBp
bnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwpOwogCiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
bV9jdXJyZW50U3RvcmFnZVNpemUgKz0gc2l6ZTsKKyAgICAgICAgICAgIG1fY3VycmVudFN0b3Jh
Z2VTaXplICs9IGRhdGEuc2l6ZSgpOwogICAgICAgICAgICAgbV9MUlVFbnRyeUxpc3QucHJlcGVu
ZE9yTW92ZVRvRmlyc3QodXJsKTsKICAgICAgICAgICAgIG1ha2VSb29tRm9yTmV3RW50cnkoKTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKaW5kZXggYzllMjlkODA5NzBjNDA0NmU3OTYxNjJiZDk4
MzI5MTFiNmRlZTY4Yy4uYjY1Yjk2M2I2OGU2YTY4ZDk4MTkzYWFmNzNmMTA4MDNkOTdmY2QyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGdldENh
Y2hlZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSYsIFJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7IC8vIFNhdmUgZGF0YQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUmLCBjb25zdCBTaGFyZWRCdWZmZXImKTsgLy8gU2F2ZSBkYXRhCiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlJik7CiAgICAgdm9pZCBkaWRGYWlsKFJl
c291cmNlSGFuZGxlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggMzQ5NDQ1OTI1NGFjOTNmYzE5Y2IxMjE1
MGE2MWJjMmJjZWQwMmQ2ZS4uYWFmMGM4ZDk0MDcwNTVkNjhhMDU1ZmIzNTA3OTY3ZGU0YzAwODZl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxE
b3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxEb3dubG9hZC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6Y3Vy
bERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvbnNlJiYg
cgogfQogCiAKLXZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVx
dWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybERv
d25sb2FkOjpjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0xMTEsNyAr
MTExLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1
ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1fbGlzdGVuZXIpCi0gICAgICAgIG1fbGlzdGVuZXItPmRpZFJlY2VpdmVEYXRhT2ZMZW5n
dGgoYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2xpc3RlbmVyLT5kaWRSZWNlaXZlRGF0YU9m
TGVuZ3RoKGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZENv
bXBsZXRlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBOZXR3b3JrTG9hZE1ldHJpY3MmJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaApp
bmRleCBjZGU0NDQ1Nzc1Zjc0NDIzMzA1MzBiNjViMTM1N2JhNmJmZDliYjgxLi5hMTIwNzU4MzQ5
M2Y3ODMzNzU2ZDNjNDk4N2NmNWM5NWRmYTk3OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCkBAIC0zOCw2ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZUhhbmRsZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybERvd25sb2FkTGlzdGVu
ZXIgewogcHVibGljOgpAQCAtNzIsNyArNzMsNyBAQCBwcml2YXRlOgogICAgIFJlZjxDdXJsUmVx
dWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjdXJs
RGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxv
bmcgbG9uZykgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1
cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY3VybERpZFJl
Y2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25z
dCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJs
UmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxE
aWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0
ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCAwOTBkMDM5
YmE0NWRlMTAyOGVkZjc2ODRjNmQ3ZDJmMjk2ZTNhMzRkLi5kMWU1ODYyNGFhZWUyZWNlODEyOWRk
MzRlYTk4NjYyNmU2Y2RmMDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMTksMTIg
KzExOSwxMiBAQCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlKEN1cmxN
dWx0aXBhcnRIYW5kbGVDbGllbnQmIGNsaWVudCwgY29ucwogCiB9CiAKLXZvaWQgQ3VybE11bHRp
cGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQordm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQog
ICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBl
dmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5oCmluZGV4IDlhMWExYmJkMTkzOGExNGY2OWZjY2VlM2YwZjg5
Yjk3YTRhMjE4NzQuLjVjMDhiY2M1ZWIzZTRiYmNjMDI5YjQ3Njc4NjhmNDNlMmY5NWMzNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQ7CiBjbGFzcyBDdXJsUmVzcG9uc2U7
Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
QEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11
bHRpcGFydEhhbmRsZUNsaWVudCYsIGNvbnN0IFN0cmluZyYpOwogICAgIH5DdXJsTXVsdGlwYXJ0
SGFuZGxlKCkgeyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZUNsaWVudC5oCmluZGV4IGM4MTM4ODZhOGQ1YzVmYTZjMTJkMTQxMzMxOTEwMWFmMjUw
MmEyYWQuLmRmNzYzN2RlOWQ5ZmYyYjZiMTA4NTVkMGM1NzcxMjU1MzRiMmE2ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZy
b21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KGNvbnN0IFNoYXJlZEJ1ZmZlciYp
ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50KCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcAppbmRleCBiYWNiMmI1NTBiMjg0MTMxZDFhYzIwYWE2NjM4ODZmZTIyZmU3Zjk4Li5k
MGVmMGU3MTE2MmI1MzYzYWQ0MjU0MTdkODVlYzcyMzhmM2Y2MmJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTM5
Niw3ICszOTYsNyBAQCBzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXIoU3RyaW5n
JiYgaGVhZGVyKQogCiAvLyBjYWxsZWQgd2l0aCBkYXRhIGFmdGVyIGFsbCBoZWFkZXJzIGhhdmUg
YmVlbiBwcm9jZXNzZWQgdmlhIGhlYWRlckNhbGxiYWNrCiAKLXNpemVfdCBDdXJsUmVxdWVzdDo6
ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorc2l6
ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQogICAgICAgICByZXR1cm4g
MDsKQEAgLTQxMSw3ICs0MTEsNyBAQCBzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRh
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIENV
UkxfV1JJVEVGVU5DX1BBVVNFOwogICAgIH0KIAotICAgIGF1dG8gcmVjZWl2ZUJ5dGVzID0gYnVm
ZmVyLT5zaXplKCk7CisgICAgYXV0byByZWNlaXZlQnl0ZXMgPSBidWZmZXIuc2l6ZSgpOwogICAg
IG1fdG90YWxSZWNlaXZlZFNpemUgKz0gcmVjZWl2ZUJ5dGVzOwogCiAgICAgd3JpdGVEYXRhVG9E
b3dubG9hZEZpbGVJZkVuYWJsZWQoYnVmZmVyKTsKQEAgLTQyMCw4ICs0MjAsOCBAQCBzaXplX3Qg
Q3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKICAgICAgICAgaWYgKG1fbXVsdGlwYXJ0SGFuZGxlKQogICAgICAgICAgICAgbV9t
dWx0aXBhcnRIYW5kbGUtPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXShDdXJsUmVx
dWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQmIGNsaWVudCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlQnVmZmVyKHJlcXVlc3QsIFdURk1vdmUo
YnVmZmVyKSk7CisgICAgICAgICAgICBjYWxsQ2xpZW50KFtidWZmZXIgPSBSZWYgeyBidWZmZXIg
fV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQpIHsKKyAg
ICAgICAgICAgICAgICBjbGllbnQuY3VybERpZFJlY2VpdmVEYXRhKHJlcXVlc3QsIGJ1ZmZlcik7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NCwxNiArNDQ0LDE2IEBA
IHZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBoZWFkZXJzKQogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25zZShyZXNw
b25zZSwgQWN0aW9uOjpOb25lKTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3Zv
aWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci0+c2l6ZSgpOwor
ICAgIGF1dG8gcmVjZWl2ZUJ5dGVzID0gYnVmZmVyLnNpemUoKTsKIAogICAgIGlmIChyZWNlaXZl
Qnl0ZXMpIHsKLSAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXShD
dXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQmIGNsaWVudCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBjbGllbnQuY3VybERpZFJlY2VpdmVCdWZmZXIocmVxdWVzdCwgV1RGTW92
ZShidWZmZXIpKTsKKyAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0gUmVmIHsgYnVmZmVyIH1d
KEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVxdWVzdENsaWVudCYgY2xpZW50KSB7CisgICAg
ICAgICAgICBjbGllbnQuY3VybERpZFJlY2VpdmVEYXRhKHJlcXVlc3QsIGJ1ZmZlcik7CiAgICAg
ICAgIH0pOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggYTZmYjMxNTc2NmJhNWMyZjNlYTMyYjllZjUxZWIw
MDNlOGNiODlkMC4uOTJiNzQ2OTdiYzMxNzVjZTBjZGFkZjE1MWZhMjU0M2EwM2UxMTk4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmgKQEAgLTEyMiw5ICsxMjIsOSBAQCBwcml2YXRlOgogICAgIENVUkwqIHNldHVwVHJhbnNmZXIo
KSBvdmVycmlkZTsKICAgICBzaXplX3Qgd2lsbFNlbmREYXRhKGNoYXIqLCBzaXplX3QsIHNpemVf
dCk7CiAgICAgc2l6ZV90IGRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYpOwotICAgIHNpemVfdCBk
aWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc2l6ZV90
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
Y29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVRyYW5z
ZmVyKENVUkxjb2RlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbFRyYW5zZmVyKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBmaW5hbGl6ZVRyYW5zZmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCmluZGV4
IDM0Nzk4MzJmNTc2ZDQxMjhhZmE1MWM4MTQyNGNjZmQ3NDFkZjZhZTcuLjczMDMzZjBlZjRlYjRk
ZjIxYWI3NjQ2M2NjMzk4MTliMjg2Nzg0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCkBAIC0zNCw3ICsz
NCw3IEBAIGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3MgTmV0
d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xp
ZW50IHsKIHB1YmxpYzoKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRl
c1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNw
b25zZSYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxS
ZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVy
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBO
ZXR3b3JrTG9hZE1ldHJpY3MmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkRmFpbFdp
dGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYp
ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCAzMDVk
NGU1YzlmYzI3MDc3NTc4N2IwZjlhOTE5NzljMDg4ODlhOGE2Li4zODk3ZTAxYzZkMDc2NmRhY2Yz
ZTE5YjIzNzMzNmY1YjU1Y2U1MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZS5jcHAKQEAgLTE0MiwxNiArMTQyLDE1IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1CiAgICAg
fSk7CiB9CiAKLXZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZl
QnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVEYXRhKEN1
cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpOwotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVE
YXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
LSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGln
dW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5n
bGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyKTsKKyAgICBjbGllbnQoKS0+
ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIGJ1ZmZlciwgYnVmZmVyLnNpemUoKSk7CiB9CiAK
IHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVx
dWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5oCmluZGV4IGRhZjBhNTlhNGU1ODZkNzExNGFiYjRlNWVmOWM1NGY2YThiZWZj
NzAuLjAyNGJjNGU5YWUzMWRmMjVhOGY5YjcwY2JhMjgxZmFjZWFjOGNmMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7
CiBjbGFzcyBSZXNvdXJjZUhhbmRsZUludGVybmFsOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBDdXJsUmVxdWVz
dENsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUzLDcgKzU0LDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBm
aW5hbDsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJs
UmVzcG9uc2UmJikgZmluYWw7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVx
dWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGN1
cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRy
aWNzJiYpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3Qm
LCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCmluZGV4
IGMwNzA0ZjBjZGQ2NDQyMzczZjdiNzBiZmU2MTUzOWJmNWIzN2Q2MjUuLjM2NjU4ZjkxZGM5ZDY3
MjMwYjIzOWU0OTdjMDAwMGFjNjJhYWU5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKQEAgLTksNyArOSw3IEBACiAgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIAorICoK
ICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKICAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAogICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkN1cmxTdHJlYW0uaCIKIAogI2luY2x1ZGUgIkN1cmxT
dHJlYW1TY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJT
b2NrZXRTdHJlYW1FcnJvci5oIgogCiAjaWYgVVNFKENVUkwpCkBAIC0xMjksMTAgKzEzMCwxMCBA
QCB2b2lkIEN1cmxTdHJlYW06OnRyeVRvUmVjZWl2ZSgpCiAgICAgaWYgKCFtX2N1cmxIYW5kbGUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVjZWl2ZUJ1ZmZlciA9IG1ha2VVbmlxdWVB
cnJheTx1aW50OF90PihrUmVjZWl2ZUJ1ZmZlclNpemUpOworICAgIFZlY3Rvcjx1aW50OF90PiBy
ZWNlaXZlQnVmZmVyKGtSZWNlaXZlQnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IGJ5dGVzUmVjZWl2
ZWQgPSAwOwogCi0gICAgYXV0byBlcnJvckNvZGUgPSBtX2N1cmxIYW5kbGUtPnJlY2VpdmUocmVj
ZWl2ZUJ1ZmZlci5nZXQoKSwga1JlY2VpdmVCdWZmZXJTaXplLCBieXRlc1JlY2VpdmVkKTsKKyAg
ICBhdXRvIGVycm9yQ29kZSA9IG1fY3VybEhhbmRsZS0+cmVjZWl2ZShyZWNlaXZlQnVmZmVyLmRh
dGEoKSwga1JlY2VpdmVCdWZmZXJTaXplLCBieXRlc1JlY2VpdmVkKTsKICAgICBpZiAoZXJyb3JD
b2RlICE9IENVUkxFX09LKSB7CiAgICAgICAgIGlmIChlcnJvckNvZGUgIT0gQ1VSTEVfQUdBSU4p
CiAgICAgICAgICAgICBub3RpZnlGYWlsdXJlKGVycm9yQ29kZSk7CkBAIC0xNDMsOCArMTQ0LDkg
QEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUoKQogICAgIGlmICghYnl0ZXNSZWNlaXZl
ZCkKICAgICAgICAgZGVzdHJveUhhbmRsZSgpOwogCi0gICAgbV9zY2hlZHVsZXIuY2FsbENsaWVu
dE9uTWFpblRocmVhZChtX3N0cmVhbUlELCBbc3RyZWFtSUQgPSBtX3N0cmVhbUlELCBidWZmZXIg
PSBXVEZNb3ZlKHJlY2VpdmVCdWZmZXIpLCBsZW5ndGggPSBieXRlc1JlY2VpdmVkXShDbGllbnQm
IGNsaWVudCkgbXV0YWJsZSB7Ci0gICAgICAgIGNsaWVudC5kaWRSZWNlaXZlRGF0YShzdHJlYW1J
RCwgYnVmZmVyLmdldCgpLCBsZW5ndGgpOworICAgIHJlY2VpdmVCdWZmZXIucmVzaXplKGJ5dGVz
UmVjZWl2ZWQpOworICAgIG1fc2NoZWR1bGVyLmNhbGxDbGllbnRPbk1haW5UaHJlYWQobV9zdHJl
YW1JRCwgW3N0cmVhbUlEID0gbV9zdHJlYW1JRCwgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShyZWNlaXZlQnVmZmVyKSldKENsaWVudCYgY2xpZW50KSB7CisgICAgICAgIGNs
aWVudC5kaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgYnVmZmVyKTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKaW5k
ZXggNGY1OWIyMGU4ZGIyNzkwMzk5NGIzMzE1NGNlNjRiMDk5NGYzYTBiYS4uZThhMzJjMjY0NjFi
NDMwOGVhMjI3YzZkZjhjOTcyNDM5OTA1ZDBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCkBAIC05LDcgKzksNyBAQAogICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAKKyAqCiAg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCiAgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKQEAgLTMz
LDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFN0cmVhbVNjaGVk
dWxlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNvY2tldFN0cmVhbUVycm9yOwogCiB1
c2luZyBDdXJsU3RyZWFtSUQgPSB1aW50MTZfdDsKQEAgLTQ2LDcgKzQ3LDcgQEAgcHVibGljOgog
ICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW4oQ3VybFN0cmVhbUlEKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShDdXJsU3RyZWFtSUQsIHNpemVf
dCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlE
LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoQ3VybFN0cmVhbUlELCBDVVJMY29kZSkgPSAwOwogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IGI4MDRmZGUwOTczYmJmYjI4MzMx
Y2Y3YzNhMWYyMGIwNDNlNzRmZTguLjM2NmIwNTljMDI4MDRiMTk5Yzg4NmE5YzJjNjcyNzNmOTI0
ZjJlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAtNTksOSArNTksMTAgQEAgcHJp
dmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kSW50ZXJuYWwoY29u
c3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgYm9vbCBzZW5kUGVuZGluZ0RhdGEoKTsKIAorICAg
IC8vIEN1cmxTdHJlYW06OkNsaWVudAogICAgIHZvaWQgZGlkT3BlbihDdXJsU3RyZWFtSUQpIGZp
bmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEoQ3VybFN0cmVhbUlELCBzaXplX3QpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCB1aW50OF90Kiwgc2l6
ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwgQ1VS
TGNvZGUpIGZpbmFsOwogCiAgICAgYm9vbCBpc1N0cmVhbUludmFsaWRhdGVkKCkgeyByZXR1cm4g
bV9zdHJlYW1JRCA9PSBpbnZhbGlkQ3VybFN0cmVhbUlEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhh
bmRsZUltcGxDdXJsLmNwcAppbmRleCA0Yjk0OTFjMTE1NDNmMmI2MGYxMmQzNmU5ZTZhMGNiYWFl
MzRhNzJlLi5hOGY1N2E3MmQwZWFjY2E3NzU1YmU4NGZjYWExYzliZjEwOTU4YzBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKIAogI2lu
Y2x1ZGUgIkN1cmxTdHJlYW1TY2hlZHVsZXIuaCIKICNpbmNsdWRlICJEZXByZWNhdGVkR2xvYmFs
U2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTb2NrZXRT
dHJlYW1FcnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKQEAgLTEwNCwxMiArMTA1LDEyIEBAIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6ZGlkU2VuZERhdGEoQ3VybFN0cmVhbUlELCBzaXpl
X3QgbGVuZ3RoKQogICAgIHNlbmRQZW5kaW5nRGF0YSgpOwogfQogCi12b2lkIFNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6ZGlkUmVj
ZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
aWYgKG1fc3RhdGUgIT0gT3BlbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlk
UmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMsIGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSk7CiB9CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6ZGlkRmFpbChDdXJsU3Ry
ZWFtSUQsIENVUkxjb2RlIGVycm9yQ29kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApp
bmRleCAxZjRhMTkzMTMzMTJjNWRkNmE0OGFkNTMzOWRmZDJjM2I1ZGVjMjU3Li4wZmU2NWEyOWU2
MzYxNmRiNDJmN2M5ZWExZDE4NTIyMWMyMDA0MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNs
aWVudC5oCkBAIC0zMSwxMiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBM
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TGVnYWN5UHJldmll
d0xvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGUubW0KaW5kZXggMzE1ZTA2NTE1MzBkY2RiMDI4MDE2NTRiNzU3ZDgxNDcz
YzIwZmQzMC4uYWU3MTU1ZWNlZjM1ZDNlMTg4OGQ5MTY1NjQ1N2UzODExNTlkZjQzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5tbQpAQCAtMzAwLDcgKzMwMCw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxD
b25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YSBsCiAg
ICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk3OTMKICAgICAgICAgLy8gLTEgbWVhbnMgd2UgZG8gbm90IHByb3ZpZGUgYW55IGRhdGEgYWJv
dXQgdHJhbnNmZXIgc2l6ZSB0byBpbnNwZWN0b3Igc28gaXQgd291bGQgdXNlCiAgICAgICAgIC8v
IENvbnRlbnQtTGVuZ3RoIGhlYWRlcnMgb3IgY29udGVudCBzaXplIHRvIHNob3cgdHJhbnNmZXIg
c2l6ZS4KLSAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKG1faGFu
ZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgLTEpOworICAgICAgICBtX2hh
bmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSwgLTEpOwogICAgIH07CiAKICAgICBbc2VsZiBjYWxsRnVuY3Rpb25P
bk1haW5UaHJlYWQ6V1RGTW92ZSh3b3JrKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAppbmRleCAwOGQwNTdiYmI1ZjE3YzIwNDViZmY5MDZmZjVhZGE4NWYxMDQyOTMw
Li5mN2YyNjZjZThkODE5MTA2MGM4NTdhMmY4YTZhZDlmZGViZDgxODI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTU0Niw4ICs1NDYsOCBAQCBFbmNvZGVk
RGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAg
ICAgICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8vIERvY3VtZW50
TG9hZGVyIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgpLgogICAgICAg
ICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoImlt
YWdlL3N2Zyt4bWwiKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndy
aXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1bWVudAotICAgICAg
ICBkYXRhKCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAg
ICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShzZWdtZW50
LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICBkYXRhKCktPmZvckVhY2hTZWdtZW50
QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgICAgIGxvYWRlci5h
Y3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGJ1ZmZlcik7CiAgICAgICAg
IH0pOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuZW5k
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5k
ZXggMDU5ZjNhMzg2YjZjZjVmYTc5YjNjMTg5NzAxNTMxM2Y3Y2RiNGVmMi4uMWRlMjUzYzkyYjFi
ODFlNzJhYjcwZjliYjU2OGQ0MWZkZTM3NGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIE1vY2tDb250
ZW50RmlsdGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogICAg
IG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6OkFmdGVyUmVzcG9uc2UpOwogfQog
Ci12b2lkIE1vY2tDb250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2
b2lkIE1vY2tDb250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAg
ICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGREYXRhKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAppbmRleCA2MzVhYzg0
YmU3OTM4NDdhYTU3MjEzZDAxZmZjMWU3NGY3NmI3NTkzLi5iODM5N2IzMGQ4ZDg1YjdiZmZiMzYy
NTQ2NmYwNjg4OGMxODIxN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKICAgICBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDgyYTJhOGM0YjE4YWNjZTc5OGIyN2My
YzhkMDA5NTg5ZmY3NWNiYTguLjRlOGFiNzgxYTQwNjFhYjE4YzUwMzM3M2JkYTM4ZjZjNTVkOGEw
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAKQEAgLTExNSwxMiArMTE1LDEyIEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSCiAgICAg
ICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiB9CiAKLXZvaWQgV29ya2VyRm9udExvYWRSZXF1
ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkK
K3ZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgYm9vbCkKIHsKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1f
ZGF0YS5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggZGFiNzNmYzdiMWE5M2Vk
NGUzZmViMzFkNjcwOThkOTliNTE3NmEzOS4uN2NiYWE4ZTU1MTBjOGM0ZmNhZjJlYjkyYzZmNzNi
M2QyYTEyYzYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1dvcmtlckZv
bnRMb2FkUmVxdWVzdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IGJmNWE0NGZlMzQ4ZDJmZmNlOTE2ZmIxOTQ5MTVl
NjdiZmRhOWFlYzEuLmNkMjZlY2Q2YTM3YTdlZDM5ZmY3MWVkZGEzNWU4ZWZhOTBiMzdjNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTIw
MCw3ICsyMDAsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgICAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW4pCit2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKQogewogICAgIGlmIChtX2ZhaWxlZCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjEyLDEzICsyMTIsMTEgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgICAg
ICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvamF2YXNj
cmlwdCJfcywgIlVURi04Iik7CiAgICAgfQogCi0gICAgaWYgKCFsZW4pCisgICAgaWYgKGJ1ZmZl
ci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAobGVuID09IC0xKQot
ICAgICAgICBsZW4gPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSkp
OwogCi0gICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwor
ICAgIHNpemVfdCBsZW4gPSB1c2VTdHJMZW4gPyBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oYnVmZmVyLmRhdGEoKSkpIDogYnVmZmVyLnNpemUoKTsKKyAgICBtX3NjcmlwdC5h
cHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgbGVuKSk7CiB9CiAKIHZvaWQg
V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmgKaW5kZXggZWFhYmUxZWE1ZDEzYjMzZjljM2NjNjZkZDQ5NTU3ZWI2OWUzN2VmYy4uMGJj
M2EwMjViMzY3OWUyNTYzMDg2MjRlZWViYTg5ZGNjYzQ1YzgyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7
IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCB1c2VTdHJMZW4p
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKaW5kZXggZmJhMzYzMjJiMjlhNmQ1Yjc5
N2IzOWVkYzNjM2QxNzEyNGIzYjViYy4uY2UzNzA5Njg5ZDlmMDkyMWUwOTAzYTAzNzdkYjI2OGE1
NDUwYjJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKaW5kZXggOWIxMTJiOWRiMmNkODRkMDMyZjU5ZGFmYThlOGUzOGUwNzBlNTNmNy4uZGMzYWVh
OGNhZDlkMDk2YjQyYmNhNjViMjYxMjMyZjEzNzQzZDFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCkBAIC0xMDM0LDcgKzEwMzQsNyBAQCBSZWY8VGV4dFJlc291cmNlRGVj
b2Rlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZURlY29kZXIoKSBjb25zdAogICAgIHJldHVybiBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCAiVVRGLTgiKTsKIH0KIAot
dm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbikKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVzZVN0ckxlbikKIHsKICAgICBpZiAobV9lcnJvcikKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTA1MiwxNyArMTA1MiwxNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgIGlmICh1
c2VEZWNvZGVyICYmICFtX2RlY29kZXIpCiAgICAgICAgIG1fZGVjb2RlciA9IGNyZWF0ZURlY29k
ZXIoKTsKIAotICAgIGlmICghbGVuKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobGVuID09IC0xKQotICAgICAgICBsZW4gPSBzdHJsZW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSkpOworICAgIHNpemVfdCBsZW4gPSB1c2VT
dHJMZW4gPyBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEo
KSkpIDogYnVmZmVyLnNpemUoKTsKIAogICAgIGlmICh1c2VEZWNvZGVyKQotICAgICAgICBtX3Jl
c3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CisgICAg
ICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0
YSgpLCBsZW4pKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgot
ICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5hcHBlbmQoZGF0YSwgbGVuKTsKKyAgICAg
ICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAg
aWYgKCFtX2Vycm9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDJkMTNi
ZWMzOTQ2NDQ4YjliNGY5MjVkMzJiZDg2YmEyZDgwMzc3NWEuLjZiZjE5ZjgyYmQyZmY3NjcwN2Rh
NDU3MTQ3NTA3ZTk5MWQyNDY1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBA
IC0xNjIsNyArMTYyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJ
c0RvbmUoYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5kZXggNjE3ZjQ3Njg5NTY0MmRlYzIzMjU0
YjU0MGVlODE5MTFhYzRhMmRmNi4uN2Y1MTJjNmMxMWE4ZTcxMDhjZjAwNjJiNTg0ZDI3YjU4OTA4
ZDE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC05NiwxMCArOTcs
MTAgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhU2VudCh1aW50NjRfdCBieXRlc1Nl
bnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2UKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50
KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVtb3Rl
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGRhdGEpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+
ZGF0YVJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgbV9jbGllbnQtPmRh
dGFSZWNlaXZlZCgqdGhpcywgZGF0YSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
LmgKaW5kZXggNWI3YTdlMmE3NDI0NDMyZDg2Y2IyOGExYmU3MTcxOGExNjczNzVlNy4uOTUxMDZm
NjcyMjczYjQ1ZjBhMjRhNDdhMWEyYmRkMTQwOWUwZjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCkBAIC0zNSw2ICsz
NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU3LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4m
Jik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGF0YVNlbnQodWlu
dDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCmluZGV4IDcxZmQw
MjIyOWJiYjFjNTczMjZmZGZjZmUyNmMxMWY3NjFhYmNmNzIuLjA1NGI4OTNlMTExMTBkY2Y5YTcw
MDI1MmY0Zjc5NWIwMWE1ODdiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCkBAIC02OCw3ICs2OCw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0K
ICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZSB7IH07CiAgICAgdm9p
ZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCA5NTg2MDkxZWEwMDQxYjZmMTU4NjlkNDJi
YmRhNzI0MzI5NzY5MGVjLi5iYThkMDQ4ZjY1ZGMzMzk4NGYwY2Q0NzYzNWFiOTEwMTg3OWJkM2Jl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7
CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKQogewogICAgIENPUlNfQ0hFQ0tFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGEiKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oCmluZGV4IDUwNWE0ZWZlNTcxZDQ4OWU1MGE5ODhiZWI4MTg1
YjdmZWFiM2RiMTAuLjBjYjMxNWZkOGZmNTMxOTkxNTdkZTc4Zjg0NTJkNzFjNGY1ZTI5OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuaApAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTcxLDcgKzcyLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAg
IHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAppbmRleCA0YjllZTU3
NGI5MmM3YzM3MTdhNGJjMjgxOWE2YmUzYTE5MDY1NzE1Li5mNDc5ZTA5MDJiMjE3OTI5NTVkMzc2
ODE0YjIxYzg5ZmY1NWRiNTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0
ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
TmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxl
dGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEo
dWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2Vu
ZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2VkKCkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCA4YzEwNGQ4MTYwYjdhYWZk
MDk5NzE1ZGE2ZDRlNmY3YzQ2MzdmYTA4Li42MGI2OWE5MzZiYjc4ZGYyNTEwNzQ5Yzc1NGZlNmFh
MjI5M2ZlMDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmNwcApAQCAtMjU0LDExICsyNTQsMTAgQEAgdm9pZCBOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXQKICAgICBt
X2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2
ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHRoZSBlbmNvZGVkIGRhdGEgbGVuZ3Ro
LCBub3QgdGhlIGRlY29kZWQgZGF0YSBsZW5ndGguCi0gICAgYXV0byBzaXplID0gYnVmZmVyLT5z
aXplKCk7Ci0gICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZl
ciksIHNpemUpOworICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBi
dWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJy
b3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5oCmluZGV4IGU2YTc2MTE1OTYyYjk2NTllN2JmZTc4YzZmNGRjNmY1MzEy
YjNjYmUuLjBlNGMxYWU0OTIzYzMzN2Y1Y2Y5YjBhNDA4YjVhODgyMjlmNTk2NWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTgxLDcgKzgxLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNF
eHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKaW5kZXgg
MzQ4Y2ZmYjllOGUyNWVlODNiYmIzOWEwMmNkM2NmNmQyODU0ZDM5ZS4uOGEyODU4MjYxMTNmOWQ4
ZWU2NjBkYjY4OGIzYzUzOTNmZjk3YjJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggMzZhY2M2MzE0NWY0MDViMTk1NWQzMzU0MGRhYTcwOGY5YTYyOTM0MS4uZTZm
ZDJhYzcwZWM3ZTBlNzU5MGFkZTI3MmUxNDI3ZmNlOTZkZGU1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
ODYzLDI5ICs4NjMsMjkgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmREaWRSZWNl
aXZlUmVzcG9uc2VQb3RlbnRpYWxseUluTmV3QnJvd3NpbmdDb250ZXgKICAgICB9KTsKIH0KIAot
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkK
K3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCi0gICAgICAgIExPQURF
Ul9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAo
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KTsKLSAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLT5zaXplKCk7CisgICAgICAgIExP
QURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEg
KHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGJ1ZmZlci5zaXplKCk7CiAKICAgICBBU1NF
UlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Yg
c3RyZWFtaW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBpbiB0aGUgY2FjaGUuCiAg
ICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gbV9jYWNoZS0+Y2Fw
YWNpdHkoKSAvIDg7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSAr
IGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXIuc2l6ZSgpIDw9IG1heGltdW1D
YWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVu
ZChidWZmZXIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdl
IGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgotICAgIHVuc2lnbmVkIGVu
Y29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOworICAgIHVuc2lnbmVkIGVuY29k
ZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci5zaXplKCk7CiAKICAgICBpZiAobV9idWZmZXJlZERh
dGEpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAg
ICAgIG1fYnVmZmVyZWREYXRhLmFwcGVuZChidWZmZXIpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0
YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1
ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTI3Myw3ICsxMjcz
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQog
ICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCi12b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzZW5kQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90
IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgKaW5kZXggY2YxMGNmMGU3MWExYmM2NTU0MGU4N2Q2YmE0YzFiOWM4NTZjMGExZC4uODE3
YWVmMjZjODM2YzM0YTdkNDRlZTdjYzk1ZWRkOWEyOThkNmE0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0xMTUs
NyArMTE1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVu
dGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoKSBmaW5hbDsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBz
dGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKICAgICB2b2lkIGJ1ZmZlcmluZ1RpbWVyRmly
ZWQoKTsKLSAgICB2b2lkIHNlbmRCdWZmZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBzZW5kQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5n
dGgpOwogCiAgICAgdm9pZCBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKICAgICB2b2lkIGlu
dmFsaWRhdGVTYW5kYm94RXh0ZW5zaW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmNwcAppbmRleCBiYzJjMzM3ZTRlZWUwMWFmODNlMTM2NzIzMTdhOWE5ZWFiYzdj
NmY4Li5mMGVmZDA0YmIyZTE4ZjZmM2NiYzE2M2ZhZjIzZGEwNDY2YmVlNTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZv
aWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIE5lZ290aWF0ZWRMZWdhY3lUCiAgICAgZGlkRmluaXNoKHsgfSwgcmVzcG9uc2UpOwogfQog
Ci12b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikKK3ZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
CiB7CiAgICAgUElOR19SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGEiKTsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAppbmRl
eCBlNzgwOGQ4ZTY1NTgyZjc5Mzg4ODI4ZDUxNzU4Y2IxOTNjZjU1ZmM3Li5iMjI1YzQ3Yjk0YWZh
MGI0NGVkYzI2NzBkZmM1OGFkN2FmYzkxNDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFs
Qnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAg
IHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAppbmRleCAxN2Q0NzkwN2EzZjZlZTUyYmU2NTAxZDFkYWIw
Y2E2MDc1MWQ2YjBiLi5hYWFlMmJmYmRmODNhMzlhY2VjMDYzZmViMjQ0NjE2ZGM4NDhlZGE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcApA
QCAtNzksNyArNzksNyBAQCB2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbQogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKIH0KIAotdm9pZCBQcmVjb25uZWN0VGFzazo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAppbmRleCA4NTgwOGUxMjFiNjhjYThi
NzNlMjUxOGQxOTNhYjM5NTgxZWFkMWU3Li44YzZiMGRlZWQ2NmM1MTAxOWJlODk4NGVkNWI4N2Uw
YzFkNzkwZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNv
bm5lY3RUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0
VGFzay5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1
bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRl
c1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGly
ZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Up
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWls
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRG93bmxvYWRUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcAppbmRleCAyNWQ0ZTM3Zjk0NTRi
ZWUzMmYwNGQ4Y2M4YzQ3MWQ1ZDNmN2VkODJiLi44YzhkYzM2YjFlNTM5MzhmODFlYjRhYmFhZmYw
MTkwZjJiNTRlZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2suY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUg
IldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKQEAgLTE3Myw3ICsxNzQsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OnN0YXJ0KCkKICAgICBkb3dubG9hZFB0ci0+ZGlkQ3Jl
YXRlRGVzdGluYXRpb24obV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CiB9CiAKLXZvaWQgU2Vy
dmljZVdvcmtlckRvd25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29y
a2VyRG93bmxvYWRUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5SdW5Mb29wKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2su
aAppbmRleCBhYjU5ZWFlNTI2NjUzMDYyMTJhMjhlOTMyM2EyYjhiNGZmZTBjNzhmLi5iODlhYjNl
YmQ3NjJmNjgxMmE1ZTk3YmZmNjkwYmE5MGYwMjU3ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFz
ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIElQ
QyB7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjYsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIFNl
cnZpY2VXb3JrZXJEb3dubG9hZFRhc2soTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tD
bGllbnQmLCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBEb3dubG9hZElEKTsKIAogICAgIC8vIElQQyBNZXNzYWdlCi0gICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRh
KGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwog
ICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJE
b3dubG9hZFRhc2subWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNzYWdlcy5pbgppbmRleCAx
ZDNiZmI3Y2MzMTA5Nzk5Y2M4MDAxYmJhNzFkODljMGY2ZjJkOTJmLi41MGQyYjQyYTcxYjBlZGFi
NzlmYmNlOWRkYjlmMTk5ODJkYjUzNTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogCiBt
ZXNzYWdlcyAtPiBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrIE5vdFJlZkNvdW50ZWQgewogICAg
IERpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKLSAgICBEaWRSZWNlaXZlRGF0
YShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0
YUxlbmd0aCkKKyAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSwg
aW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBEaWRSZWNlaXZlRm9ybURhdGEoSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSBkYXRhKQogICAgIERpZEZpbmlzaCgpCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggNGU3OTE5YjNkZGMwMmFlMTRkMGVkOTY4
NGI4YzY4YmI2ZjI4YTQzNC4uNGY3OGI5ZGY1NGU1ZTY3Nzg3ODQxMzVhMjdhMDNkYmM2MjliZmQ3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApAQCAtMzYsNyAr
MzYsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk5l
dHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpwcm9jZXNzUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlLCBib29sIG4KICAgICAgICAgbV9sb2FkZXIuc2V0UmVzcG9uc2UoV1RGTW92
ZShyZXNwb25zZSkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KQogewogICAgIGlmIChtX2lzRG9uZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDAxLDcgKzQwMSw3
IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6bG9hZEJvZHlGcm9tUHJlbG9hZGVyKCkK
ICAgICAgICAgICAgIGRpZEZpbmlzaFdpdGhNZXRyaWNzKG1fcHJlbG9hZGVyLT5uZXR3b3JrTG9h
ZE1ldHJpY3MoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZGlk
UmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlIHsgY2h1bmstPmRhdGEoKSwgY2h1bmstPnNp
emUoKSB9LCBsZW5ndGgpOworICAgICAgICBkaWRSZWNlaXZlRGF0YShSZWYgeyBjb25zdF9jYXN0
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImPigqY2h1bmspIH0sIGxlbmd0aCk7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGMz
NDU4MDI2N2ZiMzI2OWU2ZGNiZGNlZmMzNGQwNjgyYzZhMDg4NmMuLjUyMjVlNTQ1OTk5NTFkOGY4
MWM3MGFmODJlYmJhMjY4OWUzNTAwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rp
b247CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFy
ZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Myw3ICs5NCw3IEBA
IHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBTaG91bGRTZXRTb3VyY2UgOiBib29sIHsgTm8sIFll
cyB9OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwg
aW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7
CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZpbmlzaFdpdGhNZXRyaWNzKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgppbmRleCAxOGU2MjlmMGQxNDZlZDJk
NDI5ZGIxYmEyODcwMWU4M2ZiOTZlNjJmLi43ZGI1M2U5YmQwMzgwNDU0NzNhMjVhZjM3ZDQ3YzE5
NTc5NWUyMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFz
ay5tZXNzYWdlcy5pbgpAQCAtMjcsNyArMjcsNyBAQCBtZXNzYWdlcyAtPiBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrIE5vdFJlZkNvdW50ZWQgewogICAgIERpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBlcnJvcikKICAgICBEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2VNZXNzYWdlKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZFJlY2VpdmVE
YXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KQogICAgIERpZFJlY2VpdmVGb3JtRGF0YShJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIGRhdGEpCiAg
ICAgRGlkRmluaXNoKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4IDVkOWJkMzMzMzkyMTFjYTFjZDQ0N2I4NzkyZjU0
NjFlYTg3ZWRkZjQuLmU1NjU0Y2MzMTM5YjQ5ZDYxYTk4NTEzY2QwMTZiZWNmNzM5YmJjZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmNwcApAQCAtMTc1LDEwICsxNzUsMTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMKICAgICAg
ICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICht
X2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9ib2R5Q2FsbGJh
Y2soUmVmUHRyIHsgJmJ1ZmZlciB9LCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAog
dm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5kZXggNjdhYmM1
NWM2MGZmMjRlMzlkZDA0ZWNjNTAyMWI2MDVlZThiZWJiMS4uNWY4OGFjMmFhOGRmOTYyOGQ0YzU5
ZGRkMDk0ZjBjZWUxZDIxYTdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1NSw3IEBAIHB1Ymxp
YzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+OwogICAg
IHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3BvbnNlQ2FsbGJhY2smJik7Ci0gICAgdXNpbmcgQm9k
eUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OworICAgIHVzaW5nIEJvZHlDYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CiAgICAgdm9pZCB3YWl0
Rm9yQm9keShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KQEAgLTcxLDcgKzcyLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAg
ICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljczsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXgg
N2EyNjIyMTlkZTc4YjIzNWQxMjVhOTJiNmUyMzZkMzMyNjJmN2EyNy4uZDlkNzQ3NTI1MzJmMTg5
ZWIxYmUyYzAzZDdlMjllODU5ZTg5NmU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgUmVzb3VyY2VF
cnJvciBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG8KICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpIHsKICAgICAgICAgaWYgKCFtX3Jlc3BvbnNl
RW5jb2RpbmcuaXNFbXB0eSgpKQpAQCAtMTg2LDggKzE4NiwxMSBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPgogICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3Jl
YXRlKCJ0ZXh0L2phdmFzY3JpcHQiX3MsICJVVEYtOCIpOwogICAgIH0KIAotICAgIGlmIChhdXRv
IHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rl
ci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplKSk7CisgICAg
aWYgKCFidWZmZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIGJ1ZmZlci5mb3JFYWNoU2VnbWVudChb
Jl0oYXV0byYgc2VnbWVudCkgeworICAgICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rl
ci0+ZGVjb2RlKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOworICAgICAgICB9KTsK
KyAgICB9CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKaW5kZXggNDRmYzA2ODVmYTBm
ZWRjODc0MjE5MTZlOTEzYTY3NGIxYzBmZGJlYS4uN2U4MThmMzQxM2RhMjlmODYxZTEwMDM5OTFl
OGQ1Mzg5MjM0NmVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dl
ZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcAppbmRleCA0MWQ4MjM1MDI0NzQ3YjZmYzRhM2FjNTQ4ZTEzMzRlZDZjYjVlZjdhLi44
MTRlYjMyMGQ0ZTc0OGEyOWFlMDkxMzVhZmMxZGE1ZjM3NTE1ZWY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC0xMjAsMTUgKzEyMCwxNSBAQCB2b2lkIFNwZWN1bGF0
aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJl
c3BvbnNlLCBSZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0K
IAotdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
CiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnkpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Yg
c3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7Cisg
ICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci5zaXplKCkg
PD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuaAppbmRleCAxYjg0M2RiN2VjMjcwZGI5ZGFiOWU4YTI1ZjJhNDhhOGVjYWUyYThhLi45YWRj
YTYwNWU3MjgwYmI3YjM0Y2U3NDRkODc4OGJiYjQ0ODkyNGViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWls
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EuaAppbmRleCA0MTY2OGE1YjFjZDczODY5NjdiOGZkOTczZTk2NzMyZWNhOTA3ZWRj
Li4wNzcyYWYxYTg2ZDIyNDE3YmYxMWYxNmJkNmI3YjU4MGZlNTdhN2ExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNNdXRhYmxlVVJMUmVxdWVzdDsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVnaXN0cmFibGVEb21haW47CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjIsNyArNjMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5UTFMoY29uc3QgVVJMJik7CiAgICAg
dm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExT
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAKICAgICB2b2lkIHdpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJik7CiAgICAg
dm9pZCB0cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbQppbmRleCA0NzcxZmRlOTIwZDZiOThlODNmYzI5ZGQzYWFmOTdhMGE2ZDlh
ODgwLi42NDliNWNhNzhjNjg3NWVjZGUwZDNkNDM2Zjk1OTBkYjUxNzlkMGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0KQEAgLTQ0MywxMiArNDQzLDEyIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29j
b2E6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
CiAgICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0d29ya0xv
YWRNZXRyaWNzKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgTmV0
d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKLSAgICBXVEZFbWl0U2lnbnBvc3QobV90YXNrLmdldCgpLCAiRGF0YVRh
c2siLCAicmVjZWl2ZWQgJXpkIGJ5dGVzIiwgZGF0YS0+c2l6ZSgpKTsKKyAgICBXVEZFbWl0U2ln
bnBvc3QobV90YXNrLmdldCgpLCAiRGF0YVRhc2siLCAicmVjZWl2ZWQgJXpkIGJ5dGVzIiwgZGF0
YS5zaXplKCkpOwogCiAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0
YShkYXRhKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2Fj
eVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTLCBXZWJLaXQ6OlJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA4NDY2OWUyMDlk
NzdiZjUyYTM2YWZlMmE3ZGFiMjUyYTY5MDBkY2Y3Li4xM2ZjYzdiZDQ4YTU1YTA5MzkxMjkyNmJh
NDQ4NGNmNWUzNTUxMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2FtZVNpdGVJbmZvLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TeW5jaHJvbm91
c0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPHBhbC90ZXh0L1RleHRFbmNvZGluZy5oPgpAQCAt
MTcyLDEzICsxNzMsMTMgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2
ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVzcG8KICAgICBpbnZva2VEaWRS
ZWNlaXZlUmVzcG9uc2UoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlk
UmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVEYXRhKEN1
cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgUmVmIHByb3Rl
Y3RlZFRoaXMgeyAqdGhpcyB9OwogICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpDYW5jZWxpbmcg
fHwgc3RhdGUoKSA9PSBTdGF0ZTo6Q29tcGxldGVkIHx8ICghbV9jbGllbnQgJiYgIWlzRG93bmxv
YWQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShX
VEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOwog
fQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVz
dCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5o
CmluZGV4IDQ1YmU1Y2UxODQzMjUyNzFkNWMwODBkZDM0ZjFlZTRhMTY2NDJhMWYuLmU1NTg2NGE5
NWY3YmNiYzA4NWM0NjYyOGJmZjA1ODU3MzU3MzI4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaApAQCAtMzYs
NiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJsUmVxdWVzdDsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02OCw3ICs2OSw3
IEBAIHByaXZhdGU6CiAgICAgUmVmPFdlYkNvcmU6OkN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJsUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVxdWVzdFN0YXR1cyA9IFJlcXVlc3RT
dGF0dXM6Ok5ld1JlcXVlc3QpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKFdlYkNvcmU6OkN1
cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJy
aWRlOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpDdXJsUmVxdWVz
dCYsIFdlYkNvcmU6OkN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlQnVmZmVyKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVEYXRh
KFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlk
RmFpbFdpdGhFcnJvcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImJiwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggMTdmMDhjMjhlYTEy
NWI1NTA5OTNlZWQyNGQ1OTYzYjg1MTBhMTE0MS4uODczMDNjOGQxMWZmY2EzZjU2ZmZkMTZhMWY4
ZThmODMwZWYyZGMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTUzLDYgKzU0LDggQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIGNv
bnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlcjsgfQogCisgICAgLy8gVE9ETyA6IFNoYXJlZEJ1ZmZlckNvcHkgc2hvdWxkIGNv
bnRhaW4gYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZCB0aG9zZSBzaG91bGQgZ28gYXdheS4K
KyAgICAvLyBBbGxvd3MgdG8gbm90IHVuZWNlc3NhcmlseSBmbGF0dGVuIHRoZSBTaGFyZWRCdWZm
ZXIgYmVmb3JlIHNlbmRpbmcgaXQgb3ZlciBJUEMuCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0K
ICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNp
emUoKSA6IDA7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/
IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVy
LmNwcAppbmRleCA5Y2RlZDk2OTM1MTVjYmRiOTI1ZjU5NTRhMTZmNGJhZjA2N2EzMTYyLi42YzE5
YmM5YmFiNjQxMDMzMzAwNzNiNDFjNWFlMWQ4ZWQwMWMzYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZv
cm1hdFJlYWRlci5jcHAKQEAgLTE4NSw5ICsxODUsOSBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVy
OjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlv
bgogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBt
X3BhcnNlVHJhY2tzTG9jayB9OwotICAgIEFTU0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1cyk7Ci0g
ICAgQVNTRVJUKG1fZHVyYXRpb24uaXNJbnZhbGlkKCkpOwotICAgIEFTU0VSVChtX3RyYWNrUmVh
ZGVycy5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1cyB8fCAobV9p
bml0ICYmIGVycm9yQ29kZSkpOworICAgIEFTU0VSVChtX2R1cmF0aW9uLmlzSW52YWxpZCgpIHx8
IChtX2luaXQgJiYgZXJyb3JDb2RlKSk7CisgICAgQVNTRVJUKG1fdHJhY2tSZWFkZXJzLmlzRW1w
dHkoKSB8fCAobV9pbml0ICYmIGVycm9yQ29kZSkpOwogCiAgICAgQUxXQVlTX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSKTsKICAgICBpZiAoZXJyb3JDb2RlKQpAQCAtMjIxLDYgKzIyMSw3
IEBAIHZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uCiAgICAgfQogCiAgICAgbV9wYXJzZVRyYWNrc0Nv
bmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICBtX2luaXQgPSB0cnVlOwogfQogCiB2b2lkIE1lZGlh
Rm9ybWF0UmVhZGVyOjpkaWRQcm92aWRlTWVkaWFEYXRhKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRp
YVNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRl
ci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9y
bWF0UmVhZGVyLmgKaW5kZXggMzdlNGFkNDI3NmIxMmFkNTE0M2RjMjI4Y2RlOTQ3NjM4N2U1Yzg4
OC4uNjUwOTNlOWU0NmI0MGI1YTM5NzZmZGVmMjllNjEzYzY0NTFmMzE1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVh
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhRm9ybWF0UmVhZGVyLmgKQEAgLTg3LDYgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
UmVmPE1lZGlhVHJhY2tSZWFkZXI+PiBtX3RyYWNrUmVhZGVycyBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fcGFyc2VUcmFja3NMb2NrKTsKICAgICBSZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsK
ICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisgICAgYm9vbCBtX2luaXQgeyBmYWxz
ZSB9OwogfTsKIAogY29uc3RleHByIE1lZGlhRm9ybWF0UmVhZGVyOjpXcmFwcGVyQ2xhc3MgTWVk
aWFGb3JtYXRSZWFkZXI6OndyYXBwZXJDbGFzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGUxMjY0Y2UyMWJhNTdmMmE0Mjc0OGUzM2ExZGFk
ODhhMGUyNThiYzIuLmQ3NjdmYzA2YjM2ZjE1NmZmMzFjMzgzZTY0M2Q0MzQ0YzIxN2FhYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0xNjgs
NyArMTY4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9u
VHlwZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKK2F1
dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCkBAIC0xODcsMTEgKzE4NywxMSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRQogICAgIG1f
ZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIG1fc3luY0Rh
dGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKGJ1
ZmZlcik7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2Vp
dmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVy
SUQsIGJ1ZmZlci5nZXQoKSksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhh
bmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIpLCBtX3dlYlBh
Z2VJRCk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBmNmZmNDZlZWE1ZjI5MGI3Yjdl
M2ZlNTkyMWRmOWYxOTRiYWNkMTE3Li5jMzIzMDY5YjFjYzAzMWYwMjViMjJjODU5YTM1NDE4OGZk
ZDIzNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBA
IC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVk
aXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsK
ICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25U
eXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlUHJveHkuY3BwCmluZGV4IGI1MTNhMjY4MDhlYWExOGUzN2Y0ZmRmMDRh
MjNkMjk2MGIyNzNiMmMuLjkyMzRiNWM2NTNmOTFlYmE5MTBmYmRmOWJlMWUyMmEwMmMxMWM2NzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKQEAgLTcyLDIwICs3MiwxNyBAQCB2b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgdW5zaWduZQogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFTZW50KG1faWQsIGJ5dGVzU2VudCwgdG90YWxC
eXRlc1RvQmVTZW50KSwgMCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5Ojpk
YXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRh
UmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRN
ZW1vcnk6OmFsbG9jYXRlKGxlbmd0aCk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRN
ZW1vcnk6OmNvcHlCdWZmZXIoYnVmZmVyKTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBzaGFyZWRNZW1vcnlQdHIgPSBzdGF0aWNfY2FzdDxjaGFy
Kj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpOwotICAgIG1lbWNweShzaGFyZWRNZW1vcnlQdHIsIGRh
dGEsIGxlbmd0aCk7Ci0KICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgc2hh
cmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKICAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFuZCBt
YXJrIGl0IGFzIG1lZGlhLXJlbGF0ZWQgbWVtb3J5LgogICAgIGhhbmRsZS50YWtlT3duZXJzaGlw
T2ZNZW1vcnkoTWVtb3J5TGVkZ2VyOjpNZWRpYSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4obGVuZ3RoKSB9KSwgMCk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXIuc2l6ZSgpIH0pLCAwKTsKIH0K
IAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxl
ZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCmluZGV4IDQ3ZWE4NjY3MWIx
M2QxMzk1YzNkYWQ5YmRhNzlhYmY2MTZjYmExNzkuLjk0OTQ2NDUyMmMyNjNlNmE1ZTgwNzNmNzRl
OWQyNDM0YmFhOTM5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaApAQCAtNDcsNyArNDcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2Uo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFs
OwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsK
ICAgICB2b2lkIGxvYWRGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEZpbmlzaGVk
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGQ3MWFlNWUwYTlhZjNkOWVlM2E1
MWQ4ZmNmNTBmZTUzNTliMzkwYjcuLjc0OTE5MGQxOWIwZmExY2UwYjUxMWU4NDIwNzI1NjAwNjkx
MTg2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJy
b3JzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAgLTIwMCwxNiArMjAxLDE1IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgYm9vCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
cmVzcG9uc2UsIFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwogfQog
Ci12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRh
dGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2Vi
UHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZv
ciAnJXMnIiwgZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdv
cmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3
ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRl
cmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigp
KSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIo
bV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBt
dXRhYmxlIHsKKyAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRl
ci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1
ZmZlciA9IGRhdGEuYnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0
YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVk
RGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjE4
LDcgKzIxOCw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgICAgIFdFQlJFU09VUkNF
TE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0
YSIpOwogICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIAotICAgIG1fY29y
ZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1
ZmZlcigpID8gUmVmIHsgKmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
RmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRN
ZXRyaWNzKQpAQCAtMzA2LDcgKzMwNyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAg
TE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJl
c291cmNlOiIpOwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20g
U2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7CkBAIC0z
MjMsNyArMzI0LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNl
KGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQKIAogICAgIC8vIE9ubHkgc2Vu
ZCBkYXRhIHRvIHRoZSBkaWRSZWNlaXZlRGF0YSBjYWxsYmFjayBpZiBpdCBleGlzdHMuCiAgICAg
aWYgKHVuc2lnbmVkIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9jb3Jl
TG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJT
aXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICBtX2NvcmVMb2FkZXItPmRp
ZFJlY2VpdmVEYXRhKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRhUGF5
bG9hZFdob2xlUmVzb3VyY2UpOwogCiAgICAgaWYgKCFtX2NvcmVMb2FkZXIpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5oCmluZGV4IGEyMmU2MmYyOGI1ZmE0Y2ZjOTFhYTVlNWNlODJjYTI3YWUyNmFk
NTMuLmFjNTQyMmZjMDY3MTBiZDBlMDg3ZTBmNDQwOWVkOTQwMTdjMGNmMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApA
QCAtMzksNiArMzksNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJl
bmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtODAsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1
aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJv
b2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmlu
aXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAg
IHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CiAgICAgdm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgppbmRleCAwMmExNGY1OWEzMDQ3
NDRjMmQxODNlYTc5ZTk5ZWJhZWI0Y2ZiYmEyLi5kYWEyNGQyN2M3MWE4M2NmN2MwZjE2OGRhMjZh
NDliNDg3NjkyNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQs
NyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAg
V2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
ZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2
ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpCiAgICAgRGlkRmluaXNoUmVzb3VyY2VMb2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyBuZXR3b3JrTG9hZE1ldHJpY3MpCiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDhkMmM1ZjNlMjVjYTFhMjM3OGU1ZTMwMDVkNzU0
OTJiZWFmMGIxZWEuLjJiN2U0ZDJjMjBmZGQxOTk4ODI3MmRhOGJmY2M1YTYxODZjNmQzZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgK
QEAgLTY1LDYgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNo
ZTsKIGNsYXNzIEVsZW1lbnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xNzYsMTEgKzE3NywxMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3Qg
U3RyaW5nJiByZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9u
c2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9CiAgICAgdm9pZCBzdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkws
IHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7
CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hM
b2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwo
dWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lkIG1h
bnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50
MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZv
aWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JikgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7
CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsK
ICAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIGZpbmFsOwpA
QCAtMzYyLDcgKzM2Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRmFp
bChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNv
cmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGU1ZmEwNzEw
OWE5MzE4NDUzOWZiMWUyNDcwYTNmOTM4NmQ0MzE1NTguLmZhNmNlNmY2OWZjMDJmNzAxZjg4NTEz
ODg0NzVkZWYzZjI0MzE0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTQsNiArOTQsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9TY3JvbGxBbmltYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2hlZWxFdmVudFRlc3RNb25pdG9yLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgpAQCAtMTE5MSw3ICsxMTkyLDcgQEAgdm9pZCBQ
REZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KE5ldHNjYXBlUGx1Z0luU3QKICAgICB9CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5T
dHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBjb3VudCkKK3ZvaWQgUERGUGx1
Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBpZiAoIW1fcGRmUGx1Z2luKQogICAgICAgICByZXR1cm47CkBAIC0xMjAwLDcgKzEyMDEs
NyBAQCB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbQogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLCBjb3VudCk7CisgICAgcmVxdWVz
dC0+YWRkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBERlBsdWdp
bjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQpAQCAtMTcxOCwxNSArMTcx
OSwxNSBAQCB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1aW50MzJfdAogICAgICAgICBtX2lzUG9zdFNjcmlwdCA9
IHRydWU7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBs
dWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtSUQsIHN0cmVhbUlE
ID09IHBkZkRvY3VtZW50UmVxdWVzdElEKTsKIAogICAgIGlmICghbV9kYXRhKQogICAgICAgICBt
X2RhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCi0gICAgQ0ZEYXRh
QXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCBieXRlcywgbGVuZ3RoKTsKLSAgICBtX3N0cmVhbWVk
Qnl0ZXMgKz0gbGVuZ3RoOworICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1ZmZl
ci5zaXplKCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVp
bnQ2NF90IHN0cmVhbUlEKQpAQCAtMTc2MywxNCArMTc2NCwxNCBAQCB2b2lkIFBERlBsdWdpbjo6
ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAgICAgIENG
RGF0YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVudExl
bmd0aCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBp
ZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxl
KDAsIDApKTsKIAotICAgIGVuc3VyZURhdGFCdWZmZXJMZW5ndGgobV9zdHJlYW1lZEJ5dGVzICsg
bGVuZ3RoKTsKLSAgICBtZW1jcHkoQ0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdldCgp
KSArIG1fc3RyZWFtZWRCeXRlcywgYnl0ZXMsIGxlbmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5dGVz
ICs9IGxlbmd0aDsKKyAgICBlbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyAr
IGJ1ZmZlci5zaXplKCkpOworICAgIG1lbWNweShDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihtX2Rh
dGEuZ2V0KCkpICsgbV9zdHJlYW1lZEJ5dGVzLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKKyAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gYnVmZmVyLnNpemUoKTsKIAogI2lmIEhBVkUoSU5D
UkVNRU5UQUxfUERGX0FQSVMpCiAgICAgLy8gS2VlcCBvdXIgcmFuZ2VzLWxvb2t1cC10YWJsZSBj
b21wYWN0IGJ5IGNvbnRpbnVvdXNseSB1cGRhdGluZyBpdHMgZmlyc3QgcmFuZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggMWQ4NDQ4MDVmNGMxMGU5M2Zl
ZGNhYmRlZWMyMWRkMzVkZGY4ODIwMi4uZTRkNjJmNGJlYTliZmMyZmE4MGVmNGQ2ZTkwYzVjY2Yw
Njc5NGY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAg
LTU0LDEyICs1NCwxMyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBFbGVtZW50Owog
Y2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC0xNjAsNyArMTYxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3Ry
ZWFtIGRpZCByZWNlaXZlIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogCiAgICAgLy8gVGVsbHMg
dGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgPSAwOwpA
QCAtMTczLDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFu
dWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEg
c3RyZWFtIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJl
YW1EaWRGaW5pc2hMb2FkaW5nKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA1MzRkYTUyZDQ3ZDYyODUwZTIwNWZmOWU5OWMz
MGIzN2QzYmNiYTEyLi4wMzQ0ZjRiZTIzYTQzNzY3MTk3Nzg5OTk3ZDc2MzdhMjAzMWI3ZWFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApA
QCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1M
b2FkZXJDbGllbnQKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4
X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9y
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAKQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFBsdWdpblZp
ZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
KiwgY29uc3QgUgogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZShtX3N0cmVhbUlELCByZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZp
ZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVk
RmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0
YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAg
bV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwg
Ynl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVj
ZWl2ZURhdGEobV9zdHJlYW1JRCwgYnVmZmVyKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpTdHJl
YW06OmRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikgCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkws
IHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhl
YWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZp
ZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxl
bmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhl
cmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX3BsdWdpbikKQEAgLTM4
MiwxMSArMzgyLDExIEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlh
bGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3Ry
ZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURh
dGEuYXBwZW5kKGJ5dGVzLCBsZW5ndGgpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBw
ZW5kKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3BsdWdpbi0+bWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW4tPm1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6
bWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKQpAQCAtMTE3MSw5ICsxMTcxLDkgQEAgdm9pZCBQ
bHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUg
ZGF0YS4KICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVy
ID0gbV9tYW51YWxTdHJlYW1EYXRhLnRha2UoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogYnVmZmVyLmdldCgpKQotICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVE
YXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Cisg
ICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRC
dWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YShidWZmZXIpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxT
dHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggZjY2MzEyYTgwYWNkMWUw
MzUzMTBkZmFhM2E1ZjNhMTdiNzJhYWU1NS4uMjU2MTVjYjMwZjIyNjQ2MzkyNDQ0ODhmMmJkN2M0
MTIyNzkwNzliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVzdHJv
eWVkKCkgY29uc3QgeyByZXR1cm4gIW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJv
eWVkKCk7IH0KIAogICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgbWFudWFs
TG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZv
aWQgbWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRG
YWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBlZTQwZmI5NTg1ZTc5ZDg2YjNjZmQyZjU3OWVkNDZl
NjFiOWVjNjNlLi4zMTQ4MmViM2IzNjhkNzhhNjFhN2VjMWQyNGM1OTgxMGJjOTFlZDhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2
b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1f
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZp
ZXIpOwogfQogCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsK
QEAgLTgwLDE0ICs4MCwxNCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgIGlmIChtX3dh
aXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKICAgICAgICAgaWYg
KCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VE
YXRhKSkKICAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigp
OwotICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSku
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBi
dWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2Zl
dGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19j
YXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICBl
bHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGludDY0
X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2
ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1f
ZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1EYXRh
KQpAQCAtMTM2LDE1ICsxMzYsMTUgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICB9KTsK
IH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxv
YkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV9pc0Rvd25sb2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBkYXRh
LCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVy
KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
YnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRS
ZWNlaXZlRGF0YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9
LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIgLCBzdGF0
aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9
CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNoQmxvYkxv
YWRpbmcoKQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgICAgICBpZiAobV9kaWRG
aW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oY29uc3QgU2hh
cmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZm
ZXIuZ2V0KCkpOworICAgICAgICBkaWRSZWNlaXZlRGF0YShidWZmZXIuY29weSgpLT5tYWtlQ29u
dGlndW91cygpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmlu
aXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggZTk4N2UxOWFjOGI3Mzg4NzFhYWQ4MmI0
YjM4NTYyOTY4YTJiNmM5Yy4uMDk0MDBkZjBjZTcyNWYzOWE4YjExZDkzNWUxNDU0ZTM5OWY1YTI2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtNTAsNyArNTAsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9u
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpG
b3JtRGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtNjAsOCAr
NjAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udmVydEZldGNoVG9Eb3dubG9hZCgpIGZpbmFs
OwogCiAgICAgdm9pZCBjbGVhbnVwKCk7Ci0gICAgCi0gICAgdm9pZCBkaWRSZWNlaXZlQmxvYkNo
dW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVC
bG9iQ2h1bmsoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRGaW5p
c2hCbG9iTG9hZGluZygpOwogCiAgICAgc3RydWN0IEJsb2JMb2FkZXIgZmluYWwgOiBXZWJDb3Jl
OjpGZXRjaExvYWRlckNsaWVudCB7CkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICAg
ICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IH0KLSAgICAgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmlu
YWwgeyBjbGllbnQtPmRpZFJlY2VpdmVCbG9iQ2h1bmsoZGF0YSwgc2l6ZSk7IH0KKyAgICAgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpIGZp
bmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEpOyB9CiAgICAgICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBjbGll
bnQtPmRpZEZhaWwoZXJyb3IpOyB9CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsg
Y2xpZW50LT5kaWRGaW5pc2hCbG9iTG9hZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCmluZGV4IDE0YTA4M2NhMjA3YTkwNjNjZjgwYjFlN2U5NjcwYTQ4N2NmNGQzOTku
LmVkNGY1ZGU5ZDVlNTYxOGQ0MzI0NTUwODJmNWRhMTg4YWJmOWJmNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE1MiwxMCArMTE1MiwxMCBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgd2ViUGFnZS0+
ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQobV9mcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNv
bW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIGlmICghbV9wbHVnaW5WaWV3KQotICAgICAgICBsb2FkZXItPmNvbW1pdERh
dGEoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEpOwogCiAg
ICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGEgc3RhbmQtYWxvbmUgbWVkaWEgZG9jdW1lbnQsIG5v
dyBpcyB0aGUgcmlnaHQgdGltZSB0byBjYW5jZWwgdGhlIFdlYktpdCBsb2FkLgogICAgIC8vIEZJ
WE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlZCBhY3Jvc3MgYWxsIHBvcnRzLiA8aHR0cDov
L3dlYmtpdC5vcmcvYi80ODc2Mj4uCkBAIC0xMTc3LDcgKzExNzcsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IHVpbnQ4X3QqCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faGFzU2VudFJlc3BvbnNl
VG9QbHVnaW5WaWV3ID0gdHJ1ZTsKICAgICB9Ci0gICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2Fk
RGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX3BsdWdpblZpZXctPm1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YShkYXRhKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCmluZGV4IGJiNTI5ZDNhZWM0ZTJjNzVmMWE3ZGU5MWIxMGI1NTgyZDQ1MjJiNDIu
LjFkMzBiYzM5MzgzYWZmZjJjYTljMjg3NTNkZDJkN2VjMmIyNjQ5MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdp
bGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFjZU11
bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQg
Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5
KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRl
eCBhMjA1ZTAwMWNhNzE1ODIwOTEzYTgxYWU0YTgzNjUzMGY5YTBmNjQ4Li43MmUzNTU0YzhlMGFh
NjkwYTZlYzU3ODAxNzZmMTllMGI4ZDcwZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVu
dDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHIKIAogV2ViUHJldmlld0xvYWRlckNsaWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKSA9
IGRlZmF1bHQ7CiAKLXZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9w
YWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmgKaW5kZXggMGRjMTY3ZTViN2JjM2IwM2VmMzkzMWVhYjM1NmM3ODI3OTI5NTI5ZS4u
NjQ5YmM4MzE5YzI3ODZmMDFkNjE3YzExMTk5ZGIwYzZjMDc3ZmE3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bhc3N3b3Jk
RW50cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDk0MmVkYzYyM2E0ZTY1M2JiMTg4
YWVlMDUwNjQ0YTNmNGEwMzJlODkuLmY4OWZmNzJhMGQzMWJlYzExZWY4MDI5N2VmYmE5MmMyYTdi
YzY2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC03MDU3LDEyICs3MDU3LDEyIEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJl
Y2VpdmVSZXNwb25zZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kCiAgICAgaGFu
ZGxlci0+dGFza0RpZFJlY2VpdmVSZXNwb25zZSh0YXNrSWRlbnRpZmllciwgcmVzcG9uc2UpOwog
fQogCi12b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hl
bWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEpCit2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxT
Y2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmIGRhdGEpCiB7CiAgICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2No
ZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhh
bmRsZXIpOwogCi0gICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVy
LCBkYXRhLnNpemUoKSwgZGF0YS5kYXRhKCkpOworICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZl
RGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5idWZmZXIoKSA/ICpkYXRhLmJ1ZmZlcigpIDogU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1l
VGFza0RpZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE5NGI1YjlkN2ZlMzJmMjRhODZkYWFhZDQ0ODQyYjBjZGQw
YWViMmYuLjQ4ODY2NzA3YzQ2MTNkOWE3Y2QzNTIxNWRmY2E5MjNjNjk3OWJlYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE4NCw2ICsxODQsNyBA
QCBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwogY2xh
c3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0xODk2LDcgKzE4OTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
dXJsU2NoZW1lVGFza1dpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYp
OwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJVUkxTY2hl
bWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRh
c2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRl
bnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
OwotICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRs
ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50
aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgdXJsU2NoZW1lVGFz
a0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyQ29weSYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYlVSTFNj
aGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
dGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZv
aWQgc2V0SXNUYWtpbmdTbmFwc2hvdHNGb3JBcHBsaWNhdGlvblN1c3BlbnNpb24oYm9vbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgppbmRleCBiMjcyMjk0NzFlYWU4NmVlNTk4MTk4M2RkNTdiNWU3YTgyOTFjZDRiLi5iZGE1
ZjUwYWRkMjNhOTY3NDBlODlkNzMzZDc5YzE4N2YwNTJiZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTU2NCw3
ICs1NjQsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBX
ZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFVSTFNjaGVtZVRhc2tXaWxs
UGVyZm9ybVJlZGlyZWN0aW9uKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIg
aGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNr
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkgLT4gKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCBhY3R1YWxSZXF1ZXN0KSBBc3luYwogICAgIFVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVk
aXJlY3Rpb24oV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcHJvcG9zZWRSZXF1ZXN0KQogICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9u
c2UoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQotICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNl
aXZlRGF0YShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIs
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIFVSTFNjaGVtZVRhc2tE
aWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRs
ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50
aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKQogICAgIFVSTFNjaGVtZVRhc2tEaWRD
b21wbGV0ZShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAKICAgICBTZXRJc1N1c3BlbmRlZChib29s
IHN1c3BlbmRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCmluZGV4IDZkOGQwY2YyNzg0ZWQz
MDU2NjI1YzdmNmU4NDZhOTNhNzExY2JhY2QuLjYxNmVkYTA4ZjBiOGZjYWIyZDU3ZmM0NzUzMjkx
MDdiODE1Y2QyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcApAQCAtOTYsMTMgKzk2LDEz
IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlCiAgICAgdGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNl
KHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRS
ZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZp
ZXIsIHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQordm9pZCBXZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAg
ICBhdXRvKiB0YXNrID0gbV90YXNrcy5nZXQodGFza0lkZW50aWZpZXIpOwogICAgIGlmICghdGFz
aykKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGFzay0+ZGlkUmVjZWl2ZURhdGEoc2l6ZSwgZGF0
YSk7CisgICAgdGFzay0+ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhh
bmRsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5LmgKaW5kZXggNThiZWNjMTdiNWQ4NTk4NzQ5ODg0ZDMwMjUxNjg5Y2Nj
YzE3NjkzZi4uYWIyMGJkNTczYWE0YWZjMTU4MDU5MGYyNzA0NjYzMDA2ODc3NDBlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC01OSw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGFza0RpZFBlcmZvcm1S
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIHRh
c2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCB0YXNrRGlkUmVjZWl2
ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBzaXplX3QsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEpOworICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAg
dm9pZCB0YXNrRGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCB0YXNrRGlkU3RvcExvYWRp
bmcoV2ViVVJMU2NoZW1lVGFza1Byb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCmluZGV4IDM2
MDZiYmRjNjUyMTVkZGNhOTI2MTNhODEwN2RhYjFiMTFlY2I2NTYuLjllNzJkODRjOTdkZjZkMjk3
MTRhODNjNTFhYzE3NzYzZTVmYjY1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcApAQCAtMTQwLDIx
ICsxNDAsMjEgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICB9KTsKIH0KIAotdm9pZCBX
ZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25zdCB1
aW50OF90KiBkYXRhKQordm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIWhhc0xvYWRl
cigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29tcGxldGlvbkhh
bmRsZXIpIHsKICAgICAgICAgV0VCVVJMU0NIRU1FVEFTS1BST1hZX1JFTEVBU0VfTE9HKCJkaWRS
ZWNlaXZlRGF0YTogUmVjZWl2ZWQgZGF0YSBkdXJpbmcgcmVzcG9uc2UgcHJvY2Vzc2luZywgcXVl
dWluZyBpdC4iKTsKLSAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgZGF0YVZlY3RvciA9IFZlY3RvciB7IGRhdGEsIHNpemUgfV0gewotICAgICAg
ICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YVZlY3Rvci5zaXplKCksIGRhdGFWZWN0b3IuZGF0YSgp
KTsKKyAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgZGF0YSA9IFJlZiB7IGRhdGEgfV0geworICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0
YSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUmVmIHByb3Rl
Y3RlZFRoaXMgeyAqdGhpcyB9OwotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0
YSwgc2l6ZSwgMCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2Nv
cmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIDAsIERhdGFQYXlsb2FkVHlwZTo6RGF0YVBh
eWxvYWRCeXRlcyk7CiAgICAgcHJvY2Vzc05leHRQZW5kaW5nVGFzaygpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQ
cm94eS5oCmluZGV4IDc1NTA4Nzk0MTgyMGZlZWZjNWQwMTI3MTU4YzA2NGNlMjU4YTA4MzUuLmVk
OTFmMzhlM2FkZDEzYmUxOWNiMjE3N2VkNDQ4ZmRkMmZhNzk1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5o
CkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTYsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQg
ZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tCmluZGV4IDBiYTk3MzVmZjBkM2M3Nzk0MGVmZDZkYzVmZjc3ZjVhZGJh
NzNmNzYuLjI3OTYwN2Q3ZDQzMzk5Yzc5MzA1MjQ4YjYzNzMzMTU4ODU5MjIzYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAt
NjkzLDYgKzY5Myw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFdlYlByb2Nlc3M6OnNvdXJjZUFw
cGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3QKIAogdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXpl
U2FuZGJveChjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBzYW5kYm94UGFyYW1l
dGVycykKIHsKKyAgICByZXR1cm47CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKICAgICAvLyBOZWVkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0LCBiZWNhdXNlIHNl
cnZpY2UgaGFzIGEgZGlmZmVyZW50IGJ1bmRsZSBJRC4KICAgICBhdXRvIHdlYktpdEJ1bmRsZSA9
IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJLaXQiXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKaW5kZXgg
YTI1NTYwYTEwYzI4ODJlMWFiZDE3ODQ1Njk0ODZlYTEzZWQ4OTZkNC4uMzI4OWMyMzYyOWEwZGMz
MWZjMGMxOTllZGYxMzI5N2JlZDYxYTE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4K
ICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIApAQCAtNzMsNyArNzQsNyBAQCBw
cml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5nTG9hZENv
bXBsZXRlKHsgfSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2
b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKGVycm9yKTsgfQogICAg
IGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
KSBmaW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCA5NTlkNzQ4YjU2YmUxMDc2YmQ5Nzc5OTIyY2QzNTZkMjFh
NjgxNzRlLi44ZGY5OTNmMmQ3NzViNmM5M2QyZThmMDk5MGY3MmY4NWY2MThlNThlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTQ4LDEwICs0OCwxMiBAQCBjbGFzcyBTZXNzaW9uSUQ7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNs
YXNzIENhY2hlZEZyYW1lOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEhp
c3RvcnlJdGVtOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIGNsYXNz
IFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+IHsKQEAgLTE1MSw3
ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFs
OwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29u
c3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAg
ICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsK
ICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUds
b2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCmluZGV4IDQzZTYzZjQ1NjM0NWVjZjFjOTI0ZTViNzcyYTZmNTQxNzNhOTE0MmIuLjg3YTVk
NjU3ZjdiNzMzZDA3YzVkYjYwMWY2OTgxZjkwNDk3NzEzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCkBAIC05OTIsMTAgKzk5Miw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkKICNlbmRpZgogfQogCi12b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBhdXRvIG5zRGF0YSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWRhdGEgbGVu
Z3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICBbZGF0YVNvdXJjZShsb2FkZXIpIF9y
ZWNlaXZlZERhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBbZGF0YVNvdXJjZShsb2FkZXIpIF9yZWNl
aXZlZERhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAKIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9h
ZGVyKQpAQCAtMjAxMiw3ICsyMDExLDcgQEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG8KICAgICAg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRoOwogICAgICAgICBSZXRhaW5QdHI8TlNG
aWxlSGFuZGxlPiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUK
KyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBkYXRhQXJyYXkg
PSBidWZmZXIuY3JlYXRlTlNEYXRhQXJyYXkoKTsKICAgICAgICAgICAgIGZvciAoTlNEYXRhICpk
YXRhIGluIGRhdGFBcnJheS5nZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCmluZGV4IDBlMDViMThkNjk2Mzk4MjhkNDMzYzQ2ZDc5MjFjZjcwZGU3ZGY5
ZDEuLjJhODc3MGRmODBiYjlmNzBjMTBiYjkxZjk1MjBkMWUxOWM4NTlkOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtOTc3LDcgKzk3Nyw3IEBA
IC0gKHZvaWQpX2NvbW1pdERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICBhdXRvKiBkb2N1bWVudCA9
IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCk7CiAgICAgZG9jdW1lbnQtPnNldFNob3Vs
ZENyZWF0ZVJlbmRlcmVycyhfcHJpdmF0ZS0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKTsKIAotICAg
IF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERh
dGEoKGNvbnN0IHVpbnQ4X3QqKVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgX3By
aXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+Y29tbWl0RGF0YShX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBmYjI1ODNmZTk3MjY0YzczZWViMjNlYmI0ZDM5OTBi
M2I4NGEwN2YzLi4xMjcwZTU3ZGQ5NWIwZDAwMDNiNWU1Njc3ZDQ3NDJhMTI1NTJkODUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC02NDEsOSArNjQxLDkgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRl
ZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIGxvYWRlci0+
Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOworICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhKTsK
IAogICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50
LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2VsIHRoZSBXZWJLaXQgbG9hZC4KICAgICAv
LyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIGFsbCBwb3J0cy4gPGh0
dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
MDk1YjI1MzVhNjg3NTQ3YmQ3ODg0NmY5MDc2YWU2YzdkMDE2Mjk0OC4uNzkyNmZkMzY3MTgwOWU4
Mzg0N2E0ODAzMWE4YjkwYzYzOGZhZjdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9
IFN0cmluZygpKSBvdmVycmlkZTsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpE
b2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQg
Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJlMGU2MjA0NmE2NDc2YTFmMjUyZGU5OWU0
ZjQ3MTAwN2JkYjk0YTUuLmNlMmQ5MGUyODViODY1YmU0MmUzNDQzYmE0YWIzYThiZjNjZjRiZjgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIG1ha2UgU2hhcmVkQnVmZmVyOjpjb3B5KCkgcmV0dXJuIGEgY29udGlndW91
cyBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNDYyMgorICAgICAgICByZGFyOi8vcHJvYmxlbS84NjgyOTUyNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUX0YpOgorCiAyMDIxLTEyLTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXVthMTF5XSBTdG9wIHNldHRpbmcgbWFuYWdlcy1kZXNj
ZW5kYW50cyBvbiB3ZWIgcHJvY2VzcyByb290IG9iamVjdCB3aXRoIEFUU1BJCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGYx
MmI5ZjA4MzYwNTU4OTRjZDY1YTgyM2Q1ZmY2ZTM0Yjk4YWQ1OTguLjA2NjlkMDdjNjRmOWRmNTQ5
YzNlNTEwMmVkNjdiNjljYzI5NTQyZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zMDMsNiArMzAzLDE1IEBAIFRFU1Rf
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBjaGVjayhidWlsZGVyLnRh
a2UoKSk7CiB9CiAKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weUlzQ29u
dGlndW91cykKK3sKKyAgICBFWFBFQ1RfVFJVRShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLT5jb3B5
KCktPmlzQ29udGlndW91cygpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCktPmNvcHkoKS0+aXNDb250aWd1b3VzKCkpOworICAgIGNvbnN0IGNoYXIq
IGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CisgICAgRVhQRUNU
X1RSVUUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQp
KS0+Y29weSgpLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpLT5jb3B5
KCktPmlzQ29udGlndW91cygpKTsKK30KKwogI2lmIEVOQUJMRShNSFRNTCkKIC8vIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyIHVuaXQtdGVzdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHNpemVfdCBOID4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448015</attachid>
            <date>2021-12-27 17:39:11 -0800</date>
            <delta_ts>2021-12-27 19:16:32 -0800</delta_ts>
            <desc>Patch for EWS test (combined)</desc>
            <filename>bug-232424-20211228123906.patch</filename>
            <type>text/plain</type>
            <size>287089</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3MDk2ZjA2YzcyZmVh
MmZjMWUwMzk0MDIyMzg5MWVlZGJmZGM4MC4uYjNlNzYyZjg1ZTM1NjBiNzdjZTI1N2I0NDY5OTg4
MjBmNzE1NmUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1NCBAQAorMjAyMS0xMi0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1
ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBtb2RpZnkgYWxsIGRpZFJlY2VpdmVEYXRhIGFuZCBy
ZWxhdGVkIG1ldGhvZHMgc28gdGhhdCB0aGV5IG5vIGxvbmdlcgorICAgICAgICB1c2UgdWludDhf
dCovaW50IGFuZCBpbnN0ZWFkIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIFdlIGRvIHRoZSBz
YW1lIGZvciBhbnkgaW50ZXJtZWRpYXJpZXMgdXNlZCBieSB0aGUgdmFyaW91cyBkaWRSZWNlaXZl
RGF0YQorICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgIFRoaXMgd2lsbCBmYWNpbGl0
YXRlIG1vdmluZyBuZXR3b3JraW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVQorICAg
ICAgICBwcm9jZXNzIGFuZCBhbGxvd3MgdG8gcmVtb3ZlIHNldmVyYWwgbWVtb3J5IGFsbG9jYXRp
b25zIGFuZCBjb3BpZXMgYXQgdGhlCisgICAgICAgIHByb2Nlc3MgYm91bmRhcmllcy4KKyAgICAg
ICAgV2UgY2FuIG5vdyBjb25zaWRlciB0cmFuc2ZlciB0aGUgdW5kZXJseWluZyBTaGFyZWRNZW1v
cnkgY3JlYXRlZCBpbgorICAgICAgICB0aGUgbmV0d29yayBwcm9jZXNzIGFsbCB0aGUgd2F5IHRv
IHRoZSBHUFUgcHJvY2Vzcy4KKworICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhh
dmlvdXIuIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaExvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpC
b2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3Bv
bnNlOjpjb25zdW1lQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmg6CisgICAgICAgICogZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURh
dGFJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpm
aW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRp
bnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
Ojpjb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb21taXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlw
YXJ0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3Jp
dGVyLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVs
ZW1lbnRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lv
bmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVt
YWluaW5nRGVsZWdhdGVNZXNzYWdlcyk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5v
dGlmaWVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6Cisg
ICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjp1cGRhdGVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFk
ZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3Vy
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZU1lZGlhTG9h
ZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
bGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJv
bm91c0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRl
ckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNv
dXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToK
KyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
IGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpk
YXRhQ2hhbmdlZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCisyMDIxLTEyLTIzICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2NhbGFibGVJbWFnZURlY29kZXIgc2hvdWxkIGJl
IHVzaW5nIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIERhdGFTZWdtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDEKKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vODU4NTQyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBEYXRhU2VnbWVudCBzaG91bGQgYmUgYSBTaGFyZWRCdWZmZXIncyBpbXBsZW1l
bnRhdGlvbiBkZXRhaWxzIGFuZCBub3QKKyAgICAgICAgYmUgdXNlZCBvdXRzaWRlIFNoYXJlZEJ1
ZmZlcidzIGNvZGUuCisgICAgICAgIEhpc3RvcmljYWxseSwgdXNpbmcgdGhlIGlubmVyIERhdGFT
ZWdtZW50IHdhcyByZXF1aXJlZCBhcyBpdCB3YXMgdGhyZWFkCisgICAgICAgIHNhZmUgd2hpbGUg
U2hhcmVkQnVmZmVyIHdhc24ndDogVGhpcyBpcyBubyBsb25nZXIgdGhlIGNhc2UuCisgICAgICAg
IFNoYXJlZEJ1ZmZlciBhbmQgRGF0YVNlZ21lbnQgYXJlIHNlbWFudGljYWxseSB2ZXJ5IHNpbWls
YXIsIHNvIHRoaXMgaXMKKyAgICAgICAgbW9zdGx5IGEgZmluZC9yZXBsYWNlIGNoYW5nZS4KKyAg
ICAgICAgRmxhdHRlbmluZyB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBzdGlsbCByZXF1
aXJlZCBhcyBtb3N0IGRlY29kZXJzCisgICAgICAgIHJlcXVpcmUgcmVhZGluZyB0aGUgcmF3IGJ5
dGVzLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJhY2tpbmdTdG9yZTo6SW1hZ2VCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpB
VklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1h
Z2VSZWFkZXI6OnJlYWRVaW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6
OnJlYWRVaW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnNldERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5o
OgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKUEVHSW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlBFRzIwMDBJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQTkdJbWFnZVJlYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUElt
YWdlRGVjb2Rlcjo6ZGVjb2RlKToKKworMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIG1ha2UgU2hhcmVkQnVmZmVyOjpjb3B5KCkgcmV0dXJu
IGEgY29udGlndW91cyBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDYyMgorICAgICAgICByZGFyOi8vcHJvYmxlbS84NjgyOTUy
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG1ha2Ug
U2hhcmVkQnVmZmVyOjpjb3B5KCkgcmV0dXJuIGEgY29udGlndW91cyBTaGFyZWRCdWZmZXIKKwor
ICAgICAgICBBUEkgdGVzdHMgYWRkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSBj
b25zdCk6CisKIDIwMjEtMTItMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIFRlc3QgYWNjZXNzaWJpbGl0eS9hcmlhLWlu
aGVyaXRzLXByZXNlbnRhdGlvbmFsLmh0bWwgaXMgZmFpbGluZyB3aXRoIEFUU1BJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGNlMjdlMTRjNjlmZDI0NGFlN2IyNDQ1ZTNlNDk4N2M2ZjcxYmIyODMuLmEwODNlOWI0OTk0
NTIzNTIyMGEwNmU4ODQyNTViYThjMDg4ZjVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBA
CisyMDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBuZXR3b3JraW5nIGFj
dG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFS
ZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVu
ZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNlbmRCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNr
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6bG9hZEJvZHlGcm9tUHJlbG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6Cisg
ICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyk6
CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjptYW51
YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZUJsb2JDaHVuayk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KToKKwogMjAyMS0xMi0yNiAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBXZWJLaXQvQ29j
b2FDb2xvci5oIHdpdGggV2ViQ29yZS9Db2xvckNvY29hLmgsIG5vdCBjb25mdXNpbmcgYXQgYWxs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDU3NjgxYjIxYTczNDM5ZTkwYmYyMWJhMjQ0OTU4MjU5
N2UwMTk5ODIuLmJiMWM1YjUzNmM0Zjk5MTVmYmFiZDlhYzMwMzdiYzQ0OGM3NzQ2YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNl
Q2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAg
ICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg6CisKIDIwMjEtMTIt
MTQgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUg
U2hhcmVkQnVmZmVyIGNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZWY5
NDlkZTYwNjg5NmNhOTkzZWRmOGYzNGQ5YzFiMzBhNWI2NTRhYi4uZDU5NTdkZGIxZjRhZjg4YTRi
NWZkNzEzMGYxMDcxNDlhYjUwOWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBu
ZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVQcmV2aWV3TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgor
ICAgICAgICAoLVtXZWJGcmFtZSBfY29tbWl0RGF0YTpdKToKKwogMjAyMS0xMi0yMiAgTWljaGFl
bCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggV2ViS2l0IEJ1aWxk
IGlzc3VlcyB3aGVuIHVzaW5nIHN5c3RlbSBjb250ZW50IHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggYzIzMWYyMDdk
YTI1Y2QyYTE1ODYwZDI4ZGIzY2UxN2U4NTc1NzdkNS4uZTYxM2FhNTA5Zjc0YzBkZTBlNmQzODM1
MThlNTI2ZjczYWE1OGVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTMyMCwxMyArMzIwLDEzIEBAIHZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25z
dCBTdHJpbmcmIGNvCiAgICAgfQogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9zb3Vy
Y2UpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShk
YXRhLCBzaXplKSk7CisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2J1ZmZlci5hcHBl
bmQoZGF0YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaAppbmRleCA4NzFkMmMwODYzMzFhOTgyOTRhMTY2YTRiNDJlMzE4NGUwMzc3NzJiLi5kNDY1
MWIyM2RhNzFjZjhmNGM4Yzk5NjcxZDIyN2ViNWFjOGQyYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKIAogICAgIGV4cGxpY2l0IEZldGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBt
X3R5cGUodHlwZSkgeyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBi
b29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9CiAgICAgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgp
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3du
ZXIuY3BwCmluZGV4IGE2MzMxMDhiNTQ3NzgzOTNmYzU0NzUwMDMyYTlhMmU4NmFkZTdmY2MuLjUz
NjY4MTU1YmRlYmMxYWVmMzlmNGQ5OWZiOWRhZGMxZWJlZjdhMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0yOTgsMTEgKzI5OCwx
MCBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ0ZhaWxlZCgpCiAgICAgZmluaXNo
QmxvYkxvYWRpbmcoKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkNo
dW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIEFTU0VSVChkYXRhKTsKICAg
ICBBU1NFUlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7Ci0gICAgaWYgKCFtX3JlYWRhYmxlU3Ry
ZWFtU291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpKQor
ICAgIGlmICghbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+ZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKSkpCiAgICAgICAgIHN0b3AoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDVjYTdlMzk2YzQyMjcwMTkzNTZi
MDgwNmU0ZWVkYmU5NWU5MjhmNGIuLjgxZmQwNmVjZGQ2ZmMzOGM5ZTg1OTg3Y2ViZGZjMTZkZDg2
ZjNjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGZXRjaExvYWRlci5oIgogI2luY2x1ZGUg
IkZldGNoTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMCw3ICsx
MDEsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgLy8gQmxvYiBsb2FkaW5nIHJvdXRp
bmVzCi0gICAgdm9pZCBibG9iQ2h1bmsoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9p
ZCBibG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBibG9iTG9hZGluZ1N1
Y2NlZWRlZCgpOwogICAgIHZvaWQgYmxvYkxvYWRpbmdGYWlsZWQoKTsKICAgICB2b2lkIGZpbmlz
aEJsb2JMb2FkaW5nKCk7CkBAIC0xMTMsNyArMTE0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAv
LyBGZXRjaExvYWRlckNsaWVudCBBUEkKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG93bmVyLmJsb2JD
aHVuayhkYXRhLCBzaXplKTsgfQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhidWZmZXIpOyB9CiAg
ICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsgb3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4
IDAzZjg5YjYxY2E1ZjdjNzE3NmI5ZDg4Y2QxMzY2MGU4NmI3YTI1NDguLjRiNDViZmQ4NzUwNDA2
ZjZlN2RhNzE4Zjk5ODE2OTQ3MWE1ZTg0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0xNDgsMTMgKzE0OCwxMyBAQCB2b2lkIEZldGNoTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlcwogICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9
CiAKLXZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIHZhbHVl
LCBpbnQgc2l6ZSkKK3ZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBib29sKQogewogICAgIGlmICghbV9jb25zdW1lcikgewotICAgICAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YSh2YWx1ZSwgc2l6ZSk7CisgICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9j
b25zdW1lci0+YXBwZW5kKHZhbHVlLCBzaXplKTsKKyAgICBtX2NvbnN1bWVyLT5hcHBlbmQoYnVm
ZmVyKTsKIH0KIAogdm9pZCBGZXRjaExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmgKaW5kZXggNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZC4uNWVlYWVm
ODJkMWRmM2VmY2VkMjE0MDAzZGY1MTg4ODcwMzZmOTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQgQVBJLgogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGlu
dCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBi
b29sIHVzZVN0ckxlbikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
TG9hZGVySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlckNsaWVudC5oCmluZGV4IGZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0
NWU3ODkuLjEwOWUwOGVjZjdhNDdlN2MwMzdlMzJkY2FhY2FiODZjODFjMThkM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGRpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCmluZGV4IDBlN2IwMDVlODlhM2QxNzQwYjFjZjlhZGZmOGI0ZjJmMmZjNDNjOTku
LmRjYTBlMjM4MmUzMmZjMDM3Mjg4N2ZkNDg1MjE0YTE3MzAxYjFiZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzYyLDEyICszNjIs
MTIgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxsYmFjayht
X3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hSZXNw
b25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZSB8fCBt
X2NvbnN1bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURhdGFDYWxsYmFjaykg
ewotICAgICAgICBTcGFuIGNodW5rIHsgZGF0YSwgc2l6ZSB9OworICAgICAgICBTcGFuIGNodW5r
IHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9OwogICAgICAgICBtX2NvbnN1bWVEYXRh
Q2FsbGJhY2soJmNodW5rKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM3NSw3ICszNzUs
NyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgIGF1dG8mIHNvdXJjZSA9ICptX3Jlc3Bv
bnNlLm1fcmVhZGFibGVTdHJlYW1Tb3VyY2U7CiAKICAgICBpZiAoIXNvdXJjZS5pc1B1bGxpbmco
KSkgewotICAgICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChkYXRhLCBz
aXplKTsKKyAgICAgICAgbV9yZXNwb25zZS5ib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoYnVmZmVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgRmV0
Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiAgICAgICAgIHN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBpZiAoIXNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6
ZSkpKSB7CisgICAgaWYgKCFzb3VyY2UuZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSkpIHsKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDY3
LDcgKzQ2Nyw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRh
JiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAKIHZvaWQgRmV0Y2hSZXNwb25z
ZTo6Y29uc3VtZUNodW5rKFJlZjxKU0M6OlVpbnQ4QXJyYXk+JiYgY2h1bmspCiB7Ci0gICAgYm9k
eSgpLmNvbnN1bWVyKCkuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkp
OworICAgIGJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShjaHVu
ay0+ZGF0YSgpLCBjaHVuay0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHZvaWQgRmV0Y2hSZXNwb25z
ZTo6Y29uc3VtZUJvZHlBc1N0cmVhbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCmluZGV4IDZiMDUwNWQ4OGIxMzJlMjhjYjk1NGFiOWEwZTdlZmU4MTNm
NzAyYWYuLmY5OTI0OWMzOWY5ZDBiMmZjODdhMmY5YzQ2ZDc5MzkyODg4MTRiZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xNDMsNyArMTQz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWw7CiAgICAgICAg
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKKyAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKIAog
ICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3RpZmljYXRpb25D
YWxsYmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggMjdhNmQ3
MDMzNGNhMzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1MmU3ZC4uYTY0MWY4MTA3YjRmZDE3OTExZmRi
OTJiYjMwZjQ1ZTJlODJiNTJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTc3LDEwICsxNzcs
MTAgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIAogLy8gTUFSSzogLSBDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudAogCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQor
dm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgbV9kYXRhLmFwcGVuZChkYXRh
LCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggY2UwMDlkNGU1ZWRj
MzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNiZS4uMGQzYmRiNzQ5ZDdhMzM2OGIzY2E2OGMyMTcz
MTYwNTkxNTQ5ZDFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0
ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgLy8g
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgb3ZlcnJpZGVzLgotICAgIHZvaWQgZGF0YVJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZp
bmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVk
QnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgLy8gTW9kZWxQbGF5ZXJD
bGllbnQgb3ZlcnJpZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtU2luay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtU2luay5oCmluZGV4IGQ1MTczZmJmOGI0MDM0MWM1Y2Y4ZDhhNGY1NWVl
YWM4ZmY4MzhhMzkuLmZlZTk4ODQyMjFiYjQzZThjYzA2MmVhYmNkMGE5OWVjNTRjMDM0NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNp
bmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1T
aW5rLmgKQEAgLTM1LDcgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZm
ZXJTb3VyY2U7CiBjbGFzcyBSZWFkYWJsZVN0cmVhbTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBSZWZDb3VudGVkPFJl
YWRhYmxlU3RyZWFtU2luaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5jcHAKaW5kZXggYjdmNzVlZGEzYjIzM2IxOWIyMGVkNzA0Mjg5NDliYjMz
NTg5OGU4MS4uNzM4NTJkNGMwYWYwMzg0NzVmMTViNjU0OWRjNjg5YmY4NTUxYjIwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIu
aCIKQEAgLTE2MywxNiArMTY0LDE1IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyCiAgICAgICAg
IG1fY2xpZW50LT5kaWRTdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBGaWxlUmVhZGVyTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3Zv
aWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGJvb2wpCiB7Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIEFTU0VSVChkYXRhTGVuZ3Ro
ID4gMCk7CisgICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkpOwogCiAgICAgLy8gQmFpbCBvdXQgaWYg
d2UgYWxyZWFkeSBlbmNvdW50ZXJlZCBhbiBlcnJvci4KICAgICBpZiAobV9lcnJvckNvZGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGludCBsZW5ndGggPSBkYXRhTGVuZ3RoOworICAgIGludCBs
ZW5ndGggPSBidWZmZXIuc2l6ZSgpOwogICAgIHVuc2lnbmVkIHJlbWFpbmluZ0J1ZmZlclNwYWNl
ID0gbV90b3RhbEJ5dGVzIC0gbV9ieXRlc0xvYWRlZDsKICAgICBpZiAobGVuZ3RoID4gc3RhdGlj
X2Nhc3Q8bG9uZyBsb25nPihyZW1haW5pbmdCdWZmZXJTcGFjZSkpIHsKICAgICAgICAgLy8gSWYg
dGhlIGJ1ZmZlciBoYXMgaGl0IG1heGltdW0gc2l6ZSwgaXQgY2FuJ3QgYmUgZ3Jvd24gYW55IG1v
cmUuCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCkgewotICAgICAg
ICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbV90b3RhbEJ5dGVzICsgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGRhdGFMZW5ndGgpOworICAgICAgICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbV90
b3RhbEJ5dGVzICsgYnVmZmVyLnNpemUoKTsKICAgICAgICAgICAgIGlmIChuZXdMZW5ndGggPCBt
X3RvdGFsQnl0ZXMpIHsKICAgICAgICAgICAgICAgICBmYWlsZWQoTm90UmVhZGFibGVFcnJvcik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgRmlsZVJl
YWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpCiAgICAgaWYgKGxlbmd0aCA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBtZW1j
cHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQs
IGRhdGEsIGxlbmd0aCk7CisgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihtX3Jhd0RhdGEt
PmRhdGEoKSkgKyBtX2J5dGVzTG9hZGVkLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpOwogICAgIG1f
Ynl0ZXNMb2FkZWQgKz0gbGVuZ3RoOwogCiAgICAgbV9pc1Jhd0RhdGFDb252ZXJ0ZWQgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggNTM5YzIz
MDRhODJlNjNhYWRmZTJjNTY3Yzk4ZDBiOGM2ODdhOGU5Zi4uYjdlNWI0MDU3ZmIyMDZmZjMyMzE1
NWNjMGYxNTAyZmNhMjBkMjY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CmluZGV4IDVjNWJiMmFlYTgzOTkxOGIwNjk3NzU4ODFjZTNhMzY5YTQyOGU1YjkuLjc4MTc3NWE4
NDE2NjI2ZTgyOTBmZWFiODI0ZTdiMmFlZjVjYWIyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC02MTYsMTAg
KzYxNiwxMCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudAogICAgICAgICBuZXR3b3JrQWdlbnQt
PmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoaWRlbnRpZmllciwgZG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5l
dHdvcmtBZ2VudCgpKQotICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50
aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbmV0
d29ya0FnZW50LT5kaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExv
YWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2Fk
ZXIqIHJlc291cmNlTG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGQyOTU3ODEwZDgzODJjOTM1MWQ1YTkzZjE0
NGFlZDE0OTNiY2M2NTEuLjgyYWNjZWQyMGNmZDUxMzFiMjUwMmYwOTlhOWM0ZmEyZmRkNjE2ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKQEAgLTE5MywxMyArMTkzLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBk
aWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoUGFnZSYsIERvY3VtZW50TG9hZGVyKiwgQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZShGcmFtZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ciYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZURhdGEoRnJhbWUqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBz
dGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
JiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVy
Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIApAQCAtNDE0LDcgKzQxNCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1l
bnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNv
dXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVy
UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXImLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYpOwpAQCAtMTA4MiwxNyArMTA4MiwxNyBAQCBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9u
c2UoRG9jdW1lbgogICAgICAgICBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1w
bCgqYWdlbnRzLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIsIGlkZW50aWZpZXIpOwogfQogICAg
IAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShG
cmFtZSogZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSog
ZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEZBU1RfUkVUVVJO
X0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzKGZyYW1lKSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCphZ2VudHMs
IGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAg
ICAgZGlkUmVjZWl2ZURhdGFJbXBsKCphZ2VudHMsIGlkZW50aWZpZXIsIGJ1ZmZlciwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBk
aWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyhnbG9iYWxTY29wZSksIGlkZW50
aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRh
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgYnVmZmVy
LCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2Fk
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcAppbmRleCAzOWIwMTFjZjA2ZjdmMzg1MzI0M2UwYTc2M2EzYjFkNDU0OTA0MTQ5Li4zMjhl
YmU3ZTY0MTE5NWU1YTQ2ODUwMjc1NTkxMGY3OGM0OGI1OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTkwLDEwICs5MCwx
MCBAQCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0
aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKLXZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
QVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhKTsKIH0KIAogdW5zaWduZWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgp
CkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQnVmZmVyUmVzb3VyY2VEYXRh
KGNvbnN0IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEmIHIKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLU5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCitOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
bWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291
cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpA
QCAtMjMwLDE1ICsyMzAsMTUgQEAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBj
b25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2UKICAgICBpZiAoIXNo
b3VsZEJ1ZmZlclJlc291cmNlRGF0YSgqcmVzb3VyY2VEYXRhKSkKICAgICAgICAgcmV0dXJuIHJl
c291cmNlRGF0YTsKIAotICAgIGlmIChyZXNvdXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRhdGFM
ZW5ndGggPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQorICAgIGlmIChyZXNv
dXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRhdGEuc2l6ZSgpID4gbV9tYXhpbXVtU2luZ2xlUmVz
b3VyY2VDb250ZW50U2l6ZSkKICAgICAgICAgbV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEt
PmV2aWN0Q29udGVudCgpOwogICAgIGlmIChyZXNvdXJjZURhdGEtPmlzQ29udGVudEV2aWN0ZWQo
KSkKICAgICAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKIAotICAgIGlmIChlbnN1cmVGcmVlU3Bh
Y2UoZGF0YUxlbmd0aCkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKSB7Cisg
ICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRhLnNpemUoKSkgJiYgIXJlc291cmNlRGF0YS0+aXND
b250ZW50RXZpY3RlZCgpKSB7CiAgICAgICAgIG1fcmVxdWVzdElkc0RlcXVlLmFwcGVuZChyZXF1
ZXN0SWQpOwotICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSwgZGF0YUxlbmd0
aCk7Ci0gICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YUxlbmd0aDsKKyAgICAgICAgcmVzb3Vy
Y2VEYXRhLT5hcHBlbmREYXRhKGRhdGEpOworICAgICAgICBtX2NvbnRlbnRTaXplICs9IGRhdGEu
c2l6ZSgpOwogICAgIH0KIAogICAgIHJldHVybiByZXNvdXJjZURhdGE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGRhYWU1ZmU0YTMx
ZTMxNTkzNjM3OTA0MjNmNWZiZDMzNzBjNWNkMzkuLmM4Y2VkMTJhNjQwN2ZkY2Q1NzRlY2MyYTc4
MTllZGU2NjM4MDNkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6
CiAgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0
aCgpIGNvbnN0OwotICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJik7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKIAogICAg
ICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJj
ZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIHNl
dFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBj
b250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxzZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNv
bnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOworICAgIFJlc291cmNlRGF0YSBjb25z
dCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFy
ZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwCmluZGV4IDNjZWI0YjQ3ZjEwNjhhMGFmZWFmMDBmMTc5YzI4MDBjNDc2YmQ2YjEuLjlhNjFl
YjQyZDgxZTc5M2M5Y2Y0OWJjZDU2ZmQyMzA0ZGY0OWFlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
QEAgLTEyNCwxNSArMTI0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVzZURl
dGVjdG9yKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKSBvdmVycmlkZQogICAg
IHsKLSAgICAgICAgaWYgKCFkYXRhTGVuZ3RoKQorICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YUxlbmd0aCA9PSAtMSkK
LSAgICAgICAgICAgIGRhdGFMZW5ndGggPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSkpOwotCi0gICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZChtX2RlY29kZXIt
PmRlY29kZShkYXRhLCBkYXRhTGVuZ3RoKSk7CisgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0g
dXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5k
YXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CisgICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZCht
X2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBkYXRhTGVuZ3RoKSk7CiAgICAgfQogCiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJp
ZGUKQEAgLTU0OSw5ICs1NDcsOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgICAgICAg
ICAgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCiAgICAgICAgICAgICAg
ICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBwcmV2aW91
c1Jlc291cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+YmFzZTY0RW5j
b2RlZCgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNC
dWZmZXJlZERhdGEoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNCdWZmZXIgPSBw
cmV2aW91c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNC
dWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBz
ZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgIHByZXZpb3Vz
UmVzb3VyY2VEYXRhLT5idWZmZXIoKS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0o
YXV0byYmIGJ1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPm1h
eWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgYnVmZmVyKTsKICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTc0LDI0ICs1NzEsMjggQEAgdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmkKICAgICAvLyBJZiB3ZSByZXZhbGlkYXRlZCB0aGUgcmVzb3Vy
Y2UgYW5kIGdvdCBOb3QgbW9kaWZpZWQsIHNlbmQgY29udGVudCBsZW5ndGggZm9sbG93aW5nIGRp
ZFJlY2VpdmVSZXNwb25zZQogICAgIC8vIGFzIHRoZXJlIHdpbGwgYmUgbm8gY2FsbHMgdG8gZGlk
UmVjZWl2ZURhdGEgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KICAgICBpZiAoaXNOb3RNb2RpZmll
ZCAmJiBjYWNoZWRSZXNvdXJjZSAmJiBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSkKLSAg
ICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgbnVsbHB0ciwgY2FjaGVkUmVzb3VyY2Ut
PmVuY29kZWRTaXplKCksIDApOworICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYg
KG1faGlkZGVuUmVxdWVzdElkZW50aWZpZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5Ojpy
ZXF1ZXN0SWQoaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBpbnQgZGF0YUxlbmd0aCA9IGRh
dGEuc2l6ZSgpOwogCi0gICAgaWYgKGRhdGEpIHsKLSAgICAgICAgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5t
YXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGlm
IChkYXRhLmRhdGEoKSkgeworICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3Vy
Y2VEYXRhKHJlcXVlc3RJZCwgZGF0YSk7CiAKICAgICAgICAgLy8gRm9yIGEgc3luY2hyb25vdXMg
WEhSLCBpZiB3ZSBkaWRuJ3QgYWRkIGRhdGEgdGhlbiB3ZSBjYW4gYXBwbHkgaXQgaGVyZSBhcyBi
YXNlNjQgZW5jb2RlZCBjb250ZW50LgogICAgICAgICAvLyBPZnRlbiB0aGUgZGF0YSBpcyB0ZXh0
IGFuZCB3ZSB3b3VsZCBoYXZlIGEgZGVjb2RlciwgYnV0IGZvciBub24tdGV4dCB3ZSB3b24ndCBo
YXZlIGEgZGVjb2Rlci4KICAgICAgICAgLy8gU3luYyBYSFJzIG1heSBub3QgaGF2ZSBhIGNhY2hl
ZCByZXNvdXJjZSwgd2hpbGUgbm9uLXN5bmMgWEhScyB1c3VhbGx5IHRyYW5zZmVyIGRhdGEgb3Zl
ciBvbiBjb21wbGV0aW9uLgogICAgICAgICBpZiAobV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSAm
JiByZXNvdXJjZURhdGEgJiYgIXJlc291cmNlRGF0YS0+aGFzQnVmZmVyZWREYXRhKCkgJiYgIXJl
c291cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSkKLSAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0
YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0
YSwgZGF0YUxlbmd0aCksIHRydWUpOworICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRS
ZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpLCB0cnVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkYXRhTGVuZ3Ro
ID0gZW5jb2RlZERhdGFMZW5ndGg7CisgICAgICAgIGVuY29kZWREYXRhTGVuZ3RoID0gMDsKICAg
ICB9CiAKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwg
dGltZXN0YW1wKCksIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTEyNzEsNyAr
MTI3Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgaWYgKGxvYWRlci0+cmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmFibGUg
dG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfcyk7CiAK
LSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8g
YnVmZmVyID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAg
LTEyOTYsOSArMTI5Nyw5IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgfQogICAgIHJl
c3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCByZXNwb25zZS5taW1lVHlwZSgpKTsKLSAgICBsb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShy
ZXNwb25zZSwgW2xvYWRlciwgYnVmZmVyID0gZGF0YS5yZWxlYXNlTm9uTnVsbCgpXSgpIG11dGFi
bGUgeworICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBi
dWZmZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkgewogICAgICAgICBpZiAoYnVmZmVyLT5z
aXplKCkpCi0gICAgICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZm
ZXIpLCBidWZmZXItPnNpemUoKSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAg
ICAgIGxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBidWZmZXItPnNpemUoKSwgRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKTsKICAgICAgICAgbG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5l
dHdvcmtMb2FkTWV0cmljcygpKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggNmJjZDg3
ZGRjZDhiMDQ0MTMwOGQxZDAxZWNhNmIwZTZkYTE0MTNkNC4uY2E2Zjc0ZTFiODY5ODBmNDBiMTU1
ZDEzZTE2YjcxYWRmYjk0MDQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0xMDEsNyArMTAxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0T2ZUeXBlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRM
b2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OkxvYWRU
eXBlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9h
ZGVyKik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRp
ZEZhaWxMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDQzMzJkNjkxYmJmODI2YTdjODdlYTgzYTMxN2U5
NjExNWEyMDQ5OTMuLmI4NmY5YmE2Mzc2NWVjNGRmZTg0ZjAyZGE0ZGY3ODIzMDljMTU4ZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTE0NSwxNCArMTQ1LDE0
IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uCiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6
OkJsb2NrZWQ7CiB9CiAKLWJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNl
aXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQorYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQg
fTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKLSAgICAgICAgTE9H
KENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICVkIGJ5dGVzIG9mIGRh
dGEgZnJvbSA8JXM+LlxuIiwgbGVuZ3RoLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tl
ZChbZGF0YSwgbGVuZ3RoXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsK
LSAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhLCBsZW5ndGgpOworICAgICAg
ICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVz
IG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgZGF0YS5zaXplKCksIG1fbWFpblJlc291cmNlLT51cmwo
KS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVy
VW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIm
IGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRh
KTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQp
CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VE
YXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0
ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9
PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5k
YXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGll
bnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VD
b250aWd1b3VzKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAppbmRleCA4YjZkZWZmZmFiODBmNWRhYzI1
ODdlMzcxYzAxODc5YjlmM2ZkZjc3Li42MGI0ZGExYTliMzM2OGMyZGZlY2ZmNDJiODlmMzU1OGU4
MzMxYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTYwLDcgKzYw
LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRp
bnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBi
b29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCk7CisgICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJik7CiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1
ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVE
YXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRl
eCAyMTVjMDRlYzk4OTVlOWYxZTZlMTQ3ZGE4MjA5MzAwOTg1MjM5NjIzLi5mYTdhZDMwMzlhMjA1
ZTkwNTcxMDhmM2M2ZjM5MjQxOWJjNDY0N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZUVy
cm9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNz
IENvbnRlbnRGaWx0ZXJDbGllbnQgewpAQCAtNDEsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0
ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNv
bnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
LCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCmluZGV4IDZiZjNhYzI5N2VjNmIyNjNhMDc4NjQwYmNmM2FkNTc3OWRiMGZlZGIuLjk3
ZTNkNjViM2U5MmRlMzI3ZjkyZjNiYWQ0Y2M1MWMxNTQ5M2E1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNDgzLDggKzQ4Myw4IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZygpCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYW4gZW1w
dHkgZG9jdW1lbnQsIGl0IHdpbGwgbm90IGhhdmUgYWN0dWFsbHkgYmVlbiBjcmVhdGVkIHlldC4g
Q29tbWl0IGR1bW15IGRhdGEgc28gdGhhdAogICAgICAgICAvLyBEb2N1bWVudFdyaXRlcjo6YmVn
aW4oKSBnZXRzIGNhbGxlZCBhbmQgY3JlYXRlcyB0aGUgRG9jdW1lbnQuCiAgICAgICAgIGlmICgh
bV9nb3RGaXJzdEJ5dGUpCi0gICAgICAgICAgICBjb21taXREYXRhKDAsIDApOwotICAgICAgICAK
KyAgICAgICAgICAgIGNvbW1pdERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CisKICAgICAg
ICAgaWYgKCFmcmFtZUxvYWRlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmcmFt
ZUxvYWRlcigpLT5jbGllbnQoKS5maW5pc2hlZExvYWRpbmcodGhpcyk7CkBAIC0xMTU3LDggKzEx
NTcsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQ
b2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGlmICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpICYmIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIGF1
dG8gY29udGVudCA9IG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpOwogICAgICAgICBpZiAoY29u
dGVudCAmJiBjb250ZW50LT5zaXplKCkpIHsKLSAgICAgICAgICAgIGNvbnRlbnQtPmZvckVhY2hT
ZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVk
KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICBjb250ZW50LT5m
b3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAg
ICAgICAgICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
fQogICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpCkBAIC0xMTcxLDcgKzExNzEs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xp
Y3lBY3Rpb24gcG9saWN5KQogICAgIH0KIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0
TG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRl
cjo6Y29tbWl0TG9hZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gQm90aCB1
bmxvYWRpbmcgdGhlIG9sZCBwYWdlIGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0
ZSBKYXZhU2NyaXB0IHdoaWNoIGRlc3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3Rh
cnRpbmcgYSBuZXcgbG9hZCwgc28gcmV0YWluIHRlbXBvcmFyaWx5LgpAQCAtMTE4Niw3ICsxMTg2
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKQogICAgIGlmIChBcmNoaXZlRmFjdG9yeTo6aXNBcmNoaXZlTUlNRVR5cGUo
cmVzcG9uc2UoKS5taW1lVHlwZSgpKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgZnJh
bWVMb2FkZXItPmNsaWVudCgpLmNvbW1pdHRlZExvYWQodGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAg
ICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuY29tbWl0dGVkTG9hZCh0aGlzLCBkYXRhKTsKIAogICAg
IGlmIChpc011bHRpcGFydFJlcGxhY2luZ0xvYWQoKSkKICAgICAgICAgZnJhbWVMb2FkZXItPmNs
aWVudCgpLmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCk7CkBAIC0xMjE1LDcgKzEyMTUsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkVXNlQWN0aXZlU2VydmljZVdvcmtlckZyb21QYXJl
bnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZQogfQogI2VuZGlmCiAKLXZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmNvbW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCit2b2lk
IERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBpZiAoIW1fZ290Rmlyc3RCeXRlKSB7CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1
ZTsKQEAgLTEzMTMsMjQgKzEzMTMsMjQgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0
YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICNlbmRpZgogCiAgICAgQVNT
RVJUKG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNpbmcoKSk7Ci0gICAgbV93cml0ZXIuYWRkRGF0
YShieXRlcywgbGVuZ3RoKTsKKyAgICBtX3dyaXRlci5hZGREYXRhKGRhdGEpOwogfQogCi12b2lk
IERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFp
blJlc291cmNlKTsKLSAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKTsKKyAgICBkYXRhUmVj
ZWl2ZWQoYnVmZmVyKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRh
UmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRl
ci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgpKQorICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZl
ZChidWZmZXIpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgIEFTU0VSVChkYXRhKTsK
LSAgICBBU1NFUlQobGVuZ3RoKTsKKyAgICBBU1NFUlQoYnVmZmVyLmRhdGEoKSk7CisgICAgQVNT
RVJUKGJ1ZmZlci5zaXplKCkpOwogICAgIEFTU0VSVCghbV9yZXNwb25zZS5pc051bGwoKSk7CiAK
ICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBi
ZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCkBAIC0xMzQwLDEyICsx
MzQwLDEyIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKQogI2VuZGlmCiAKICAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9h
ZFdpdGhvdXRSZXNvdXJjZUxvYWRlcikKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIo
KS5kaXNwYXRjaERpZFJlY2VpdmVEYXRhKHRoaXMsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIsIGRhdGEsIGxlbmd0aCwgLTEpOworICAgICAgICBmcmFtZUxvYWRlcigp
LT5ub3RpZmllcigpLmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEodGhpcywgbV9pZGVudGlmaWVyRm9y
TG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgYnVmZmVyLCAtMSk7CiAKLSAgICBtX2FwcGxpY2F0
aW9uQ2FjaGVIb3N0LT5tYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoLCAtMSwg
ZmFsc2UpOworICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNl
aXZlZChidWZmZXIsIC0xLCBmYWxzZSk7CiAKICAgICBpZiAoIWlzTXVsdGlwYXJ0UmVwbGFjaW5n
TG9hZCgpKQotICAgICAgICBjb21taXRMb2FkKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGNvbW1p
dExvYWQoYnVmZmVyKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0dXBGb3JSZXBsYWNl
KCkKQEAgLTE2MTQsNyArMTYxNCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRl
QXJjaGl2ZSgpCiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBl
KCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEo
bV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7
CisgICAgY29tbWl0RGF0YSgqbV9wYXJzZWRBcmNoaXZlRGF0YSk7CiAgICAgcmV0dXJuIHRydWU7
CiAjZW5kaWYKIH0KQEAgLTIyNTcsOCArMjI1Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1h
eWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+
c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgp
OwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKG1haW5SZXNvdXJjZURhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNv
bkxvYWRpbmcoKQpAQCAtMjQxMCw5ICsyNDA5LDkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5x
dWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoU2VjdXJpdHlQb2xpY3lWaW9sYXRpb24K
IH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLXZvaWQgRG9jdW1lbnRMb2FkZXI6
OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBzaXplKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRG
aWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgZGF0YVJlY2VpdmVkKGRh
dGEsIHNpemUpOworICAgIGRhdGFSZWNlaXZlZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50
TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5k
ZXggYjQ2OTgxZDc1MGIyNWMxZmQzMDdmMTZmZGE3NGI3ZWUzMDZhNGMzOS4uMjhlMjhhNjg4YWU2
YjU3ZTBmMGQxNGM0ZTdhMGMyNTU4Y2I2N2U0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNs
YXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNXQ2xpZW50Q29ubmVjdGlvbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291
cmNlTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwogY2xhc3MgVXNlckNvbnRlbnRV
UkxQYXR0ZXJuOwpAQCAtMzc3LDcgKzM3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0VGlt
aW5nKCkgeyBtX2xvYWRUaW1pbmcgPSB7IH07IH0KIAogICAgIC8vIFRoZSBXZWJLaXQgbGF5ZXIg
Y2FsbHMgdGhpcyBmdW5jdGlvbiB3aGVuIGl0J3MgcmVhZHkgZm9yIHRoZSBkYXRhIHRvIGFjdHVh
bGx5IGJlIGFkZGVkIHRvIHRoZSBkb2N1bWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
bW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29tbWl0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0JiBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpIGNvbnN0OwogICAgIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0KiBhcHBsaWNhdGlvbkNhY2hlSG9zdFVubGVzc0JlaW5nRGVzdHJv
eWVkKCkgY29uc3Q7CkBAIC00NzcsNyArNDc4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29t
bWl0SWZSZWFkeSgpOwogICAgIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwotICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCB1aW50OF90KiwgaW50KTsKKyAg
ICB2b2lkIGNvbW1pdExvYWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbGVhck1h
aW5SZXNvdXJjZUxvYWRlcigpOwogCiAgICAgdm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKQEAgLTQ5
Myw3ICs0OTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFpblJlY2VpdmVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJy
aWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmV2
aWV3UmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKQEAgLTUwMywxMyArNTA0LDEzIEBAIHByaXZhdGU6CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3Qg
dWludDhfdCosIGludCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBX
RUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRG
b3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRl
cihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogI2Vu
ZGlmCiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAg
IGJvb2wgbWF5YmVMb2FkRW1wdHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBiOWM0MTM1MjU2NzYyNjcyMTkwN2Fm
MzY2ZGZiMWRlYzc5NGMyNDc0Li44NjRiNjVhMWQxMTMxZmI2MzcxMjViMTczOTkxZTlkM2UwYTZl
NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtNDM3LDIwICs0MzcsMjAgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQK
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsK
IH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQor
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBkaWRSZWNlaXZl
RGF0YShtX3Jlc291cmNlLT5pZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGRp
ZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgYnVmZmVyKTsKIH0KIAotdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9jbGll
bnQpOwogCiAgICAgaWYgKG1fZGVsYXlDYWxsYmFja3NGb3JJbnRlZ3JpdHlDaGVjaykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5n
dGgpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGZhbHNlKTsKIH0KIAog
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9h
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlVGltaW5nJiByZXNvdXJj
ZVRpbWluZykKQEAgLTQ5MywyMCArNDkzLDE0IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmCiAK
ICAgICAgICAgaWYgKG9wdGlvbnMoKS5maWx0ZXJpbmdQb2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJp
bmdQb2xpY3k6OkRpc2FibGUpIHsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZl
ciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpIHsKLSAgICAgICAgICAgICAgICBidWZm
ZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXpl
KCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKCpidWZmZXIsIGZhbHNlKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VS
ZXNwb25zZTo6VHlwZTo6RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJlc3BvbnNl
LCBtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5j
bHVkZSA/IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6Ok5v
IDogUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzKSk7
Ci0gICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZm
ZXIoKSkgewotICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8m
IHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRh
KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+
cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEoKmJ1ZmZlciwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02NjcsMTEgKzY2MSw4
IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgfQogICAgIGRpZFJlY2VpdmVSZXNwb25z
ZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAKLSAgICBpZiAoZGF0YSkgewotICAgICAgICBkYXRh
LT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgZGlkUmVj
ZWl2ZURhdGEoaWRlbnRpZmllciwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAg
ICAgICAgfSk7Ci0gICAgfQorICAgIGlmIChkYXRhKQorICAgICAgICBkaWRSZWNlaXZlRGF0YShp
ZGVudGlmaWVyLCAqZGF0YSk7CiAKICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5k
ZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRp
bWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1f
b3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3Jr
TG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcygpLCByZXNwb25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgK
aW5kZXggZjFmNDFlZTkxZDZjZThhMWM1ODYyMzgxN2IzNThmNzc0NjUxZTBhNC4uYzg2YmE3ZjQ1
MzgzYjZjMjg2MDAzMmQzYWViZmJhM2UwODYwNzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtODYsMTQgKzg2LDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAg
ICAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsK
LSAgICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAg
ICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNv
dXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5n
Rm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgb3Zl
cnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNvbnN0IFJl
c291cmNlVGltaW5nJik7CiAgICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyKTsKICAgICAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdp
bkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFdyaXRlci5jcHAKaW5kZXggYjA0NmVmMGRlMjA0OGVmZDQzMTk3MDI2MjJiOTZhN2Rm
MmZlYWZhNy4uNGZmOTM4MTgwZmRkMjhmYzcxNWQwODg4MTYwOGZjNjI4OTQ5MmU5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAg
dm9pZCBEb2N1bWVudFdyaXRlcjo6cmVwb3J0RGF0YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5yZXNvbHZlU3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVp
bGQpOwogfQogCi12b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBzaXplX3QgbGVuZ3RoKQordm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSB0byBBU1NF
UlQgb25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MjcgaGFz
IGJlZW4gcmVzb2x2ZWQuCiAgICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Tm90
U3RhcnRlZCk7CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0
YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBBU1NFUlQobV9wYXJzZXIpOwotICAgIG1fcGFyc2VyLT5hcHBlbmRCeXRlcygq
dGhpcywgYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjppbnNl
cnREYXRhU3luY2hyb25vdXNseShjb25zdCBTdHJpbmcmIG1hcmt1cCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggMDcxNzJjOTczOWViNTczNWJjODFmOGRlZjJmYjli
Mjg1YzI1NGQwYi4uYzBhMzRhNmI3ZTljZmU5NjQzMDQ1YTk1ZTc5MzIyNTIzNjNiMjY4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudFBhcnNlcjsK
IGNsYXNzIEZyYW1lOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVj
b2RlcjsKIAogY2xhc3MgRG9jdW1lbnRXcml0ZXIgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIGJlZ2luKCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBVUkwmLCBib29sIGRp
c3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1l
bnQgPSBudWxscHRyKTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNp
emVfdCBsZW5ndGgpOworICAgIHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAg
ICB2b2lkIGluc2VydERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYpOyAvLyBGb3IgYW4g
aW50ZXJuYWwgdXNlIG9ubHkgdG8gcHJldmVudCB0aGUgcGFyc2VyIGZyb20geWllbGRpbmcuCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAppbmRleCA3NThjYmU4MDY1NGU4ODg5N2FjZDllZDQxMTk5MGM4Njg2Y2FmM2Jh
Li5kMjNjOTZiNmM1MjgwM2ZlYzJlNDU3YjdlYzdkYmM5ZWIzNzk5NWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogewogfQogCi12
b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCB1aW50OF90KiwgaW50KQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21t
aXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
MjI2OTljOWM1MTgzMmE1YWE4Yzg5YWJhYjJmZmM3ZTA5ODViZmMwMC4uMTE2YTE3ZDFmNWM5ZTY0
N2UxZjE0MWExMDA4NmIwNzk4MzkzZjNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9h
ZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQg
Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgZmluYWw7CiAKICAg
ICBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZmRjOTdk
YzQ2MmM4NzUyNmFhMTg4Zjc5NjhkNjBhMGM4M2Q2ODBkOS4uMTFjMGE4ZjY4NjE1MDZlMDk2MWU1
MmE4ZmY0YzcyMGIyNWJlMjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBib29sIEZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxl
bWVudFVSTChVUkwmIHVybCwgTm9kZSYgaW5pdGlhdG9yTm9kZSkKICAgICBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJl
cXVlc3RGcm9tRGVsZWdhdGUocmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwotICAgIG5vdGlm
aWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQo
KSwgaWRlbnRpZmllciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygpLCAt
MSwgU3RyaW5nKCkpLCAwLCAtMSwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIs
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UodXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpKSwg
bnVsbHB0ciwgLTEsIGVycm9yKTsKIAogICAgIHVybCA9IHJlcXVlc3QudXJsKCk7CiAKQEAgLTIw
ODcsOCArMjA4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgp
CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUpOwog
CiAgICAgICAgIC8vIFNlbmQgcmVtYWluaW5nIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBtYWluIHJl
c291cmNlLgotICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNv
dXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwKLSAgICAgICAgICAgIG51bGxwdHIsIHN0
YXRpY19jYXN0PGludD4obV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5leHBlY3RlZENvbnRl
bnRMZW5ndGgoKSksIDAsIG1haW5SZXNvdWNlRXJyb3IpOworICAgICAgICBub3RpZmllcigpLnNl
bmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5S
ZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Uo
KSwgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50PihtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgp
LmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgbWFpblJlc291Y2VFcnJvcik7CiAKICAgICAgICAg
VmVjdG9yPFJlZjxGcmFtZT4+IHRhcmdldEZyYW1lczsKICAgICAgICAgdGFyZ2V0RnJhbWVzLmFw
cGVuZChtX2ZyYW1lKTsKQEAgLTIxMzYsNyArMjEzNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNv
bW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEg
cmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUg
cmlnaHQgdGhpbmcuCiAgICAgICAgICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0
ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2Uu
CiAgICAgICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmls
ZS4KLSAgICAgICAgICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMo
bV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIDAs
IHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBl
cnJvcik7CisgICAgICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNl
LCBudWxscHRyLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpKSwgZXJyb3IpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFdoeSBvbmx5IHRo
aXMgZnJhbWUgYW5kIG5vdCBwYXJlbnQgZnJhbWVzPwpAQCAtMzE2Niw3ICszMTY1LDggQEAgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGlu
YXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hE
ZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNo
RGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbm90
aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdl
dCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgZGF0YSA/IGRhdGEtPmRhdGEoKSA6
IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwLCAtMSwgZXJyb3IpOworCisgICAgbm90
aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdl
dCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgZGF0YSwgLTEsIGVycm9yKTsKICAg
ICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIApAQCAtMzY0Nyw3ICszNjQ3LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBSZXNvdXIKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNvdXJj
ZS5yZXNwb25zZSgpOwogICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpT
b3VyY2U6Ok1lbW9yeUNhY2hlKTsKLSAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3Qs
IHJlc3BvbnNlLCAwLCByZXNvdXJjZS5lbmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7CisgICAgbm90
aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdl
dCgpLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwgbnVsbHB0ciwgcmVzb3VyY2Uu
ZW5jb2RlZFNpemUoKSwgZXJyb3IpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjphcHBseVVzZXJB
Z2VudElmTmVlZGVkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFi
YzEyODk4ZDEyMzY1Mi4uMzUyYTRjNGZiNTA0ZjdjZDRkMmVjNDA2ZTZiYzI5MTFhNTVmZDA5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTcsNyArNyw3
IEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uIApAQCAtNTAsNyArNTAsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNp
ZmRlZiBfX09CSkNfXyAKKyNpZmRlZiBfX09CSkNfXwogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CiB0eXBlZGVmIGlkIFJlbW90ZUFYT2JqZWN0UmVmOwogI2Vsc2UKQEAgLTk4LDcg
Kzk4LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0
ZURhdGE7CiBjbGFzcyBXaWRnZXQ7CiAKQEAgLTIxNCw5ICsyMTQsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9IDA7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5n
KERvY3VtZW50TG9hZGVyKikgPSAwOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUds
b2JhbEhpc3RvcnkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlS
ZWRpcmVjdExpbmtzKCkgPSAwOwogCkBAIC0yNzIsNyArMjcyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIFN0cmluZyBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZygpOyB9Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRv
Q2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRp
b25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopID0gMDsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgdmlydHVhbCBBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3NDb250ZW50SmF2YVNjcmlw
dEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEFsbG93c0NvbnRlbnRK
YXZhU2NyaXB0OjpZZXM7IH0KLSAgICAKKwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rp
b25zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFn
ZU9mQXBwQm91bmRCZWhhdmlvcigpIHsgfQpAQCAtMzkwLDcgKzM5MCw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlUERGUGx1
Z2luKGNvbnN0IFN0cmluZyYsIFN0cmluZ1ZpZXcpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAj
ZW5kaWYKLSAgICAKKwogICAgIHZpcnR1YWwgYm9vbCBpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJy
b3dzZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDVkMTIwZTI0N2FjMjYyNzExNjFk
ZTBkYzUyMzAyNGRjOGRlMzRkNjkuLjFhMTdhNzBmYTU4YzcyMjhmNjM4OTM1OWRkMGQzMzlkMGUw
NWNkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTIzMSwxMyArMjMxLDEzIEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTCiAgICAgICAg
IG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwogfQogCi12b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBNZWRp
YVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVz
b3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRh
UmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NsaWVudC0+ZGF0
YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmgKaW5kZXggZmY2YzI4ODcxMDA4OGY0YjA1NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NS4uN2I1NTc3
MjBlZjA1MzNmYmFhMjI2NTY1MzhlZmRkOTZmNjE3OWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2Uo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWdu
ZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggNjA0M2FjOWJlMjY3ZWE0
ZmJjNzFlMTExOGI5MDc5MTU1ZTM5MTUwMy4uNWNhYWRmNjI5YzcwYWUwODZiNzdiZDcyY2QyODY3
NTM2YjhmYTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDEsMzAgKzE0MSwxNCBAQCB2b2lkIE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcAogICAgIH0pOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKLXsKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxs
cHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOwotfQotCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkK
IHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogCi0gICAgaWYgKG1fY2xpZW50KSB7Ci0gICAgICAgIGlmIChidWZmZXIpIHsKLSAgICAg
ICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgc2VnbWVudC5kYXRhKCks
IHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBkYXRhLCBsZW5ndGgpOwotICAg
IH0KKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0
aGlzLCBidWZmZXIpOwogCi0gICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRh
UGF5bG9hZFR5cGUpOworICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShidWZmZXIs
IGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCiB2b2lkIE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCBiNTE3NGVkYzk0Yjk5MjM5MDIwNWYw
ZmFkNDUyZWE1YWMzODc4OTM4Li4xZWM3ZDYxZTNhMTc1YzIyYjU1ODc1OGQzN2VkMGM1NWJlNWYx
M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaApAQCAtMzYsMTIgKzM2LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90Kiwg
aW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciopIHsgfQogICAgIHZpcnR1YWwgYm9vbCB3YW50c0FsbFN0cmVhbXMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNjIsOCArNjMsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogCkBAIC03NCw4ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3
aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENh
bmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
KTsKLQogICAgIHZvaWQgbm90aWZ5RG9uZSgpOwogCiAgICAgV2Vha1B0cjxOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudD4gbV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAppbmRleCA2MmJiNTZlMzRlNmY0NmQyNjI4MzZjZmNh
NDY1YjRkYjBlMzA4M2NmLi4xYWMwZTY3YzdmNjhkZWQwZWNiNzhlMTFjMDI0NjliMTA5MWQ1M2I3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NU
cmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKIAogI2lmIFVTRShRVUlDS19MT09LKQogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgpA
QCAtNzgsMTIgKzc5LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvCiAgICAgZGlzcGF0Y2hE
aWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50
aWZpZXIoKSwgciwgbG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNy
ZW1lbnRQcm9ncmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCks
IGJ1ZmZlci5zaXplKCkpOwogCi0gICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhLCBkYXRhTGVuZ3RoLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmluaXNoTG9hZChS
ZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
b2FkTWV0cmljcykKQEAgLTE1MywxMyArMTU0LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZp
ZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJl
CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZShtX2ZyYW1lLCBpZGVudGlmaWVyLCBsb2FkZXIsIHIsIHJlc291cmNlTG9hZGVyKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVu
dExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
K3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
Ly8gTm90aWZ5aW5nIHRoZSBGcmFtZUxvYWRlckNsaWVudCBtYXkgY2F1c2UgdGhlIGZyYW1lIHRv
IGJlIGRlc3Ryb3llZC4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7Ci0gICAgbV9m
cmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxv
YWRlciwgaWRlbnRpZmllciwgZGF0YUxlbmd0aCk7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGll
bnQoKS5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwg
YnVmZmVyLnNpemUoKSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhKCZtX2ZyYW1lLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSgm
bV9mcmFtZSwgaWRlbnRpZmllciwgYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZv
aWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVu
dExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJlc291cmNlTG9hZGVy
KiByZXNvdXJjZUxvYWRlcikKQEAgLTE4MCw3ICsxODEsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5v
dGlmaWVyOjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJl
c291cgogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJh
bWUsIGxvYWRlciwgaWRlbnRpZmllciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5v
dGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5k
UmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPGNvbnN0IFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewogICAgIC8vIElmIHRoZSByZXF1ZXN0IGlzIG51bGwsIHdpbGxTZW5kUmVx
dWVzdCBjYW5jZWxsZWQgdGhlIGxvYWQuIFdlIHNob3VsZAogICAgIC8vIG9ubHkgZGlzcGF0Y2gg
ZGlkRmFpbExvYWRpbmcgaW4gdGhpcyBjYXNlLgpAQCAtMTkzLDggKzE5NCw4IEBAIHZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsCiAgICAgaWYgKCFyZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgZGlz
cGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLCBpZGVudGlmaWVyLCByZXNwb25zZSk7CiAK
LSAgICBpZiAoZGF0YUxlbmd0aCA+IDApCi0gICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEo
bG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKKyAgICAgICAgZGlzcGF0Y2hEaWRS
ZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50aWZpZXIsICpidWZmZXIsIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIAogICAgIGlmIChlcnJvci5pc051bGwoKSkgewogICAgICAgICBOZXR3b3JrTG9hZE1ldHJp
Y3MgZW1wdHlNZXRyaWNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuaAppbmRleCA2ZGExNjAzMjVmNDJmZWY1NDBjNmJkNTBiYjE4MmU4NjlkYWRlOWUzLi4y
YjI1ZDhhM2RkNjE5NDBmNWNhZjU0ZGE5Yzc0NjViMGEyOGQzNDliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBSZXNvdXJjZUxvYWROb3RpZmllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVz
b3VyY2VMb2FkTm90aWZpZXIpOwpAQCAtNTUsMTggKzU2LDE4IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBp
bnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZp
ZXJUb0luaXRpYWxSZXF1ZXN0KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRS
ZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2Uo
RG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciogPSBudWxscHRyKTsKLSAgICB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExv
YWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9j
dW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKIAotICAgIHZvaWQgc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRM
b2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAg
dm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+LCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIGJvb2wgaXNJbml0aWFsUmVxdWVz
dElkZW50aWZpZXIoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNmRlYmIyNTg4YTNl
ODJiMjFjNjFkN2U4ZjM2ZTRmNGJiYmEyNWU2MC4uNjY0N2MyNzA4MTE4MGViY2VjMmI1Y2EyOWZk
NjBiNzIzYWI2NDgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQog
CiAgICAgICAgIGF1dG8gZGF0YVNpemUgPSBkZWNvZGVSZXN1bHQtPmRhdGEuc2l6ZSgpOwogICAg
ICAgICBSZXNvdXJjZVJlc3BvbnNlIGRhdGFSZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRh
dGFVUkxSZXNwb25zZSh1cmwsIGRlY29kZVJlc3VsdC52YWx1ZSgpKTsKLSAgICAgICAgdGhpcy0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKGRhdGFSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBkYXRhU2l6ZSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGVjb2RlUmVzdWx0LT5kYXRhKSldKCkgbXV0YWJsZSB7CisgICAgICAgIHRo
aXMtPmRpZFJlY2VpdmVSZXNwb25zZShkYXRhUmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZGF0YVNpemUsIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRlY29kZVJlc3VsdC0+ZGF0YSkpXSgpIHsKICAgICAgICAgICAgIGlm
ICghdGhpcy0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSAmJiBkYXRhU2l6ZSAmJiBtX3JlcXVlc3Qu
aHR0cE1ldGhvZCgpICE9ICJIRUFEIikKLSAgICAgICAgICAgICAgICB0aGlzLT5kaWRSZWNlaXZl
QnVmZmVyKFdURk1vdmUoZGF0YSksIGRhdGFTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2Up
OworICAgICAgICAgICAgICAgIHRoaXMtPmRpZFJlY2VpdmVCdWZmZXIoZGF0YSwgZGF0YVNpemUs
IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CiAKICAgICAgICAgICAgIGlmICghdGhpcy0+cmVh
Y2hlZFRlcm1pbmFsU3RhdGUoKSkgewogICAgICAgICAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmlj
cyBlbXB0eU1ldHJpY3M7CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNl
bCgpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZm
ZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVy
OjphZGRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZl
cmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAg
ICAgIHJldHVybjsKQEAgLTMzNiwxMCArMzM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ20K
ICAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKICAg
ICAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKIAotICAgIGlmIChidWZmZXIpCi0gICAgICAg
IG1fcmVzb3VyY2VEYXRhLmFwcGVuZCgqYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcmVz
b3VyY2VEYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVu
ZChidWZmZXIpOwogfQogCiBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxv
YWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKQEAgLTUzOSw3ICs1MzYsNyBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwg
Q29tcGxldGlvbkhhbgogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2Vp
dmVSZXNwb25zZSh0aGlzLCBtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
Cit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0
YVBheWxvYWRUeXBlKQogewogICAgIC8vIFRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhcmUgbm90
IHF1aXRlIHZhbGlkIGhlcmUsIHNpbmNlIGEgc3ViY2xhc3MKICAgICAvLyBtaWdodCBvdmVycmlk
ZSBkaWRSZWNlaXZlRGF0YSBpbiBhIHdheSB0aGF0IGludmFsaWRhdGVzIHRoZW0uIFRoaXMKQEAg
LTU0NywzMCArNTQ0LDIyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsCiAgICAgLy8gQVNTRVJU
KGNvbiA9PSBjb25uZWN0aW9uKTsKICAgICAvLyBBU1NFUlQoIW1fcmVhY2hlZFRlcm1pbmFsU3Rh
dGUpOwogCi0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIs
IGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIGRpZFJlY2VpdmVCdWZm
ZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7Ci0gICAgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWRE
YXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0gICAg
Ly8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0IGRhdGErbGVuZ3RoICpPUiogYSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyLgotICAgIEFTU0VSVCghYnVmZmVyIHx8ICghZGF0YSAmJiAhbGVuZ3Ro
KSk7Ci0KICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2Ug
dGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRp
bmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAz
MjY2MjE2LgogICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
LSAgICBhZGREYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIuZ2V0KCksIGRhdGFQYXls
b2FkVHlwZSk7CisgICAgYWRkQnVmZmVyKGJ1ZmZlciwgZGF0YVBheWxvYWRUeXBlKTsKIAogICAg
IC8vIEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywg
dGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAvLyBIb3dldmVyLCB3aXRo
IHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBw
ZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxv
Y2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2Fs
bGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2Fk
ZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDog
bGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZy
YW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyLm1ha2VD
b250aWd1b3VzKCksIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAog
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTcyOSwxNCArNzE4LDE0IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVz
b3VyY2VSZXNwb25zZSYmCiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgZGlkUmVjZWl2ZURhdGEo
YnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKLSAgICBkaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIGRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4
IDkwNzVjYmMwYTMwNDBlYTE1MGE4NjI1Y2RhMDg5MGIxZWUxMzhjNzIuLjEwOThlNGYyNzg4OWNk
YTdiM2E5Y2ZkNGQ1NDZhZTJmZDlhN2M1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCkBAIC0xMDcsOCArMTA3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2Vu
dCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5k
bGVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVu
c2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjcsOCArMTY3LDYg
QEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBt
X2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSk7Ci0gICAgCiAgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSBy
ZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGlj
eTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4g
bV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9CiAKQEAgLTE5Miw3ICsxOTAsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwog
Ci0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGFkZEJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2
b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hOZXR3b3JrTG9hZCgpOwogCkBAIC0y
MDIsOCArMjAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFu
ZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5z
aWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2Fz
QmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMzdkMGJiODIxYWJkODZhOWI1NjA2ZTEyN2Vm
Yzk0MTJhNTFiYjFhOS4uOTcyZjJhZjIyNjAzZjQyNGNkODc3NWY1OTEwMTBlMmQ3NjkzOGEwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MTgs
MzIgKzUxOCwxNSBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VQ
b2xpY3koKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNL
X0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQo
KSkgewotICAgICAgICBpZiAocHJldmlld0xvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVu
Z3RoKSkKKyAgICAgICAgaWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5t
YWtlQ29udGlndW91cygpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAot
ICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVk
RGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKLXsKLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVy
ID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7Ci0gICAgICAgIGlmIChwcmV2aWV3TG9hZGVyLT5k
aWRSZWNlaXZlQnVmZmVyKGJ1ZmZlci5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
fQotI2VuZGlmCi0KLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1v
dmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5
bG9hZFR5cGUpCi17CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCiAgICAgaWYgKG1fcmVzb3Vy
Y2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAgJiYgIW1fcmVzb3VyY2UtPnNo
b3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkpCkBAIC01NTUsMTMgKzUzOCwxMyBAQCB2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHJlbW92aW5n
IHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBp
cyAzMjY2MjE2LgogICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAKLSAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBs
ZW5ndGgsIGJ1ZmZlci5jb3B5UmVmKCksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOworICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2Rl
ZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiAKICAgICBpZiAoIW1fbG9hZGluZ011bHRp
cGFydENvbnRlbnQpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+
dXBkYXRlRGF0YShidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDgzMmM5ZjBlNzNkMzg0NjRh
Nzk1ZjQwMzg2MGY3OWMzNGU3M2JjN2YuLjNkYmQ1MzM4YWZlNDliNDc4NTdkNTM0MDk3ODg3NTJl
YWExYWVkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBA
IC03Myw4ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5h
bChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdp
bGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTEsNyBA
QCBwcml2YXRlOgogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0
ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCBjZjJkZTBjNjJkOTVmMzMy
NWI0MmI0NmUyNDAzNzc0NDEwNzQyYTBkLi4zZDE5Mjg2MmYyNzcyOWIyZjM4ZGI1NGJkODM2Nzk5
NTI1YzAxOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
CkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9Ci0gICAgdm9pZCBhcHBlbmQoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0
aCk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgeyBtX2Rh
dGEuYXBwZW5kKGJ1ZmZlcik7IH0KICAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKaW5k
ZXggODRkNzliMGM5OWRmMTBkOTkzODBiODQ4MzE3MzcxYmMxZTg1NzNiZi4uY2VmMGM4ZjFmMTdk
MGY1NzY1OWEzNTQxYjU0ZjYzODk5MDY0YjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
Y2xhc3MgUmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZGFibGVM
b2FkZXJDbGllbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcg
LypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8p
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCAvKmRhdGFMZW5ndGgqLykgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJv
b2wgLyogdXNlU3RyTGVuICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoVGlt
aW5nKGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCmluZGV4IDQyYWU2NDkwOWE1
ZTBmZTQ0YzZhNWUwMDYwZDU4Yzk2NGVjNTYwNTEuLmYzNmEyZDQwN2FmODgxNTkwNDI4NjZiODVl
OWUwMTg2MWRhYWM3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgog
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNw
b25zZSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVzZVN0ckxlbikKICAgICB7CiAgICAgICAgIGlmIChtX2Ns
aWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVu
Z3RoKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIHVzZVN0
ckxlbik7CiAgICAgfQogCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGRmZjg5NzAxYzkzOWJjNzNjMzcwMzJhZDljNDJh
ZDIwNjMyNmFkNmUuLjdjMDM0OTQ1ZWUwM2E3NGY1MzMzOWJiODFmZmEwZTA2YzY5YzcxNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAK
QEAgLTIzMSwxNCArMjMxLDEzIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyCiAgICAgfSwgbV90
YXNrTW9kZSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
Cit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCB1c2VTdHJMZW4pCiB7Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3Rl
ZFdvcmtlckNsaWVudFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdv
cmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29y
a2VyQ2xpZW50V3JhcHBlciB9LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVx
dWVzdElkZW50aWZpZXIsIGJ1ZmZlciA9IFJlZiB7IGRhdGEgfSwgdXNlU3RyTGVuXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dv
cmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKLSAg
ICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdy
YXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgdXNlU3RyTGVuKTsKICAgICAgICAgaWYgKGlz
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVE
YXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElk
ZW50aWZpZXIsIGJ1ZmZlcik7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDcyM2I0NTZlYzhl
OWUzMDZmYzE4Y2M4ZjM2ZGU2ZGNkOGFlMzA0NzAuLjMzOWQ2ZjQ3MzEwYTFlZDI4OTAzNmFkMGE0
MDRmMzhhN2EyNjg2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEFs
bCBleGVjdXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIHZvaWQgZGlkU2VuZERhdGEo
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaFRp
bWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXgg
NTE5NzhmNDEyMzg3NGRjNTY2MGVmZjQ3MDY1OTcwN2Q0ZTVkODVhNy4uZWQ3NTY2NTI2YjJkN2Vm
YmYxYzUxNzAyMDk1YTg3OWJhZjU2OTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0xNDksNyArMTQ5
LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWlu
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVp
bnQ4X3QqLCBpbnQsIGxvbmcgbG9uZywgYm9vbCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcs
IGJvb2wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMx
NzBjZGY3MjM2NzJhMC4uZDJhZWFlYzNlMTRjNjNiY2JmNjAxZTlhYWYwMjRjMWY5ZWM0NzZkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWF5YmVMb2Fk
TWFpblJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVEYXRhJik7CiAg
ICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JN
YWluUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwotICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9u
Y2UpOworICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9uY2UpOwogICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAgdm9pZCBmYWlsZWRMb2FkaW5n
TWFpblJlc291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggMmJiM2ZlNzViOTk3
N2U4MzMyMmFlMjU4MGY3MjEyZWU1YmYyMTYxMC4uMjU2ZTg5YjIxMWIzOGIyZDIxZGNkNjY1Nzgy
NjllNjYwNzM2NzMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDEwIEBA
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtl
Q29udGlndW91cygpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9w
YXRoKSk7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkpCisgICAgICAgIGxvYWRlci5kZWxpdmVy
UmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIFJlZlB0ciB7ICZkYXRhKCkgfSk7CisgICAgZWxz
ZQorICAgICAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3
YjhiNTA3NGM3MTI5MjYuLjU0ZmVlZDJjYTY0MTJiNDUyMDk4NzBjNzczNDM2MDlkODUwOWI3Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05OSw5ICs5OSw5IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSA9IEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKG1fcmVzb3VyY2UtPnVybCgpLCByZXNwb25z
ZSwgbV90eXBlKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9hcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyLmgKaW5kZXggMDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3
ZWJlOWIwNjllMjMyZC4uMGIyOTYyODhmMzFhNDMyNWQ0ODQ5YTQ0MmU4YWU2MDJjMTczMTkyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRl
OgogCiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAg
ICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggNTA0NjVj
YzZjMDEzM2U1YTc3NDQ1Y2Y5NDczMzNmZTIwNjQwODYxZC4uYTJkYWZjOWQ4N2MyNjdhMmY5NWU0
ODU1ZmRiMDg0ZGEyOWQzZjI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6
OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBAIC01NTgsMTUgKzU1
OCwxNSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJp
bmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICB1cGRh
dGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKKyAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhLm1h
a2VDb250aWd1b3VzKCkpOwogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoZGF0YSk7
CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7Ci0gICAgdXBkYXRlQnVmZmVy
SW50ZXJuYWwoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7Ci0gICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICB1cGRhdGVCdWZmZXJJbnRl
cm5hbChidWZmZXIpOworICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGJ1ZmZlcik7CiB9
CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlODQzMDg3MGI0OGFmM2Rj
OTViYmEzY2FkMWE2NGUwNjhhZTE1NTEzLi5hNWRjNjNmMjNkYmQ0MWEyNzBlZTU2YzMyYTQ0MTc3
N2Q2YWRkYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApA
QCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29u
dmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNv
bnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0
dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogCkBAIC0xNjks
NyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2Um
LCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25z
dCBJbWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBT
aGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRz
KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCmluZGV4IDcxZTE2MDgyZmZlNjU1ZDExMWYxNjk5MGQxMjMwNTM1YmVh
Y2JmOTUuLmQzMzYxMTMyMTNmYmViZmY0ZTkxZmY2NWY4M2ZmZTI0ZDNlOGEwYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAt
NDgsMTIgKzQ4LDEyIEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFp
bk9yTWVkaWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxh
dGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0CiB7
CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7Ci0gICAgaWYg
KCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCisgICAgaWYgKGRh
dGEuc2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsK
KyAgICByZXR1cm4gZGF0YS5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCiB2
b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgICAg
IHByZXZpb3VzRGF0YVNpemUgKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKIAogICAgICAgICBT
ZXRGb3JTY29wZTxib29sPiBub3RpZnlTY29wZShtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5LCB0
cnVlKTsKLSAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERh
dGEuZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpKTsKKyAgICAgICAgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkpOwog
ICAgIH0KICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAKQEAgLTg5LDExICs4
OSwxMSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7Ci0gICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChkYXRhLCBsZW5ndGgpOwotICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxl
bmd0aCk7CisgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChidWZmZXIpOworICAgIENh
Y2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpAQCAtMTEwLDkgKzExMCw5IEBAIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QKICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgIGlm
IChkYXRhICE9IG1fZGF0YS5nZXQoKSkKICAgICAgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOwotICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKCptX2Rh
dGEpKSB7CiAgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAg
ICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0
YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOwpAQCAtMTMwLDE1ICsxMzAsMTUgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dAogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFX
YXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENh
Y2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGlmICghbGVuZ3RoKQorICAgIGlmIChidWZmZXIuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBDYWNoZWRSZXNvdXJjZUNs
aWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMpOwogICAgIHdo
aWxlIChDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQotICAgICAgICBjLT5k
YXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGMtPmRhdGFSZWNlaXZl
ZCgqdGhpcywgYnVmZmVyKTsKIH0KIAogc3RhdGljIHZvaWQgaXRlcmF0ZVJlZGlyZWN0cyhDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4mJiBoYW5kbGUsIENhY2hlZFJhd1Jl
c291cmNlQ2xpZW50JiBjbGllbnQsIFZlY3RvcjxzdGQ6OnBhaXI8UmVzb3VyY2VSZXF1ZXN0LCBS
ZXNvdXJjZVJlc3BvbnNlPj4mJiByZWRpcmVjdHNJblJldmVyc2VPcmRlciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0x
NzAsOSArMTcwLDkgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50JiBjKQogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKG1fZGF0YSkgewotICAg
ICAgICAgICAgICAgIG1fZGF0YS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsK
KyAgICAgICAgICAgICAgICBtX2RhdGEtPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZd
KGF1dG8mJiBidWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsaWVudCgqY2xp
ZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlz
LCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5k
ZXggYTc4NjVmOGFkMTc4YWVmYjMyMjBhNTZkY2ZmMTk1OTkzY2Y5NWFlNC4uMzZlNDdhMWRiYTIz
MTI4ZGM1MzA3M2I3MGI1ZjNmODUzODA0YWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKIGNsYXNzIFJlc291cmNl
VGltaW5nOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7
CiAKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlIGZpbmFsIDogcHVibGljIENhY2hlZFJlc291cmNl
IHsKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lk
IHVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJv
cnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC02Niw4ICs2Nyw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0gICAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQgbm90aWZ5
Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUlu
Y3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIHZvaWQg
bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKaW5kZXggMjNlYWI4ZGYyOTU4
ZmY4YjQ5ZjM1NDViNTA4M2ZlMjk4OWVmMTIyMC4uY2Q2NTBhMmYzMTM2Y2U5YjI2MmZiZGZjODI5
MjhiZjIxMDc5ZmJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAgY2xhc3MgQ2FjaGVk
UmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgUmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1
YmxpYzoKQEAgLTQ2LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAq
LykgeyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDlkZTBhMDRjZDVlYzVmM2Zh
ZDJmYjE2ZDdiMzIyYzg1OGEzOGE2YjIuLjdiOWM2MWY5NjYxNzU0NmI2NmJjYzNjNjNlY2EwZTg1
N2UyNjJlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQogCi12
b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkK
K3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkRvTm90QnVmZmVyRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCmluZGV4IGM5ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3OTY0
NzguLjUzNGUwMTJjYzRmYTVkZDJiZTFmZDZlZWU1YWE2YWU0ZTVmYWUyMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTMsNyArMTEzLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4g
U3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRS
ZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENh
Y2hlZFJlc291cmNlOjpTdGF0dXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDk2ZDg5ODJlOTM1MDM0NzY5NmZjOTY5ZDU4NWFi
NzA3NWRlMDIwZWQuLmNhMDE5MzRkMzFiYTVkNTA5ZmViZTdkMmY5MTIyNDlkMjcxMjZhYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBA
IC00Nyw4ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB+TGVnYWN5UHJldmlld0xvYWRlcigpOwogCiAg
ICAgYm9vbCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAg
IGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOworICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAg
Ym9vbCBkaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCA0ODc1
NmEzM2I1ODcyYjQ0YjJmMGJhMDg0MjQxZjg2Y2ZhZWJjYWEwLi5hMjRiOGM1OWQ0NjBhZmY1ZTJm
ZWY4MzE5MGMyMDg2NTcyMzY1ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBSZWY8TGVn
YWN5UHJldmlld0xvYWRlckNsaWVudD4gbWFrZUNsaWVudChjb25zdCBSZXNvdXJjZUxvYWRlciYg
bG9hZGVyLCBjCiAgICAgcmV0dXJuIGVtcHR5Q2xpZW50KCk7CiB9CiAKLWJvb2wgTGVnYWN5UHJl
dmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJ
bnRvQ29udmVydGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MSw3ICs3MSw3IEBAIGJv
b2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9h
ZGVyIGFwcGVuZGluZyBidWZmZXIgd2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKICAg
ICBtX29yaWdpbmFsRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICBtX2NvbnZlcnRlci0+dXBkYXRl
TWFpblJlc291cmNlKCk7Ci0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyKTsK
KyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMTYyLDggKzE2Miw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmll
d0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zCiAgICAgaWYg
KCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGRh
dGFDb3B5ID0gZGF0YS5jb3B5KCk7Ci0gICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVCdWZm
ZXIoV1RGTW92ZShkYXRhQ29weSksIGRhdGFDb3B5LT5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMp
OworICAgIHJlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKGRhdGEsIGRhdGEuc2l6ZSgp
LCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2
aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikKQEAgLTI0
MywxMSArMjQyLDYgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihS
ZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVIKICAgICBMT0coTmV0d29yaywg
IkxlZ2FjeVByZXZpZXdMb2FkZXIgY3JlYXRlZCB3aXRoIHByZXZpZXcgZmlsZSBuYW1lIFwiJXNc
Ii4iLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAK
LWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBkaWRSZWNlaXZlQnVmZmVyKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkuZ2V0KCkpOwotfQotCiBib29sIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikKIHsKICAgICByZXR1cm4gIW1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggNjAyNjMxYmI3Y2QxMDg2MGIxYTMxMjEw
NDNjOTdkOGVmZTQ0NzYxZC4uNjdhYzc3ZTJiZjc2MTA0NWM4YzE4ZDVjN2FkZWM3ZjczMzhhYjcx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMjEw
LDEzICsyMTEsMTMgQEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCi12b2lk
IEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKQordm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGJvb2wpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gT1BFTik7CiAgICAgQVNT
RVJUKG1fcmVxdWVzdEluRmxpZ2h0KTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKCFtX2lzU3VzcGVuZGVkRm9yQmFja0ZvcndhcmRDYWNoZSk7CiAKLSAgICBh
cHBlbmQobV9yZWNlaXZlQnVmZmVyLCBtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpKTsK
KyAgICBhcHBlbmQobV9yZWNlaXZlQnVmZmVyLCBtX2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKSk7CiAgICAgcGFyc2VFdmVudFN0cmVhbSgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50U291cmNlLmgKaW5kZXggZDAxMmQzNzdkMTk3Njc1ZjBmZTExNDVmMTcxOWYx
N2ZkZGJmZWEzYi4uZDY2MmFlMjgwNmY0YjI0ODY3YjAxNjA4ZTA0ZGJiNGY5N2RiYTA2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAg
ICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCmluZGV4IDll
NzJlNDRhMmVhYzRkOGVmNzMwYjk4NzFkMGVjNTA4ZWQ5ZmFjNDQuLjQ2MmNmM2I4NzQyMzM4NWJl
ODNhMDAyZTQzZjc0NDc3OTk4N2VlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC0yNiwxNSArMjYsMTcgQEAKICNpZm5kZWYgUGxh
dGZvcm1Db250ZW50RmlsdGVyX2gKICNkZWZpbmUgUGxhdGZvcm1Db250ZW50RmlsdGVyX2gKIAor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBs
YXRmb3JtQ29udGVudEZpbHRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01
NCw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIo
KSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAwOwogICAgIHZpcnR1YWwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAppbmRleCBkMzk2MTU2ODg0YjRiNzllM2U1NWQ1NjkxZDcxOGM4ODc1ZmY5ZmY3Li5iODZk
NDlkNGFmMzNjNjQ1ODJiNmJlYTQwNjIyNjE1OTkyZDVhY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBWZWN0b3I8dWludDhf
dD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBpZiAoaGFzT25lU2VnbWVudCgpICYmIHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1t
dXRhYmxlRGF0YSkpCi0gICAgICAgIGNvbWJpbmVkRGF0YSA9IHN0ZDo6ZXhjaGFuZ2Uoc3RkOjpn
ZXQ8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0
YSksIFZlY3Rvcjx1aW50OF90PigpKTsKKyAgICAgICAgY29tYmluZWREYXRhID0gc3RkOjpleGNo
YW5nZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGNvbnN0X2Nhc3Q8RGF0YVNlZ21lbnQmPiht
X3NlZ21lbnRzWzBdLnNlZ21lbnQuZ2V0KCkpLm1faW1tdXRhYmxlRGF0YSksIFZlY3Rvcjx1aW50
OF90PigpKTsKICAgICBlbHNlCiAgICAgICAgIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50
c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKIApAQCAtMjMxLDYgKzIzMSw4IEBAIHZvaWQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogCiBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiB7CisgICAgaWYgKG1fY29u
dGlndW91cykKKyAgICAgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID8gU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSkgOiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwogICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0
UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1f
c2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2Vn
bWVudHMuc2l6ZSgpKTsKQEAgLTI0OCw2ICsyNTAsMTMgQEAgdm9pZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29u
c3QKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50
LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpm
b3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJik+JiBhcHBseSkgY29uc3QKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9OworICAgIGZvciAoYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpCisgICAg
ICAgIGFwcGx5KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlZ21lbnQuc2VnbWVudC5jb3B5UmVmKCkp
KTsKK30KKwogYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNw
YW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4LmVtcHR5
KCkpCkBAIC00MTMsNyArNDIyLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKQogICAg
IG1fY29udGlndW91cyA9IHRydWU7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJl
ZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVm
PGNvbnN0IERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCiB7CiAgICAgbV9zaXplID0gc2VnbWVudC0+
c2l6ZSgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsK
QEAgLTYwMSw3ICs2MTAsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZl
cigpCiAgICAgICAgIG1fYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0
YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVy
RGF0YVZpZXcoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlv
bldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdt
ZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3Np
dGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50
LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC02MTcsNyArNjI2LDcgQEAgU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3JiBvdGhlciwgc2kKIAogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0
YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPERhdGFT
ZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxjb25zdCBEYXRhU2Vn
bWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRh
KCldKCkgeyByZXR1cm4gZGF0YTsgfSwKICAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1
cm4gc2l6ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBjMjdj
OTI2OWZmZWYyNDlhYjVlOGFiYTI0ZDc2MmZjNDBjMWMyMzAwLi4zNDg0YTZhNTNiODA0MDY0YmU1
N2EyODNlZjQxOGE4YTYyZDU4OWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaApAQCAtMTc4LDEyICsxNzgsMTMgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mKT4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgo
Y29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoY29uc3QgRnVuY3Rpb248dm9p
ZChSZWY8U2hhcmVkQnVmZmVyPiYmKT4mKSBjb25zdDsKIAogICAgIHVzaW5nIERhdGFTZWdtZW50
ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0
eSB3aGVuIHVzaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBz
dHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0
aW9uOwotICAgICAgICBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQ7CisgICAgICAgIGNvbnN0IFJl
Zjxjb25zdCBEYXRhU2VnbWVudD4gc2VnbWVudDsKICAgICB9OwogICAgIHVzaW5nIERhdGFTZWdt
ZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFT
ZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vn
bWVudHMuYmVnaW4oKTsgfQpAQCAtMjU5LDcgKzI2MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcigpKTsKICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVv
Zi4uLihBcmdzKSA9PSAxCi0gICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVm
PERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFy
Z3MsIFJlZjxjb25zdCBEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsK
KyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAg
ICAgICAmJiAoc3RkOjppc19zYW1lX3Y8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9y
ZWZlcmVuY2VfdDxBcmdzPj4sIERhdGFTZWdtZW50PiAmJi4uLikpCiAgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXV0byBidWZmZXIgPSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKQEAgLTI4
Niw4ICsyOTAsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZEJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlcihjb25zdCBEYXRhU2VnbWVudCYgc2VnbWVu
dCkKKyAgICAgICAgOiBTaGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFTZWdtZW50PiB7IHNlZ21l
bnQgfSkgeyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwpAQCAtMzU5LDcgKzM2
NSw3IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0
cmFjdERhdGEoKQogCiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBz
aXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6
ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50
LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zZWdt
ZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsgfQpAQCAtMzcwLDcgKzM3Niw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVO
U0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8RGF0YVNlZ21l
bnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IG1fc2VnbWVu
dDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qg
c2l6ZV90IG1fc2l6ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAppbmRleCBjYmU4Nzcx
YTQ1ZDg2MmNiNWFiMDVlY2EzOTk5MjdlMDc4MzhmNTQwLi4xMjUzMTliY2IzOGU3MWJhNzk1YTZh
ZmQyZGQxM2ZiZDE5YTJkM2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKQEAgLTQ5LDcg
KzQ5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9u
c2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBh
ZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZv
aWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlz
aGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIubW0KaW5kZXggMmVmMjcwMWZlNjc4YmY5YjkyZGIyMTJiYmVhNWM5MTVhM2Zj
M2EyZi4uZjg3Nzk3Y2NkNTBiOWFiNWVhNDhjMjUxZTQyZjAwYjVmYmY0ZmFhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE0NSwxMiArMTQ1LDEyIEBAIHZvaWQgTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzCiAgICAgc2VtYXBob3JlLndhaXQoKTsKIH0KIAotdm9pZCBOZXR3b3JrRXh0ZW5z
aW9uQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KQordm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29waWVkRGF0YSB7IFtO
U0RhdGEgZGF0YVdpdGhCeXRlczoodm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoXSB9OworICAgIGF1
dG8gbnNEYXRhID0gZGF0YS5jcmVhdGVOU0RhdGEoKTsKIAogICAgIEJpbmFyeVNlbWFwaG9yZSBz
ZW1hcGhvcmU7Ci0gICAgW21fbmVGaWx0ZXJTb3VyY2UgcmVjZWl2ZWREYXRhOmNvcGllZERhdGEu
Z2V0KCkgZGVjaXNpb25IYW5kbGVyOlt0aGlzLCAmc2VtYXBob3JlXShORUZpbHRlclNvdXJjZVN0
YXR1cyBzdGF0dXMsIE5TRGljdGlvbmFyeSAqZGVjaXNpb25JbmZvKSB7CisgICAgW21fbmVGaWx0
ZXJTb3VyY2UgcmVjZWl2ZWREYXRhOm5zRGF0YS5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6W3RoaXMs
ICZzZW1hcGhvcmVdKE5FRmlsdGVyU291cmNlU3RhdHVzIHN0YXR1cywgTlNEaWN0aW9uYXJ5ICpk
ZWNpc2lvbkluZm8pIHsKICAgICAgICAgaGFuZGxlRGVjaXNpb24oc3RhdHVzLCByZXBsYWNlbWVu
dERhdGFGcm9tRGVjaXNpb25JbmZvKGRlY2lzaW9uSW5mbykpOwogICAgICAgICBzZW1hcGhvcmUu
c2lnbmFsKCk7CiAgICAgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAppbmRleCA2NzlhZTkz
Mjk1MTdlMWYzOTQzYmE1NzYyYWM4ZjU2ZTg2MGM4YzI1Li5kNWZhMTMzMGIxNjJjY2NjZTIyZTk0
NzU4NjE1YTZlMDExMjJkMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAg
IHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGZp
bmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4IDFjOTYwNDcxNmI0
MjY5M2Q1ZTQ2YzJlMjNlOTQxZGEwMGM4M2U0ZGUuLmE2NTExNWNlYjEyMjIzNjc3ZjA5YTRhM2Rh
OTliNGFjNzI2OGRmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC05NCwxMCAr
OTQsMTAgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNl
aXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXMKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgp
OwogfQogCi12b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50
RmlsdGVyOjphZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQo
IVttX3JlcGxhY2VtZW50RGF0YSBsZW5ndGhdKTsKLSAgICBtX3JlcGxhY2VtZW50RGF0YSA9IFtt
X3dlYkZpbHRlckV2YWx1YXRvciBhZGREYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weToo
dm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT11dOworICAgIG1fcmVwbGFj
ZW1lbnREYXRhID0gW21fd2ViRmlsdGVyRXZhbHVhdG9yIGFkZERhdGE6ZGF0YS5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV07CiAgICAgdXBkYXRlRmlsdGVyU3RhdGUoKTsKICAgICBBU1NFUlQobmVlZHNN
b3JlRGF0YSgpIHx8IFttX3JlcGxhY2VtZW50RGF0YSBsZW5ndGhdKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4
IGRlMzNmMWFmNDEyZGMwOGIyYjk2MWExOTQ5NDVjOWNjOTBhYTY2MjUuLmE0NzUwNzRhMTA4YTFi
NTg3YjNiNmE4Yjk4ODA1OWRhZGU0N2U1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtMjMzLDYgKzIzMyw3IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiBQYWNrZWRDb2xvcjo6QVJHQiB7IHJlc3VsdCB9LnZh
bHVlOwogICAgIH0KIAorICAgIC8vIG1fcGl4ZWxzIHR5cGUgc2hvdWxkIGJlIGlkZW50aWNhbCB0
byB0aGUgb25lIHNldCBpbiBJbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAogICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CiAgICAgdWludDMy
X3QqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCA4ODY5MWRjMjU2ZDZkZDZjNDVmNDZlMDE1NDk2NzQy
NDVhYTM1MzM3Li5jOTU4Zjg0NGRhYzE0Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhhODEyOTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNTEsOSArNTEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29s
IHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25n
IGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9u
Y2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgot
ICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0
Zm9ybSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxh
dGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CisgICAgdmlydHVh
bCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmNwcAppbmRleCBlYzBhN2FjZjQ3MzI2MWM3NGU3ZWVmZmFkYzljY2MzYzNl
NTdmMjI4Li43NzA4YTU4ZDJiNTgwOGI5NDAwMmQyMDVlOThhMjdiYjJjZTZmMzI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2Vi
Q29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0xMzgsNyArMTM4LDcgQEAgdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpyZXNwb25z
ZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIFdl
YkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVz
b3VyY2UocmVzb3VyY2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZD
RlJlc291cmNlTG9hZGVyLmgKaW5kZXggY2RmMTQzZjNjM2NkZTk3MWZkNzlkY2Y3MzI4YmZjZDdi
MzI2MDJkYy4uNjI2N2JlMDBjNTRlZTYxNzAyZmI3N2IyYTVmYjU2N2IyN2ViOWZlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dl
YkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBp
bnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4
IGY5MjFmM2RhMGU2OWIzMzk5NzdjOWUzZTQ5NjY3YTI4ZjVlOTVjYmQuLjcyNjQ3MjVjOGU1NjIy
ZGYzOGI0NWJjZDk5YWM3ODc1NWI5ZWI4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0
ZToKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UmKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTgog
ICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVk
aWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVp
bnQ4X3QqLCBpbnQpCit2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAg
QVNTRVJUKCZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJl
c291cmNlLnJlc291cmNlQnVmZmVyKCkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRD
YWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZp
bmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAg
ICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQog
ICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9h
ZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIFBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBtX3BhcmVudC5s
b2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewotICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fYnVmZmVy
LmFwcGVuZChidWZmZXIpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZl
cigqbV9idWZmZXIuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCmluZGV4IDkzMDE5MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2
ZjIuLmI3YjA3ZmYxNDU0ZDU2MWEzMDIxMDhhZTMyMjkxZThmODM0MzdiZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRo
b2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250
aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5
Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9u
c2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFu
ZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDYWNoZWRSZXNv
dXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwpA
QCAtMTEwNyw3ICsxMTA3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmEKICAgICAvLyB0aGF0
IGZpcnN0IHBhY2thZ2UgZGVsaXZlcnkgd291bGQgaW5jbHVkZSB0aGUgdGltZSBvZiBzZW5kaW5n
IG91dCB0aGUgcmVxdWVzdCBhbmQgZ2V0dGluZyB0aGUgZGF0YSBiYWNrLiBTaW5jZSB3ZSBjYW4n
dCBkaXN0aW5ndWlzaCB0aGUKICAgICAvLyBzZW5kaW5nIHRpbWUgZnJvbSB0aGUgcmVjZWl2aW5n
IHRpbWUsIGl0IGlzIGJldHRlciB0byBpZ25vcmUgaXQuCiAgICAgaWYgKCFzdGQ6OmlzbmFuKG1l
bWJlcnMtPmRvd25sb2FkU3RhcnRUaW1lKSkgewotICAgICAgICBtZW1iZXJzLT50b3RhbERvd25s
b2FkZWRCeXRlcyArPSBidWZmZXItPnNpemUoKTsKKyAgICAgICAgbWVtYmVycy0+dG90YWxEb3du
bG9hZGVkQnl0ZXMgKz0gZGF0YS5zaXplKCk7CiAgICAgICAgIGRvdWJsZSB0aW1lU2luY2VTdGFy
dCA9IChXYWxsVGltZTo6bm93KCkgLSBtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSkuc2Vjb25k
cygpOwogICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgIlIldTogZG93bmxvYWRlZCAlIiBH
X0dVSU5UNjRfRk9STUFUICIgYnl0ZXMgaW4gJWYgc2Vjb25kcyA9fiAlMS4wZiBieXRlcy9zZWNv
bmQiLCBtX3JlcXVlc3ROdW1iZXIsIG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzLCB0aW1l
U2luY2VTdGFydAogICAgICAgICAgICAgLCB0aW1lU2luY2VTdGFydCA/IG1lbWJlcnMtPnRvdGFs
RG93bmxvYWRlZEJ5dGVzIC8gdGltZVNpbmNlU3RhcnQgOiAwKTsKQEAgLTExMTUsMjAgKzExMTUs
MTkgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmEKICAgICAgICAgbWVtYmVycy0+ZG93bmxvYWRT
dGFydFRpbWUgPSBXYWxsVGltZTo6bm93KCk7CiAgICAgfQogCi0gICAgYnVmZmVyLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICBpbnQgbGVuZ3RoID0gc2VnbWVu
dC5zaXplKCk7Ci0gICAgICAgIEdTVF9MT0dfT0JKRUNUKHNyYywgIlIldTogSGF2ZSAlZCBieXRl
cyBvZiBkYXRhIiwgbV9yZXF1ZXN0TnVtYmVyLCBsZW5ndGgpOworICAgIGludCBsZW5ndGggPSBk
YXRhLnNpemUoKTsKKyAgICBHU1RfTE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMg
b2YgZGF0YSIsIG1fcmVxdWVzdE51bWJlciwgbGVuZ3RoKTsKIAotICAgICAgICBtZW1iZXJzLT5y
ZWFkUG9zaXRpb24gKz0gbGVuZ3RoOwotICAgICAgICBBU1NFUlQoIW1lbWJlcnMtPmhhdmVTaXpl
IHx8IG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA8PSBtZW1iZXJzLT5zaXplKTsKKyAgICBtZW1iZXJz
LT5yZWFkUG9zaXRpb24gKz0gbGVuZ3RoOworICAgIEFTU0VSVCghbWVtYmVycy0+aGF2ZVNpemUg
fHwgbWVtYmVycy0+cmVhZFBvc2l0aW9uIDw9IG1lbWJlcnMtPnNpemUpOwogCi0gICAgICAgIGdz
dF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNzYWdl
X25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAotICAgICAgICAgICAgZ3N0X3N0cnVj
dHVyZV9uZXcoIndlYmtpdC1uZXR3b3JrLXN0YXRpc3RpY3MiLCAicmVhZC1wb3NpdGlvbiIsIEdf
VFlQRV9VSU5UNjQsIG1lbWJlcnMtPnJlYWRQb3NpdGlvbiwgInNpemUiLCBHX1RZUEVfVUlOVDY0
LCBtZW1iZXJzLT5zaXplLCBudWxscHRyKSkpOworICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2Fn
ZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpF
Q1RfQ0FTVChzcmMpLAorICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmst
c3RhdGlzdGljcyIsICJyZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVh
ZFBvc2l0aW9uLCAic2l6ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIp
KSk7CisKKyAgICBjaGVja1VwZGF0ZUJsb2Nrc2l6ZShsZW5ndGgpOworICAgIEdzdEJ1ZmZlciog
YnVmZmVyID0gZ3N0QnVmZmVyTmV3V3JhcHBlZEZhc3QoZmFzdE1lbUR1cChkYXRhLmRhdGEoKSwg
bGVuZ3RoKSwgbGVuZ3RoKTsKKyAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIu
Z2V0KCksIGJ1ZmZlcik7CiAKLSAgICAgICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsK
LSAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RCdWZmZXJOZXdXcmFwcGVkRmFzdChmYXN0
TWVtRHVwKHNlZ21lbnQuZGF0YSgpLCBsZW5ndGgpLCBsZW5ndGgpOwotICAgICAgICBnc3RfYWRh
cHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7Ci0gICAgfSk7CiAgICAg
c3RvcExvYWRlcklmTmVlZGVkKHNyYywgbWVtYmVycyk7CiAgICAgbWVtYmVycy0+cmVzcG9uc2VD
b25kaXRpb24ubm90aWZ5T25lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCA5
YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVjMjIxMjY1OGY4YzRmNjhhLi5iMjg5NmFlMzBhMWI4Y2Mz
ZGYxMmEwNzQxMmNmNTAyMjE3ZmM2ODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAg
LTc2LDkgKzc2LDggQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKLSAgICAgICAg
aWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1
b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CisgICAgICAgIG1fZGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKKwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNv
ZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFs
bERhdGFSZWNlaXZlZCk7CkBAIC0xOTQsNyArMTkzLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0
aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKICAgICBWZWN0b3I8U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSwgMT4gbV9mcmFtZUJ1
ZmZlckNhY2hlIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKICAgICBtdXRhYmxlIExvY2sg
bV9sb2NrOwogICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VS
ZWFkZXIuY3BwCmluZGV4IDI2Zjg4NjQ5NmU1YTVhMTRlMjhhZmIxYWZhOWJmYzMwMTc3ZjUxY2Yu
LmQ2OGMwYTM1ZmMxZjRhYjYwMTdiZDM5ZWU0MzkxMDI2ODM1ZmM4MmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FW
SUZJbWFnZVJlYWRlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgQVZJRkltYWdlUmVhZGVyOjpBVklG
SW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYgZGVjb2RlcikKIAogQVZJRklt
YWdlUmVhZGVyOjp+QVZJRkltYWdlUmVhZGVyKCkgPSBkZWZhdWx0OwogCi1ib29sIEFWSUZJbWFn
ZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6
OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgaWYgKGF2aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQo
KSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKICAgICAgICAg
cmV0dXJuIGFsbERhdGFSZWNlaXZlZCA/IG1fZGVjb2Rlci0+c2V0RmFpbGVkKCkgOiBmYWxzZTsK
QEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUlu
ZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKQordm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRl
Y29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBi
dWZmZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5m
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXgg
NDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdiYWE4NjBjZmNjYjViYTRiMy4uODVhY2IxN2NiY2ZjNTg4
NWQ2YWM1NTI1YzdiNWM5ZWZmYzU4YzY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBA
IC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJ
bWFnZURlY29kZXI+JiYpOwogICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFy
c2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCBkZWNvZGVGcmFtZShzaXplX3QgaW5kZXgsIFNj
YWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCYpOworICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4
LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAg
c2l6ZV90IGltYWdlQ291bnQoKSBjb25zdDsKICAgICBkb3VibGUgcmVwZXRpdGlvbkNvdW50KCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKaW5kZXggYmQ0MzBlOGE4YmVhMmM4MTZiMmM1
MjJiZjViYTc4ODQ2YzM4ZTBmZi4uYzMxNDEzNDc5ZDQzMjUxYjI3OGVkZDY3YTQ0MTkxNmYwODAy
MTlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQk1Q
SW1hZ2VSZWFkZXIgewogcHVibGljOgogICAgIC8vIFJlYWQgYSB2YWx1ZSBmcm9tIHxkYXRhW29m
ZnNldF18LCBjb252ZXJ0aW5nIGZyb20gbGl0dGxlIHRvIG5hdGl2ZQogICAgIC8vIGVuZGlhbm5l
c3MuCi0gICAgc3RhdGljIGlubGluZSB1aW50MTZfdCByZWFkVWludDE2KGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRp
YyBpbmxpbmUgdWludDE2X3QgcmVhZFVpbnQxNihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGlu
dCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNw
eSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5l
IHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmIGRhdGEsIGludCBvZmZzZXQpCisgICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFk
VWludDMyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAg
ICAgIHVpbnQzMl90IHJlc3VsdDsKICAgICAgICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEo
KVtvZmZzZXRdLCA0KTsKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIEJNUEltYWdlUmVh
ZGVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVyKiBwYXJlbnQsIHNpemVfdCBkZWNvZGVkQW5kSGVhZGVy
T2Zmc2V0LCBzaXplX3QgaW1nRGF0YU9mZnNldCwgYm9vbCB1c2VzQW5kTWFzayk7CiAKICAgICB2
b2lkIHNldEJ1ZmZlcihTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBidWZmZXIpIHsgbV9idWZm
ZXIgPSBidWZmZXI7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAKICAgICAvLyBE
b2VzIHRoZSBhY3R1YWwgZGVjb2RpbmcuIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgZGVjb2Rpbmcg
b25seQogICAgIC8vIHByb2dyZXNzZXMgYXMgZmFyIGFzIG5lY2Vzc2FyeSB0byBnZXQgdGhlIGlt
YWdlIHNpemUuIFJldHVybnMKQEAgLTI3Miw3ICsyNzIsNyBAQCBwcml2YXRlOgogICAgIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyRnJhbWUqIG1fYnVmZmVyOwogCiAgICAgLy8gVGhlIGZpbGUgdG8gZGVj
b2RlLgotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9k
YXRhOworICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogICAgIC8vIEFu
IGluZGV4IGludG8gfG1fZGF0YXwgcmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkg
ZGVjb2RlZC4KICAgICBzaXplX3QgbV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIu
aAppbmRleCAxMDgyZmRmMGRmZjIzOTFlNTY1MzBhNDFmODdiYTQzOTgyMzI3NTM1Li5kNmJmZmMx
MmIxZTFlNDZkNDNkMDQ3ZWRkYzJhZDk0YjVjODU1M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIu
aApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBz
ZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRh
KSB7IG1fZGF0YSA9ICZkYXRhOyB9CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0
QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRklt
YWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYg
KzMxNiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNv
bnRleHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAK
LSAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+
IG1fZGF0YTsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2RhdGE7
CiAgICAgYm9vbCBtX3BhcnNlQ29tcGxldGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwCmluZGV4IGY0MjNjY2M5Y2UxMjdlZjdhZTc2YzkxMjgyNGFiZTg3NzNmYjcyZDEuLjQz
NTAzNThmM2JlZWI5ZjI0NTg2M2NlN2UwMGFlODI3NTBkZTc0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9i
eXRlc1RvU2tpcCA9IHN0ZDo6bWF4KG51bUJ5dGVzIC0gYnl0ZXNUb1NraXAsIHN0YXRpY19jYXN0
PGxvbmc+KDApKTsKICAgICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRl
Y29kZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgb25seVNpemUpCiAgICAgewogICAg
ICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBvbmx5U2l6ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIw
MDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCmluZGV4IDIwNDczZjBlZWViYjU2YzcxMzE0ZjY1
NTZiZGEwOTAzMzQ5MDc0NDIuLjkzM2EwMTNmMjFjNDdlOWNiNzk5ZWI3MmFiYjdlMzhjZmFiMWE2
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAg
LTM4MCw3ICszODAsNyBAQCB2b2lkIEpQRUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBv
bmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRl
ciB7Ci0gICAgICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOwor
ICAgICAgICBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGE7CiAgICAgICAgIHNpemVfdCBvZmZzZXQ7
CiAgICAgfSByZWFkZXIgPSB7ICptX2RhdGEsIDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcAppbmRleCAyNzA5YjdjNjhiZjUzMGQxOTVkNzY2NmEzZDZhY2U1MDAxM2JiZTM0Li40MDQ5
NjNhNDc5YzA1ZmMwYzZkNWMzMGViN2JlYzc4MTU2OWFiOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZWFkT2Zm
c2V0ID0gMDsKICAgICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0
RnJhbWUpCisgICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIHNp
emVPbmx5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdT
aXplT25seSA9IHNpemVPbmx5OwogICAgICAgICBQTkdJbWFnZURlY29kZXIqIGRlY29kZXIgPSBz
dGF0aWNfY2FzdDxQTkdJbWFnZURlY29kZXIqPihwbmdfZ2V0X3Byb2dyZXNzaXZlX3B0cihtX3Bu
ZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggYjFiZWM1NWU3OGM0MzQ4
MDFjMjU0YWNlMGRmNTk5MzFhMzZiNzRiZC4uNzcyZTgzMjY2ZTIzMGViNmRmZjdkYzFlZjdkYjU1
MjM5NjNiZmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC0xMzIsNyAr
MTMyLDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgY2FuIGJlIGV4ZWN1dGVkIGJvdGgg
aW4gdGhlIG1haW4gdGhyZWFkICh3aGVuIG5vdCB1c2luZyBhc3luYyBkZWNvZGluZykgb3IgaW4g
dGhlIGRlY29kaW5nIHRocmVhZC4KICAgICAvLyBXaGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGlu
ZyB0aHJlYWQsIGEgY2FsbCB0byBzZXREYXRhKCkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNo
YW5nZSB0aGUgZGF0YQogICAgIC8vIHRoZSBXZWJQRGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBp
dCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0
YS4KLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3Rl
Y3RlZERhdGEobV9kYXRhKTsKKyAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBwcm90ZWN0
ZWREYXRhKG1fZGF0YSk7CiAgICAgV2ViUERhdGEgaW5wdXREYXRhID0geyBwcm90ZWN0ZWREYXRh
LT5kYXRhKCksIHByb3RlY3RlZERhdGEtPnNpemUoKSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRl
bXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVtdXhlciogZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwo
JmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IGJhOGZkNGZm
NGYxZTQxYzlhZDRmYTc0YTQyYmU0ZTJiZDExYWE4NDMuLmRjYWM1OTk3YTYxMzVkMmFiNzU5YTdh
ZDJlYmIwNDM1MmQ1MTRhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiwxMSBAQCBS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAK
IFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7
CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZl
QnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRh
KGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgYnVmZmVyLmZvckVhY2hTZWdtZW50QXNTaGFyZWRC
dWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxl
LCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
CmluZGV4IGM0ZjA1NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUuLmU0NDJjOTcz
NGMxMTk4NDkwYTFjNmNhYzU3NzI1ZmQ1MTk2YjNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTQ0LDEz
ICs0NCwxNCBAQCBPQkpDX0NMQVNTIE5TQ2FjaGVkVVJMUmVzcG9uc2U7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNz
OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY1
LDkgKzY2LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291
cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxv
bmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwg
aW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXIm
LCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworCiAgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChSZXNv
dXJjZUhhbmRsZSopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YzA0MjEwYzVhNTEz
YWMzZjU0NzE0NmQ5Zjg1YzgyYmQ4ODEzNzc2Li4zMGI0YmIwZmRhZWY3YWUyY2M3NGFjNjA5Zjdi
MDA5OTdlNWE2ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcApAQCAtNzEsOSArNzEsOSBAQCB2
b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNv
dXJjZUhhbmRsZSosIFJlc291cmNlUgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgLyplbmNvZGVkRGF0
YUxlbmd0aCovKQordm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IC8qZW5jb2Rl
ZERhdGFMZW5ndGgqLykKIHsKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAg
bV9kYXRhLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBT
eW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCmluZGV4
IDY4MzhlOWQ4Y2Y0Mzc5NmQyZjM5NGJhMWY1NGYwOWQwYjY3ZThhYmQuLmM0Y2I3MmRjN2E2NTVm
ZDM2OTZhMzMzZmUwNWNkZWQ2Mjk3NmFmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKQEAgLTM0LDYg
KzM0LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CisK
IGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlPiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZSk7IH0KQEAgLTY2
LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3Vy
Y2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NB
TExCQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IGZjMjcyNTQwODkyYjhl
MmNkNzdkZThmNmQ5ZTU0YThjOGI1OTdmNjEuLjE5ODE0YTM2NWM5ZjY2MWEyMWMyMjlhZGJkMDQ2
MTFjMjA5NDdlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTEzMiw3ICsx
MzIsNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lm
Qnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogCiAgICAgICAgICAgICBzaXplX3QgYnl0
ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIgPSBzdGQ6Om1pbihidWZmZXJWaWV3LnNpemUoKSwgcmFu
Z2UuZW5kIC0gYnl0ZUluZGV4ICsgMSk7CiAgICAgICAgICAgICBieXRlSW5kZXggKz0gYnl0ZXNG
cm9tVGhpc1ZpZXdUb0RlbGl2ZXI7Ci0gICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRy
IHJlY2VpdmVkRGF0YTpTaGFyZWRCdWZmZXJEYXRhVmlldyhidWZmZXJWaWV3LCBieXRlc0Zyb21U
aGlzVmlld1RvRGVsaXZlcikuY3JlYXRlU2hhcmVkQnVmZmVyKCldOworICAgICAgICAgICAgW3Rh
c2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZERhdGE6U2hhcmVkQnVmZmVyRGF0YVZpZXcoYnVm
ZmVyVmlldywgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIpLmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
LT5jcmVhdGVOU0RhdGEoKV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBy
YW5nZS5lbmQpIHsKICAgICAgICAgICAgIFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVsbHB0ciBt
ZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpIGZpbmFsCisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpAQCAtMjQ2LDcg
KzI0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9t
YXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
ICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdp
dmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaAppbmRleCBmOTA5NmVlMmU5ZjI0MmZmMDRkNzA1YzJhYTEwOTNhNTVl
NTczNWRiLi5lYTRhOWJmMjk3ODI5ZWJkMDI5MTQ3NmNiZjhhN2U1NDk0NzIxMjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaApAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRl
cmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6
KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5
dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5z
aWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51
bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRS
ZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxl
dGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGlu
dWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihu
dWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENh
Y2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwot
LSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKWRhdGE7CistICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4m
JilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVz
b3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXgg
NWUyZThlOGQ5ZDc2NjcyYTI0MTRmNzZmNWMwOGYyNTllMDI5ZjUwNC4uM2M4YmUwOGMyOTM0ZTU0
ZGEzYjc0OWNhNmRhMzRlZGE5NmRjOWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAt
NjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBs
b25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9h
ZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02NTIsMTMgKzY1MiwxMyBAQCBi
b29sIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25z
ZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwogICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNv
dXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNV
UkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmIHJlc291cmNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0
YTpXVEZNb3ZlKGJ1ZmZlcildOworICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2Vp
dmVkRGF0YTpidWZmZXIuY3JlYXRlTlNEYXRhKCldOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05MzEsMTUgKzkzMSwxNCBAQCAtIChCT09MKXJl
c291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9u
c2U6KGNvbnN0IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJldGFpblB0cjxOU0Rh
dGE+JiYpZGF0YQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCBy
ZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVy
YXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRh
dGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7Ci0gICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2
ZWQgKz0gZGF0YS0+c2l6ZSgpOworICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRl
c1JlY2VpdmVkICs9IFtkYXRhIGxlbmd0aF07CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFE
ZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ry
b25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVj
ZWl2ZURhdGE6KV0pCi0gICAgICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJM
U2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2VpdmVEYXRhOm5zRGF0YS5nZXQoKV07
CisgICAgICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0
cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilz
dHJvbmdTZWxmLmdldCgpIGRpZFJlY2VpdmVEYXRhOmRhdGEuZ2V0KCldOwogICAgIH1dOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5jcHAKaW5kZXggZjMyM2FmMjY0MDE2YjY2MzkzMTFhYzIzMjQ2ZWM1ZWQ4
MGEzOTU0NS4uM2JkMmNjNzQyODZlYzQ2Nzg2NDAyNDhjNWUxY2ZlY2M1YTAyNjdiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVNYW5hZ2VyLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIGJvb2wgQ3VybENhY2hlTWFuYWdlcjo6
Z2V0Q2FjaGVkUmVzcG9uc2UoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmIHJl
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlJiBqb2IsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKQordm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSYgam9iLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQp
CiAgICAgICAgIHJldHVybjsKQEAgLTI1NSwxMSArMjU1LDExIEBAIHZvaWQgQ3VybENhY2hlTWFu
YWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCog
ZGF0YSwKICAgICAgICAgaWYgKGl0LT52YWx1ZS0+Z2V0Sm9iKCkgIT0gJmpvYikKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIWl0LT52YWx1ZS0+c2F2ZUNhY2hlZERhdGEoZGF0
YSwgc2l6ZSkpCisgICAgICAgIGlmICghaXQtPnZhbHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpKQogICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJs
KTsKIAogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9
IHNpemU7CisgICAgICAgICAgICBtX2N1cnJlbnRTdG9yYWdlU2l6ZSArPSBkYXRhLnNpemUoKTsK
ICAgICAgICAgICAgIG1fTFJVRW50cnlMaXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0KHVybCk7CiAg
ICAgICAgICAgICBtYWtlUm9vbUZvck5ld0VudHJ5KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5o
CmluZGV4IGM5ZTI5ZDgwOTcwYzQwNDZlNzk2MTYyYmQ5ODMyOTExYjZkZWU2OGMuLmI2NWI5NjNi
NjhlNmE2OGQ5ODE5M2FhZjczZjEwODAzZDk3ZmNkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJp
bmcmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUmLCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOyAvLyBTYXZl
IGRhdGEKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgU2hh
cmVkQnVmZmVyJik7IC8vIFNhdmUgZGF0YQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUhhbmRsZSYpOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
Y3BwCmluZGV4IDM0OTQ0NTkyNTRhYzkzZmMxOWNiMTIxNTBhNjFiYzJiY2VkMDJkNmUuLmFhZjBj
OGQ5NDA3MDU1ZDY4YTA1NWZiMzUwNzk2N2RlNGMwMDg2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xMDMs
NyArMTAzLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwb25zZSYmIHIKIH0KIAogCi12b2lkIEN1cmxEb3du
bG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVE
YXRhKEN1cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQ3VybERvd25s
b2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2xpc3RlbmVyKQotICAgICAg
ICBtX2xpc3RlbmVyLT5kaWRSZWNlaXZlRGF0YU9mTGVuZ3RoKGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgbV9saXN0ZW5lci0+ZGlkUmVjZWl2ZURhdGFPZkxlbmd0aChidWZmZXIuc2l6ZSgpKTsK
IH0KIAogdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYgcmVx
dWVzdCwgTmV0d29ya0xvYWRNZXRyaWNzJiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKaW5kZXggY2RlNDQ0NTc3NWY3NDQyMzMw
NTMwYjY1YjEzNTdiYTZiZmQ5YmI4MS4uYTEyMDc1ODM0OTNmNzgzMzc1NmQzYzQ5ODdjZjVjOTVk
ZmE5NzljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIEN1cmxEb3dubG9hZExpc3RlbmVyIHsKIHB1YmxpYzoKQEAgLTcyLDcg
KzczLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0
JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQog
ICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25z
ZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3Vy
bERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1l
dHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVx
dWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZkN2Qy
ZjI5NmUzYTM0ZC4uZDFlNTg2MjRhYWVlMmVjZTgxMjlkZDM0ZWE5ODY2MjZlNmNkZjA2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5LDEyICsxMTksMTIgQEAgQ3VybE11bHRpcGFy
dEhhbmRsZTo6Q3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBj
bGllbnQsIGNvbnMKIAogfQogCi12b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRp
cGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUg
aGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVm
ZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAK
ICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaApp
bmRleCA5YTFhMWJiZDE5MzhhMTRmNjlmY2NlZTNmMGY4OWI5N2E0YTIxODc0Li41YzA4YmNjNWVi
M2U0YmJjYzAyOWI0NzY3ODY4ZjQzZTJmOTVjMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0
SGFuZGxlQ2xpZW50OwogY2xhc3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRs
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICBDdXJsTXVsdGlwYXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBj
b25zdCBTdHJpbmcmKTsKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBs
ZXRlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAppbmRleCBj
ODEzODg2YThkNWM1ZmE2YzEyZDE0MTMzMTkxMDFhZjI1MDJhMmFkLi5kZjc2MzdkZTlkOWZmMmI2
YjEwODU1ZDBjNTc3MTI1NTM0YjJhNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50
LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAKIHByb3RlY3RlZDoKICAg
ICB+Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYmFjYjJiNTUw
YjI4NDEzMWQxYWMyMGFhNjYzODg2ZmUyMmZlN2Y5OC4uZDBlZjBlNzExNjJiNTM2M2FkNDI1NDE3
ZDg1ZWM3MjM4ZjNmNjJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1
cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVk
IHdpdGggZGF0YSBhZnRlciBhbGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFk
ZXJDYWxsYmFjawogCi1zaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxl
dGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00MTEsNyArNDExLDcgQEAg
c2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBDVVJMX1dSSVRFRlVOQ19QQVVTRTsKICAg
ICB9CiAKLSAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8g
cmVjZWl2ZUJ5dGVzID0gYnVmZmVyLnNpemUoKTsKICAgICBtX3RvdGFsUmVjZWl2ZWRTaXplICs9
IHJlY2VpdmVCeXRlczsKIAogICAgIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGJ1
ZmZlcik7CkBAIC00MjAsOCArNDIwLDggQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZl
RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIGlmICht
X211bHRpcGFydEhhbmRsZSkKICAgICAgICAgICAgIG1fbXVsdGlwYXJ0SGFuZGxlLT5kaWRSZWNl
aXZlRGF0YShidWZmZXIpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxDbGllbnQo
W2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1
ZXN0Q2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNsaWVudC5jdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihyZXF1ZXN0LCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAg
Y2FsbENsaWVudChbYnVmZmVyID0gUmVmIHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0JiByZXF1ZXN0
LCBDdXJsUmVxdWVzdENsaWVudCYgY2xpZW50KSB7CisgICAgICAgICAgICAgICAgY2xpZW50LmN1
cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0LCBidWZmZXIpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC00NDQsMTYgKzQ0NCwxNiBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRS
ZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaGVhZGVycykK
ICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIEFjdGlvbjo6Tm9uZSk7CiB9
CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
aWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byByZWNlaXZlQnl0ZXMgPSBidWZmZXItPnNpemUoKTsKKyAgICBhdXRvIHJlY2VpdmVCeXRlcyA9
IGJ1ZmZlci5zaXplKCk7CiAKICAgICBpZiAocmVjZWl2ZUJ5dGVzKSB7Ci0gICAgICAgIGNhbGxD
bGllbnQoW2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1
cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICAgICAgY2xpZW50LmN1
cmxEaWRSZWNlaXZlQnVmZmVyKHJlcXVlc3QsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGNh
bGxDbGllbnQoW2J1ZmZlciA9IFJlZiB7IGJ1ZmZlciB9XShDdXJsUmVxdWVzdCYgcmVxdWVzdCwg
Q3VybFJlcXVlc3RDbGllbnQmIGNsaWVudCkgeworICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRS
ZWNlaXZlRGF0YShyZXF1ZXN0LCBidWZmZXIpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmlu
ZGV4IGE2ZmIzMTU3NjZiYTVjMmYzZWEzMmI5ZWY1MWViMDAzZThjYjg5ZDAuLjkyYjc0Njk3YmMz
MTc1Y2UwY2RhZGYxNTFmYTI1NDNhMDNlMTE5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC0xMjIsOSArMTIyLDkgQEAg
cHJpdmF0ZToKICAgICBDVVJMKiBzZXR1cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90
IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6ZV90LCBzaXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNl
aXZlSGVhZGVyKFN0cmluZyYmKTsKLSAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNv
bnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZy
b21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxp
emVUcmFuc2ZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAppbmRleCAzNDc5ODMyZjU3NmQ0MTI4YWZhNTFj
ODE0MjRjY2ZkNzQxZGY2YWU3Li43MzAzM2YwZWY0ZWI0ZGYyMWFiNzY0NjNjYzM5ODE5YjI4Njc4
NDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3RDbGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVz
dDsKIGNsYXNzIEN1cmxSZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNz
IFJlc291cmNlRXJyb3I7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3
ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3Vy
bFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxv
bmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNl
aXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0
YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBS
ZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggMzA1ZDRlNWM5ZmMyNzA3NzU3ODdiMGY5YTkx
OTc5YzA4ODg5YThhNi4uMzg5N2UwMWM2ZDA3NjZkYWNmM2UxOWIyMzczMzZmNWI1NWNlNTI2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTYgKzE0Miwx
NSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3Bv
bnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBp
ZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
Y29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICBDdXJsQ2Fj
aGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2Vp
dmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNp
emUoKSk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEo
bV9oYW5kbGUsIGJ1ZmZlcik7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFu
ZGxlLCBidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJp
Y3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCBkYWYw
YTU5YTRlNTg2ZDcxMTRhYmI0ZTVlZjljNTRmNmE4YmVmYzcwLi4wMjRiYzRlOWFlMzFkZjI1YThm
OWI3MGNiYTI4MWZhY2VhYzhjZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
aApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUhh
bmRsZTsKIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgQ3VybFJlcXVlc3RDbGllbnQgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC01Myw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3VybERpZFNl
bmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlk
UmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIGZpbmFsOwotICAg
IHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJl
cXVlc3QmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21w
bGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lk
IGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0
aWZpY2F0ZUluZm8mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcAppbmRleCBjMDcwNGYwY2RkNjQ0MjM3M2Y3Yjcw
YmZlNjE1MzliZjViMzdkNjI1Li4zNjY1OGY5MWRjOWQ2NzIzMGIyMzllNDk3YzAwMDBhYzYyYWFl
OTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxTdHJlYW0uY3BwCkBAIC05LDcgKzksNyBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCiAgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKICAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJDdXJsU3RyZWFtLmgiCiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKIAog
I2lmIFVTRShDVVJMKQpAQCAtMTI5LDEwICsxMzAsMTAgQEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlU
b1JlY2VpdmUoKQogICAgIGlmICghbV9jdXJsSGFuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIHJlY2VpdmVCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4oa1JlY2VpdmVC
dWZmZXJTaXplKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmVjZWl2ZUJ1ZmZlcihrUmVjZWl2ZUJ1
ZmZlclNpemUpOwogICAgIHNpemVfdCBieXRlc1JlY2VpdmVkID0gMDsKIAotICAgIGF1dG8gZXJy
b3JDb2RlID0gbV9jdXJsSGFuZGxlLT5yZWNlaXZlKHJlY2VpdmVCdWZmZXIuZ2V0KCksIGtSZWNl
aXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNlaXZlZCk7CisgICAgYXV0byBlcnJvckNvZGUgPSBtX2N1
cmxIYW5kbGUtPnJlY2VpdmUocmVjZWl2ZUJ1ZmZlci5kYXRhKCksIGtSZWNlaXZlQnVmZmVyU2l6
ZSwgYnl0ZXNSZWNlaXZlZCk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykgewogICAg
ICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX0FHQUlOKQogICAgICAgICAgICAgbm90aWZ5RmFp
bHVyZShlcnJvckNvZGUpOwpAQCAtMTQzLDggKzE0NCw5IEBAIHZvaWQgQ3VybFN0cmVhbTo6dHJ5
VG9SZWNlaXZlKCkKICAgICBpZiAoIWJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIGRlc3Ryb3lIYW5k
bGUoKTsKIAotICAgIG1fc2NoZWR1bGVyLmNhbGxDbGllbnRPbk1haW5UaHJlYWQobV9zdHJlYW1J
RCwgW3N0cmVhbUlEID0gbV9zdHJlYW1JRCwgYnVmZmVyID0gV1RGTW92ZShyZWNlaXZlQnVmZmVy
KSwgbGVuZ3RoID0gYnl0ZXNSZWNlaXZlZF0oQ2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAg
ICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlci5nZXQoKSwgbGVuZ3Ro
KTsKKyAgICByZWNlaXZlQnVmZmVyLnJlc2l6ZShieXRlc1JlY2VpdmVkKTsKKyAgICBtX3NjaGVk
dWxlci5jYWxsQ2xpZW50T25NYWluVGhyZWFkKG1fc3RyZWFtSUQsIFtzdHJlYW1JRCA9IG1fc3Ry
ZWFtSUQsIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVjZWl2ZUJ1ZmZl
cikpXShDbGllbnQmIGNsaWVudCkgeworICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3Ry
ZWFtSUQsIGJ1ZmZlcik7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCmluZGV4IDRmNTliMjBlOGRiMjc5MDM5OTRi
MzMxNTRjZTY0YjA5OTRmM2EwYmEuLmU4YTMyYzI2NDYxYjQzMDhlYTIyN2M2ZGY4Yzk3MjQzOTkw
NWQwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxTdHJlYW0uaApAQCAtOSw3ICs5LDcgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwogICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCiAgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxTdHJlYW1TY2hlZHVsZXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvcjsKIAogdXNpbmcgQ3VybFN0cmVhbUlEID0gdWlu
dDE2X3Q7CkBAIC00Niw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRPcGVuKEN1cmxTdHJlYW1JRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkU2VuZERhdGEoQ3VybFN0cmVhbUlELCBzaXplX3QpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVf
dCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlE
LCBjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KEN1cmxTdHJlYW1JRCwgQ1VSTGNvZGUpID0gMDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGwuaAppbmRleCBiODA0ZmRlMDk3M2JiZmIyODMzMWNmN2MzYTFmMjBiMDQzZTc0ZmU4Li4z
NjZiMDU5YzAyODA0YjE5OWM4ODZhOWMyYzY3MjczZjkyNGYyZWE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsLmgKQEAgLTU5LDkgKzU5LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IHBsYXRmb3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwog
ICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7CiAKKyAgICAvLyBDdXJsU3RyZWFtOjpDbGllbnQK
ICAgICB2b2lkIGRpZE9wZW4oQ3VybFN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmRE
YXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmFpbChDdXJsU3RyZWFtSUQsIENVUkxjb2RlKSBmaW5hbDsKIAogICAgIGJv
b2wgaXNTdHJlYW1JbnZhbGlkYXRlZCgpIHsgcmV0dXJuIG1fc3RyZWFtSUQgPT0gaW52YWxpZEN1
cmxTdHJlYW1JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXgg
NGI5NDkxYzExNTQzZjJiNjBmMTJkMzZlOWU2YTBjYmFhZTM0YTcyZS4uYThmNTdhNzJkMGVhY2Nh
Nzc1NWJlODRmY2FhMWM5YmYxMDk1OGMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bEN1cmwuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1
bGVyLmgiCiAjaW5jbHVkZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCisjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRl
ICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyLmgiCkBAIC0xMDQsMTIgKzEwNSwxMiBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90IGxlbmd0aCkKICAgICBzZW5kUGVu
ZGluZ0RhdGEoKTsKIH0KIAotdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZl
RGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2
b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmIChtX3N0YXRlICE9IE9wZW4pCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRh
KCp0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJl
YW1EYXRhKCp0aGlzLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZUltcGw6OmRpZEZhaWwoQ3VybFN0cmVhbUlELCBDVVJMY29kZSBlcnJvckNv
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMWY0YTE5MzEzMzEyYzVkZDZh
NDhhZDUzMzlkZmQyYzNiNWRlYzI1Ny4uMGZlNjVhMjllNjM2MTZkYjQyZjdjOWVhMWQxODUyMjFj
MjAwNDBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dCA6IHB1YmxpYyBSZWZDb3VudGVkPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0Owot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bh
c3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4
IDMxNWUwNjUxNTMwZGNkYjAyODAxNjU0Yjc1N2Q4MTQ3M2MyMGZkMzAuLmFlNzE1NWVjZWYzNWQz
ZTE4ODhkOTE2NTY0NTdlMzgxMTU5ZGY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTMwMCw3ICsz
MDAsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24g
ZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbAogICAgICAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzkzCiAgICAgICAgIC8vIC0xIG1l
YW5zIHdlIGRvIG5vdCBwcm92aWRlIGFueSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8gaW5z
cGVjdG9yIHNvIGl0IHdvdWxkIHVzZQogICAgICAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFkZXJz
IG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93IHRyYW5zZmVyIHNpemUuCi0gICAgICAgIG1faGFuZGxl
LT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5nZXQoKSksIC0xKTsKKyAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNl
aXZlRGF0YShtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsK
ICAgICB9OwogCiAgICAgW3NlbGYgY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOldURk1vdmUod29y
ayldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMDhkMDU3
YmJiNWYxN2MyMDQ1YmZmOTA2ZmY1YWRhODVmMTA0MjkzMC4uZjdmMjY2Y2U4ZDgxOTEwNjBjODU3
YTJmOGE2YWQ5ZmRlYmQ4MTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCkBAIC01NDYsOCArNTQ2LDggQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRh
dGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICBBU1NFUlQobG9hZGVyLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2ZSBiZWVu
IGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CiAgICAgICAg
IGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8v
IGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVu
dChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgp
KTsKKyAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRv
JiYgYnVmZmVyKSB7CisgICAgICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+
d3JpdGVyKCkuYWRkRGF0YShidWZmZXIpOwogICAgICAgICB9KTsKICAgICAgICAgbG9hZGVyLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDA1OWYzYTM4NmI2Y2Y1ZmE3OWIz
YzE4OTcwMTUzMTNmN2NkYjRlZjIuLjFkZTI1M2M5MmIxYjgxZTcyYWI3MGY5YmI1NjhkNDFmZGUz
NzRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNl
aXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKICAgICBtYXliZURldGVybWluZVN0YXR1cyhE
ZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlKTsKIH0KIAotdm9pZCBNb2NrQ29udGVudEZpbHRl
cjo6YWRkRGF0YShjb25zdCB1aW50OF90KiwgaW50KQordm9pZCBNb2NrQ29udGVudEZpbHRlcjo6
YWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVz
KERlY2lzaW9uUG9pbnQ6OkFmdGVyQWRkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmgKaW5kZXggNjM1YWM4NGJlNzkzODQ3YWE1NzIxM2QwMWZmYzFl
NzRmNzZiNzU5My4uYjgzOTdiMzBkOGQ4NWI3YmZmYjM2MjU0NjZmMDY4ODhjMTgyMTdlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAtNDAsNyArNDAs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBh
ZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRB
ZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJl
cGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcAppbmRleCA4MmEyYThjNGIxOGFjY2U3OThiMjdjMmM4ZDAwOTU4OWZmNzVjYmE4Li40ZThh
Yjc4MWE0MDYxYWIxOGM1MDMzNzNiZGEzOGY2YzU1ZDhhMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC0xMTUsMTIgKzExNSwx
MiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUgogICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0
cnVlOwogfQogCi12b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7
CiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRh
LmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9
CiAKIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
TG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oCmluZGV4IGRhYjczZmM3YjFhOTNlZDRlM2ZlYjMxZDY3MDk4ZDk5YjUxNzZh
MzkuLjdjYmFhOGU1NTEwYzhjNGZjYWYyZWI5MmM2ZjczYjNkMmExMmM2MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtNjMsNyArNjMs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNXb3JrZXJGb250TG9hZFJlcXVlc3QoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJv
b2wpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApp
bmRleCBiZjVhNDRmZTM0OGQyZmZjZTkxNmZiMTk0OTE1ZTY3YmZkYTlhZWMxLi5jZDI2ZWNkNmEz
N2E3ZWQzOWZmNzFlZGRhMzVlOGVmYTkwYjM3YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwKICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVu
dGlmaWVyLCByZXNwb25zZSk7CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQordm9pZCBXb3JrZXJTY3JpcHRM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVz
ZVN0ckxlbikKIHsKICAgICBpZiAobV9mYWlsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMiwx
MyArMjEyLDExIEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQiX3MsICJVVEYtOCIpOwogICAg
IH0KIAotICAgIGlmICghbGVuKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKIAotICAgIG1fc2NyaXB0LmFwcGVu
ZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKKyAgICBzaXplX3QgbGVuID0gdXNlU3Ry
TGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkp
KSA6IGJ1ZmZlci5zaXplKCk7CisgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2Rl
KGJ1ZmZlci5kYXRhKCksIGxlbikpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGVhYWJlMWVhNWQx
M2IzM2Y5YzNjYzY2ZGQ0OTU1N2ViNjllMzdlZmMuLjBiYzNhMDI1YjM2NzllMjU2MzA4NjI0ZWVl
YmE4OWRjY2M0NWM4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CiAKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgdXNlU3RyTGVuKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5oCmluZGV4IGZiYTM2MzIyYjI5YTZkNWI3OTdiMzllZGMzYzNkMTcxMjRiM2I1YmMu
LmNlMzcwOTY4OWQ5ZjA5MjFlMDkwM2EwMzc3ZGIyNjhhNTQ1MGIyYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5k
RmluaXNoKFJlZjxGb3JtRGF0YT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDliMTEyYjlkYjJjZDg0
ZDAzMmY1OWRhZmE4ZThlMzhlMDcwZTUzZjcuLmRjM2FlYThjYWQ5ZDA5NmI0MmJjYTY1YjI2MTIz
MmYxMzc0M2QxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTAz
NCw3ICsxMDM0LDcgQEAgUmVmPFRleHRSZXNvdXJjZURlY29kZXI+IFhNTEh0dHBSZXF1ZXN0Ojpj
cmVhdGVEZWNvZGVyKCkgY29uc3QKICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3Jl
YXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCit2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1
c2VTdHJMZW4pCiB7CiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNTIs
MTcgKzEwNTIsMTYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICBpZiAodXNlRGVjb2RlciAmJiAhbV9kZWNvZGVy
KQogICAgICAgICBtX2RlY29kZXIgPSBjcmVhdGVEZWNvZGVyKCk7CiAKLSAgICBpZiAoIWxlbikK
KyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGxl
biA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEpKTsKKyAgICBzaXplX3QgbGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CiAK
ICAgICBpZiAodXNlRGVjb2RlcikKLSAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1f
ZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOworICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5h
cHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgbGVuKSk7CiAgICAgZWxzZSB7
CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIuYXBwZW5kKGRhdGEsIGxlbik7CisgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIGlmICghbV9lcnJvcikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAyZDEzYmVjMzk0NjQ0OGI5YjRmOTI1ZDMyYmQ4
NmJhMmQ4MDM3NzVhLi42YmYxOWY4MmJkMmZmNzY3MDdkYTQ1NzE0NzUwN2U5OTFkMjQ2NWQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMTYyLDcgKzE2Miw3IEBAIHByaXZh
dGU6CiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkU2VuZERhdGEo
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
LCBib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SXNEb25lKGJvb2wpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuY3BwCmluZGV4IDYxN2Y0NzY4OTU2NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJkZjYuLjdm
NTEyYzZjMTFhOGU3MTA4Y2YwMDYyYjU4NGQyN2I1ODkwOGQxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5j
bHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtOTYsMTAgKzk3LDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFS
ZXNvdXJjZTo6ZGF0YVNlbnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
VG9CZVNlCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3Rh
bEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNl
aXZlZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBSZW1vdGVNZWRp
YVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgV1RG
TW92ZShkYXRhKSk7CisgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEp
OwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxl
ZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IDViN2E3ZTJhNzQyNDQz
MmQ4NmNiMjhhMWJlNzE3MThhMTY3Mzc1ZTcuLjk1MTA2ZjY3MjI3M2I0NWYwYTI0YTQ3YTFhMmJk
ZDE0MDllMGY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
Nyw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAg
dm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OworICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwog
ICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9QZW5kaW5nRG93bmxvYWQuaAppbmRleCA3MWZkMDIyMjliYmIxYzU3MzI2ZmRmY2ZlMjZj
MTFmNzYxYWJjZjcyLi4wNTRiODkzZTExMTEwZGNmOWE3MDAyNTJmNGY3OTViMDFhNTg3YjlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Q
ZW5kaW5nRG93bmxvYWQuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNB
bGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJp
ZGUgeyB9OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
IHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHAKaW5kZXggOTU4NjA5MWVhMDA0MWI2ZjE1ODY5ZDQyYmJkYTcyNDMyOTc2OTBlYy4uYmE4ZDA0
OGY2NWRjMzM5ODRmMGNkNDc2MzVhYjkxMDE4NzliZDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpCit2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikKIHsKICAgICBDT1JTX0NIRUNL
RVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaApp
bmRleCA1MDVhNGVmZTU3MWQ0ODllNTBhOTg4YmViODE4NWI3ZmVhYjNkYjEwLi4wY2IzMTVmZDhm
ZjUzMTk5MTU3ZGU3OGY4NDUyZDcxYzRmNWUyOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAg
LTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFs
Qnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAg
IHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmgKaW5kZXggNGI5ZWU1NzRiOTJjN2MzNzE3YTRiYzI4MTlhNmJl
M2ExOTA2NTcxNS4uZjQ3OWUwOTAyYjIxNzkyOTU1ZDM3NjgxNGIyMWM4OWZmNTVkYjU4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC00
Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1j
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50
LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgd2FzQmxvY2tlZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAKaW5kZXggOGMxMDRkODE2MGI3YWFmZDA5OTcxNWRhNmQ0ZTZmN2M0NjM3ZmEw
OC4uNjBiNjlhOTM2YmI3OGRmMjUxMDc0OWM3NTRmZTZhYTIyOTNmZTAyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTI1NCwxMSArMjU0LDEw
IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2
ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEg
bGVuZ3RoLgotICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwotICAgIG1fY2xpZW50Lmdl
dCgpLmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBzaXplKTsKKyAgICBtX2NsaWVu
dC5nZXQoKS5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZv
aWQgTmV0d29ya0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0
cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBl
NmE3NjExNTk2MmI5NjU5ZTdiZmU3OGM2ZjRkYzZmNTMxMmIzY2JlLi4wZTRjMWFlNDkyM2MzMzdm
NWNmOWIwYTQwOGI1YTg4MjI5ZjU5NjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0
aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRv
dGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwog
ICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCmluZGV4IDM0OGNmZmI5ZThlMjVlZTgzYmJiMzlh
MDJjZDNjZjZkMjg1NGQzOWUuLjhhMjg1ODI2MTEzZjlkOGVlNjYwZGI2ODhiM2M1MzkzZmY5N2Iy
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xp
ZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM2YWNjNjMxNDVm
NDA1YjE5NTVkMzM1NDBkYWE3MDhmOWE2MjkzNDEuLmU2ZmQyYWM3MGVjN2UwZTc1OTBhZGUyNzJl
MTQyN2ZjZTk2ZGRlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg2MywyOSArODYzLDI5IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJ
bk5ld0Jyb3dzaW5nQ29udGV4CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICgh
bV9udW1CeXRlc1JlY2VpdmVkKQotICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2Vp
dmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgbV9udW1CeXRlc1JlY2Vp
dmVkICs9IGJ1ZmZlci0+c2l6ZSgpOworICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJl
Y2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoPSVkKSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fbnVtQnl0ZXNSZWNl
aXZlZCArPSBidWZmZXIuc2l6ZSgpOwogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxp
ZGF0aW9uKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8v
IFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1p
dCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwotICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhp
bXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
c2l6ZSgpICsgYnVmZmVyLnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAg
ICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAg
ICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBG
SVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhl
IHJlc291cmNlIGhhbmRsZS4KLSAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBi
dWZmZXItPnNpemUoKTsKKyAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZm
ZXIuc2l6ZSgpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVy
ZWREYXRhLmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBl
bmQoYnVmZmVyKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBl
bmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTEyNzMsNyArMTI3Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoID0gMDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRC
dWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFM
ZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGNmMTBjZjBlNzFh
MWJjNjU1NDBlODdkNmJhNGMxYjljODU2YzBhMWQuLjgxN2FlZjI2YzgzNmMzNGE3ZDQ0ZWU3Y2M5
NWVkZDlhMjk4ZDZhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0xOTMs
NyArMTkzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVl
ZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVm
ZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFM
ZW5ndGgpOworICAgIHZvaWQgc2VuZEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKIAogICAgIHZvaWQgY29uc3Vt
ZVNhbmRib3hFeHRlbnNpb25zKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU2FuZGJveEV4dGVuc2lv
bnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggYmMy
YzMzN2U0ZWVlMDFhZjgzZTEzNjcyMzE3YTlhOWVhYmM3YzZmOC4uZjBlZmQwNGJiMmUxOGY2ZjNj
YmMxNjNmYWYyM2RhMDQ2NmJlZTU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VAog
ICAgIGRpZEZpbmlzaCh7IH0sIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVj
ZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIFBJTkdfUkVMRUFTRV9M
T0coImRpZFJlY2VpdmVEYXRhIik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggZTc4MDhkOGU2NTU4MmY3OTM4ODgy
OGQ1MTc1OGNiMTkzY2Y1NWZjNy4uYjIyNWM0N2I5NGFmYTBiNDRlZGMyNjcwZGZjNThhZDdhZmM5
MTQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyAr
NTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFs
bGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2Fj
eVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90
YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRh
c2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAK
aW5kZXggMTdkNDc5MDdhM2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3NTFkNmIwYi4uYWFhZTJiZmJk
ZjgzYTM5YWNlYzA2M2ZlYjI0NDYxNmRjODQ4ZWRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQ
cmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgUmVzcG9uc2VDb20KICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Okln
bm9yZSk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQor
dm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNv
bm5lY3RUYXNrLmgKaW5kZXggODU4MDhlMTIxYjY4Y2E4YjczZTI1MThkMTkzYWIzOTU4MWVhZDFl
Ny4uOGM2YjBkZWVkNjZjNTEwMTliZTg5ODRlZDViODdlMGMxZDc5MGY4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAg
dm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmlu
YWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRv
d25sb2FkVGFzay5jcHAKaW5kZXggMjVkNGUzN2Y5NDU0YmVlMzJmMDRkOGNjOGM0NzFkNWQzZjdl
ZDgyYi4uOGM4ZGMzNmIxZTUzOTM4ZjgxZWI0YWJhYWZmMDE5MGYyYjU0ZWRiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIK
ICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgiCkBAIC0xNzMsNyArMTc0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNr
OjpzdGFydCgpCiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGlu
Z0Rvd25sb2FkTG9jYXRpb24pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBl
bmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJEb3dubG9hZFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKaW5kZXggYWI1OWVhZTUyNjY1MzA2
MjEyYTI4ZTkzMjNhMmI4YjRmZmUwYzc4Zi4uYjg5YWIzZWJkNzYyZjY4MTJhNWU5N2JmZjY5MGJh
OTBmMDI1N2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5o
CkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZl
cmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTY2LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNr
KE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgRG93bmxvYWRJRCk7CiAKICAgICAv
LyBJUEMgTWVzc2FnZQotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KaW5kZXggMWQzYmZiN2NjMzEwOTc5OWNjODAwMWJi
YTcxZDg5YzBmNmYyZDkyZi4uNTBkMmI0MmE3MWIwZWRhYjc5ZmJjZTlkZGI5ZjE5OTgyZGI1MzU5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2su
bWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIAogbWVzc2FnZXMgLT4gU2VydmljZVdvcmtl
ckRvd25sb2FkVGFzayBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2
ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkK
ICAgICBEaWRGaW5pc2goKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwCmluZGV4IDRlNzkxOWIzZGRjMDJhZTE0ZDBlZDk2ODRiOGM2OGJiNmYyOGE0MzQuLjRmNzhi
OWRmNTRlNWU2Nzc4Nzg0MTM1YTI3YTAzZGJjNjI5YmZkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJOZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxv
YWRlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25N
ZXNzYWdlcy5oIgpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6cHJvY2Vzc1Jlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuCiAg
ICAgICAgIG1fbG9hZGVyLnNldFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsKIH0KIAotdm9p
ZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9pc0RvbmUp
CiAgICAgICAgIHJldHVybjsKQEAgLTQwMSw3ICs0MDEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OmxvYWRCb2R5RnJvbVByZWxvYWRlcigpCiAgICAgICAgICAgICBkaWRGaW5pc2hX
aXRoTWV0cmljcyhtX3ByZWxvYWRlci0+bmV0d29ya0xvYWRNZXRyaWNzKCkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJl
ZmVyZW5jZSB7IGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkgfSwgbGVuZ3RoKTsKKyAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoUmVmIHsgY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJj4oKmNodW5rKSB9LCBsZW5ndGgpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBjMzQ1ODAyNjdmYjMyNjllNmRjYmRjZWZj
MzRkMDY4MmM2YTA4ODZjLi41MjI1ZTU0NTk5OTUxZDhmODFjNzBhZjgyZWJiYTI2ODllMzUwMDY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTQ4LDYgKzQ4LDcg
QEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNs
YXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtOTMsNyArOTQsNyBAQCBwcml2YXRlOgogICAgIGVudW0gY2xh
c3MgU2hvdWxkU2V0U291cmNlIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
JiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURh
dGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7
CiAgICAgdm9pZCBkaWRGaW5pc2hXaXRoTWV0cmljcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
bWVzc2FnZXMuaW4KaW5kZXggMThlNjI5ZjBkMTQ2ZWQyZDQyOWRiMWJhMjg3MDFlODNmYjk2ZTYy
Zi4uN2RiNTNlOWJkMDM4MDQ1NDczYTI1YWYzN2Q0N2MxOTU3OTVlMjMyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2subWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KQEAgLTI3LDcg
KzI3LDcgQEAgbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckZldGNoVGFzayBOb3RSZWZDb3VudGVk
IHsKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgRGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkK
ICAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKLSAgICBEaWRS
ZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBl
bmNvZGVkRGF0YUxlbmd0aCkKKyAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBEaWRSZWNlaXZlRm9ybURh
dGEoSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSBkYXRhKQogICAgIERpZEZpbmlzaCgpCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApp
bmRleCA1ZDliZDMzMzM5MjExY2ExY2Q0NDdiODc5MmY1NDYxZWE4N2VkZGY0Li5lNTY1NGNjMzEz
OWI0OWQ2MWE5ODUxM2NkMDE2YmVjZjczOWJiY2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE3NSwxMCArMTc1LDEw
IEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZv
aWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAg
IG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKFJlZlB0ciB7ICZidWZmZXIgfSwg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDY3YWJjNTVjNjBmZjI0ZTM5ZGQwNGVjYzUwMjFi
NjA1ZWU4YmViYjEuLjVmODhhYzJhYThkZjk2MjhkNGM1OWRkZDA5NGYwY2VlMWQyMWE3ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5o
CkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtM
b2FkTWV0cmljczsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25z
ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShS
ZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0
cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYp
OwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJl
dHVybiBtX2Vycm9yOyB9CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0Fs
bG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDdhMjYyMjE5ZGU3OGIyMzVkMTI1YTky
YjZlMjM2ZDMzMjYyZjdhMjcuLmQ5ZDc0NzUyNTMyZjE4OWViMWJlMmMwM2Q3ZTI5ZTg1OWU4OTZl
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJlc291cmNlRXJyb3IgU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OnByb2Nlc3NSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvCiAgICAgcmV0
dXJuIHsgfTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9k
ZWNvZGVyKSB7CiAgICAgICAgIGlmICghbV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKQEAg
LTE4Niw4ICsxODYsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgICAgIG1f
ZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0Il9z
LCAiVVRGLTgiKTsKICAgICB9CiAKLSAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkp
Ci0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOworICAgIGlmICghYnVmZmVyLmlzRW1wdHkoKSkg
eworICAgICAgICBidWZmZXIuZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAg
ICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShzZWdtZW50LmRhdGEo
KSwgc2VnbWVudC5zaXplKCkpKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5oCmluZGV4IDQ0ZmMwNjg1ZmEwZmVkYzg3NDIxOTE2ZTkxM2E2NzRiMWMw
ZmRiZWEuLjdlODE4ZjM0MTNkYTI5Zjg2MWUxMDAzOTkxZThkNTM4OTIzNDZlZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC02NCw3ICs2
NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggNDFkODIzNTAy
NDc0N2I2ZmM0YTNhYzU0OGUxMzM0ZWQ2Y2I1ZWY3YS4uODE0ZWIzMjBkNGU3NDhhMjlhZTA5MTM1
YWZjMWRhNWYzNzUxNWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApA
QCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2Fk
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNo
ZUVudHJ5KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8v
IFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAg
ICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7
Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6
ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERh
dGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXIuc2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNp
emUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggMWI4NDNkYjdlYzI3
MGRiOWRhYjllOGEyNWYyYTQ4YThlY2FlMmE4YS4uOWFkY2E2MDVlNzI4MGJiN2IzNGNlNzQ0ZDg3
ODhiYmI0NDg5MjRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC02MSw3
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50
aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggNDE2Njhh
NWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVjYTkwN2VkYy4uMDc3MmFmMWE4NmQyMjQxN2JmMTFm
MTZiZDZiN2I1ODBmZTU3YTdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtMzgsNiArMzgsNyBA
QCBPQkpDX0NMQVNTIE5TTXV0YWJsZVVSTFJlcXVlc3Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmVn
b3RpYXRlTW9kZXJuVExTKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBS
ZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0
ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNDc3
MWZkZTkyMGQ2Yjk4ZTgzZmMyOWRkM2FhZjk3YTBhNmQ5YTg4MC4uNjQ5YjVjYTc4YzY4NzVlY2Rl
MGQzZDQzNmY5NTkwZGI1MTc5ZDBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC00NDMsMTIg
KzQ0MywxMiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlk
Q29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQg
TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgV1RG
RW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRl
cyIsIGRhdGEtPnNpemUoKSk7CisgICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRh
dGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEuc2l6ZSgpKTsKIAogICAgIGlmICht
X2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSkp
OworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgTmV0
d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRM
UywgV2ViS2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0Rh
dGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29y
a0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggODQ2NjllMjA5ZDc3YmY1MmEzNmFmZTJhN2RhYjI1MmE2
OTAwZGNmNy4uMTNmY2M3YmQ0OGE1NWEwOTM5MTI5MjZiYTQ0ODRjZjVlMzU1MTMyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0
YVRhc2tDdXJsLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Zy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaD4KICNpbmNs
dWRlIDxwYWwvdGV4dC9UZXh0RW5jb2RpbmcuaD4KQEAgLTE3MiwxMyArMTczLDEzIEBAIHZvaWQg
TmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYg
cmVxdWVzdCwgQ3VybFJlc3BvCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAK
LXZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVl
c3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5ldHdvcmtE
YXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAg
ICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNv
bXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFpc0Rvd25sb2FkKCkpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0YVRh
c2tDdXJsOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3Mm
JiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAppbmRleCA0NWJlNWNlMTg0MzI1Mjcx
ZDVjMDgwZGQzNGYxZWU0YTE2NjQyYTFmLi5lNTU4NjRhOTVmN2JjYmMwODVjNDY2MjhiZmYwNTg1
NzM1NzMyODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya0RhdGFUYXNrQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQ3VybFJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjgsNyArNjksNyBAQCBwcml2YXRlOgogICAgIFJlZjxX
ZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsKICAg
ICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxv
bmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVzcG9u
c2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpD
dXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERp
ZENvbXBsZXRlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoV2ViQ29yZTo6
Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oCmluZGV4IDE3ZjA4YzI4ZWExMjViNTUwOTkzZWVkMjRkNTk2M2I4NTEw
YTExNDEuLjg3MzAzYzhkMTFmZmNhM2Y1NmZmZDE2YTFmOGU4ZjgzMGVmMmRjMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC01Myw2
ICs1NCw4IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAorICAgIC8v
IFRPRE8gOiBTaGFyZWRCdWZmZXJDb3B5IHNob3VsZCBjb250YWluIGEgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciBhbmQgdGhvc2Ugc2hvdWxkIGdvIGF3YXkuCisgICAgLy8gQWxsb3dzIHRvIG5vdCB1
bmVjZXNzYXJpbHkgZmxhdHRlbiB0aGUgU2hhcmVkQnVmZmVyIGJlZm9yZSBzZW5kaW5nIGl0IG92
ZXIgSVBDLgogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDog
dHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9N
ZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKaW5kZXggOWNkZWQ5NjkzNTE1
Y2JkYjkyNWY1OTU0YTE2ZjRiYWYwNjdhMzE2Mi4uNmMxOWJjOWJhYjY0MTAzMzMwMDczYjQxYzVh
ZTFkOGVkMDFjM2I3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCkBAIC0xODUs
OSArMTg1LDkgQEAgdm9pZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUGFyc2VUcmFja3MoU291cmNl
QnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb24KICAgICBBU1NFUlQoIWlzTWFpblJ1
bkxvb3AoKSk7CiAKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYXJzZVRyYWNrc0xvY2sgfTsKLSAg
ICBBU1NFUlQoIW1fcGFyc2VUcmFja3NTdGF0dXMpOwotICAgIEFTU0VSVChtX2R1cmF0aW9uLmlz
SW52YWxpZCgpKTsKLSAgICBBU1NFUlQobV90cmFja1JlYWRlcnMuaXNFbXB0eSgpKTsKKyAgICBB
U1NFUlQoIW1fcGFyc2VUcmFja3NTdGF0dXMgfHwgKG1faW5pdCAmJiBlcnJvckNvZGUpKTsKKyAg
ICBBU1NFUlQobV9kdXJhdGlvbi5pc0ludmFsaWQoKSB8fCAobV9pbml0ICYmIGVycm9yQ29kZSkp
OworICAgIEFTU0VSVChtX3RyYWNrUmVhZGVycy5pc0VtcHR5KCkgfHwgKG1faW5pdCAmJiBlcnJv
ckNvZGUpKTsKIAogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAg
ICAgaWYgKGVycm9yQ29kZSkKQEAgLTIyMSw2ICsyMjEsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVh
ZGVyOjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXph
dGlvbgogICAgIH0KIAogICAgIG1fcGFyc2VUcmFja3NDb25kaXRpb24ubm90aWZ5QWxsKCk7Cisg
ICAgbV9pbml0ID0gdHJ1ZTsKIH0KIAogdm9pZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJvdmlk
ZU1lZGlhRGF0YShSZWY8TWVkaWFTYW1wbGU+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNr
SUQsIGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oCmluZGV4IDM3ZTRh
ZDQyNzZiMTJhZDUxNDNkYzIyOGNkZTk0NzYzODdlNWM4ODguLjY1MDkzZTllNDZiNDBiNWEzOTc2
ZmRlZjI5ZTYxM2M2NDUxZjMxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oCkBAIC04
Nyw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZjxNZWRpYVRyYWNrUmVhZGVyPj4g
bV90cmFja1JlYWRlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3BhcnNlVHJhY2tzTG9jayk7CiAg
ICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJ
ZGVudGlmaWVyOworICAgIGJvb2wgbV9pbml0IHsgZmFsc2UgfTsKIH07CiAKIGNvbnN0ZXhwciBN
ZWRpYUZvcm1hdFJlYWRlcjo6V3JhcHBlckNsYXNzIE1lZGlhRm9ybWF0UmVhZGVyOjp3cmFwcGVy
Q2xhc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApp
bmRleCBlMTI2NGNlMjFiYTU3ZjJhNDI3NDhlMzNhMWRhZDg4YTBlMjU4YmMyLi5kNzY3ZmMwNmIz
NmYxNTZmZjMxYzM4M2U2NDNkNDM0NGMyMTdhYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIGF1dG8gV2ViVVJM
U2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKSAtPiBFCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKLWF1dG8g
V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCithdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBl
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTg3LDExICsxODcsMTEg
QEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEUKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAg
IGlmIChpc1N5bmMoKSkgewotICAgICAgICBtX3N5bmNEYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOworICAgICAgICBtX3N5bmNEYXRhLmFwcGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRs
ZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIuZ2V0KCkpLCBtX3dl
YlBhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hl
bWVUYXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1f
cmVzb3VyY2VMb2FkZXJJRCwgYnVmZmVyKSwgbV93ZWJQYWdlSUQpOwogICAgIHJldHVybiBFeGNl
cHRpb25UeXBlOjpOb25lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmgKaW5kZXggZjZmZjQ2ZWVhNWYyOTBiN2I3ZTNmZTU5MjFkZjlmMTk0YmFjZDExNy4u
YzMyMzA2OWIxY2MwMzFmMDI1YjIyYzg1OWEzNTQxODhmZGQyMzcyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6
CiAgICAgRXhjZXB0aW9uVHlwZSB3aWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsICBGdW5jdGlvbjx2b2lk
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRQ
ZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIEV4Y2VwdGlvblR5cGUgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAg
IEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
Jik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRDb21wbGV0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAKICAgICB2b2lkIHN0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNw
cAppbmRleCBiNTEzYTI2ODA4ZWFhMThlMzdmNGZkZjA0YTIzZDI5NjBiMjczYjJjLi45MjM0YjVj
NjUzZjkxZWJhOTEwZmJkZjliZTFlMjJhMDJjMTFjNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
UHJveHkuY3BwCkBAIC03MiwyMCArNzIsMTcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJv
eHk6OmRhdGFTZW50KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmUKICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
OjpEYXRhU2VudChtX2lkLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCksIDApOwogfQog
Ci12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2
b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewotICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShsZW5ndGgp
OworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGJ1ZmZl
cik7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
c2hhcmVkTWVtb3J5UHRyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgp
KTsKLSAgICBtZW1jcHkoc2hhcmVkTWVtb3J5UHRyLCBkYXRhLCBsZW5ndGgpOwotCiAgICAgU2hh
cmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxl
KGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgLy8gVGFr
ZSBvd25lcnNoaXAgb2Ygc2hhcmVkIG1lbW9yeSBhbmQgbWFyayBpdCBhcyBtZWRpYS1yZWxhdGVk
IG1lbW9yeS4KICAgICBoYW5kbGUudGFrZU93bmVyc2hpcE9mTWVtb3J5KE1lbW9yeUxlZGdlcjo6
TWVkaWEpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7
IFdURk1vdmUoaGFuZGxlKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCkgfSksIDApOwor
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUo
aGFuZGxlKSwgYnVmZmVyLnNpemUoKSB9KSwgMCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNv
dXJjZVByb3h5OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlUHJveHkuaAppbmRleCA0N2VhODY2NzFiMTNkMTM5NWMzZGFkOWJkYTc5YWJmNjE2
Y2JhMTc5Li45NDk0NjQ1MjJjMjYzZTZhNWU4MDczZjc0ZTlkMjQzNGJhYTkzOTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZVByb3h5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmlu
YWw7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2
b2lkIGRhdGFTZW50KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxv
bmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZl
ZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBm
aW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vz
c0NvbnRyb2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBmaW5hbDsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCBkNzFhZTVlMGE5YWYzZDllZTNhNTFkOGZjZjUwZmU1MzU5YjM5MGI3Li43
NDkxOTBkMTliMGZhMWNlMGI1MTFlODQyMDcyNTYwMDY5MTE4NjA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkZy
YW1lLmgiCkBAIC0yMDAsMTYgKzIwMSwxNSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAg
IG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGlj
eURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBzaXplICVsdSBmb3IgJyVzJyIsIGRhdGEuc2l6ZSgpLCBt
X2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHBy
b2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNw
b25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVy
Y2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAg
ICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CisgICAgICAgIG1faW50
ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpLCBl
bmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2Fk
ZXIpCi0gICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJl
Y2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxOCw3ICsyMTgsOCBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEsIGludDY0X3QgZQogICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlk
UmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEiKTsKICAgICBtX251bUJ5dGVzUmVj
ZWl2ZWQgKz0gZGF0YS5zaXplKCk7CiAKLSAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRh
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
Qnl0ZXMpOworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIoKSA/IFJlZiB7ICpkYXRhLmJ1
ZmZlcigpIH0gOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fY29yZUxvYWRlci0+ZGlk
UmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7
CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTMwNiw3ICszMDcs
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nl
c3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2Nv
cmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgV0VCUkVTT1VS
Q0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZToiKTsKIAotICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVk
QnVmZmVyKCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdy
YXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIHNlbnQg
ZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzLiIpOwpAQCAtMzIzLDcgKzMyNCw3IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlJiBoYW5kCiAKICAgICAvLyBPbmx5IHNlbmQgZGF0YSB0byB0aGUgZGlkUmVjZWl2
ZURhdGEgY2FsbGJhY2sgaWYgaXQgZXhpc3RzLgogICAgIGlmICh1bnNpZ25lZCBidWZmZXJTaXpl
ID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZl
cihidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgYnVmZmVyU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJl
c291cmNlKTsKKyAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIucmVs
ZWFzZU5vbk51bGwoKSwgYnVmZmVyU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKIAog
ICAgIGlmICghbV9jb3JlTG9hZGVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhMjJl
NjJmMjhiNWZhNGNmYzkxYWE1ZTVjZTgyY2EyN2FlMjZhZDUzLi5hYzU0MjJmYzA2NzEwYmQwZTA4
N2UwZjQ0MDllZDk0MDE3YzBjZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogbmFt
ZXNwYWNlIElQQyB7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgwLDcgKzgxLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYpOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVu
Y29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxv
YWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFNlcnZp
Y2VXb3JrZXJMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIubWVzc2FnZXMuaW4KaW5kZXggMDJhMTRmNTlhMzA0NzQ0YzJkMTgzZWE3OWU5OWViYWViNGNm
YmJhMi4uZGFhMjRkMjdjNzFhODNjZjdjMGYxNjhkYTI2YTQ5YjQ4NzY5MjYwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUmVz
b3VyY2VMb2FkZXIgTGVnYWN5UmVjZWl2ZXIgewogICAgIFdpbGxTZW5kUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0
Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlKQogICAgIERp
ZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50
KQogICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQotICAgIERp
ZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90
IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVy
Q29weSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZEZpbmlzaFJlc291
cmNlTG9hZChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKQog
ICAgIERpZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKICAg
ICBEaWRGYWlsU2VydmljZVdvcmtlckxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApp
bmRleCA4ZDJjNWYzZTI1Y2ExYTIzNzhlNWUzMDA1ZDc1NDkyYmVhZjBiMWVhLi4yYjdlNGQyYzIw
ZmRkMTk5ODgyNzJkYThiZmNjNWE2MTg2YzZkM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC02NSw2ICs2NSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBFbGVtZW50Owogc3Ry
dWN0IFBsdWdpbkluZm87CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXVEYg
ewpAQCAtMTc2LDExICsxNzcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2
YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBmaW5hbDsK
ICAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0
dXMpIGZpbmFsIHsgfQogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgs
IHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7
Ci0gICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgc3RyZWFtRGlkUmVj
ZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1J
RCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29s
IHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50
MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBm
aW5hbDsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbWFu
dWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFt
RGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgYm9vbCBoYW5kbGVNb3VzZUV2
ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBmaW5hbDsKQEAgLTM2Miw3ICszNjMsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6Ok5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJD
b3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAg
ICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciopIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBlNWZhMDcxMDlhOTMxODQ1MzlmYjFlMjQ3MGEzZjkz
ODZkNDMxNTU4Li5mYTZjZTZmNjlmYzAyZjcwMWY4ODUxMzg4NDc1ZGVmM2YyNDMxNGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
QEAgLTk0LDYgKzk0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsQW5pbWF0b3IuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGlu
Z3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1do
ZWVsRXZlbnRUZXN0TW9uaXRvci5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaD4KQEAgLTExOTEsNyArMTE5Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJl
YW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0CiAgICAg
fQogfQogCi12b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgY291bnQpCit2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9h
ZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9h
ZGVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKCFtX3BkZlBsdWdpbikK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTIwMCw3ICsxMjAxLDcgQEAgdm9pZCBQREZQbHVnaW46OlBE
RlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5T
dHJlYW0KICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlcXVlc3Qt
PmFkZERhdGEoZGF0YSwgY291bnQpOworICAgIHJlcXVlc3QtPmFkZERhdGEoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRl
ckNsaWVudDo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25z
dCBSZXNvdXJjZUVycm9yJikKQEAgLTE3MTgsMTUgKzE3MTksMTUgQEAgdm9pZCBQREZQbHVnaW46
OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiwg
dWludDMyX3QKICAgICAgICAgbV9pc1Bvc3RTY3JpcHQgPSB0cnVlOwogfQogCi12b2lkIFBERlBs
dWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHN0cmVhbUlELCBzdHJlYW1JRCA9PSBwZGZEb2N1bWVudFJlcXVlc3RJ
RCk7CiAKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFD
cmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQo
KSwgYnl0ZXMsIGxlbmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKKyAgICBD
RkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpOworICAgIG1fc3RyZWFtZWRCeXRlcyArPSBidWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIFBE
RlBsdWdpbjo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTE3
NjMsMTQgKzE3NjQsMTQgQEAgdm9pZCBQREZQbHVnaW46OmVuc3VyZURhdGFCdWZmZXJMZW5ndGgo
dWludDY0X3QgdGFyZ2V0TGVuZ3RoKQogICAgICAgICBDRkRhdGFJbmNyZWFzZUxlbmd0aChtX2Rh
dGEuZ2V0KCksIHRhcmdldExlbmd0aCAtIGN1cnJlbnRMZW5ndGgpOwogfQogCi12b2lkIFBERlBs
dWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGlu
dCBsZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIG1f
ZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKLSAgICBlbnN1cmVE
YXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyArIGxlbmd0aCk7Ci0gICAgbWVtY3B5KENG
RGF0YUdldE11dGFibGVCeXRlUHRyKG1fZGF0YS5nZXQoKSkgKyBtX3N0cmVhbWVkQnl0ZXMsIGJ5
dGVzLCBsZW5ndGgpOwotICAgIG1fc3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CisgICAgZW5zdXJl
RGF0YUJ1ZmZlckxlbmd0aChtX3N0cmVhbWVkQnl0ZXMgKyBidWZmZXIuc2l6ZSgpKTsKKyAgICBt
ZW1jcHkoQ0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdldCgpKSArIG1fc3RyZWFtZWRC
eXRlcywgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9zdHJlYW1lZEJ5dGVz
ICs9IGJ1ZmZlci5zaXplKCk7CiAKICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQogICAg
IC8vIEtlZXAgb3VyIHJhbmdlcy1sb29rdXAtdGFibGUgY29tcGFjdCBieSBjb250aW51b3VzbHkg
dXBkYXRpbmcgaXRzIGZpcnN0IHJhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5oCmluZGV4IDFkODQ0ODA1ZjRjMTBlOTNmZWRjYWJkZWVjMjFkZDM1ZGRmODgyMDIu
LmU0ZDYyZjRiZWE5YmZjMmZhODBlZjRkNmU5MGM1Y2NmMDY3OTRmNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC01NCwxMiArNTQsMTMgQEAgY2xhc3Mg
QWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFz
cyBGbG9hdFNpemU7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6
ZTsKIGNsYXNzIFNjcm9sbGJhcjsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYwLDcgKzE2MSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAg
ICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgot
ICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwg
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJl
YW0gaGFzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZpbmlz
aExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpID0gMDsKQEAgLTE3Myw3ICsxNzQsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAg
IC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgdGhlIG1hbnVhbCBzdHJlYW0gZGlkIHJlY2VpdmUg
ZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFudWFs
U3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwog
CiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9h
ZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
aW5kZXggNTM0ZGE1MmQ0N2Q2Mjg1MGUyMDVmZjllOTljMzBiMzdkM2JjYmExMi4uMDM0NGY0YmUy
M2E0Mzc2NzE5Nzc4OTk5N2Q3NjM3YTIwMzFiN2VhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2
YXRlOgogICAgIC8vIE5ldHNjYXBlUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50CiAgICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwog
CkBAIC0yMzUsOSArMjM1LDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVS
ZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFIKICAgICBtX3BsdWdp
blZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UobV9zdHJlYW1JRCwgcmVz
cG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWlt
ZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lk
IFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmll
dzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4t
PnN0cmVhbURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ5dGVzLCBsZW5ndGgpOworICAgIG1f
cGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ1
ZmZlcik7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRGYWlsKE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIApAQCAtMzc0LDcg
KzM3NCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX3BsdWdpbi0+bWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2Rp
ZmllZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0
ZWRGaWxlbmFtZSgpKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblZpZXc6
Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICAvLyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxlZCB0byBpbml0
aWFsaXplLgogICAgIGlmICghbV9wbHVnaW4pCkBAIC0zODIsMTEgKzM4MiwxMSBAQCB2b2lkIFBs
dWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywg
aW50IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VS
VChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJl
c3BvbnNlKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChieXRlcywgbGVuZ3Ro
KTsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChidWZmZXIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRh
KGJ5dGVzLCBsZW5ndGgpOworICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0
YShidWZmZXIpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGaW5pc2hMb2Fk
aW5nKCkKQEAgLTExNzEsOSArMTE3MSw5IEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFu
dWFsU3RyZWFtKCkKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCiAgICAgaWYgKG1fbWFudWFs
U3RyZWFtRGF0YSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS50
YWtlKCk7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkK
LSAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRh
dGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOworICAgICAgICBtX21hbnVhbFN0cmVhbURh
dGEudGFrZSgpLT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVy
KSB7CisgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKKyAgICAg
ICAgfSk7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3Ry
ZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oCmluZGV4IGY2NjMxMmE4MGFjZDFlMDM1MzEwZGZhYTNhNWYzYTE3YjcyYWFl
NTUuLjI1NjE1Y2IzMGYyMjY0NjM5MjQ0NDg4ZjJiZDdjNDEyMjc5MDc5YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTczLDcgKzczLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCgpIGNvbnN0IHsgcmV0dXJuICFt
X3BsdWdpbiB8fCBtX3BsdWdpbi0+aXNCZWluZ0Rlc3Ryb3llZCgpOyB9CiAKICAgICB2b2lkIG1h
bnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOwotICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hM
b2FkaW5nKCk7CiAgICAgdm9pZCBtYW51YWxMb2FkRGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5k
ZXggZWU0MGZiOTU4NWU3OWQ4NmIzY2ZkMmY1NzllZDQ2ZTYxYjllYzYzZS4uMzE0ODJlYjNiMzY4
ZDc4YTYxYTdlYzFkMjRjNTk4MTBiYzkxZWQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYK
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlm
ICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CkBAIC04MCwxNCArODAsMTQgQEAgdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCiAgICAgICAgICAgICBtX3Jl
c3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKLSAgICAgICAgc3RkOjpnZXQ8U2hh
cmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSku
YXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV9pc0Rv
d25sb2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLmdldCgpLCBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6
OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6
ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRh
IHsgYnVmZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwg
bV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAK
IHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRh
QW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJiBmb3JtRGF0YSkKQEAgLTEzNiwxNSArMTM2LDE1IEBA
IHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRh
QW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBp
ZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faXNEb3dubG9h
ZCkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxp
bnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURh
dGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0
Y2hJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IGRhdGEsIHNp
emUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwor
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyICwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVy
LnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKQEAgLTIyOCw3ICsyMjgs
NyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlKCkKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlk
RmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZl
cikgewotICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKKyAgICAgICAgZGlk
UmVjZWl2ZURhdGEoYnVmZmVyLmNvcHkoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgIGlm
IChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShS
ZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5oCmluZGV4IGU5ODdlMTlhYzhiNzM4ODcxYWFkODJiNGIzODU2Mjk2OGEyYjZjOWMuLjA5NDAw
ZGYwY2U3MjVmMzlhOGIxMWQ5MzVlMTQ1NGUzOTlmNWEyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAg
dm9pZCBkaWRGaW5pc2goKSBmaW5hbDsKQEAgLTYwLDggKzYwLDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbnZlcnRGZXRjaFRvRG93bmxvYWQoKSBmaW5hbDsKIAogICAgIHZvaWQgY2xlYW51cCgp
OwotICAgIAotICAgIHZvaWQgZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QpOworCisgICAgdm9pZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkRmluaXNoQmxvYkxvYWRpbmcoKTsKIAogICAg
IHN0cnVjdCBCbG9iTG9hZGVyIGZpbmFsIDogV2ViQ29yZTo6RmV0Y2hMb2FkZXJDbGllbnQgewpA
QCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50
IEFQSQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZl
QmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKSBmaW5hbCB7IGNsaWVudC0+ZGlkUmVjZWl2
ZUJsb2JDaHVuayhkYXRhKTsgfQogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgY2xpZW50LT5kaWRGYWlsKGVycm9yKTsgfQog
ICAgICAgICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5hbCB7IGNsaWVudC0+ZGlkRmluaXNoQmxvYkxv
YWRpbmcoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxNGEwODNj
YTIwN2E5MDYzY2Y4MGIxZTdlOTY3MGE0ODdjZjRkMzk5Li5lZDRmNWRlOWQ1ZTU2MThkNDMyNDU1
MDgyZjVkYTE4OGFiZjliZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAg
LTExNTIsMTAgKzExNTIsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFj
ZU11bHRpcGFydENvbnRlbnQoKQogICAgIHdlYlBhZ2UtPmRpZFJlcGxhY2VNdWx0aXBhcnRDb250
ZW50KG1fZnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRM
b2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fcGx1
Z2luVmlldykKLSAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7CisgICAg
ICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhKTsKIAogICAgIC8vIElmIHRoZSBkb2N1bWVudCBp
cyBhIHN0YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUgdG8g
Y2FuY2VsIHRoZSBXZWJLaXQgbG9hZC4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCBi
ZSBzaGFyZWQgYWNyb3NzIGFsbCBwb3J0cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+LgpA
QCAtMTE3Nyw3ICsxMTc3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVk
TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KgogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldyA9IHRydWU7CiAg
ICAgfQotICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGRhdGEsIGxl
bmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZGF0YSk7
CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVu
dExvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiYjUyOWQz
YWVjNGUyYzc1ZjFhN2RlOTFiMTBiNTU4MmQ0NTIyYjQyLi4xZDMwYmMzOTM4M2FmZmYyY2E5YzI4
NzUzZGQyZDdlYzJiMjY0OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTUy
LDcgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRl
bnQoKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7
CiAKLSAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25z
dCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAg
ICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIGZpbmFsOwog
ICAgIAogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggYTIwNWUwMDFjYTcxNTgyMDkxM2E4
MWFlNGE4MzY1MzBmOWEwZjY0OC4uNzJlMzU1NGM4ZTBhYTY5MGE2ZWM1NzgwMTc2ZjE5ZTBiOGQ3
MGQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00
OSw3ICs0OSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGll
bnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAKIFdlYlByZXZpZXdMb2FkZXJD
bGllbnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIHdlYlBhZ2UgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFnZUlEKTsKICAgICBpZiAoIXdlYlBh
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDBkYzE2N2U1
YjdiYzNiMDNlZjM5MzFlYWIzNTZjNzgyNzkyOTUyOWUuLjY0OWJjODMxOWMyNzg2ZjAxZDYxN2Mx
MTE5OWRiMGM2YzA3N2ZhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92
ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCA5NDJlZGM2MjNhNGU2NTNiYjE4OGFlZTA1MDY0NGEzZjRhMDMyZTg5Li5m
ODlmZjcyYTBkMzFiZWMxMWVmODAyOTdlZmJhOTJjMmE3YmM2NmI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzA1NywxMiArNzA1NywxMiBA
QCB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMU2No
ZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZAogICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlUmVz
cG9uc2UodGFza0lkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cmxT
Y2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFu
ZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRl
bnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlOjp1
cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIg
aGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNr
SWRlbnRpZmllciwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhKQogewogICAgIGF1
dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQo
aGFuZGxlcklkZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsKIAotICAgIGhhbmRsZXIt
PnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5zaXplKCksIGRhdGEuZGF0
YSgpKTsKKyAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRh
dGEuYnVmZmVyKCkgPyAqZGF0YS5idWZmZXIoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkuZ2V0
KCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxT
Y2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBh
OTRiNWI5ZDdmZTMyZjI0YTg2ZGFhYWQ0NDg0MmIwY2RkMGFlYjJmLi40ODg2NjcwN2M0NjEzZDlh
N2NkMzUyMTVkZmNhOTIzYzY5NzliZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC0xODQsNiArMTg0LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFz
cyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTg5
Niw3ICsxODk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVybFNjaGVtZVRhc2tXaWxsUGVyZm9y
bVJlZGlyZWN0aW9uKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRh
c2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9p
ZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHVybFNjaGVtZVRh
c2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKTsKKyAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxT
Y2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKICAgICB2b2lk
IHVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHNldElzVGFraW5nU25hcHNob3Rz
Rm9yQXBwbGljYXRpb25TdXNwZW5zaW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYjI3MjI5NDcxZWFl
ODZlZTU5ODE5ODNkZDU3YjVlN2E4MjkxY2Q0Yi4uYmRhNWY1MGFkZDIzYTk2NzQwZTg5ZDczM2Q3
OWMxODdmMDUyYmUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01NjQsNyArNTY0LDcgQEAgR2VuZXJhdGVTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZFR5cGUKICAgICBVUkxTY2hlbWVUYXNrV2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJL
aXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBwcm9wb3Nl
ZFJlcXVlc3QpIC0+IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgYWN0dWFsUmVxdWVzdCkgQXN5
bmMKICAgICBVUkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYktpdDo6V2ViVVJM
U2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkK
ICAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViVVJMU2NoZW1l
SGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSkKLSAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UgZGF0YSkKKyAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkgZGF0YSkKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yKQogCiAgICAgU2V0SXNTdXNwZW5kZWQoYm9vbCBzdXNwZW5kZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5LmNwcAppbmRleCA2ZDhkMGNmMjc4NGVkMzA1NjYyNWM3ZjZlODQ2YTkzYTcxMWNi
YWNkLi42MTZlZGEwOGYwYjhmY2FiMmQ1N2ZjNDc1MzI5MTA3YjgxNWNkMjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eS5jcHAKQEAgLTk2LDEzICs5NiwxMyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhh
bmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cklkZQogICAgIHRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLXZvaWQg
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBzaXplX3Qgc2l6ZSwgY29uc3Qg
dWludDhfdCogZGF0YSkKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVj
ZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVy
LCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byogdGFzayA9IG1fdGFza3Mu
Z2V0KHRhc2tJZGVudGlmaWVyKTsKICAgICBpZiAoIXRhc2spCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHRhc2stPmRpZFJlY2VpdmVEYXRhKHNpemUsIGRhdGEpOworICAgIHRhc2stPmRpZFJlY2Vp
dmVEYXRhKGRhdGEpOwogfQogCiB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0Rp
ZENvbXBsZXRlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCmluZGV4
IDU4YmVjYzE3YjVkODU5ODc0OTg4NGQzMDI1MTY4OWNjY2MxNzY5M2YuLmFiMjBiZDU3M2FhNGFm
YzE1ODA1OTBmMjcwNDY2MzAwNjg3NzQwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCkBAIC0z
NSw2ICszNSw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksNyArNjAsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCB0YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lk
IHRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgdGFza0RpZENvbXBsZXRlKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwogICAgIHZvaWQgdGFza0RpZFN0b3BMb2FkaW5nKFdlYlVSTFNjaGVtZVRhc2tQcm94
eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJV
UkxTY2hlbWVUYXNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAppbmRleCAzNjA2YmJkYzY1MjE1ZGRjYTkyNjEzYTgx
MDdkYWIxYjExZWNiNjU2Li45ZTcyZDg0Yzk3ZGY2ZDI5NzE0YTgzYzUxYWMxNzc2M2U1ZmI2NTNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVUYXNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKQEAgLTE0MCwyMSArMTQwLDIxIEBAIHZvaWQgV2ViVVJM
U2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5Ojpk
aWRSZWNlaXZlRGF0YShzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkKK3ZvaWQgV2Vi
VVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKCFoYXNMb2FkZXIoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIFdFQlVS
TFNDSEVNRVRBU0tQUk9YWV9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6IFJlY2VpdmVkIGRh
dGEgZHVyaW5nIHJlc3BvbnNlIHByb2Nlc3NpbmcsIHF1ZXVpbmcgaXQuIik7Ci0gICAgICAgIHF1
ZXVlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGFWZWN0b3Ig
PSBWZWN0b3IgeyBkYXRhLCBzaXplIH1dIHsKLSAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRh
dGFWZWN0b3Iuc2l6ZSgpLCBkYXRhVmVjdG9yLmRhdGEoKSk7CisgICAgICAgIHF1ZXVlVGFzayhb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGEgPSBSZWYgeyBkYXRhIH1d
IHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEpOwogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKLSAg
ICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIHNpemUsIDAsIERhdGFQYXlsb2Fk
VHlwZTo6RGF0YVBheWxvYWRCeXRlcyk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0
YShkYXRhLCAwLCBEYXRhUGF5bG9hZFR5cGU6OkRhdGFQYXlsb2FkQnl0ZXMpOwogICAgIHByb2Nl
c3NOZXh0UGVuZGluZ1Rhc2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAppbmRleCA3NTUwODc5NDE4
MjBmZWVmYzVkMDEyNzE1OGMwNjRjZTI1OGEwODM1Li5lZDkxZjM4ZTNhZGQxM2JlMTljYjIxNzdl
ZDQ0OGZkZDJmYTc5NTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBk
aWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHNpemVf
dCwgY29uc3QgdWludDhfdCogZGF0YSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCmluZGV4IGEyNTU2
MGExMGMyODgyZTFhYmQxNzg0NTY5NDg2ZWExM2VkODk2ZDQuLjMyODljMjM2MjlhMGRjMzFmYzBj
MTk5ZWRmMTMyOTdiZWQ2MWExOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvUGluZ0hhbmRsZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKQEAgLTczLDcgKzc0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcGluZ0xvYWRDb21wbGV0
ZSh7IH0sIHJlc3BvbnNlKTsKICAgICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBk
aWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZShlcnJvcik7IH0KICAgICBib29s
IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmlu
YWwgeyByZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggOTU5ZDc0OGI1NmJlMTA3NmJkOTc3OTkyMmNkMzU2ZDIxYTY4MTc0
ZS4uOGRmOTkzZjJkNzc1YjZjOTNkMmU4ZjA5OTBmNzJmODVmNjE4ZTU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCkBAIC00OCwxMCArNDgsMTIgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBD
YWNoZWRGcmFtZTsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBIaXN0b3J5
SXRlbTsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBjbGFzcyBXZWJG
cmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PiB7CkBAIC0xNTEsNyArMTUz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZp
bmFsIHsgfQogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAot
ICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVp
bnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAg
dm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxI
aXN0b3J5UmVkaXJlY3RMaW5rcygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpp
bmRleCA0M2U2M2Y0NTYzNDVlY2YxYzkyNGU1Yjc3MmE2ZjU0MTczYTkxNDJiLi44N2E1ZDY1N2Y3
YjczM2QwN2M1ZGI2MDFmNjk4MWY5MDQ5NzcxMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQpAQCAtOTkyLDEwICs5OTIsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRS
ZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgYXV0byBuc0RhdGEgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDps
ZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2
ZWREYXRhOm5zRGF0YS5nZXQoKV07CisgICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWRE
YXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
QEAgLTIwMTIsNyArMjAxMSw3IEBAIFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJl
dGFpblB0cjxOU1N0cmluZz4gbV9maWxlUGF0aDsKICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhh
bmRsZT4gbV9maWxlSGFuZGxlOwogCi0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZm
ZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gZGF0YUFycmF5ID0gYnVm
ZmVyLmNyZWF0ZU5TRGF0YUFycmF5KCk7CiAgICAgICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBp
biBkYXRhQXJyYXkuZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQppbmRleCAwZTA1YjE4ZDY5NjM5ODI4ZDQzM2M0NmQ3OTIxY2Y3MGRlN2RmOWQxLi4y
YTg3NzBkZjgwYmI5ZjcwYzEwYmI5MWY5NTIwZDFlMTljODU5ZDhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTk3Nyw3ICs5NzcsNyBAQCAtICh2
b2lkKV9jb21taXREYXRhOihOU0RhdGEgKilkYXRhCiAgICAgYXV0byogZG9jdW1lbnQgPSBfcHJp
dmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpOwogICAgIGRvY3VtZW50LT5zZXRTaG91bGRDcmVh
dGVSZW5kZXJlcnMoX3ByaXZhdGUtPnNob3VsZENyZWF0ZVJlbmRlcmVycyk7CiAKLSAgICBfcHJp
dmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5jb21taXREYXRhKChj
b25zdCB1aW50OF90KilbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOworICAgIF9wcml2YXRl
LT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERhdGEoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggZmIyNTgzZmU5NzI2NGM3M2VlYjIzZWJiNGQzOTkwYjNiODRh
MDdmMy4uMTI3MGU1N2RkOTViMGQwMDAzYjVlNTY3N2Q0NzQyYTEyNTUyZDg1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNjQxLDkgKzY0MSw5IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2Fk
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBsb2FkZXItPmNvbW1p
dERhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSk7CiAKICAg
ICAvLyBJZiB0aGUgZG9jdW1lbnQgaXMgYSBzdGFuZC1hbG9uZSBtZWRpYSBkb2N1bWVudCwgbm93
IGlzIHRoZSByaWdodCB0aW1lIHRvIGNhbmNlbCB0aGUgV2ViS2l0IGxvYWQuCiAgICAgLy8gRklY
TUU6IFRoaXMgY29kZSBzaG91bGQgYmUgc2hhcmVkIGFjcm9zcyBhbGwgcG9ydHMuIDxodHRwOi8v
d2Via2l0Lm9yZy9iLzQ4NzYyPi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDA5NWIy
NTM1YTY4NzU0N2JkNzg4NDZmOTA3NmFlNmM3ZDAxNjI5NDguLjc5MjZmZDM2NzE4MDllODM4NDdh
NDgwMzFhOGI5MGM2MzhmYWY3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTEy
LDcgKzExMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJp
bmcoKSkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1p
dHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1
bWVudExvYWRlciopIG92ZXJyaWRlOwogCiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZTBlNjIwNDZhNjQ3NmExZjI1MmRlOTllNGY0NzEw
MDdiZGI5NGE1Li5jZTJkOTBlMjg1Yjg2NWJlNDJlMzQ0M2JhNGFiM2E4YmYzY2Y0YmY4IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBtYWtlIFNoYXJlZEJ1ZmZlcjo6Y29weSgpIHJldHVybiBhIGNvbnRpZ3VvdXMgU2hh
cmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ2MjIKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODY4Mjk1MjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9G
KToKKwogMjAyMS0xMi0yNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS11bYTExeV0gU3RvcCBzZXR0aW5nIG1hbmFnZXMtZGVzY2VuZGFu
dHMgb24gd2ViIHByb2Nlc3Mgcm9vdCBvYmplY3Qgd2l0aCBBVFNQSQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBmMTJiOWYw
ODM2MDU1ODk0Y2Q2NWE4MjNkNWZmNmUzNGI5OGFkNTk4Li4wNjY5ZDA3YzY0ZjlkZjU0OWMzZTUx
MDJlZDY3YjY5Y2MyOTU0MmY5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMzAzLDYgKzMwMywxNSBAQCBURVNUX0YoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgY2hlY2soYnVpbGRlci50YWtlKCkp
OwogfQogCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlJc0NvbnRpZ3Vv
dXMpCit7CisgICAgRVhQRUNUX1RSVUUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS0+Y29weSgpLT5p
c0NvbnRpZ3VvdXMoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpLT5jb3B5KCktPmlzQ29udGlndW91cygpKTsKKyAgICBjb25zdCBjaGFyKiBjb25z
dCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOworICAgIEVYUEVDVF9UUlVF
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSktPmNv
cHkoKS0+aXNDb250aWd1b3VzKCkpOworICAgIEVYUEVDVF9GQUxTRShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKS0+Y29weSgpLT5p
c0NvbnRpZ3VvdXMoKSk7Cit9CisKICNpZiBFTkFCTEUoTUhUTUwpCiAvLyBTaGFyZWRCdWZmZXJD
aHVua1JlYWRlciB1bml0LXRlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448018</attachid>
            <date>2021-12-27 18:37:36 -0800</date>
            <delta_ts>2021-12-27 19:26:49 -0800</delta_ts>
            <desc>Patch For Review</desc>
            <filename>bug-232424-20211228133729.patch</filename>
            <type>text/plain</type>
            <size>261810</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTAxMzVkOTZlMzc3YmE4
NzE4NWM4MmQ0OWNkOTA0OWZmYTExMTA3Mi4uNmJmMzIzNGZjYjAwZWQzMjJlYWEwZWI0YTRkODFk
ZWUwZDM4OWQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OSBAQAorMjAyMS0xMi0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1
ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBtb2RpZnkgYWxsIGRpZFJlY2VpdmVEYXRhIGFuZCBy
ZWxhdGVkIG1ldGhvZHMgc28gdGhhdCB0aGV5IG5vIGxvbmdlcgorICAgICAgICB1c2UgdWludDhf
dCovaW50IGFuZCBpbnN0ZWFkIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIFdlIGRvIHRoZSBz
YW1lIGZvciBhbnkgaW50ZXJtZWRpYXJpZXMgdXNlZCBieSB0aGUgdmFyaW91cyBkaWRSZWNlaXZl
RGF0YQorICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgIFRoaXMgd2lsbCBmYWNpbGl0
YXRlIG1vdmluZyBuZXR3b3JraW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVQorICAg
ICAgICBwcm9jZXNzIGFuZCBhbGxvd3MgdG8gcmVtb3ZlIHNldmVyYWwgbWVtb3J5IGFsbG9jYXRp
b25zIGFuZCBjb3BpZXMgYXQgdGhlCisgICAgICAgIHByb2Nlc3MgYm91bmRhcmllcy4KKyAgICAg
ICAgV2UgY2FuIG5vdyBjb25zaWRlciB0cmFuc2ZlciB0aGUgdW5kZXJseWluZyBTaGFyZWRNZW1v
cnkgY3JlYXRlZCBpbgorICAgICAgICB0aGUgbmV0d29yayBwcm9jZXNzIGFsbCB0aGUgd2F5IHRv
IHRoZSBHUFUgcHJvY2Vzcy4KKworICAgICAgICBGbHktYnkgZml4OiBjaGFuZ2UgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciB0eXBlIHRvIFNoYXJlZEJ1ZmZlciB3aGVuIGFwcHJvcHJpYXRlLgorCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4gQ292ZXJlZCBieSBhbGwg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keU93bmVyOjpibG9iQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YSk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Up
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRl
bnRGaWx0ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjphZGRE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGRC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVy
Q2xpZW50V3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAg
ICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwYWdl
L0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVk
QnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6
OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRv
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNw
b25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZl
RGF0YTpsZW5ndGhSZWNlaXZlZDpdKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAg
ICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6
CisKIDIwMjEtMTItMjMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTY2FsYWJsZUltYWdlRGVjb2RlciBzaG91bGQgYmUgdXNpbmcgU2hhcmVkQnVmZmVyIGlu
c3RlYWQgb2YgRGF0YVNlZ21lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2UyN2UxNGM2OWZkMjQ0YWU3YjI0NDVl
M2U0OTg3YzZmNzFiYjI4My4uYTA4M2U5YjQ5OTQ1MjM1MjIwYTA2ZTg4NDI1NWJhOGMwODhmNWVj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDIgQEAKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAg
ICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2Fk
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
cmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW46CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZyb21QcmVs
b2FkZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9y
bWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFG
b3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFSZWNl
aXZlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJj
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpT
dHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFu
dWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVk
ZWxpdmVyTWFudWFsU3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eTo6dGFza0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVt
ZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6
ZVNhbmRib3gpOgorCiAyMDIxLTEyLTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXBsYWNlIFdlYktpdC9Db2NvYUNvbG9yLmggd2l0aCBXZWJDb3JlL0NvbG9y
Q29jb2EuaCwgbm90IGNvbmZ1c2luZyBhdCBhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggNTc2
ODFiMjFhNzM0MzllOTBiZjIxYmEyNDQ5NTgyNTk3ZTAxOTk4Mi4uYmIxYzViNTM2YzRmOTkxNWZi
YWJkOWFjMzAzN2JjNDQ4Yzc3NDZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2lu
ZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMi0xNCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlZjk0OWRlNjA2ODk2Y2E5OTNlZGY4ZjM0ZDljMWIz
MGE1YjY1NGFiLi5kNTk1N2RkYjFmNGFmODhhNGI1ZmQ3MTMwZjEwNzE0OWFiNTA5YTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTItMjIgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRC
dWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMb2FkZXJDbGllbnQpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9jb21taXRE
YXRhOl0pOgorCiAyMDIxLTEyLTIyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29t
PgogCiAgICAgICAgIEZpeCBXZWJLaXQgQnVpbGQgaXNzdWVzIHdoZW4gdXNpbmcgc3lzdGVtIGNv
bnRlbnQgcGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcAppbmRleCBjMjMxZjIwN2RhMjVjZDJhMTU4NjBkMjhkYjNjZTE3ZTg1NzU3
N2Q1Li5lNjEzYWE1MDlmNzRjMGRlMGU2ZDM4MzUxOGU1MjZmNzNhYTU4ZWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAt
MzIwLDEzICszMjAsMTMgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICB9CiB9CiAKLXZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBzaXplKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGlmIChtX3NvdXJjZSkgewotICAgICAgICBtX3NvdXJjZS0+ZW5x
dWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKKyAgICAgICAgbV9zb3Vy
Y2UtPmVucXVldWUoYnVmZmVyLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZl
ci5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDg3MWQyYzA4NjMzMWE5ODI5
NGExNjZhNGI0MmUzMTg0ZTAzNzc3MmIuLmQ0NjUxYjIzZGE3MWNmOGY0YzhjOTk2NzFkMjI3ZWI1
YWM4ZDJhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQgRmV0
Y2hCb2R5Q29uc3VtZXIoVHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KIAotICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKKyAgICB2b2lkIGFwcGVuZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJu
ICEhbV9idWZmZXI7IH0KICAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggYTYzMzEwOGI1NDc3ODM5
M2ZjNTQ3NTAwMzJhOWEyZTg2YWRlN2ZjYy4uNTM2NjgxNTViZGViYzFhZWYzOWY0ZDk5ZmI5ZGFk
YzFlYmVmN2EwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlPd25lci5jcHAKQEAgLTI5OCwxMSArMjk4LDEwIEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJs
b2JMb2FkaW5nRmFpbGVkKCkKICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZl
dGNoQm9keU93bmVyOjpibG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
Cit2b2lkIEZldGNoQm9keU93bmVyOjpibG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7Ci0gICAgQVNTRVJUKGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291
cmNlKTsKLSAgICBpZiAoIW1fcmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVucXVldWUoQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpCisgICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291
cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSkKICAgICAgICAgc3Rv
cCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmgKaW5kZXggNWNhN2UzOTZjNDIyNzAxOTM1NmIwODA2ZTRlZWRiZTk1ZTkyOGY0Yi4uODFmZDA2
ZWNkZDZmYzM4YzllODU5ODdjZWJkZmMxNmRkODZmM2M5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIkZldGNoTG9hZGVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXJDbGllbnQuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTAwLDcgKzEwMSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0
ZToKICAgICAvLyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZm
ZXImKTsKICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9h
ZGluZ0ZhaWxlZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMyw3ICsx
MTQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmlu
YWw7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZpbmFsIHsg
b3duZXIuYmxvYkNodW5rKGJ1ZmZlcik7IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWwgeyBv
d25lci5ibG9iTG9hZGluZ1N1Y2NlZWRlZCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEz
NjYwZTg2YjdhMjU0OC4uNGI0NWJmZDg3NTA0MDZmNmU3ZGE3MThmOTk4MTY5NDcxYTVlODQ1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTE0
OCwxMyArMTQ4LDEzIEBAIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogdmFsdWUsIGludCBzaXplKQordm9pZCBGZXRjaExvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAg
ICAgaWYgKCFtX2NvbnN1bWVyKSB7Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZh
bHVlLCBzaXplKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2NvbnN1bWVyLT5hcHBlbmQodmFsdWUsIHNpemUp
OworICAgIG1fY29uc3VtZXItPmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lkIEZldGNoTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA0NjEyZDBlMGUzYTdlZmUzMDYw
Mzk2YjBkNzVhMmZhM2JjNGVkZGFkLi41ZWVhZWY4MmQxZGYzZWZjZWQyMTQwMDNkZjUxODg4NzAz
NmY5NzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBA
IC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCBBUEkuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgdXNlU3RyTGVuKSBmaW5hbDsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKaW5kZXggZmVkM2U1
ZWFlNzFhNTdjOTUyYWExNzFhZGNjYmRkOWJkMDQ1ZTc4OS4uMTA5ZTA4ZWNmN2E0N2U3YzAzN2Uz
MmRjYWFjYWI4NmM4MWMxOGQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaExvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6
ZV90KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMGU3YjAwNWU4OWEz
ZDE3NDBiMWNmOWFkZmY4YjRmMmYyZmM0M2M5OS4uZGNhMGUyMzgyZTMyZmMwMzcyODg3ZmQ0ODUy
MTRhMTczMDFiMWJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwCkBAIC0zNjIsMTIgKzM2MiwxMiBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNv
dQogICAgICAgICByZXNwb25zZUNhbGxiYWNrKG1fcmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNo
UmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQordm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9yZXNwb25z
ZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlIHx8IG1fY29uc3VtZURhdGFDYWxsYmFjayk7CiAKICAg
ICBpZiAobV9jb25zdW1lRGF0YUNhbGxiYWNrKSB7Ci0gICAgICAgIFNwYW4gY2h1bmsgeyBkYXRh
LCBzaXplIH07CisgICAgICAgIFNwYW4gY2h1bmsgeyBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpIH07CiAgICAgICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9k
eUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
CiAgICAgYXV0byYgc291cmNlID0gKm1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZTsK
IAogICAgIGlmICghc291cmNlLmlzUHVsbGluZygpKSB7Ci0gICAgICAgIG1fcmVzcG9uc2UuYm9k
eSgpLmNvbnN1bWVyKCkuYXBwZW5kKGRhdGEsIHNpemUpOworICAgICAgICBtX3Jlc3BvbnNlLmJv
ZHkoKS5jb25zdW1lcigpLmFwcGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgc3Rv
cCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghc291cmNlLmVucXVldWUoQXJy
YXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpIHsKKyAgICBpZiAoIXNvdXJjZS5lbnF1
ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSkgewogICAgICAgICBzdG9wKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBGZXRjaFJlc3Bv
bnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdp
dGhQYWRkaW4KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQ2h1bmsoUmVmPEpTQzo6VWlu
dDhBcnJheT4mJiBjaHVuaykKIHsKLSAgICBib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoY2h1bmst
PmRhdGEoKSwgY2h1bmstPmJ5dGVMZW5ndGgoKSk7CisgICAgYm9keSgpLmNvbnN1bWVyKCkuYXBw
ZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3Ro
KCkpKTsKIH0KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFzU3RyZWFtKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggNmIwNTA1
ZDg4YjEzMmUyOGNiOTU0YWI5YTBlN2VmZTgxM2Y3MDJhZi4uZjk5MjQ5YzM5ZjlkMGIyZmM4N2Ey
ZjljNDZkNzkzOTI4ODgxNGJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lk
IGRpZFN1Y2NlZWQoKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogCiAgICAgICAgIEZldGNoUmVzcG9uc2UmIG1fcmVz
cG9uc2U7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIG1fcmVzcG9uc2VDYWxsYmFjazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAppbmRleCAyN2E2ZDcwMzM0Y2EzMjA2YTk0ZTkxOTk0MzM2MzdjNGEz
MDUyZTdkLi5hNjQxZjgxMDdiNGZkMTc5MTFmZGI5MmJiMzBmNDVlMmU4MmI1MmZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCkBAIC0xNzcsMTAgKzE3NywxMCBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
cwogCiAvLyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291
cmNlKTsKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5h
cHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuaAppbmRleCBjZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2Jl
Li4wZDNiZGI3NDlkN2EzMzY4YjNjYTY4YzIxNzMxNjA1OTE1NDlkMWMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVy
cmlkZXMuCi0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIG5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CiAKICAgICAvLyBNb2RlbFBsYXllckNsaWVudCBvdmVycmlkZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXgg
ZDUxNzNmYmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOS4uZmVlOTg4NDIyMWJiNDNl
OGNjMDYyZWFiY2QwYTk5ZWM1NGMwMzQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3Ry
ZWFtOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJl
YW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCBiN2Y3
NWVkYTNiMjMzYjE5YjIwZWQ3MDQyODk0OWJiMzM1ODk4ZTgxLi43Mzg1MmQ0YzBhZjAzODQ3NWYx
NWI2NTQ5ZGM2ODliZjg1NTFiMjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlckxvYWRlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRl
eHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMTYzLDE2ICsxNjQsMTUgQEAgdm9p
ZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXIKICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0TG9hZGluZygp
OwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCkKIHsKLSAgICBBU1NFUlQo
ZGF0YSk7Ci0gICAgQVNTRVJUKGRhdGFMZW5ndGggPiAwKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNp
emUoKSk7CiAKICAgICAvLyBCYWlsIG91dCBpZiB3ZSBhbHJlYWR5IGVuY291bnRlcmVkIGFuIGVy
cm9yLgogICAgIGlmIChtX2Vycm9yQ29kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGxl
bmd0aCA9IGRhdGFMZW5ndGg7CisgICAgaW50IGxlbmd0aCA9IGJ1ZmZlci5zaXplKCk7CiAgICAg
dW5zaWduZWQgcmVtYWluaW5nQnVmZmVyU3BhY2UgPSBtX3RvdGFsQnl0ZXMgLSBtX2J5dGVzTG9h
ZGVkOwogICAgIGlmIChsZW5ndGggPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlbWFpbmluZ0J1
ZmZlclNwYWNlKSkgewogICAgICAgICAvLyBJZiB0aGUgYnVmZmVyIGhhcyBoaXQgbWF4aW11bSBz
aXplLCBpdCBjYW4ndCBiZSBncm93biBhbnkgbW9yZS4KQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lk
IEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlm
IChtX3ZhcmlhYmxlTGVuZ3RoKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBt
X3RvdGFsQnl0ZXMgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF0YUxlbmd0aCk7CisgICAgICAg
ICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBidWZmZXIuc2l6ZSgpOwog
ICAgICAgICAgICAgaWYgKG5ld0xlbmd0aCA8IG1fdG90YWxCeXRlcykgewogICAgICAgICAgICAg
ICAgIGZhaWxlZChOb3RSZWFkYWJsZUVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0yMDYsNyArMjA2LDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobGVuZ3RoIDw9IDAp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4obV9yYXdE
YXRhLT5kYXRhKCkpICsgbV9ieXRlc0xvYWRlZCwgZGF0YSwgbGVuZ3RoKTsKKyAgICBtZW1jcHko
c3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQsIGJ1
ZmZlci5kYXRhKCksIGxlbmd0aCk7CiAgICAgbV9ieXRlc0xvYWRlZCArPSBsZW5ndGg7CiAKICAg
ICBtX2lzUmF3RGF0YUNvbnZlcnRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXJMb2FkZXIuaAppbmRleCA1MzljMjMwNGE4MmU2M2FhZGZlMmM1NjdjOThkMGI4YzY4
N2E4ZTlmLi5iN2U1YjQwNTdmYjIwNmZmMzIzMTU1Y2MwZjE1MDJmY2EyMGQyNjdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtNzAsNyArNzAsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwg
aW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNWM1YmIyYWVhODM5OTE4YjA2OTc3
NTg4MWNlM2EzNjlhNDI4ZTViOS4uNzgxNzc1YTg0MTY2MjZlODI5MGZlYWI4MjRlN2IyYWVmNWNh
YjJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKQEAgLTYxNiwxMCArNjE2LDEwIEBAIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0
cnVtZW50CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJS
ZXNwb25zZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVE
YXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCi0gICAgICAgIG5ldHdv
cmtBZ2VudC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlk
ZW50aWZpZXIsIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0
d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5k
ZXggZDI5NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MS4uODJhY2NlZDIwY2Zk
NTEzMWIyNTAyZjA5OWE5YzRmYTJmZGQ2MTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTkzLDEzICsxOTMsMTMg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZShQYWdlJiwgRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lJiwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJj
ZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVz
cG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIERv
Y3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2Fk
aW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdChX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9u
c2UoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0
YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRG
YWlsTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC00MTQsNyArNDE0LDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNlKik7
CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
cik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0
YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGlu
Z0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2ls
bExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC0xMDgy
LDE3ICsxMDgyLDE3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVuCiAgICAgICAgIGRpZFJlY2Vp
dmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2VJbXBsKCphZ2VudHMsIGRvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlciwgaWRlbnRpZmllcik7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAg
ICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQotICAgICAg
ICBkaWRSZWNlaXZlRGF0YUltcGwoKmFnZW50cywgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0
aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwoKmFnZW50
cywgaWRlbnRpZmllciwgYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLWlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGRpZFJlY2VpdmVEYXRhSW1wbChpbnN0cnVtZW50
aW5nQWdlbnRzKGdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZGF0
YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMoZ2xv
YmFsU2NvcGUpLCBpZGVudGlmaWVyLCBidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUq
IGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Ms
IFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDM5YjAxMWNmMDZmN2YzODUz
MjQzZTBhNzYzYTNiMWQ0NTQ5MDQxNDkuLjMyOGViZTdlNjQxMTk1ZTVhNDY4NTAyNzU1OTEwZjc4
YzQ4YjU4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcApAQCAtOTAsMTAgKzkwLDEwIEBAIHNpemVfdCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRh
QnVmZmVyLnNpemUoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQor
dm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAg
bV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXIu
YXBwZW5kKGRhdGEpOwogfQogCiB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRCdWZmZXJSZXNvdXJjZURhdGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YSYgcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRk
UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCkKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEg
Y29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIFJlc291
cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJ
ZCk7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpCkBAIC0yMzAsMTUgKzIzMCwxNSBAQCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
bWF5YmVBZGRSZXNvdXJjZQogICAgIGlmICghc2hvdWxkQnVmZmVyUmVzb3VyY2VEYXRhKCpyZXNv
dXJjZURhdGEpKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VEYXRhOwogCi0gICAgaWYgKHJlc291
cmNlRGF0YS0+ZGF0YUxlbmd0aCgpICsgZGF0YUxlbmd0aCA+IG1fbWF4aW11bVNpbmdsZVJlc291
cmNlQ29udGVudFNpemUpCisgICAgaWYgKHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0aCgpICsgZGF0
YS5zaXplKCkgPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQogICAgICAgICBt
X2NvbnRlbnRTaXplIC09IHJlc291cmNlRGF0YS0+ZXZpY3RDb250ZW50KCk7CiAgICAgaWYgKHJl
c291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VE
YXRhOwogCi0gICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRhTGVuZ3RoKSAmJiAhcmVzb3VyY2VE
YXRhLT5pc0NvbnRlbnRFdmljdGVkKCkpIHsKKyAgICBpZiAoZW5zdXJlRnJlZVNwYWNlKGRhdGEu
c2l6ZSgpKSAmJiAhcmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRFdmljdGVkKCkpIHsKICAgICAgICAg
bV9yZXF1ZXN0SWRzRGVxdWUuYXBwZW5kKHJlcXVlc3RJZCk7Ci0gICAgICAgIHJlc291cmNlRGF0
YS0+YXBwZW5kRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgbV9jb250ZW50U2l6ZSAr
PSBkYXRhTGVuZ3RoOworICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSk7Cisg
ICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YS5zaXplKCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IHJlc291cmNlRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmgKaW5kZXggZGFhZTVmZTRhMzFlMzE1OTM2Mzc5MDQyM2Y1ZmJkMzM3MGM1Y2Qz
OS4uYzhjZWQxMmE2NDA3ZmRjZDU3NGVjYzJhNzgxOWVkZTY2MzgwM2RhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTEwOCw3ICsx
MDgsNyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29u
c3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYXBw
ZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgICAg
IHZvaWQgYXBwZW5kRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAgICAgdW5zaWduZWQg
ZGVjb2RlRGF0YVRvQ29udGVudCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKQEAg
LTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAg
ICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9
IGZhbHNlKTsKLSAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCk7CisgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBtYXli
ZURlY29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIHZvaWQg
YWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc291cmNl
Kik7CiAgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggM2NlYjRiNDdmMTA2OGEwYWZl
YWYwMGYxNzljMjgwMGM0NzZiZDZiMS4uOWE2MWViNDJkODFlNzkzYzljZjQ5YmNkNTZmZDIzMDRk
ZjQ5YWU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTI0LDE1ICsxMjQsMTMgQEAgcHVibGlj
OgogICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQv
cGxhaW4iX3MsIHRleHRFbmNvZGluZywgdXNlRGV0ZWN0b3IpOwogICAgIH0KIAotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJy
aWRlCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Ym9vbCB1c2VTdHJMZW4pIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIWRhdGFMZW5ndGgp
CisgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGlmIChkYXRhTGVuZ3RoID09IC0xKQotICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0
cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7Ci0KLSAgICAgICAgbV9y
ZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsK
KyAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSB1c2VTdHJMZW4gPyBzdHJsZW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEoKSkpIDogYnVmZmVyLnNpemUoKTsKKyAg
ICAgICAgbV9yZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRh
KCksIGRhdGFMZW5ndGgpKTsKICAgICB9CiAKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZQpAQCAtNTQ5LDkgKzU0Nyw4IEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpCiAgICAgICAgICAgICBpZiAocHJldmlvdXNSZXNvdXJjZURhdGEt
Pmhhc0NvbnRlbnQoKSkKICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291
cmNlQ29udGVudChyZXF1ZXN0SWQsIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5jb250ZW50KCksIHBy
ZXZpb3VzUmVzb3VyY2VEYXRhLT5iYXNlNjRFbmNvZGVkKCkpOwogICAgICAgICAgICAgZWxzZSBp
ZiAocHJldmlvdXNSZXNvdXJjZURhdGEtPmhhc0J1ZmZlcmVkRGF0YSgpKSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byBwcmV2aW91c0J1ZmZlciA9IHByZXZpb3VzUmVzb3VyY2VEYXRhLT5idWZmZXIo
KTsKLSAgICAgICAgICAgICAgICBwcmV2aW91c0J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1
dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXli
ZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUo
KSk7CisgICAgICAgICAgICAgICAgcHJldmlvdXNSZXNvdXJjZURhdGEtPmJ1ZmZlcigpLT5mb3JF
YWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAg
ICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElk
LCBidWZmZXIpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCkBAIC01NzQsMjQgKzU3MSwyOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgIC8v
IElmIHdlIHJldmFsaWRhdGVkIHRoZSByZXNvdXJjZSBhbmQgZ290IE5vdCBtb2RpZmllZCwgc2Vu
ZCBjb250ZW50IGxlbmd0aCBmb2xsb3dpbmcgZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAgLy8gYXMg
dGhlcmUgd2lsbCBiZSBubyBjYWxscyB0byBkaWRSZWNlaXZlRGF0YSBmcm9tIHRoZSBuZXR3b3Jr
IHN0YWNrLgogICAgIGlmIChpc05vdE1vZGlmaWVkICYmIGNhY2hlZFJlc291cmNlICYmIGNhY2hl
ZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKQotICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlm
aWVyLCBudWxscHRyLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCk7CisgICAgICAg
IGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNhY2hl
ZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmllcnMu
Y29udGFpbnMoaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyByZXF1
ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyLnRvVUludDY0
KCkpOworICAgIGludCBkYXRhTGVuZ3RoID0gZGF0YS5zaXplKCk7CiAKLSAgICBpZiAoZGF0YSkg
ewotICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNv
dXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJ
ZCwgZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgaWYgKGRhdGEuZGF0YSgpKSB7CisgICAgICAgIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1f
cmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBkYXRhKTsKIAog
ICAgICAgICAvLyBGb3IgYSBzeW5jaHJvbm91cyBYSFIsIGlmIHdlIGRpZG4ndCBhZGQgZGF0YSB0
aGVuIHdlIGNhbiBhcHBseSBpdCBoZXJlIGFzIGJhc2U2NCBlbmNvZGVkIGNvbnRlbnQuCiAgICAg
ICAgIC8vIE9mdGVuIHRoZSBkYXRhIGlzIHRleHQgYW5kIHdlIHdvdWxkIGhhdmUgYSBkZWNvZGVy
LCBidXQgZm9yIG5vbi10ZXh0IHdlIHdvbid0IGhhdmUgYSBkZWNvZGVyLgogICAgICAgICAvLyBT
eW5jIFhIUnMgbWF5IG5vdCBoYXZlIGEgY2FjaGVkIHJlc291cmNlLCB3aGlsZSBub24tc3luYyBY
SFJzIHVzdWFsbHkgdHJhbnNmZXIgZGF0YSBvdmVyIG9uIGNvbXBsZXRpb24uCiAgICAgICAgIGlm
IChtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5ICYmIHJlc291cmNlRGF0YSAmJiAhcmVzb3VyY2VE
YXRhLT5oYXNCdWZmZXJlZERhdGEoKSAmJiAhcmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgp
KQotICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVz
dElkLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhkYXRhLCBkYXRhTGVuZ3RoKSwgdHJ1ZSk7CisgICAg
ICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChyZXF1ZXN0SWQsIGJh
c2U2NEVuY29kZVRvU3RyaW5nKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSksIHRydWUpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGRhdGFMZW5ndGggPSBlbmNvZGVkRGF0YUxlbmd0aDsKKyAgICAg
ICAgZW5jb2RlZERhdGFMZW5ndGggPSAwOwogICAgIH0KIAogICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5kYXRhUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAoKSwgZGF0YUxlbmd0aCwgZW5j
b2RlZERhdGFMZW5ndGgpOwpAQCAtMTI3MSw3ICsxMjcyLDcgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJl
c3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBh
bHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJh
c2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVu
dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI5Niw5ICsxMjk3LDkgQEAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1
ZXN0V2l0aFJlc3BvbnMKICAgICB9CiAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkcyhX
VEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOwogICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOwotICAg
IGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZmZXIgPSBk
YXRhLnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAgbG9hZGVyLT5kaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwo
KV0oKSB7CiAgICAgICAgIGlmIChidWZmZXItPnNpemUoKSkKLSAgICAgICAgICAgIGxvYWRlci0+
ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5
bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICAgICAgbG9hZGVyLT5kaWRSZWNlaXZlRGF0YShi
dWZmZXIsIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogICAgICAg
ICBsb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkpOwogICAgIH0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaAppbmRleCA2YmNkODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRh
MTQxM2Q0Li5jYTZmNzRlMWI4Njk4MGY0MGIxNTVkMTNlMTZiNzFhZGZiOTQwNDU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0
IENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBS
ZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2
b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIENhY2hl
ZFJlc291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXgg
NDMzMmQ2OTFiYmY4MjZhN2M4N2VhODNhMzE3ZTk2MTE1YTIwNDk5My4uYTA5ODFhZGQ3OTg1MzJi
OTdiYWE0MDQxMjhiYTM4ODk2ZGFmNjg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZl
clJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1
dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAg
bV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAg
ICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBh
Z2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKaW5k
ZXggMjE1YzA0ZWM5ODk1ZTlmMWU2ZTE0N2RhODIwOTMwMDk4NTIzOTYyMy4uZmE3YWQzMDM5YTIw
NWU5MDU3MTA4ZjNjNmYzOTI0MTliYzQ2NDdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlckNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFz
cyBDb250ZW50RmlsdGVyQ2xpZW50IHsKQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29u
c3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50Rmls
dGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZp
cnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVS
TCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAppbmRleCA2YmYzYWMyOTdlYzZiMjYzYTA3ODY0MGJjZjNhZDU3NzlkYjBmZWRiLi4y
NTFkMjI1MmIwYjNjYzdhOWFlMWFiZTgxYTA5MTQxYTcxZjc5Yjg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTQ4Myw4ICs0ODMsOCBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmcoKQogICAgICAgICAvLyBJZiB0aGlzIGlzIGFuIGVt
cHR5IGRvY3VtZW50LCBpdCB3aWxsIG5vdCBoYXZlIGFjdHVhbGx5IGJlZW4gY3JlYXRlZCB5ZXQu
IENvbW1pdCBkdW1teSBkYXRhIHNvIHRoYXQKICAgICAgICAgLy8gRG9jdW1lbnRXcml0ZXI6OmJl
Z2luKCkgZ2V0cyBjYWxsZWQgYW5kIGNyZWF0ZXMgdGhlIERvY3VtZW50LgogICAgICAgICBpZiAo
IW1fZ290Rmlyc3RCeXRlKQotICAgICAgICAgICAgY29tbWl0RGF0YSgwLCAwKTsKLSAgICAgICAg
CisgICAgICAgICAgICBjb21taXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworCiAgICAg
ICAgIGlmICghZnJhbWVMb2FkZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZnJh
bWVMb2FkZXIoKS0+Y2xpZW50KCkuZmluaXNoZWRMb2FkaW5nKHRoaXMpOwpAQCAtMTE1Nyw4ICsx
MTU3LDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3ko
UG9saWN5QWN0aW9uIHBvbGljeSkKICAgICBpZiAoIWlzU3RvcHBpbmcoKSAmJiBtX3N1YnN0aXR1
dGVEYXRhLmlzVmFsaWQoKSAmJiBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkgewogICAgICAgICBh
dXRvIGNvbnRlbnQgPSBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKTsKICAgICAgICAgaWYgKGNv
bnRlbnQgJiYgY29udGVudC0+c2l6ZSgpKSB7Ci0gICAgICAgICAgICBjb250ZW50LT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgIGRhdGFSZWNlaXZl
ZChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgY29udGVudC0+
Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgeworICAgICAg
ICAgICAgICAgIGRhdGFSZWNlaXZlZChidWZmZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKQpAQCAtMTE3MSw3ICsxMTcx
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9s
aWN5QWN0aW9uIHBvbGljeSkKICAgICB9CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1p
dExvYWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmNvbW1pdExvYWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIEJvdGgg
dW5sb2FkaW5nIHRoZSBvbGQgcGFnZSBhbmQgcGFyc2luZyB0aGUgbmV3IHBhZ2UgbWF5IGV4ZWN1
dGUgSmF2YVNjcmlwdCB3aGljaCBkZXN0cm95cyB0aGUgZGF0YXNvdXJjZQogICAgIC8vIGJ5IHN0
YXJ0aW5nIGEgbmV3IGxvYWQsIHNvIHJldGFpbiB0ZW1wb3JhcmlseS4KQEAgLTExODYsNyArMTE4
Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCkKICAgICBpZiAoQXJjaGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1JTUVUeXBl
KHJlc3BvbnNlKCkubWltZVR5cGUoKSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgotICAgIGZy
YW1lTG9hZGVyLT5jbGllbnQoKS5jb21taXR0ZWRMb2FkKHRoaXMsIGRhdGEsIGxlbmd0aCk7Cisg
ICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmNvbW1pdHRlZExvYWQodGhpcywgZGF0YSk7CiAKICAg
ICBpZiAoaXNNdWx0aXBhcnRSZXBsYWNpbmdMb2FkKCkpCiAgICAgICAgIGZyYW1lTG9hZGVyLT5j
bGllbnQoKS5kaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpOwpAQCAtMTIxNSw3ICsxMjE1LDcg
QEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFVzZUFjdGl2ZVNlcnZpY2VXb3JrZXJGcm9tUGFy
ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWUKIH0KICNlbmRpZgogCi12b2lkIERvY3VtZW50TG9h
ZGVyOjpjb21taXREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQordm9p
ZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7
CiAgICAgaWYgKCFtX2dvdEZpcnN0Qnl0ZSkgewogICAgICAgICBtX2dvdEZpcnN0Qnl0ZSA9IHRy
dWU7CkBAIC0xMzEzLDI0ICsxMzEzLDI0IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERh
dGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCiAjZW5kaWYKIAogICAgIEFT
U0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzaW5nKCkpOwotICAgIG1fd3JpdGVyLmFkZERh
dGEoYnl0ZXMsIGxlbmd0aCk7CisgICAgbV93cml0ZXIuYWRkRGF0YShkYXRhKTsKIH0KIAotdm9p
ZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX21h
aW5SZXNvdXJjZSk7Ci0gICAgZGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCk7CisgICAgZGF0YVJl
Y2VpdmVkKGJ1ZmZlcik7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0
YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKLSAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0
ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKSkKKyAgICBpZiAobV9j
b250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2
ZWQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKICNlbmRp
ZgogCi0gICAgQVNTRVJUKGRhdGEpOwotICAgIEFTU0VSVChsZW5ndGgpOworICAgIEFTU0VSVChi
dWZmZXIuZGF0YSgpKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSk7CiAgICAgQVNTRVJUKCFt
X3Jlc3BvbnNlLmlzTnVsbCgpKTsKIAogICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIENGTmV0d29y
ayB3aGVyZSBjYWxsYmFja3MgY2FuIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRzIGFyZSBk
ZWZlcnJlZC4KQEAgLTEzNDAsMTIgKzEzNDAsMTIgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0
YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiAjZW5kaWYKIAogICAg
IGlmIChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKQotICAgICAgICBm
cmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEodGhpcywgbV9p
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgZGF0YSwgbGVuZ3RoLCAtMSk7
CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hEaWRSZWNlaXZlRGF0
YSh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCBidWZmZXIs
IC0xKTsKIAotICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNl
aXZlZChkYXRhLCBsZW5ndGgsIC0xLCBmYWxzZSk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9z
dC0+bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGJ1ZmZlciwgLTEsIGZhbHNlKTsKIAogICAgIGlm
ICghaXNNdWx0aXBhcnRSZXBsYWNpbmdMb2FkKCkpCi0gICAgICAgIGNvbW1pdExvYWQoZGF0YSwg
bGVuZ3RoKTsKKyAgICAgICAgY29tbWl0TG9hZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50
TG9hZGVyOjpzZXR1cEZvclJlcGxhY2UoKQpAQCAtMTYxNCw3ICsxNjE0LDcgQEAgYm9vbCBEb2N1
bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRNSU1FVHlw
ZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1l
bnQoKSk7Ci0gICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5S
ZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKCptX3BhcnNlZEFyY2hpdmVE
YXRhKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMjI1Nyw4ICsyMjU3LDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgp
CiAKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRl
ZCA9IGZhbHNlOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURh
dGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1p
dExvYWQobWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKTsKIH0KIAogdm9pZCBE
b2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCkBAIC0yNDEwLDkgKzI0MDksOSBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChT
ZWN1cml0eVBvbGljeVZpb2xhdGlvbgogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRh
UmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKLSAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgc2l6ZSk7CisgICAgZGF0YVJlY2VpdmVkKGJ1ZmZl
cik7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JD
b250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBiNDY5ODFkNzUwYjI1YzFmZDMwN2YxNmZkYTc0Yjdl
ZTMwNmE0YzM5Li4yOGUyOGE2ODhhZTZiNTdlMGYwZDE0YzRlN2EwYzI1NThjYjY3ZTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtODYsNiArODYsNyBAQCBjbGFz
cyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3Vy
Y2U7CiBjbGFzcyBVc2VyQ29udGVudFVSTFBhdHRlcm47CkBAIC0zNzcsNyArMzc4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzZXRUaW1pbmcoKSB7IG1fbG9hZFRpbWluZyA9IHsgfTsgfQogCiAg
ICAgLy8gVGhlIFdlYktpdCBsYXllciBjYWxscyB0aGlzIGZ1bmN0aW9uIHdoZW4gaXQncyByZWFk
eSBmb3IgdGhlIGRhdGEgdG8gYWN0dWFsbHkgYmUgYWRkZWQgdG8gdGhlIGRvY3VtZW50LgotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6
ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3QmIGFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KCkgY29uc3Q7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3QqIGFwcGxpY2F0aW9uQ2Fj
aGVIb3N0VW5sZXNzQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKQEAgLTQ3Nyw3ICs0NzgsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBjb21taXRJZlJlYWR5KCk7CiAgICAgdm9pZCBzZXRNYWluRG9j
dW1lbnRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBjb21taXRMb2FkKGNv
bnN0IHVpbnQ4X3QqLCBpbnQpOworICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHNl
dHVwRm9yUmVwbGFjZSgpOwpAQCAtNDkzLDcgKzQ5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBt
YWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNw
b25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwpAQCAtNTAzLDEzICs1MDQsMTMg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAvLyBDb250
ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgY29udGVu
dEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0
aXR1dGVEYXRhJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgYm9vbCBtYXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IGI5YzQxMzUyNTY3NjI2NzIxOTA3YWYzNjZkZmIxZGVjNzk0YzI0NzQuLjg2NGI2NWExZDExMzFm
YjYzNzEyNWIxNzM5OTFlOWQzZTBhNmU3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00MzcsMjAgKzQzNywyMCBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBpZGVudAogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2Uo
aWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVz
b3VyY2UpOwotICAgIGRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGF0
YSwgZGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+aWRlbnRpZmll
cigpLCBidWZmZXIpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAKICAgICBpZiAobV9kZWxheUNhbGxiYWNrc0Zv
ckludGVncml0eUNoZWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRh
KGJ1ZmZlciwgZmFsc2UpOwogfQogCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Zmlu
aXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
UmVzb3VyY2VUaW1pbmcmIHJlc291cmNlVGltaW5nKQpAQCAtNDkzLDIwICs0OTMsMTQgQEAgdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWYKIAogICAgICAgICBpZiAob3B0aW9ucygpLmZpbHRlcmluZ1Bv
bGljeSA9PSBSZXNwb25zZUZpbHRlcmluZ1BvbGljeTo6RGlzYWJsZSkgewogICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7Ci0gICAg
ICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkg
ewotICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21l
bnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKSkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1
ZmZlciwgZmFsc2UpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlc3Bv
bnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpEZWZhdWx0KTsKIAogICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCBSZXNvdXJjZVJl
c3BvbnNlOjpmaWx0ZXIocmVzcG9uc2UsIG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRjaE9w
dGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlID8gUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4
cG9zZUFsbEhlYWRlcnNDaGVjazo6Tm8gOiBSZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3JtRXhwb3Nl
QWxsSGVhZGVyc0NoZWNrOjpZZXMpKTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBt
X3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyLT5m
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsK
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRv
KiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQorICAgICAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSgqYnVmZmVyLCBmYWxzZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTY2NywxMSArNjYxLDggQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICB9
CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlm
IChkYXRhKSB7Ci0gICAgICAgIGRhdGEtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50
KSB7Ci0gICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBzZWdtZW50LmRhdGEo
KSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgaWYgKGRhdGEpCisg
ICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsICpkYXRhKTsKIAogICAgIGNvbnN0IGF1
dG8qIHRpbWluZyA9IHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwo
KTsKICAgICBhdXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21TeW5jaHJv
bm91c0xvYWQocmVxdWVzdFVSTCwgbV9vcHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWluZywgdGlt
aW5nID8gKnRpbWluZyA6IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCksIHJlc3Bv
bnNlLCBzZWN1cml0eU9yaWdpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCBmMWY0MWVlOTFkNmNlOGExYzU4NjIzODE3YjM1
OGY3NzQ2NTFlMGE0Li5jODZiYTdmNDUzODNiNmMyODYwMDMyZDNhZWJmYmEzZTA4NjA3NjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
CkBAIC04NiwxNCArODYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudAogICAgICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJlc291cmNl
JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
Qnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsK
KyAgICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAg
ICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VUaW1pbmcmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRpbWlu
Z0ZvcldvcmtlckxvYWQoY29uc3QgUmVzb3VyY2VUaW1pbmcmKTsKICAgICAgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOwogCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwogICAgICAgICB2b2lkIGRpZEZh
aWwoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
ICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAppbmRleCBiMDQ2ZWYwZGUy
MDQ4ZWZkNDMxOTcwMjYyMmI5NmE3ZGYyZmVhZmE3Li40ZmY5MzgxODBmZGQyOGZjNzE1ZDA4ODgx
NjA4ZmM2Mjg5NDkyZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5j
cHAKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjpyZXBvcnREYXRhUmVj
ZWl2ZWQoKQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnJlc29sdmVTdHlsZShEb2N1bWVudDo6
UmVzb2x2ZVN0eWxlVHlwZTo6UmVidWlsZCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRXcml0ZXI6OmFk
ZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCit2b2lkIERvY3VtZW50
V3JpdGVyOjphZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGSVhN
RTogQ2hhbmdlIHRoZXNlIHRvIEFTU0VSVCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MDQyNyBoYXMgYmVlbiByZXNvbHZlZC4KICAgICBSRUxFQVNFX0FTU0VS
VChtX3N0YXRlICE9IFN0YXRlOjpOb3RTdGFydGVkKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lk
IERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVu
Z3RoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChtX3BhcnNlcik7Ci0gICAg
bV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBieXRlcywgbGVuZ3RoKTsKKyAgICBtX3BhcnNl
ci0+YXBwZW5kQnl0ZXMoKnRoaXMsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZv
aWQgRG9jdW1lbnRXcml0ZXI6Omluc2VydERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYg
bWFya3VwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAppbmRleCAwNzE3MmM5
NzM5ZWI1NzM1YmM4MWY4ZGVmMmZiOWIyODVjMjU0ZDBiLi5jMGEzNGE2YjdlOWNmZTk2NDMwNDVh
OTVlNzkzMjI1MjM2M2IyNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIu
aApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIERvY3VtZW50UGFyc2VyOwogY2xhc3MgRnJhbWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBEb2N1bWVudFdyaXRlciB7CkBA
IC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYmVnaW4oKTsKICAgICBib29sIGJl
Z2luKGNvbnN0IFVSTCYsIGJvb2wgZGlzcGF0Y2hXaW5kb3dPYmplY3RBdmFpbGFibGUgPSB0cnVl
LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IG51bGxwdHIpOwotICAgIHZvaWQgYWRkRGF0YShj
b25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CisgICAgdm9pZCBhZGREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHkoY29u
c3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRoZSBw
YXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDc1OGNiZTgwNjU0ZTg4ODk3
YWNkOWVkNDExOTkwYzg2ODZjYWYzYmEuLmQyM2M5NmI2YzUyODAzZmVjMmU0NTdiN2VjN2RiYzll
YjM3OTk1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC04NzAs
NyArODcwLDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlw
YXJ0Q29udGVudCgpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0
dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBT
aGFyZWRCdWZmZXImKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCAyMjY5OWM5YzUxODMyYTVhYThjODlhYmFiMmZmYzdlMDk4
NWJmYzAwLi4xMTZhMTdkMWY1YzllNjQ3ZTFmMTQxYTEwMDg2YjA3OTgzOTNmM2VhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCos
IGludCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29u
c3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1l
bnRMb2FkZXIqKSBmaW5hbDsKIAogICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCBmZGM5N2RjNDYyYzg3NTI2YWExODhmNzk2OGQ2MGEwYzgzZDY4MGQ5
Li4xMWMwYThmNjg2MTUwNmUwOTYxZTUyYThmZjRjNzIwYjI1YmUyOTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE2ODcsNyArMTY4Nyw3IEBAIGJvb2wgRnJhbWVM
b2FkZXI6OndpbGxMb2FkTWVkaWFFbGVtZW50VVJMKFVSTCYgdXJsLCBOb2RlJiBpbml0aWF0b3JO
b2RlKQogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgIFJlc291
cmNlRXJyb3IgZXJyb3I7CiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZShyZXF1ZXN0LCBpZGVudGlm
aWVyLCBlcnJvcik7Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdl
cyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCBSZXNvdXJjZVJl
c3BvbnNlKHVybCwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSksIDAsIC0xLCAtMSwgZXJyb3IpOwor
ICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExv
YWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0
cmluZygpLCAtMSwgU3RyaW5nKCkpLCBudWxscHRyLCAtMSwgZXJyb3IpOwogCiAgICAgdXJsID0g
cmVxdWVzdC51cmwoKTsKIApAQCAtMjA4Nyw4ICsyMDg3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZSh0aXRsZSk7CiAKICAgICAgICAgLy8gU2VuZCByZW1haW5pbmcgbm90aWZp
Y2F0aW9ucyBmb3IgdGhlIG1haW4gcmVzb3VyY2UuCi0gICAgICAgIG5vdGlmaWVyKCkuc2VuZFJl
bWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgbWFpblJlc291
cmNlSWRlbnRpZmllciwgbWFpblJlc291cmNlUmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpLAot
ICAgICAgICAgICAgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50PihtX2RvY3VtZW50TG9hZGVyLT5y
ZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwgbWFpblJlc291Y2VFcnJvcik7
CisgICAgICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1
bWVudExvYWRlci5nZXQoKSwgbWFpblJlc291cmNlSWRlbnRpZmllciwgbWFpblJlc291cmNlUmVx
dWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpLCBudWxscHRyLCBzdGF0aWNfY2FzdDxpbnQ+KG1fZG9j
dW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCBtYWluUmVz
b3VjZUVycm9yKTsKIAogICAgICAgICBWZWN0b3I8UmVmPEZyYW1lPj4gdGFyZ2V0RnJhbWVzOwog
ICAgICAgICB0YXJnZXRGcmFtZXMuYXBwZW5kKG1fZnJhbWUpOwpAQCAtMjEzNiw3ICsyMTM1LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAgICAg
IC8vIEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywg
dGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAgICAgICAgIC8vIEhvd2V2
ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdv
bid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAgICAgICAgIC8vIENvdWxkIGJlIGFuIGlzc3Vl
IHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgotICAgICAgICAgICAgbm90aWZpZXIoKS5zZW5kUmVt
YWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVy
LCByZXF1ZXN0LCByZXNwb25zZSwgMCwgc3RhdGljX2Nhc3Q8aW50PihyZXNwb25zZS5leHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKSksIDAsIGVycm9yKTsKKyAgICAgICAgICAgIG5vdGlmaWVyKCkuc2Vu
ZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRp
ZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIG51bGxwdHIsIHN0YXRpY19jYXN0PGludD4ocmVzcG9u
c2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCBlcnJvcik7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBGSVhNRTogV2h5IG9ubHkgdGhpcyBmcmFtZSBhbmQgbm90IHBhcmVudCBmcmFtZXM/CkBA
IC0zMTY2LDcgKzMxNjUsOCBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICAgICAg
ICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291
cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKICAg
ICAgICAgfQogICAgIH0KLSAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNl
LCBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAs
IC0xLCBlcnJvcik7CisKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNl
LCBkYXRhLCAtMSwgZXJyb3IpOwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCkBAIC0zNjQ3
LDcgKzM2NDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cgogCiAgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSA9IHJlc291cmNlLnJlc3BvbnNlKCk7CiAgICAgcmVzcG9uc2Uuc2V0U291
cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TWVtb3J5Q2FjaGUpOwotICAgIG5vdGlmaWVy
KCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwg
aWRlbnRpZmllciwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsIDAsIHJlc291cmNlLmVuY29kZWRTaXpl
KCksIDAsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHJlc3Bv
bnNlLCBudWxscHRyLCByZXNvdXJjZS5lbmNvZGVkU2l6ZSgpLCBlcnJvcik7CiB9CiAKIHZvaWQg
RnJhbWVMb2FkZXI6OmFwcGx5VXNlckFnZW50SWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBlZTlm
M2QwYzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThkMTIzNjUyLi4zNTJhNGM0ZmI1MDRmN2NkNGQy
ZWM0MDZlNmJjMjkxMWE1NWZkMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtNyw3ICs3LDcgQEAKICAqIGFyZSBtZXQ6CiAgKgogICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCiAgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCkBAIC01MCw3ICs1MCw3IEBACiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotI2lmZGVmIF9fT0JKQ19fIAorI2lmZGVmIF9fT0JKQ19fCiAj
aW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIHR5cGVkZWYgaWQgUmVtb3RlQVhPYmpl
Y3RSZWY7CiAjZWxzZQpAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsKIApAQCAtMjE0LDkg
KzIxNCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRD
b250ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVu
dCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVy
KiwgY29uc3QgdWludDhfdCosIGludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRM
b2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSA9IDA7Ci0gICAgCisKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKSA9IDA7CiAKQEAgLTI3Miw3ICsy
NzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYp
IGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5
UG9saWN5KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICAKKwogICAgIHZpcnR1YWwg
dm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hl
ZEZyYW1lKikgPSAwOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zODEsNyArMzgxLDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIEFsbG93c0NvbnRlbnRKYXZhU2NyaXB0
IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gQWxsb3dzQ29udGVudEphdmFTY3JpcHQ6OlllczsgfQotICAgIAorCiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmFibGVJbkFw
cEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCkgeyB9CkBAIC0zOTAs
NyArMzkwLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRVc2VQREZQbHVnaW4oY29uc3QgU3RyaW5nJiwgU3RyaW5nVmlldykgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgotICAgIAorCiAgICAgdmlydHVhbCBib29sIGlz
UGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggNWQxMjBlMjQ3YWMyNjI3MTE2MWRlMGRjNTIzMDI0ZGM4ZGUzNGQ2OS4uMWExN2E3MGZhNThj
NzIyOGY2Mzg5MzU5ZGQwZDMzOWQwZTA1Y2QyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcApAQCAtMjMxLDEzICsyMzEsMTMgQEAgdm9pZCBNZWRp
YVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1MKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1Nl
bnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAgIFJlZlB0
cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgZGF0YUxlbmd0aCk7
CisgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CiB9CiAKIHZv
aWQgTWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmZjZjMjg4NzEwMDg4ZjRiMDU0Y2U0NzYz
ZDVkYTBkZGM5MmMyMDY1Li43YjU1NzcyMGVmMDUzM2ZiYWEyMjY1NjUzOGVmZGQ5NmY2MTc5ZmI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTg2
LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIGJv
b2wgc2hvdWxkQ2FjaGVSZXNwb25zZShDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJlc291cmNlJiwgdW5z
aWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cAppbmRleCA2MDQzYWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkxNTAzLi41Y2FhZGY2
MjljNzBhZTA4NmI3N2JkNzJjZDI4Njc1MzZiOGZhOTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAgLTE0MSwzMCAr
MTQxLDE0IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwCiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
ZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBl
KTsKLX0KLQotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKLSAgICBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERh
dGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBpZiAobV9jbGllbnQpIHsKLSAgICAg
ICAgaWYgKGJ1ZmZlcikgewotICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0o
YXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0
YSh0aGlzLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGRhdGEsIGxlbmd0aCk7Ci0gICAgfQorICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlcik7CiAKLSAgICBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CisgICAgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlw
ZSk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCmluZGV4
IGI1MTc0ZWRjOTRiOTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzguLjFlYzdkNjFlM2ExNzVj
MjJiNTU4NzU4ZDM3ZWQwYzU1YmU1ZjEzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC0zNiwxMiArMzYsMTMgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xp
ZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xp
ZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXIm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCBi
b29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Miw4ICs2
Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc0LDggKzc0LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotCiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKICAg
ICBXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCmluZGV4IDYy
YmI1NmUzNGU2ZjQ2ZDI2MjgzNmNmY2E0NjViNGRiMGUzMDgzY2YuLjFhYzBlNjdjN2Y2OGRlZDBl
Y2I3OGUxMWMwMjQ2OWIxMDkxZDUzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRl
ci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAj
aW5jbHVkZSAiUXVpY2tMb29rLmgiCkBAIC03OCwxMiArNzksMTIgQEAgdm9pZCBSZXNvdXJjZUxv
YWROb3RpZmllcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNv
bnN0IFJlc28KICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXItPmRvY3VtZW50
TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCByLCBsb2FkZXIpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCkKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQotICAgICAg
ICBwYWdlLT5wcm9ncmVzcygpLmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRpZmllcigp
LCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNyZW1lbnRQcm9ncmVz
cyhsb2FkZXItPmlkZW50aWZpZXIoKSwgYnVmZmVyLnNpemUoKSk7CiAKLSAgICBkaXNwYXRjaERp
ZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVy
KCksIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaXNwYXRjaERp
ZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVy
KCksIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5v
dGlmaWVyOjpkaWRGaW5pc2hMb2FkKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtMTUzLDEzICsxNTQsMTMgQEAg
dm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgUmUKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUsIGlkZW50aWZpZXIsIGxvYWRlciwgciwg
cmVzb3VyY2VMb2FkZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRj
aERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0
Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKICAgICAvLyBOb3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVyQ2xpZW50
IG1heSBjYXVzZSB0aGUgZnJhbWUgdG8gYmUgZGVzdHJveWVkLgogICAgIFJlZjxGcmFtZT4gcHJv
dGVjdChtX2ZyYW1lKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlk
UmVjZWl2ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhTGVuZ3RoKTsKKyAg
ICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgobG9hZGVyLCBpZGVudGlmaWVyLCBidWZmZXIuc2l6ZSgpKTsKIAotICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoJm1fZnJhbWUsIGlkZW50aWZpZXIsIGRhdGEs
IGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhKCZtX2ZyYW1lLCBpZGVudGlmaWVyLCBidWZmZXIsIGVuY29k
ZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2Fk
TWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQpAQCAtMTgwLDcgKzE4MSw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRGYWlsTG9hZGluZygmbV9mcmFtZSwgbG9hZGVyLCBpZGVudGlmaWVyLCBlcnJvcik7CiB9
CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgLy8gSWYgdGhlIHJlcXVl
c3QgaXMgbnVsbCwgd2lsbFNlbmRSZXF1ZXN0IGNhbmNlbGxlZCB0aGUgbG9hZC4gV2Ugc2hvdWxk
CiAgICAgLy8gb25seSBkaXNwYXRjaCBkaWRGYWlsTG9hZGluZyBpbiB0aGlzIGNhc2UuCkBAIC0x
OTMsOCArMTk0LDggQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0Rl
bGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwKICAgICBpZiAoIXJlc3BvbnNl
LmlzTnVsbCgpKQogICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXIsIGlk
ZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlmIChkYXRhTGVuZ3RoID4gMCkKLSAgICAgICAg
ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5n
dGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgp
KQorICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlciwgaWRlbnRpZmllciwgKmJ1
ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKSB7CiAg
ICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCmluZGV4IDZkYTE2MDMyNWY0MmZlZjU0MGM2
YmQ1MGJiMTgyZTg2OWRhZGU5ZTMuLjJiMjVkOGEzZGQ2MTk0MGY1Y2FmNTRkYTljNzQ2NWIwYTI4
ZDM0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3Rp
Zmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5o
CkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlc291cmNlTG9hZE5vdGlmaWVyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSZXNvdXJjZUxvYWROb3RpZmllcik7CkBAIC01NSwxOCArNTYs
MTggQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkZXIq
LCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9h
ZGVyKiwgY29uc3QgdWludDhfdCosIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBTaGFy
ZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQg
ZGlkRmFpbFRvTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAog
ICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKiA9IG51bGxw
dHIpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVE
YXRhKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRG
aW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9pZCBzZW5kUmVtYWluaW5nRGVs
ZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1
ZmZlcj4sIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAg
ICAgYm9vbCBpc0luaXRpYWxSZXF1ZXN0SWRlbnRpZmllcihSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAppbmRleCA2ZGViYjI1ODhhM2U4MmIyMWM2MWQ3ZThmMzZlNGY0YmJiYTI1ZTYwLi42NjQ3
YzI3MDgxMTgwZWJjZWMyYjVjYTI5ZmQ2MGI3MjNhYjY0ODM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI5OSw5ICsyOTksOSBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpsb2FkRGF0YVVSTCgpCiAKICAgICAgICAgYXV0byBkYXRhU2l6ZSA9IGRlY29kZVJl
c3VsdC0+ZGF0YS5zaXplKCk7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgZGF0YVJlc3BvbnNl
ID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHVybCwgZGVjb2RlUmVzdWx0LnZh
bHVlKCkpOwotICAgICAgICB0aGlzLT5kaWRSZWNlaXZlUmVzcG9uc2UoZGF0YVJlc3BvbnNlLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRhdGFTaXplLCBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkZWNvZGVSZXN1bHQtPmRhdGEpKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGRhdGFSZXNwb25z
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBkYXRhU2l6
ZSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGVjb2RlUmVzdWx0LT5kYXRh
KSldKCkgewogICAgICAgICAgICAgaWYgKCF0aGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpICYm
IGRhdGFTaXplICYmIG1fcmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkhFQUQiKQotICAgICAgICAg
ICAgICAgIHRoaXMtPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShkYXRhKSwgZGF0YVNpemUsIERh
dGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgdGhpcy0+ZGlkUmVjZWl2
ZUJ1ZmZlcihkYXRhLCBkYXRhU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKIAogICAg
ICAgICAgICAgaWYgKCF0aGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAgICAgICAgICAg
ICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKQEAgLTMyOCw3ICszMjgsNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQog
ICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmFk
ZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAg
aWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzM2LDEwICszMzYsNyBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBGcmFnbQogICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKQogICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogCi0g
ICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKCpidWZmZXIpOwot
ICAgIGVsc2UKLSAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cisg
ICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdApAQCAtNTM5
LDcgKzUzNiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByLCBDb21wbGV0aW9uSGFuCiAgICAgICAgIGZyYW1lTG9hZGVy
KCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIG1fcmVzcG9uc2UpOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhlIGZvbGxv
d2luZyBhc3NlcnRpb25zIGFyZSBub3QgcXVpdGUgdmFsaWQgaGVyZSwgc2luY2UgYSBzdWJjbGFz
cwogICAgIC8vIG1pZ2h0IG92ZXJyaWRlIGRpZFJlY2VpdmVEYXRhIGluIGEgd2F5IHRoYXQgaW52
YWxpZGF0ZXMgdGhlbS4gVGhpcwpAQCAtNTQ3LDMwICs1NDQsMjIgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBsb25nIGwKICAgICAvLyBBU1NFUlQoY29uID09IGNvbm5lY3Rpb24pOwogICAgIC8vIEFTU0VS
VCghbV9yZWFjaGVkVGVybWluYWxTdGF0ZSk7CiAKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlw
ZSk7CisgICAgZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRh
UGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdU
Rk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0K
LXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKLXsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0
YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCi0gICAgQVNTRVJUKCFidWZm
ZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKLQogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlz
IGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwog
ICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhh
bXBsZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYuCiAgICAgUmVmPFJlc291cmNlTG9hZGVyPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGFkZERhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgs
IGJ1ZmZlci5nZXQoKSwgZGF0YVBheWxvYWRUeXBlKTsKKyAgICBhZGRCdWZmZXIoYnVmZmVyLCBk
YXRhUGF5bG9hZFR5cGUpOwogCiAgICAgLy8gRklYTUU6IElmIHdlIGdldCBhIHJlc291cmNlIHdp
dGggbW9yZSB0aGFuIDJCIGJ5dGVzLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJpZ2h0IHRoaW5n
LgogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcg
c3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBh
biBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRM
b2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2Zy
YW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSwgc3RhdGljX2Nhc3Q8aW50PihlbmNv
ZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtNzI5
LDE0ICs3MTgsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5
bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYKICAgICBkaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNl
aXZlRGF0YShkYXRhLCBsZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVz
KTsKKyAgICBkaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZEJ5dGVzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShi
dWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgZGlkUmVj
ZWl2ZUJ1ZmZlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKaW5kZXggOTA3NWNiYzBhMzA0MGVhMTUwYTg2MjVjZGEwODkwYjFl
ZTEzOGM3Mi4uMTA5OGU0ZjI3ODg5Y2RhN2IzYTljZmQ0ZDU0NmFlMmZkOWE3YzU2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTEwNyw4ICsxMDcsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAKQEAgLTE2Nyw4ICsxNjcsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNl
bGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsg
fQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNp
Z25lZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLSAgICAKICAgICB2b2lkIHNldFJlZmVycmVy
UG9saWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJl
clBvbGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQ
b2xpY3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KIApAQCAt
MTkyLDcgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSA9IDA7CiAKLSAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1
aW50OF90KiwgdW5zaWduZWQsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5
cGUpOworICAgIHZvaWQgYWRkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBE
YXRhUGF5bG9hZFR5cGUpOwogICAgIHZvaWQgbG9hZERhdGFVUkwoKTsKICAgICB2b2lkIGZpbmlz
aE5ldHdvcmtMb2FkKCk7CiAKQEAgLTIwMiw4ICsyMDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNw
b25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwg
UmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgU2hhcmVkQnVm
ZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCAzN2Qw
YmI4MjFhYmQ4NmE5YjU2MDZlMTI3ZWZjOTQxMmE1MWJiMWE5Li45NzJmMmFmMjI2MDNmNDI0Y2Q4
Nzc1ZjU5MTAxMGUyZDc2OTM4YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTUxOCwzMiArNTE4LDE1IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZVBvbGljeSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVy
ID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7Ci0gICAgICAgIGlmIChwcmV2aWV3TG9hZGVyLT5k
aWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgpKQorICAgICAgICBpZiAocHJldmlld0xvYWRlci0+
ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBs
ZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQot
Ci12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotI2lmIFVTRShRVUlDS19MT09LKQotICAg
IGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIuZ2V0KCkpIHsKLSAgICAg
ICAgaWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLmdldCgpKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0
YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKICAgICBBU1NFUlQobV9yZXNvdXJj
ZSk7CiAKICAgICBpZiAobV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID49
IDQwMCAmJiAhbV9yZXNvdXJjZS0+c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSkK
QEAgLTU1NSwxMyArNTM4LDEzIEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAvLyBhbnl0
aGluZyBpbmNsdWRpbmcgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0
OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCiAgICAgUmVmPFN1YnJlc291cmNlTG9h
ZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgYnVmZmVyLmNvcHlSZWYoKSwgZW5jb2RlZERh
dGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CisgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIAog
ICAgIGlmICghbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCkgewogICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291
cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7Cisg
ICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlci5tYWtlQ29udGlndW91cygp
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgK
aW5kZXggODMyYzlmMGU3M2QzODQ2NGE3OTVmNDAzODYwZjc5YzM0ZTczYmM3Zi4uM2RiZDUzMzhh
ZmU0OWI0Nzg1N2Q1MzQwOTc4ODc1MmVhYTFhZWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTczLDggKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25I
YW5kbGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CkBAIC05Miw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3Ry
aW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25D
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1Jl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBp
bnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAgICB2b2lkIG5vdGlmeURvbmUoTG9hZENvbXBs
ZXRpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
CmluZGV4IGNmMmRlMGM2MmQ5NWYzMzI1YjQyYjQ2ZTI0MDM3NzQ0MTA3NDJhMGQuLjNkMTkyODYy
ZjI3NzI5YjJmMzhkYjU0YmQ4MzY3OTk1MjVjMDE5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVy
ZW5jZV9jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7
IH0KLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1f
ZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSB7IG1fZGF0YS5hcHBlbmQoYnVmZmVyKTsgfQogICAgIHZvaWQgY2xl
YXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNv
dXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVz
cG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXJDbGllbnQuaAppbmRleCA4NGQ3OWIwYzk5ZGYxMGQ5OTM4MGI4NDgzMTczNzFi
YzFlODU3M2JmLi5jZWYwYzhmMWYxN2QwZjU3NjU5YTM1NDFiNTRmNjM4OTkwNjRiMWM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKQEAgLTM3
LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVGhyZWFkYWJsZUxvYWRlckNsaWVudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwpAQCAtNDQsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRE
YXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcg
Lyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwg
aW50IC8qZGF0YUxlbmd0aCovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCAvKiB1c2VTdHJMZW4gKi8pIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3Jh
cHBlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFw
cGVyLmgKaW5kZXggNDJhZTY0OTA5YTVlMGZlNDRjNmE1ZTAwNjBkNThjOTY0ZWM1NjA1MS4uZjM2
YTJkNDA3YWY4ODE1OTA0Mjg2NmI4NWU5ZTAxODYxZGFhYzcyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKQEAgLTY2
LDEwICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQorICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKQog
ICAgIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5ndGgpOworICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlciwgdXNlU3RyTGVuKTsKICAgICB9CiAKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggZGZmODk3
MDFjOTM5YmM3M2MzNzAzMmFkOWM0MmFkMjA2MzI2YWQ2ZS4uN2MwMzQ5NDVlZTAzYTc0ZjUzMzM5
YmI4MWZmYTBlMDZjNjljNzE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMjMxLDE0ICsyMzEsMTMgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXIKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFp
blRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIHVzZVN0ckxlbikKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGRhdGEsIGRhdGFM
ZW5ndGgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFJlZiB7ICptX3dv
cmtlckNsaWVudFdyYXBwZXIgfSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJl
cXVlc3RJZGVudGlmaWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVu
dFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdvcmtlclJlcXVlc3RJ
ZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gUmVmIHsgZGF0
YSB9LCB1c2VTdHJMZW5dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29y
a2xldEdsb2JhbFNjb3BlKCkpOwotICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVy
LT5kaWRSZWNlaXZlRGF0YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAg
cHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCB1c2VT
dHJMZW4pOwogICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyKTsKICAgICB9LCBtX3Rhc2tN
b2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmgKaW5kZXggNzIzYjQ1NmVjOGU5ZTMwNmZjMThjYzhmMzZkZTZkY2Q4YWUzMDQ3MC4uMzM5
ZDZmNDczMTBhMWVkMjg5MDM2YWQwYTQwNGYzOGE3YTI2ODYyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCkBAIC0xMDUsNyArMTA1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgLy8gQWxsIGV4ZWN1dGVkIG9uIHRoZSBtYWluIHRocmVhZC4KICAg
ICAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAgICAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAg
ICAgICAgIHZvaWQgZGlkRmluaXNoVGltaW5nKGNvbnN0IFJlc291cmNlVGltaW5nJikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA1MTk3OGY0MTIzODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRl
NWQ4NWE3Li5lZDc1NjY1MjZiMmQ3ZWZiZjFjNTE3MDIwOTVhODc5YmFmNTY5NDQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpt
YXliZUxvYWRGYWxsYmFja0Zvck1haW5FcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3Vy
Y2VEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCosIGludCwgbG9uZyBsb25nLCBib29sKQordm9p
ZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIGxvbmcgbG9uZywgYm9vbCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCBiOTYz
NTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNkZjcyMzY3MmEwLi5kMmFlYWVjM2UxNGM2M2JjYmY2
MDFlOWFhZjAyNGMxZjllYzQ3NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtOTUsNyArOTUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgU3Vic3RpdHV0ZURhdGEmKTsKICAgICB2b2lkIG1heWJlTG9hZE1haW5SZXNvdXJjZUZvclJl
ZGlyZWN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVEYXRhJik7CiAgICAgYm9v
bCBtYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25zZShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYWluUmVzb3VyY2VEYXRhUmVj
ZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSk7CisgICAgdm9pZCBtYWluUmVzb3VyY2VEYXRhUmVj
ZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBi
b29sIGFsbEF0T25jZSk7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsK
ICAgICB2b2lkIGZhaWxlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcAppbmRleCAyYmIzZmU3NWI5OTc3ZTgzMzIyYWUyNTgwZjcyMTJlZTViZjIxNjEwLi4yNTZl
ODliMjExYjM4YjJkMjFkY2Q2NjU3ODI2OWU2NjA3MzY3MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcApAQCAtNTEsNyArNTEsMTAgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikK
IHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGgu
aXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkK
KyAgICAgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgUmVmUHRy
IHsgJmRhdGEoKSB9KTsKKyAgICBlbHNlCisgICAgICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VB
bmREYXRhKHJlc3BvbnNlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1
bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggN2Iy
ZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNi4uNTRmZWVkMmNhNjQxMmI0NTIw
OTg3MGM3NzM0MzYwOWQ4NTA5Yjc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTk5LDkgKzk5LDkgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogICAgIG1fYXBwbGlj
YXRpb25DYWNoZVJlc291cmNlID0gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUobV9y
ZXNvdXJjZS0+dXJsKCksIHJlc3BvbnNlLCBtX3R5cGUpOwogfQogCi12b2lkIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEs
IGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChidWZmZXIp
OwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaAppbmRleCAwMmQ3
YWQ5N2EyOGQ0N2MzZmFiNWUzYmFiMDdlYmU5YjA2OWUyMzJkLi4wYjI5NjI4OGYzMWE0MzI1ZDQ4
NDlhNDQyZThhZTYwMmMxNzMxOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCkBA
IC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZv
aWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7
CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcAppbmRleCA1MDQ2NWNjNmMwMTMzZTVhNzc0NDVjZjk0NzMzM2ZlMjA2NDA4NjFk
Li5kNzcxYTA3MmI2MTAzYWViYzNlOTBkNTFlZDQ4M2FhMTcyYmE3ZjQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw5ICs0NjgsOSBAQCBp
bmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURh
dGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFs
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgbV9k
YXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIG1fZGF0YSA9IGRhdGE7CiAgICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTU1
OCwxNSArNTU4LDE1IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFn
ZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwot
ICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOworICAgIHVwZGF0ZUJ1ZmZlckludGVybmFs
KGRhdGEubWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZl
cihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKLSAgICB1cGRh
dGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsKLSAg
ICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOworICAgIHVwZGF0ZUJ1
ZmZlckludGVybmFsKGJ1ZmZlcik7CisgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoYnVm
ZmVyKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGU4NDMwODcw
YjQ4YWYzZGM5NWJiYTNjYWQxYTY0ZTA2OGFlMTU1MTMuLmE1ZGM2M2YyM2RiZDQxYTI3MGVlNTZj
MzJhNDQxNzc3ZDZhZGRiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVk
RGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZv
aWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
ICAgICB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAK
QEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25z
dCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFs
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVy
Q29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggNzFlMTYwODJmZmU2NTVkMTExZjE2OTkwZDEy
MzA1MzViZWFjYmY5NS4uZDMzNjExMzIxM2ZiZWJmZjRlOTFmZjY1ZjgzZmZlMjRkM2U4YTBjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCkBAIC00OCwxMiArNDgsMTIgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291
cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NF
UlQoaXNNYWluT3JNZWRpYU9ySWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dAorc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6
OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkg
Y29uc3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsK
LSAgICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKKyAg
ICBpZiAoZGF0YS5zaXplKCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFM
ZW5ndGgpOworICAgIHJldHVybiBkYXRhLmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7
CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
ICAgICAgICAgcHJldmlvdXNEYXRhU2l6ZSArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogCiAg
ICAgICAgIFNldEZvclNjb3BlPGJvb2w+IG5vdGlmeVNjb3BlKG1faW5JbmNyZW1lbnRhbERhdGFO
b3RpZnksIHRydWUpOwotICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3Jl
bWVudGFsRGF0YS5kYXRhKCksIGluY3JlbWVudGFsRGF0YS5zaXplKCkpOworICAgICAgICBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS5jcmVhdGVTaGFyZWRCdWZm
ZXIoKSk7CiAgICAgfQogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKIApAQCAt
ODksMTEgKzg5LDExIEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKLSAgICBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGRhdGEsIGxlbmd0aCk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEo
ZGF0YSwgbGVuZ3RoKTsKKyAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGJ1ZmZlcik7
CisgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBDYWNo
ZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCkBAIC0xMTAsOSArMTEw
LDkgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdAogICAgICAgICBpZiAoZGF0YSkgewogICAgICAg
ICAgICAgaWYgKGRhdGEgIT0gbV9kYXRhLmdldCgpKQogICAgICAgICAgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoKm1fZGF0YSkpIHsKICAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXpl
KCkpOwotICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVt
ZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+Y3JlYXRl
U2hhcmVkQnVmZmVyKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CkBAIC0xMzAsMTUgKzEzMCwxNSBAQCB2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0CiAgICAgfQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGll
bnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
K3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFsZW5ndGgpCisgICAgaWYgKGJ1
ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIENhY2hlZFJl
c291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7
CiAgICAgd2hpbGUgKENhY2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCi0gICAg
ICAgIGMtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgYy0+ZGF0
YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOwogfQogCiBzdGF0aWMgdm9pZCBpdGVyYXRlUmVkaXJl
Y3RzKENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiYmIGhhbmRsZSwgQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQmIGNsaWVudCwgVmVjdG9yPHN0ZDo6cGFpcjxSZXNvdXJjZVJl
cXVlc3QsIFJlc291cmNlUmVzcG9uc2U+PiYmIHJlZGlyZWN0c0luUmV2ZXJzZU9yZGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTE3MCw5ICsxNzAsOSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGMpCiAgICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgq
Y2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAobV9kYXRh
KSB7Ci0gICAgICAgICAgICAgICAgbV9kYXRhLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2Vn
bWVudCkgeworICAgICAgICAgICAgICAgIG1fZGF0YS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1
ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQ2xp
ZW50KCpjbGllbnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LT5kYXRhUmVjZWl2
ZWQoKnRoaXMsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgYnVmZmVyKTsKICAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghaGFzQ2xpZW50KCpj
bGllbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaAppbmRleCBhNzg2NWY4YWQxNzhhZWZiMzIyMGE1NmRjZmYxOTU5OTNjZjk1YWU0Li4zNmU0
N2ExZGJhMjMxMjhkYzUzMDczYjcwYjVmM2Y4NTM4MDRhZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtMjgsNiArMjgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlQ2xpZW50OwogY2xhc3Mg
UmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJE
YXRhVmlldzsKIAogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2UgewpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQg
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7CiAgICAgdm9pZCB1cGRh
dGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwotICAgIHZvaWQg
dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwor
ICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVz
Q29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTY2LDggKzY3
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3Vy
Y2UoKSBvdmVycmlkZTsKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9CiAKLSAg
ICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRh
bERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKikgY29uc3Q7Ci0gICAgdm9p
ZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2Fs
Y3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7Cisg
ICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwogICAgIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgcHJldmlld1Jlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaAppbmRleCAyM2Vh
YjhkZjI5NThmZjhiNDlmMzU0NWI1MDgzZmUyOTg5ZWYxMjIwLi5jZDY1MGEyZjMxMzZjZTliMjYy
ZmJkZmM4MjkyOGJmMjEwNzlmYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaApAQCAtMzEsNiArMzEsNyBAQCBjbGFz
cyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGll
bnQgewogcHVibGljOgpAQCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmly
dHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiAvKiBkYXRhICovLCBpbnQgLyog
bGVuZ3RoICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShy
ZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2Fk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggOWRlMGEwNGNk
NWVjNWYzZmFkMmZiMTZkN2IzMjJjODU4YTM4YTZiMi4uN2I5YzYxZjk2NjE3NTQ2YjY2YmNjM2M2
M2VjYTBlODU3ZTI2MmVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKQogICAgIEFTU0VSVChk
YXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7
CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVu
c2lnbmVkKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggYzk4MmRkNjkzN2EwYmMyYmYzOGM0MjYxMjZmZmU2
ZTc4Yzc5NjQ3OC4uNTM0ZTAxMmNjNGZhNWRkMmJlMWZkNmVlZTVhYTZhZTRlNWZhZTIwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMyw3
ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2Rl
ciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5kZXggOTZkODk4MmU5MzUwMzQ3Njk2ZmM5
NjlkNTg1YWI3MDc1ZGUwMjBlZC4uY2EwMTkzNGQzMWJhNWQ1MDlmZWJlN2QyZjkxMjI0OWQyNzEy
NmFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLmgKQEAgLTQ3LDggKzQ3LDcgQEAgcHVibGljOgogICAgIH5MZWdhY3lQcmV2aWV3TG9hZGVy
KCk7CiAKICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7Ci0gICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CisgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
KTsKICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIGRpZEZhaWwoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmlu
ZGV4IDQ4NzU2YTMzYjU4NzJiNDRiMmYwYmEwODQyNDFmODZjZmFlYmNhYTAuLmEyNGI4YzU5ZDQ2
MGFmZjVlMmZlZjgzMTkwYzIwODY1NzIzNjVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGlj
IFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtYWtlQ2xpZW50KGNvbnN0IFJlc291cmNl
TG9hZGVyJiBsb2FkZXIsIGMKICAgICByZXR1cm4gZW1wdHlDbGllbnQoKTsKIH0KIAotYm9vbCBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fZmluaXNoZWRMb2Fk
aW5nRGF0YUludG9Db252ZXJ0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcxLDcgKzcx
LDcgQEAgYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBMT0coTmV0d29yaywgIkxlZ2FjeVBy
ZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRoIHNpemUgJWxkLiIsIGJ1ZmZlci5zaXpl
KCkpOwogICAgIG1fb3JpZ2luYWxEYXRhLmFwcGVuZChidWZmZXIpOwogICAgIG1fY29udmVydGVy
LT51cGRhdGVNYWluUmVzb3VyY2UoKTsKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZlcihi
dWZmZXIpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xNjIsOCArMTYyLDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVy
OjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnMK
ICAgICBpZiAoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gZGF0YUNvcHkgPSBkYXRhLmNvcHkoKTsKLSAgICByZXNvdXJjZUxvYWRlci0+ZGlkUmVj
ZWl2ZUJ1ZmZlcihXVEZNb3ZlKGRhdGFDb3B5KSwgZGF0YUNvcHktPnNpemUoKSwgRGF0YVBheWxv
YWRCeXRlcyk7CisgICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoZGF0YSwgZGF0
YS5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXIm
KQpAQCAtMjQzLDExICsyNDIsNiBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3
TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUgogICAgIExPRyhO
ZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBjcmVhdGVkIHdpdGggcHJldmlldyBmaWxlIG5h
bWUgXCIlc1wiLiIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKS51dGY4KCkuZGF0YSgp
KTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIGRpZFJlY2VpdmVC
dWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKS5nZXQoKSk7Ci19Ci0KIGJv
b2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKQogewogICAgIHJldHVybiAhbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2Fk
aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCA2MDI2MzFiYjdjZDEwODYw
YjFhMzEyMTA0M2M5N2Q4ZWZlNDQ3NjFkLi42N2FjNzdlMmJmNzYxMDQ1YzhjMThkNWM3YWRlYzdm
NzMzOGFiNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtNDIsNiArNDIs
NyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CkBAIC0yMTAsMTMgKzIxMSwxMyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaXNwYXRjaEVycm9yRXZl
bnQoKQogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9
CiAKLXZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgpCit2b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBPUEVOKTsK
ICAgICBBU1NFUlQobV9yZXF1ZXN0SW5GbGlnaHQpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oIW1faXNTdXNwZW5kZWRGb3JCYWNrRm9yd2FyZENhY2hlKTsK
IAotICAgIGFwcGVuZChtX3JlY2VpdmVCdWZmZXIsIG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxl
bmd0aCkpOworICAgIGFwcGVuZChtX3JlY2VpdmVCdWZmZXIsIG1fZGVjb2Rlci0+ZGVjb2RlKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKTsKICAgICBwYXJzZUV2ZW50U3RyZWFtKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCBkMDEyZDM3N2QxOTc2NzVmMGZlMTE0
NWYxNzE5ZjE3ZmRkYmZlYTNiLi5kNjYyYWUyODA2ZjRiMjQ4NjdiMDE2MDhlMDRkYmI0Zjk3ZGJh
MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC04NCw3ICs4NCw3IEBAIHByaXZh
dGU6CiAKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wp
IGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDdhZmFhZmYy
YmQxNTE3OTM3ZmE4Yzc4NzQ5ZjhmNmU3NTA2N2U1NmQuLmI4NmQ0OWQ0YWYzM2M2NDU4MmI2YmVh
NDA2MjI2MTU5OTJkNWFjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIFZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjp0YWtlRGF0YSgpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwog
ICAgIGlmIChoYXNPbmVTZWdtZW50KCkgJiYgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8
dWludDhfdD4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKLSAgICAg
ICAgY29tYmluZWREYXRhID0gc3RkOjpleGNoYW5nZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+
KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSwgVmVjdG9yPHVpbnQ4X3Q+
KCkpOworICAgICAgICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4Y2hhbmdlKHN0ZDo6Z2V0PFZlY3Rv
cjx1aW50OF90Pj4oY29uc3RfY2FzdDxEYXRhU2VnbWVudCY+KG1fc2VnbWVudHNbMF0uc2VnbWVu
dC5nZXQoKSkubV9pbW11dGFibGVEYXRhKSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOwogICAgIGVsc2UK
ICAgICAgICAgY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBt
X3NpemUpOwogCkBAIC0yNTAsNiArMjUwLDEzIEBAIHZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0CiAg
ICAgICAgIGFwcGx5KFNwYW4geyBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdt
ZW50LT5zaXplKCkgfSk7CiB9CiAKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFj
aFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFJlZjxTaGFyZWRCdWZm
ZXI+JiYpPiYgYXBwbHkpIGNvbnN0Cit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfTsKKyAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQorICAgICAgICBh
cHBseShTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZWdtZW50LnNlZ21lbnQuY29weVJlZigpKSk7Cit9
CisKIGJvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiB7CiAgICAgaWYgKHByZWZpeC5lbXB0eSgpKQpA
QCAtNDE1LDcgKzQyMiw3IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkKICAgICBtX2Nv
bnRpZ3VvdXMgPSB0cnVlOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8RGF0
YVNlZ21lbnQ+JiYgc2VnbWVudCkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxjb25z
dCBEYXRhU2VnbWVudD4mJiBzZWdtZW50KQogewogICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUo
KTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CkBAIC02
MDMsNyArNjEwLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIoKQog
ICAgICAgICBtX2J1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogfQog
Ci1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdt
ZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFW
aWV3KFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRo
aW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChX
VEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25X
aXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6
ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNjE5LDcgKzYyNiw3IEBAIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRh
VmlldyYgb3RoZXIsIHNpCiAKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVu
dD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+
IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgp
IHsgcmV0dXJuIGRhdGE7IH0sCiAgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNp
emU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggYzI3YzkyNjlm
ZmVmMjQ5YWI1ZThhYmEyNGQ3NjJmYzQwYzFjMjMwMC4uMzQ4NGE2YTUzYjgwNDA2NGJlNTdhMjgz
ZWY0MThhOGE2MmQ1ODlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
QEAgLTE3OCwxMiArMTc4LDEzIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+Jik+JikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0
IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBmb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoUmVm
PFNoYXJlZEJ1ZmZlcj4mJik+JikgY29uc3Q7CiAKICAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdl
YkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hl
biB1c2luZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0
IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsK
LSAgICAgICAgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50OworICAgICAgICBjb25zdCBSZWY8Y29u
c3QgRGF0YVNlZ21lbnQ+IHNlZ21lbnQ7CiAgICAgfTsKICAgICB1c2luZyBEYXRhU2VnbWVudFZl
Y3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVu
dFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRz
LmJlZ2luKCk7IH0KQEAgLTI1OSw3ICsyNjAsMTAgQEAgcHVibGljOgogICAgICAgICBpZiBjb25z
dGV4cHIgKCFzaXplb2YuLi4oQXJncykpCiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoKSk7CiAgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4o
QXJncykgPT0gMQotICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRh
U2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBS
ZWY8Y29uc3QgRGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAg
ICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAg
JiYgKHN0ZDo6aXNfc2FtZV92PHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJl
bmNlX3Q8QXJncz4+LCBEYXRhU2VnbWVudD4gJiYuLi4pKQogICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CkBAIC0yODYsOCAr
MjkwLDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRC
dWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXIoY29uc3QgRGF0YVNlZ21lbnQmIHNlZ21lbnQpCisg
ICAgICAgIDogU2hhcmVkQnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVudD4geyBzZWdtZW50IH0p
IHsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKQEAgLTM1OSw3ICszNjUsNyBA
QCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmV4dHJhY3RE
YXRhKCkKIAogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFdFQkNP
UkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90
IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBz
dGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJl
Zjxjb25zdCBEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwg
c2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudC0+
ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7IH0KQEAgLTM3MCw3ICszNzYsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRh
KCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBt
X3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAg
ICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVf
dCBtX3NpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCA4ODY5MWRjMjU2
ZDZkZDZjNDVmNDZlMDE1NDk2NzQyNDVhYTM1MzM3Li5jOTU4Zjg0NGRhYzE0Mzk0ZTI0ZGVmZWFi
YTc1NGY5ZDhhODEyOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNTEsOSAr
NTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkp
OyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9u
ZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIC8vIFRoaXMgbWV0aG9k
IHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyLgotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxl
bmd0aCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9y
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBlYzBhN2FjZjQ3MzI2
MWM3NGU3ZWVmZmFkYzljY2MzYzNlNTdmMjI4Li43NzA4YTU4ZDJiNTgwOGI5NDAwMmQyMDVlOThh
MjdiYjJjZTZmMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNG
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBXZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkNvcmVBVkNGUmVzb3Vy
Y2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVp
bnQ4X3QqLCBpbnQpCit2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAg
ZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2UpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNG
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKaW5kZXggY2RmMTQzZjNjM2Nk
ZTk3MWZkNzlkY2Y3MzI4YmZjZDdiMzI2MDJkYy4uNjI2N2JlMDBjNTRlZTYxNzAyZmI3N2IyYTVm
YjU2N2IyN2ViOWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZS
ZXNvdXJjZUxvYWRlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Ly8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCmluZGV4IGY5MjFmM2RhMGU2OWIzMzk5NzdjOWUzZTQ5NjY3YTI4ZjVl
OTVjYmQuLjcyNjQ3MjVjOGU1NjIyZGYzOGI0NWJjZDk5YWM3ODc1NWI5ZWI4ODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAg
LTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Ci0gICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5h
bDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZnVsZmlsbFJlcXVl
c3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgTgogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12
b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIENhY2hlZFJlc291cmNlTWVk
aWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKCZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAg
ICBpZiAoYXV0byogZGF0YSA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCkBAIC0xNTYsNyAr
MTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkp
OyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZv
aWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1
bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBs
b2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVy
cm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KQEAgLTIx
MSw5ICsyMTEsOSBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlz
aGVkKCkKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVJl
c291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIpOwogICAgIG1fcGFyZW50Lm5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDkzMDE5MDk5NDViNGEyM2Q2
Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIuLmI3YjA3ZmYxNDU0ZDU2MWEzMDIxMDhhZTMyMjkxZThm
ODM0MzdiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9h
ZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0
cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMp
OwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dF
Ql9TUkMobV9zcmMuZ2V0KCkpOwpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgdm9pZCBDYWNoZWRSZXNv
dXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlZjxGcmEKICAgICAvLyB0aGF0IGZpcnN0IHBhY2thZ2UgZGVsaXZlcnkgd291bGQgaW5jbHVk
ZSB0aGUgdGltZSBvZiBzZW5kaW5nIG91dCB0aGUgcmVxdWVzdCBhbmQgZ2V0dGluZyB0aGUgZGF0
YSBiYWNrLiBTaW5jZSB3ZSBjYW4ndCBkaXN0aW5ndWlzaCB0aGUKICAgICAvLyBzZW5kaW5nIHRp
bWUgZnJvbSB0aGUgcmVjZWl2aW5nIHRpbWUsIGl0IGlzIGJldHRlciB0byBpZ25vcmUgaXQuCiAg
ICAgaWYgKCFzdGQ6OmlzbmFuKG1lbWJlcnMtPmRvd25sb2FkU3RhcnRUaW1lKSkgewotICAgICAg
ICBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyArPSBidWZmZXItPnNpemUoKTsKKyAgICAg
ICAgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgKz0gZGF0YS5zaXplKCk7CiAgICAgICAg
IGRvdWJsZSB0aW1lU2luY2VTdGFydCA9IChXYWxsVGltZTo6bm93KCkgLSBtZW1iZXJzLT5kb3du
bG9hZFN0YXJ0VGltZSkuc2Vjb25kcygpOwogICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywg
IlIldTogZG93bmxvYWRlZCAlIiBHX0dVSU5UNjRfRk9STUFUICIgYnl0ZXMgaW4gJWYgc2Vjb25k
cyA9fiAlMS4wZiBieXRlcy9zZWNvbmQiLCBtX3JlcXVlc3ROdW1iZXIsIG1lbWJlcnMtPnRvdGFs
RG93bmxvYWRlZEJ5dGVzLCB0aW1lU2luY2VTdGFydAogICAgICAgICAgICAgLCB0aW1lU2luY2VT
dGFydCA/IG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzIC8gdGltZVNpbmNlU3RhcnQgOiAw
KTsKQEAgLTExMTUsMjAgKzExMTUsMTkgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0Ns
aWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmEKICAgICAg
ICAgbWVtYmVycy0+ZG93bmxvYWRTdGFydFRpbWUgPSBXYWxsVGltZTo6bm93KCk7CiAgICAgfQog
Ci0gICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAg
ICBpbnQgbGVuZ3RoID0gc2VnbWVudC5zaXplKCk7Ci0gICAgICAgIEdTVF9MT0dfT0JKRUNUKHNy
YywgIlIldTogSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgbV9yZXF1ZXN0TnVtYmVyLCBsZW5ndGgp
OworICAgIGludCBsZW5ndGggPSBkYXRhLnNpemUoKTsKKyAgICBHU1RfTE9HX09CSkVDVChzcmMs
ICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51bWJlciwgbGVuZ3RoKTsK
IAotICAgICAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVuZ3RoOwotICAgICAgICBBU1NF
UlQoIW1lbWJlcnMtPmhhdmVTaXplIHx8IG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA8PSBtZW1iZXJz
LT5zaXplKTsKKyAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVuZ3RoOworICAgIEFTU0VS
VCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBvc2l0aW9uIDw9IG1lbWJlcnMt
PnNpemUpOwogCi0gICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9D
QVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAot
ICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcoIndlYmtpdC1uZXR3b3JrLXN0YXRpc3RpY3Mi
LCAicmVhZC1wb3NpdGlvbiIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnJlYWRQb3NpdGlvbiwg
InNpemUiLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5zaXplLCBudWxscHRyKSkpOworICAgIGdz
dF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNzYWdl
X25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAorICAgICAgICBnc3Rfc3RydWN0dXJl
X25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFkLXBvc2l0aW9uIiwgR19UWVBF
X1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIsIEdfVFlQRV9VSU5UNjQsIG1l
bWJlcnMtPnNpemUsIG51bGxwdHIpKSk7CisKKyAgICBjaGVja1VwZGF0ZUJsb2Nrc2l6ZShsZW5n
dGgpOworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVmZmVyTmV3V3JhcHBlZEZhc3QoZmFz
dE1lbUR1cChkYXRhLmRhdGEoKSwgbGVuZ3RoKSwgbGVuZ3RoKTsKKyAgICBnc3RfYWRhcHRlcl9w
dXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7CiAKLSAgICAgICAgY2hlY2tVcGRh
dGVCbG9ja3NpemUobGVuZ3RoKTsKLSAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RCdWZm
ZXJOZXdXcmFwcGVkRmFzdChmYXN0TWVtRHVwKHNlZ21lbnQuZGF0YSgpLCBsZW5ndGgpLCBsZW5n
dGgpOwotICAgICAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1
ZmZlcik7Ci0gICAgfSk7CiAgICAgc3RvcExvYWRlcklmTmVlZGVkKHNyYywgbWVtYmVycyk7CiAg
ICAgbWVtYmVycy0+cmVzcG9uc2VDb25kaXRpb24ubm90aWZ5T25lKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwCmluZGV4IGJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQyYmU0ZTJiZDExYWE4NDMuLmRjYWM1
OTk3YTYxMzVkMmFiNzU5YTdhZDJlYmIwNDM1MmQ1MTRhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBA
IC0zNiw5ICszNiwxMSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3VyY2VIYW5kbGVDbGll
bnQoKSA9IGRlZmF1bHQ7CiAKIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVD
bGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewot
ICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgYnVmZmVyLmZvckVh
Y2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgZGlk
UmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB9KTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGM0ZjA1NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5
NmVjMmI0YTUuLmU0NDJjOTczNGMxMTk4NDkwYTFjNmNhYzU3NzI1ZmQ1MTk2YjNiYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmgKQEAgLTQ0LDEzICs0NCwxNCBAQCBPQkpDX0NMQVNTIE5TQ2FjaGVkVVJMUmVzcG9u
c2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsK
IGNsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3Mg
TmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3Vy
Y2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9y
YWdlQWxsb3dlZCwKQEAgLTY1LDkgKzY2LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNT
ZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUq
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsK
LSAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBTaGFyZWRCdWZmZXImLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgp
OworCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcApp
bmRleCA0YzA0MjEwYzVhNTEzYWMzZjU0NzE0NmQ5Zjg1YzgyYmQ4ODEzNzc2Li4zMGI0YmIwZmRh
ZWY3YWUyY2M3NGFjNjA5ZjdiMDA5OTdlNWE2ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcApA
QCAtNzEsOSArNzEsOSBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUgogICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQordm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKIHsKLSAgICBtX2RhdGEuYXBwZW5kKGRh
dGEsIGxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKIH0KIAogdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xv
YWRlckNsaWVudC5oCmluZGV4IDY4MzhlOWQ4Y2Y0Mzc5NmQyZjM5NGJhMWY1NGYwOWQwYjY3ZThh
YmQuLmM0Y2I3MmRjN2E2NTVmZDM2OTZhMzMzZmUwNWNkZWQ2Mjk3NmFmYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50LmgKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBTaGFyZWRCdWZmZXI7CisKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVl
PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1
ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTeW5jaHJvbm91c0xvYWRlck1lc3Nh
Z2VRdWV1ZSk7IH0KQEAgLTY2LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERh
dGFMZW5ndGgqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICNpZiBVU0UoUFJPVEVD
VElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmlu
ZGV4IGZjMjcyNTQwODkyYjhlMmNkNzdkZThmNmQ5ZTU0YThjOGI1OTdmNjEuLjE5ODE0YTM2NWM5
ZjY2MWEyMWMyMjlhZGJkMDQ2MTFjMjA5NDdlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0
b3IubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6Omdp
dmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogCiAgICAg
ICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIgPSBzdGQ6Om1pbihidWZm
ZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUluZGV4ICsgMSk7CiAgICAgICAgICAgICBi
eXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXI7Ci0gICAgICAgICAgICBbdGFz
ayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpTaGFyZWRCdWZmZXJEYXRhVmlldyhidWZm
ZXJWaWV3LCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcikuY3JlYXRlU2hhcmVkQnVmZmVyKCld
OworICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZERhdGE6U2hhcmVk
QnVmZmVyRGF0YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIpLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKV07CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsKICAgICAgICAgICAgIFt0YXNrIHJlc291cmNl
RmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwpAQCAtMjM4
LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZpbmFsCiAg
ICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1fZ2Vu
ZXJhdG9yKQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEg
PSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRh
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoYnVmZmVyKTsKICAgICAg
ICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRh
dGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCBmOTA5NmVlMmU5ZjI0MmZm
MDRkNzA1YzJhYTEwOTNhNTVlNTczNWRiLi5lYTRhOWJmMjk3ODI5ZWJkMDI5MTQ3NmNiZjhhN2U1
NDk0NzIxMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtMTU4LDcgKzE1OCw3IEBAIFdF
QkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsK
IC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFs
Qnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0g
KHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAt
IChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CistICh2b2lkKXJlc291cmNlOihudWxsYWJs
ZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YToo
UmV0YWluUHRyPE5TRGF0YT4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFu
ZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxh
YmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdp
dGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0KaW5kZXggNWUyZThlOGQ5ZDc2NjcyYTI0MTRmNzZmNWMwOGYyNTllMDI5ZjUw
NC4uM2M4YmUwOGMyOTM0ZTU0ZGEzYjc0OWNhNmRhMzRlZGE5NmRjOWI4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGly
ZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9u
ZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02
NTIsMTMgKzY1MiwxMyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6
c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwogICAgIHJldHVybiBbbV90
YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0K
IAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAg
aWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJl
c291cmNlIHJlY2VpdmVkRGF0YTpXVEZNb3ZlKGJ1ZmZlcildOworICAgIFttX3Rhc2sgcmVzb3Vy
Y2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpidWZmZXIuY3JlYXRlTlNEYXRhKCldOwogfQogCiB2
b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6cmVkaXJlY3RSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05MzEsMTUgKzkz
MSwxNCBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRw
SGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQog
Ci0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2Vp
dmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YQorLSAo
dm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERh
dGE6KFJldGFpblB0cjxOU0RhdGE+JiYpZGF0YQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3Vy
Y2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Np
b24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0s
IGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCku
Y291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOworICAgICAgICBzdHJvbmdTZWxm
LmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IFtkYXRhIGxlbmd0aF07CiAgICAgICAgIGlk
PE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lv
bkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAg
ICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Np
b246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCi0gICAgICAgICAgICBbZGF0YURlbGVnYXRl
IFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRh
VGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2VpdmVE
YXRhOm5zRGF0YS5nZXQoKV07CisgICAgICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246
KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxT
ZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2VpdmVEYXRhOmRhdGEuZ2V0
KCldOwogICAgIH1dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXggZjMyM2FmMjY0MDE2YjY2
MzkzMTFhYzIzMjQ2ZWM1ZWQ4MGEzOTU0NS4uM2JkMmNjNzQyODZlYzQ2Nzg2NDAyNDhjNWUxY2Zl
Y2M1YTAyNjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIGJvb2wg
Q3VybENhY2hlTWFuYWdlcjo6Z2V0Q2FjaGVkUmVzcG9uc2UoY29uc3QgU3RyaW5nJiB1cmwsIFJl
c291cmNlUmVzcG9uc2UmIHJlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEN1cmxDYWNo
ZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiBqb2IsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI1NSwxMSArMjU1LDExIEBA
IHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUmIGpv
YiwgY29uc3QgdWludDhfdCogZGF0YSwKICAgICAgICAgaWYgKGl0LT52YWx1ZS0+Z2V0Sm9iKCkg
IT0gJmpvYikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIWl0LT52YWx1ZS0+
c2F2ZUNhY2hlZERhdGEoZGF0YSwgc2l6ZSkpCisgICAgICAgIGlmICghaXQtPnZhbHVlLT5zYXZl
Q2FjaGVkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKQogICAgICAgICAgICAgaW52YWxp
ZGF0ZUNhY2hlRW50cnkodXJsKTsKIAogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fY3Vy
cmVudFN0b3JhZ2VTaXplICs9IHNpemU7CisgICAgICAgICAgICBtX2N1cnJlbnRTdG9yYWdlU2l6
ZSArPSBkYXRhLnNpemUoKTsKICAgICAgICAgICAgIG1fTFJVRW50cnlMaXN0LnByZXBlbmRPck1v
dmVUb0ZpcnN0KHVybCk7CiAgICAgICAgICAgICBtYWtlUm9vbUZvck5ld0VudHJ5KCk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlTWFuYWdlci5oCmluZGV4IGM5ZTI5ZDgwOTcwYzQwNDZlNzk2MTYyYmQ5ODMyOTEx
YjZkZWU2OGMuLmI2NWI5NjNiNjhlNmE2OGQ5ODE5M2FhZjczZjEwODAzZDk3ZmNkMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRDYWNoZWRS
ZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmLCBSZXNvdXJjZVJlc3BvbnNlJik7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYsIGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNl
SGFuZGxlJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7IC8vIFNhdmUgZGF0YQogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSYpOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJj
ZUhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IDM0OTQ0NTkyNTRhYzkzZmMxOWNiMTIxNTBhNjFi
YzJiY2VkMDJkNmUuLmFhZjBjOGQ5NDA3MDU1ZDY4YTA1NWZiMzUwNzk2N2RlNGMwMDg2ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93
bmxvYWQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRS
ZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwb25zZSYmIHIKIH0K
IAogCi12b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3Qm
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxEb3dubG9h
ZDo6Y3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMTExLDcgKzExMSw3
IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICht
X2xpc3RlbmVyKQotICAgICAgICBtX2xpc3RlbmVyLT5kaWRSZWNlaXZlRGF0YU9mTGVuZ3RoKGJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9saXN0ZW5lci0+ZGlkUmVjZWl2ZURhdGFPZkxlbmd0
aChidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRDb21wbGV0
ZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgTmV0d29ya0xvYWRNZXRyaWNzJiYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKaW5kZXgg
Y2RlNDQ0NTc3NWY3NDQyMzMwNTMwYjY1YjEzNTdiYTZiZmQ5YmI4MS4uYTEyMDc1ODM0OTNmNzgz
Mzc1NmQzYzQ5ODdjZjVjOTVkZmE5NzljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VIYW5k
bGU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxEb3dubG9hZExpc3RlbmVyIHsK
IHB1YmxpYzoKQEAgLTcyLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8Q3VybFJlcXVlc3Q+
IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY3VybERpZFNl
bmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxv
bmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVx
dWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZl
QnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3QgU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVl
c3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFp
bFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZv
JiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggMDkwZDAzOWJhNDVk
ZTEwMjhlZGY3Njg0YzZkN2QyZjI5NmUzYTM0ZC4uZDFlNTg2MjRhYWVlMmVjZTgxMjlkZDM0ZWE5
ODY2MjZlNmNkZjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5LDEyICsxMTks
MTIgQEAgQ3VybE11bHRpcGFydEhhbmRsZTo6Q3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlw
YXJ0SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnMKIAogfQogCi12b2lkIEN1cmxNdWx0aXBhcnRI
YW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAg
ICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0
aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGUuaAppbmRleCA5YTFhMWJiZDE5MzhhMTRmNjlmY2NlZTNmMGY4OWI5N2E0
YTIxODc0Li41YzA4YmNjNWViM2U0YmJjYzAyOWI0NzY3ODY4ZjQzZTJmOTVjMzQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVs
dGlwYXJ0SGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50OwogY2xhc3MgQ3VybFJlc3BvbnNlOwotY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
Q3VybE11bHRpcGFydEhhbmRsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00
NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDdXJsTXVsdGlwYXJ0SGFuZGxlKEN1cmxNdWx0aXBh
cnRIYW5kbGVDbGllbnQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+Q3VybE11bHRpcGFydEhhbmRs
ZSgpIHsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsK
ICAgICB2b2lkIGRpZENvbXBsZXRlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGVDbGllbnQuaAppbmRleCBjODEzODg2YThkNWM1ZmE2YzEyZDE0MTMzMTkxMDFhZjI1MDJhMmFk
Li5kZjc2MzdkZTlkOWZmMmI2YjEwODU1ZDBjNTc3MTI1NTM0YjJhNmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVs
dGlwYXJ0SGFuZGxlQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewogcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0
b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVs
dGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7
CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCgpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHAKaW5kZXggYmFjYjJiNTUwYjI4NDEzMWQxYWMyMGFhNjYzODg2ZmUyMmZlN2Y5OC4uZDBlZjBl
NzExNjJiNTM2M2FkNDI1NDE3ZDg1ZWM3MjM4ZjNmNjJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0zOTYsNyAr
Mzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhl
YWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwgaGVhZGVycyBoYXZlIGJlZW4g
cHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogCi1zaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3NpemVfdCBD
dXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBA
IC00MTEsNyArNDExLDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBDVVJMX1dS
SVRFRlVOQ19QQVVTRTsKICAgICB9CiAKLSAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci0+
c2l6ZSgpOworICAgIGF1dG8gcmVjZWl2ZUJ5dGVzID0gYnVmZmVyLnNpemUoKTsKICAgICBtX3Rv
dGFsUmVjZWl2ZWRTaXplICs9IHJlY2VpdmVCeXRlczsKIAogICAgIHdyaXRlRGF0YVRvRG93bmxv
YWRGaWxlSWZFbmFibGVkKGJ1ZmZlcik7CkBAIC00MjAsOCArNDIwLDggQEAgc2l6ZV90IEN1cmxS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiAgICAgICAgIGlmIChtX211bHRpcGFydEhhbmRsZSkKICAgICAgICAgICAgIG1fbXVsdGlw
YXJ0SGFuZGxlLT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOwogICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oQ3VybFJlcXVlc3Qm
IHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgIGNsaWVudC5jdXJsRGlkUmVjZWl2ZUJ1ZmZlcihyZXF1ZXN0LCBXVEZNb3ZlKGJ1ZmZl
cikpOworICAgICAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0gUmVmIHsgYnVmZmVyIH1dKEN1
cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVxdWVzdENsaWVudCYgY2xpZW50KSB7CisgICAgICAg
ICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0LCBidWZmZXIpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00NDQsMTYgKzQ0NCwxNiBAQCB2b2lk
IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaGVhZGVycykKICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2Us
IEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJv
bU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1
cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byByZWNlaXZlQnl0ZXMgPSBidWZmZXItPnNpemUoKTsKKyAgICBh
dXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci5zaXplKCk7CiAKICAgICBpZiAocmVjZWl2ZUJ5dGVz
KSB7Ci0gICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oQ3VybFJl
cXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAg
ICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlQnVmZmVyKHJlcXVlc3QsIFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFJlZiB7IGJ1ZmZlciB9XShDdXJs
UmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQmIGNsaWVudCkgeworICAgICAgICAg
ICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0LCBidWZmZXIpOwogICAgICAgICB9
KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5oCmluZGV4IGE2ZmIzMTU3NjZiYTVjMmYzZWEzMmI5ZWY1MWViMDAzZThj
Yjg5ZDAuLjkyYjc0Njk3YmMzMTc1Y2UwY2RhZGYxNTFmYTI1NDNhMDNlMTE5ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBA
IC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICBDVVJMKiBzZXR1cFRyYW5zZmVyKCkgb3Zl
cnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6ZV90LCBzaXplX3QpOwog
ICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKLSAgICBzaXplX3QgZGlkUmVj
ZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHNpemVfdCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVIZWFk
ZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tcGxldGVUcmFuc2ZlcihD
VVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFuc2ZlcigpIG92ZXJyaWRl
OwogICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAppbmRleCAzNDc5
ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2YWU3Li43MzAzM2YwZWY0ZWI0ZGYyMWFi
NzY0NjNjYzM5ODE5YjI4Njc4NDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaApAQCAtMzQsNyArMzQsNyBA
QCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxSZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtM
b2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsUmVxdWVzdENsaWVudCB7
CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBj
dXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2Um
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVz
dCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29y
a0xvYWRNZXRyaWNzJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZEZhaWxXaXRoRXJy
b3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSA9IDA7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggMzA1ZDRlNWM5
ZmMyNzA3NzU3ODdiMGY5YTkxOTc5YzA4ODg5YThhNi4uMzg5N2UwMWM2ZDA3NjZkYWNmM2UxOWIy
MzczMzZmNWI1NWNlNTI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3Bw
CkBAIC0xNDIsMTYgKzE0MiwxNSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpj
dXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgIH0pOwog
fQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3Zv
aWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVx
dWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKTsKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YSht
X2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAg
Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNC
dWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9u
KCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlcik7CisgICAgY2xpZW50KCktPmRpZFJl
Y2VpdmVCdWZmZXIoJm1faGFuZGxlLCBidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lk
IEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3Qm
LCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuaAppbmRleCBkYWYwYTU5YTRlNTg2ZDcxMTRhYmI0ZTVlZjljNTRmNmE4YmVmYzcwLi4w
MjRiYzRlOWFlMzFkZjI1YThmOWI3MGNiYTI4MWZhY2VhYzhjZjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwogY2xh
c3MgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgQ3VybFJlcXVlc3RDbGll
bnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1NCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7
CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3Bv
bnNlJiYpIGZpbmFsOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3Qm
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjdXJsRGlk
UmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAg
ICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYm
KSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcAppbmRleCBjMDcw
NGYwY2RkNjQ0MjM3M2Y3YjcwYmZlNjE1MzliZjViMzdkNjI1Li4zNjY1OGY5MWRjOWQ2NzIzMGIy
MzllNDk3YzAwMDBhYzYyYWFlOTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCkBAIC05LDcgKzksNyBAQAogICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAKKyAqCiAgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCiAgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJDdXJsU3RyZWFtLmgiCiAKICNpbmNsdWRlICJDdXJsU3RyZWFt
U2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0
U3RyZWFtRXJyb3IuaCIKIAogI2lmIFVTRShDVVJMKQpAQCAtMTI5LDEwICsxMzAsMTAgQEAgdm9p
ZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUoKQogICAgIGlmICghbV9jdXJsSGFuZGxlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlY2VpdmVCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8
dWludDhfdD4oa1JlY2VpdmVCdWZmZXJTaXplKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmVjZWl2
ZUJ1ZmZlcihrUmVjZWl2ZUJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBieXRlc1JlY2VpdmVkID0g
MDsKIAotICAgIGF1dG8gZXJyb3JDb2RlID0gbV9jdXJsSGFuZGxlLT5yZWNlaXZlKHJlY2VpdmVC
dWZmZXIuZ2V0KCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNlaXZlZCk7CisgICAgYXV0
byBlcnJvckNvZGUgPSBtX2N1cmxIYW5kbGUtPnJlY2VpdmUocmVjZWl2ZUJ1ZmZlci5kYXRhKCks
IGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNlaXZlZCk7CiAgICAgaWYgKGVycm9yQ29kZSAh
PSBDVVJMRV9PSykgewogICAgICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX0FHQUlOKQogICAg
ICAgICAgICAgbm90aWZ5RmFpbHVyZShlcnJvckNvZGUpOwpAQCAtMTQzLDggKzE0NCw5IEBAIHZv
aWQgQ3VybFN0cmVhbTo6dHJ5VG9SZWNlaXZlKCkKICAgICBpZiAoIWJ5dGVzUmVjZWl2ZWQpCiAg
ICAgICAgIGRlc3Ryb3lIYW5kbGUoKTsKIAotICAgIG1fc2NoZWR1bGVyLmNhbGxDbGllbnRPbk1h
aW5UaHJlYWQobV9zdHJlYW1JRCwgW3N0cmVhbUlEID0gbV9zdHJlYW1JRCwgYnVmZmVyID0gV1RG
TW92ZShyZWNlaXZlQnVmZmVyKSwgbGVuZ3RoID0gYnl0ZXNSZWNlaXZlZF0oQ2xpZW50JiBjbGll
bnQpIG11dGFibGUgewotICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1
ZmZlci5nZXQoKSwgbGVuZ3RoKTsKKyAgICByZWNlaXZlQnVmZmVyLnJlc2l6ZShieXRlc1JlY2Vp
dmVkKTsKKyAgICBtX3NjaGVkdWxlci5jYWxsQ2xpZW50T25NYWluVGhyZWFkKG1fc3RyZWFtSUQs
IFtzdHJlYW1JRCA9IG1fc3RyZWFtSUQsIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUocmVjZWl2ZUJ1ZmZlcikpXShDbGllbnQmIGNsaWVudCkgeworICAgICAgICBjbGllbnQu
ZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlcik7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCmluZGV4IDRm
NTliMjBlOGRiMjc5MDM5OTRiMzMxNTRjZTY0YjA5OTRmM2EwYmEuLmU4YTMyYzI2NDYxYjQzMDhl
YTIyN2M2ZGY4Yzk3MjQzOTkwNWQwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaApAQCAtOSw3ICs5LDcgQEAKICAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCisgKgogICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwogICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCkBAIC0zMyw2ICsz
Myw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxTdHJlYW1TY2hlZHVsZXI7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvcjsKIAogdXNpbmcg
Q3VybFN0cmVhbUlEID0gdWludDE2X3Q7CkBAIC00Niw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKEN1cmxTdHJlYW1JRCkgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoQ3VybFN0cmVhbUlELCBzaXplX3QpID0g
MDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29u
c3QgdWludDhfdCosIHNpemVfdCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwgQ1VSTGNvZGUpID0gMDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCBiODA0ZmRlMDk3M2JiZmIyODMzMWNmN2Mz
YTFmMjBiMDQzZTc0ZmU4Li4zNjZiMDU5YzAyODA0YjE5OWM4ODZhOWMyYzY3MjczZjkyNGYyZWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTU5LDkgKzU5LDEwIEBAIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZEludGVybmFsKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7CiAKKyAgICAvLyBD
dXJsU3RyZWFtOjpDbGllbnQKICAgICB2b2lkIGRpZE9wZW4oQ3VybFN0cmVhbUlEKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90KSBmaW5hbDsKLSAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVfdCkg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChDdXJsU3RyZWFtSUQsIENVUkxjb2Rl
KSBmaW5hbDsKIAogICAgIGJvb2wgaXNTdHJlYW1JbnZhbGlkYXRlZCgpIHsgcmV0dXJuIG1fc3Ry
ZWFtSUQgPT0gaW52YWxpZEN1cmxTdHJlYW1JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsQ3VybC5jcHAKaW5kZXggNGI5NDkxYzExNTQzZjJiNjBmMTJkMzZlOWU2YTBjYmFhZTM0YTcy
ZS4uYThmNTdhNzJkMGVhY2NhNzc1NWJlODRmY2FhMWM5YmYxMDk1OGMwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNsdWRl
ICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRp
bmdzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFt
RXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKICNpbmNsdWRl
ICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCkBAIC0xMDQsMTIgKzEwNSwxMiBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90IGxl
bmd0aCkKICAgICBzZW5kUGVuZGluZ0RhdGEoKTsKIH0KIAotdm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsOjpkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgpCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJlY2VpdmVE
YXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmICht
X3N0YXRlICE9IE9wZW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZEZhaWwoQ3VybFN0cmVhbUlE
LCBDVVJMY29kZSBlcnJvckNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXgg
MWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUzMzlkZmQyYzNiNWRlYzI1Ny4uMGZlNjVhMjllNjM2MTZk
YjQyZjdjOWVhMWQxODUyMjFjMjAwNDBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQu
aApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5
UHJldmlld0xvYWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPExlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLm1tCmluZGV4IDMxNWUwNjUxNTMwZGNkYjAyODAxNjU0Yjc1N2Q4MTQ3M2MyMGZk
MzAuLmFlNzE1NWVjZWYzNWQzZTE4ODhkOTE2NTY0NTdlMzgxMTU5ZGY0MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0KQEAgLTMwMCw3ICszMDAsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbAogICAgICAg
ICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzkz
CiAgICAgICAgIC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFueSBkYXRhIGFib3V0IHRy
YW5zZmVyIHNpemUgdG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQogICAgICAgICAvLyBDb250
ZW50LUxlbmd0aCBoZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93IHRyYW5zZmVyIHNpemUu
Ci0gICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKKyAgICAgICAgbV9oYW5kbGUt
PmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSksIC0xKTsKICAgICB9OwogCiAgICAgW3NlbGYgY2FsbEZ1bmN0aW9uT25NYWlu
VGhyZWFkOldURk1vdmUod29yayldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKaW5kZXggMDhkMDU3YmJiNWYxN2MyMDQ1YmZmOTA2ZmY1YWRhODVmMTA0MjkzMC4uZjdm
MjY2Y2U4ZDgxOTEwNjBjODU3YTJmOGE2YWQ5ZmRlYmQ4MTgyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC01NDYsOCArNTQ2LDggQEAgRW5jb2RlZERhdGFT
dGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAg
ICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRl
ciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9h
ZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9z
dmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIo
KS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgZGF0
YSgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgbG9h
ZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoc2VnbWVudC5kYXRh
KCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVudEFzU2hh
cmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAgICBsb2FkZXIuYWN0aXZl
RG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShidWZmZXIpOwogICAgICAgICB9KTsK
ICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmVuZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAK
aW5kZXggODJhMmE4YzRiMThhY2NlNzk4YjI3YzJjOGQwMDk1ODlmZjc1Y2JhOC4uNGU4YWI3ODFh
NDA2MWFiMThjNTAzMzczYmRhMzhmNmM1NWQ4YTAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMTE1LDEyICsxMTUsMTIgQEAg
dm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIGNvbnN0IFIKICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsK
IH0KIAotdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sKQogewogICAg
IGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChidWZmZXIpOwogfQogCiB2
b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJl
cXVlc3QuaAppbmRleCBkYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5OGQ5OWI1MTc2YTM5Li43
Y2JhYThlNTUxMGM4YzRmY2FmMmViOTJjNmY3M2IzZDJhMTJjNjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTYzLDcgKzYzLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzV29ya2VyRm9udExvYWRSZXF1ZXN0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXgg
YmY1YTQ0ZmUzNDhkMmZmY2U5MTZmYjE5NDkxNWU2N2JmZGE5YWVjMS4uY2QyNmVjZDZhMzdhN2Vk
MzlmZjcxZWRkYTM1ZThlZmE5MGIzN2M0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgV29ya2VyU2Ny
aXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsCiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmll
ciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJM
ZW4pCiB7CiAgICAgaWYgKG1fZmFpbGVkKQogICAgICAgICByZXR1cm47CkBAIC0yMTIsMTMgKzIx
MiwxMSBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0Il9zLCAiVVRGLTgiKTsKICAgICB9CiAK
LSAgICBpZiAoIWxlbikKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIGlmIChsZW4gPT0gLTEpCi0gICAgICAgIGxlbiA9IHN0cmxlbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKLSAgICBtX3NjcmlwdC5hcHBlbmQobV9k
ZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CisgICAgc2l6ZV90IGxlbiA9IHVzZVN0ckxlbiA/
IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0YSgpKSkgOiBi
dWZmZXIuc2l6ZSgpOworICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZm
ZXIuZGF0YSgpLCBsZW4pKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBlYWFiZTFlYTVkMTNiMzNm
OWMzY2M2NmRkNDk1NTdlYjY5ZTM3ZWZjLi4wYmMzYTAyNWIzNjc5ZTI1NjMwODYyNGVlZWJhODlk
Y2NjNDVjODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImLCBib29sIHVzZVN0ckxlbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guaAppbmRleCBmYmEzNjMyMmIyOWE2ZDViNzk3YjM5ZWRjM2MzZDE3MTI0YjNiNWJjLi5jZTM3
MDk2ODlkOWYwOTIxZTA5MDNhMDM3N2RiMjY4YTU0NTBiMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlz
aChSZWY8Rm9ybURhdGE+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA5YjExMmI5ZGIyY2Q4NGQwMzJm
NTlkYWZhOGU4ZTM4ZTA3MGU1M2Y3Li5kYzNhZWE4Y2FkOWQwOTZiNDJiY2E2NWIyNjEyMzJmMTM3
NDNkMWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTEwMzQsNyAr
MTAzNCw3IEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRl
RGVjb2RlcigpIGNvbnN0CiAgICAgcmV0dXJuIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgi
dGV4dC9wbGFpbiIsICJVVEYtOCIpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQordm9pZCBYTUxIdHRwUmVxdWVz
dDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3Ry
TGVuKQogewogICAgIGlmIChtX2Vycm9yKQogICAgICAgICByZXR1cm47CkBAIC0xMDUyLDE3ICsx
MDUyLDE2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW4pCiAgICAgaWYgKHVzZURlY29kZXIgJiYgIW1fZGVjb2RlcikKICAg
ICAgICAgbV9kZWNvZGVyID0gY3JlYXRlRGVjb2RlcigpOwogCi0gICAgaWYgKCFsZW4pCisgICAg
aWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChsZW4gPT0g
LTEpCi0gICAgICAgIGxlbiA9IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihk
YXRhKSk7CisgICAgc2l6ZV90IGxlbiA9IHVzZVN0ckxlbiA/IHN0cmxlbihyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0YSgpKSkgOiBidWZmZXIuc2l6ZSgpOwogCiAgICAg
aWYgKHVzZURlY29kZXIpCi0gICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShkYXRhLCBsZW4pKTsKKyAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5k
KG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGxlbikpOwogICAgIGVsc2UgewogICAg
ICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLmFwcGVuZChkYXRhLCBsZW4pOworICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5h
cHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICBpZiAoIW1fZXJyb3IpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMmQxM2JlYzM5NDY0NDhiOWI0ZjkyNWQzMmJkODZiYTJk
ODAzNzc1YS4uNmJmMTlmODJiZDJmZjc2NzA3ZGE0NTcxNDc1MDdlOTkxZDI0NjVkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTE2Miw3ICsxNjIsNyBAQCBwcml2YXRlOgog
ICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9v
bCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRl
bnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlzRG9uZShib29sKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNw
cAppbmRleCA2MTdmNDc2ODk1NjQyZGVjMjMyNTRiNTQwZWU4MTkxMWFjNGEyZGY2Li43ZjUxMmM2
YzExYThlNzEwOGNmMDA2MmI1ODRkMjdiNTg5MDhkMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgogI2luY2x1ZGUg
IlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTk2LDEwICs5NywxMCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3Vy
Y2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVT
ZQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRl
c1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNv
dXJjZTo6ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUo
ZGF0YSkpOworICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhKTsKIH0K
IAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAppbmRleCA1YjdhN2UyYTc0MjQ0MzJkODZj
YjI4YTFiZTcxNzE4YTE2NzM3NWU3Li45NTEwNmY2NzIyNzNiNDVmMGEyNGE0N2ExYTJiZGQxNDA5
ZTBmNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTcsNyAr
NTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKTsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2
ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
KT4mJik7CiAgICAgdm9pZCBkYXRhU2VudCh1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICB2
b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
ICAgICB2b2lkIGxvYWRGaW5pc2hlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1Bl
bmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
UGVuZGluZ0Rvd25sb2FkLmgKaW5kZXggNzFmZDAyMjI5YmJiMWM1NzMyNmZkZmNmZTI2YzExZjc2
MWFiY2Y3Mi4uMDU0Yjg5M2UxMTExMGRjZjlhNzAwMjUyZjRmNzk1YjAxYTU4N2I5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGlu
Z0Rvd25sb2FkLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dl
ZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsg
fTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCmlu
ZGV4IDk1ODYwOTFlYTAwNDFiNmYxNTg2OWQ0MmJiZGE3MjQzMjk3NjkwZWMuLmJhOGQwNDhmNjVk
YzMzOTg0ZjBjZDQ3NjM1YWI5MTAxODc5YmQzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAK
QEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJgogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKQordm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQ09SU19DSEVDS0VSX1JF
TEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXgg
NTA1YTRlZmU1NzFkNDg5ZTUwYTk4OGJlYjgxODViN2ZlYWIzZGIxMC4uMGNiMzE1ZmQ4ZmY1MzE5
OTE1N2RlNzhmODQ1MmQ3MWM0ZjVlMjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC0zNyw2
ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
JiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lk
IHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFzay5oCmluZGV4IDRiOWVlNTc0YjkyYzdjMzcxN2E0YmMyODE5YTZiZTNhMTkw
NjU3MTUuLmY0NzllMDkwMmIyMTc5Mjk1NWQzNzY4MTRiMjFjODlmZjU1ZGI1ODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApAQCAtNDMsNyAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWlu
dDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdh
c0Jsb2NrZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwCmluZGV4IDhjMTA0ZDgxNjBiN2FhZmQwOTk3MTVkYTZkNGU2ZjdjNDYzN2ZhMDguLjYw
YjY5YTkzNmJiNzhkZjI1MTA3NDljNzU0ZmU2YWEyMjkzZmUwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNTQsMTEgKzI1NCwxMCBAQCB2
b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlLCBOZWdvdGlhdAogICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVSZXNw
b25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
Ci12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgdGhlIGVuY29kZWQgZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVjb2RlZCBkYXRhIGxlbmd0
aC4KLSAgICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsKLSAgICBtX2NsaWVudC5nZXQoKS5k
aWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgc2l6ZSk7CisgICAgbV9jbGllbnQuZ2V0
KCkuZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIE5l
dHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKaW5kZXggZTZhNzYx
MTU5NjJiOTY1OWU3YmZlNzhjNmY0ZGM2ZjUzMTJiM2NiZS4uMGU0YzFhZTQ5MjNjMzM3ZjVjZjli
MGE0MDhiNWE4ODIyOWY1OTY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5
dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2
b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDbGllbnQuaAppbmRleCAzNDhjZmZiOWU4ZTI1ZWU4M2JiYjM5YTAyY2Qz
Y2Y2ZDI4NTRkMzllLi44YTI4NTgyNjExM2Y5ZDhlZTY2MGRiNjg4YjNjNTM5M2ZmOTdiMmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5o
CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEo
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAzNmFjYzYzMTQ1ZjQwNWIx
OTU1ZDMzNTQwZGFhNzA4ZjlhNjI5MzQxLi5lNmZkMmFjNzBlYzdlMGU3NTkwYWRlMjcyZTE0Mjdm
Y2U5NmRkZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NjMsMjkgKzg2MywyOSBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c2VuZERpZFJlY2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdC
cm93c2luZ0NvbnRleAogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fbnVt
Qnl0ZXNSZWNlaXZlZCkKLSAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlQnVm
ZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVk
KSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwotICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCAr
PSBidWZmZXItPnNpemUoKTsKKyAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZl
RGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0l
ZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX251bUJ5dGVzUmVjZWl2ZWQg
Kz0gYnVmZmVyLnNpemUoKTsKIAogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlv
bik7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2
ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6
ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1D
YWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKLSAgICAgICAgaWYgKG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNh
Y2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5k
KGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUo
KSArIGJ1ZmZlci5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiAgICAgaWYg
KGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6
IEF0IGxlYXN0IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNv
dXJjZSBoYW5kbGUuCi0gICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVy
LT5zaXplKCk7CisgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLnNp
emUoKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0
YS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1
ZmZlcik7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2Rl
ZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAg
ICAgICByZXR1cm47CkBAIC0xMjczLDcgKzEyNzMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0
YUxlbmd0aCA9IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
QVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBjZjEwY2YwZTcxYTFiYzY1
NTQwZTg3ZDZiYTRjMWI5Yzg1NmMwYTFkLi44MTdhZWYyNmM4MzZjMzRhN2Q0NGVlN2NjOTVlZGQ5
YTI5OGQ2YTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZv
aWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGZpbmFsOwpAQCAtMTkzLDcgKzE5
Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgp
OwogICAgIHZvaWQgYnVmZmVyaW5nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc2VuZEJ1ZmZlcihX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3Ro
KTsKKyAgICB2b2lkIHNlbmRCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2b2lkIGNvbnN1bWVTYW5k
Ym94RXh0ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IGJjMmMzMzdl
NGVlZTAxYWY4M2UxMzY3MjMxN2E5YTllYWJjN2M2ZjguLmYwZWZkMDRiYjJlMThmNmYzY2JjMTYz
ZmFmMjNkYTA0NjZiZWU1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVQKICAgICBk
aWRGaW5pc2goeyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVE
YXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQordm9pZCBQaW5nTG9hZDo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBQSU5HX1JFTEVBU0VfTE9HKCJk
aWRSZWNlaXZlRGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IGU3ODA4ZDhlNjU1ODJmNzkzODg4MjhkNTE3
NThjYjE5M2NmNTVmYzcuLmIyMjVjNDdiOTRhZmEwYjQ0ZWRjMjY3MGRmYzU4YWQ3YWZjOTE0MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTU0LDcgKzU0LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdl
KFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMs
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRM
UywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZv
aWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0
ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4
IDE3ZDQ3OTA3YTNmNmVlNTJiZTY1MDFkMWRhYjBjYTYwNzUxZDZiMGIuLmFhYWUyYmZiZGY4M2Ez
OWFjZWMwNjNmZWIyNDQ2MTZkYzg0OGVkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJlY29u
bmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFJlc3BvbnNlQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUp
OwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQg
UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0
VGFzay5oCmluZGV4IDg1ODA4ZTEyMWI2OGNhOGI3M2UyNTE4ZDE5M2FiMzk1ODFlYWQxZTcuLjhj
NmIwZGVlZDY2YzUxMDE5YmU4OTg0ZWQ1Yjg3ZTBjMWQ3OTBmODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQg
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9h
ZFRhc2suY3BwCmluZGV4IDI1ZDRlMzdmOTQ1NGJlZTMyZjA0ZDhjYzhjNDcxZDVkM2Y3ZWQ4MmIu
LjhjOGRjMzZiMWU1MzkzOGY4MWViNGFiYWFmZjAxOTBmMmI1NGVkYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5j
bHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IgpAQCAtMTczLDcgKzE3NCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6c3Rh
cnQoKQogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX3BlbmRpbmdEb3du
bG9hZExvY2F0aW9uKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oCmluZGV4IGFiNTllYWU1MjY2NTMwNjIxMmEy
OGU5MzIzYTJiOGI0ZmZlMGM3OGYuLmI4OWFiM2ViZDc2MmY2ODEyYTVlOTdiZmY2OTBiYTkwZjAy
NTdmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaApAQCAt
MzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNl
OworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02
Niw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckRvd25sb2FkVGFzayhOZXR3
b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIERvd25sb2FkSUQpOwogCiAgICAgLy8gSVBD
IE1lc3NhZ2UKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7
CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrLm1lc3NhZ2VzLmluCmluZGV4IDFkM2JmYjdjYzMxMDk3OTljYzgwMDFiYmE3MWQ4
OWMwZjZmMmQ5MmYuLjUwZDJiNDJhNzFiMGVkYWI3OWZiY2U5ZGRiOWYxOTk4MmRiNTM1OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3Nh
Z2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2sgTm90UmVmQ291bnRlZCB7CiAgICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGVycm9yKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZFJlY2VpdmVEYXRh
KElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQog
ICAgIERpZFJlY2VpdmVGb3JtRGF0YShJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAg
RGlkRmluaXNoKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApp
bmRleCA0ZTc5MTliM2RkYzAyYWUxNGQwZWQ5Njg0YjhjNjhiYjZmMjhhNDM0Li40Zjc4YjlkZjU0
ZTVlNjc3ODc4NDEzNWEyN2EwM2RiYzYyOWJmZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnBy
b2Nlc3NSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvb2wgbgogICAgICAg
ICBtX2xvYWRlci5zZXRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiB9CiAKLXZvaWQgU2Vy
dmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRh
dGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1faXNEb25lKQogICAg
ICAgICByZXR1cm47CkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpsb2FkQm9keUZyb21QcmVsb2FkZXIoKQogICAgICAgICAgICAgZGlkRmluaXNoV2l0aE1l
dHJpY3MobV9wcmVsb2FkZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICBkaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVu
Y2UgeyBjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpIH0sIGxlbmd0aCk7CisgICAgICAgIGRp
ZFJlY2VpdmVEYXRhKFJlZiB7IGNvbnN0X2Nhc3Q8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciY+KCpjaHVuaykgfSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmgKaW5kZXggYzM0NTgwMjY3ZmIzMjY5ZTZkY2JkY2VmYzM0ZDA2
ODJjNmEwODg2Yy4uNTIyNWU1NDU5OTk1MWQ4ZjgxYzcwYWY4MmViYmEyNjg5ZTM1MDA2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBAIC00OCw2ICs0OCw3IEBAIG5h
bWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBG
b3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTkzLDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFNo
b3VsZFNldFNvdXJjZSA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVk
aXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgYm9vbCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYsIGlu
dDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNv
bnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAg
IHZvaWQgZGlkRmluaXNoV2l0aE1ldHJpY3MoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3Nh
Z2VzLmluCmluZGV4IDE4ZTYyOWYwZDE0NmVkMmQ0MjlkYjFiYTI4NzAxZTgzZmI5NmU2MmYuLjdk
YjUzZTliZDAzODA0NTQ3M2EyNWFmMzdkNDdjMTk1Nzk1ZTIzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3
IEBAIG1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgTm90UmVmQ291bnRlZCB7CiAg
ICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAg
RGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJv
b2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2
ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRh
dGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2goKQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXgg
NWQ5YmQzMzMzOTIxMWNhMWNkNDQ3Yjg3OTJmNTQ2MWVhODdlZGRmNC4uZTU2NTRjYzMxMzliNDlk
NjFhOTg1MTNjZDAxNmJlY2Y3MzliYmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2Jv
ZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpOworICAgICAgICBtX2JvZHlDYWxsYmFjayhSZWZQdHIgeyAmYnVmZmVyIH0sIHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0
d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuaAppbmRleCA2N2FiYzU1YzYwZmYyNGUzOWRkMDRlY2M1MDIxYjYwNWVl
OGJlYmIxLi41Zjg4YWMyYWE4ZGY5NjI4ZDRjNTlkZGQwOTRmMGNlZTFkMjFhN2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAt
MzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1l
dHJpY3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9u
c2VDYWxsYmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8Y29u
c3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmKTsKIAog
ICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4g
bV9lcnJvcjsgfQpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2Vk
VG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA3YTI2MjIxOWRlNzhiMjM1ZDEyNWE5MmI2ZTIz
NmQzMzI2MmY3YTI3Li5kOWQ3NDc1MjUzMmYxODllYjFiZTJjMDNkN2UyOWU4NTllODk2ZTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9yIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwbwogICAgIHJldHVybiB7
IH07CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGVjb2Rl
cikgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCkBAIC0xODYs
OCArMTg2LDExIEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgICAgICBtX2RlY29k
ZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvamF2YXNjcmlwdCJfcywgIlVU
Ri04Iik7CiAgICAgfQogCi0gICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAg
ICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHNpemUpKTsKKyAgICBpZiAoIWJ1ZmZlci5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgYnVmZmVyLmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAg
ICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoc2VnbWVudC5kYXRhKCksIHNl
Z21lbnQuc2l6ZSgpKSk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAogdm9pZCBTZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuaAppbmRleCA0NGZjMDY4NWZhMGZlZGM4NzQyMTkxNmU5MTNhNjc0YjFjMGZkYmVh
Li43ZTgxOGYzNDEzZGEyOWY4NjFlMTAwMzk5MWU4ZDUzODkyMzQ2ZWUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAtNjQsNyArNjQsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2
b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IDQxZDgyMzUwMjQ3NDdi
NmZjNGEzYWM1NDhlMTMzNGVkNmNiNWVmN2EuLjgxNGViMzIwZDRlNzQ4YTI5YWUwOTEzNWFmYzFk
YTVmMzc1MTVlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEy
MCwxNSArMTIwLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRy
eSk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2
ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAgICAgY29u
c3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0OwotICAg
ICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8
PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUuc2l6ZSgpICsgYnVmZmVyLnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQor
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IDFiODQzZGI3ZWMyNzBkYjlk
YWI5ZThhMjVmMmE0OGE4ZWNhZTJhOGEuLjlhZGNhNjA1ZTcyODBiYjdiMzRjZTc0NGQ4Nzg4YmJi
NDQ4OTI0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNjEsNyArNjEs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IDQxNjY4YTViMWNk
NzM4Njk2N2I4ZmQ5NzNlOTY3MzJlY2E5MDdlZGMuLjA3NzJhZjFhODZkMjI0MTdiZjExZjE2YmQ2
YjdiNTgwZmU1N2E3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JK
Q19DTEFTUyBOU011dGFibGVVUkxSZXF1ZXN0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBSZWdpc3RyYWJsZURvbWFpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5lZ290aWF0
ZU1vZGVyblRMUyhjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
Jik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lv
blRvRG93bmxvYWQoRG93bmxvYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDQ3NzFmZGU5
MjBkNmI5OGU4M2ZjMjlkZDNhYWY5N2EwYTZkOWE4ODAuLjY0OWI1Y2E3OGM2ODc1ZWNkZTBkM2Q0
MzZmOTU5MGRiNTE3OWQwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNDQzLDEyICs0NDMs
MTIgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXIKICAgICAgICAgbV9jbGllbnQtPmRpZENvbXBs
ZXRlV2l0aEVycm9yKGVycm9yLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogfQogCi12b2lkIE5ldHdv
cmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIFdURkVtaXRT
aWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZlZCAlemQgYnl0ZXMiLCBk
YXRhLT5zaXplKCkpOworICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFz
ayIsICJyZWNlaXZlZCAlemQgYnl0ZXMiLCBkYXRhLnNpemUoKSk7CiAKICAgICBpZiAobV9jbGll
bnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEpKTsKKyAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEpOwogfQogCiB2b2lkIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFdl
YktpdDo6UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRh
VGFza0N1cmwuY3BwCmluZGV4IDg0NjY5ZTIwOWQ3N2JmNTJhMzZhZmUyYTdkYWIyNTJhNjkwMGRj
ZjcuLjEzZmNjN2JkNDhhNTVhMDkzOTEyOTI2YmE0NDg0Y2Y1ZTM1NTEzMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TYW1lU2l0ZUluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
cGFsL3RleHQvVGV4dEVuY29kaW5nLmg+CkBAIC0xNzIsMTMgKzE3MywxMyBAQCB2b2lkIE5ldHdv
cmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVl
c3QsIEN1cmxSZXNwbwogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCi12b2lk
IE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0Jiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrRGF0YVRh
c2tDdXJsOjpjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgaWYg
KHN0YXRlKCkgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBzdGF0ZSgpID09IFN0YXRlOjpDb21wbGV0
ZWQgfHwgKCFtX2NsaWVudCAmJiAhaXNEb3dubG9hZCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3Vy
bDo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYgbmV0
d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggNDViZTVjZTE4NDMyNTI3MWQ1YzA4
MGRkMzRmMWVlNGExNjY0MmExZi4uZTU1ODY0YTk1ZjdiY2JjMDg1YzQ2NjI4YmZmMDU4NTczNTcz
Mjg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtEYXRhVGFza0N1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya0RhdGFUYXNrQ3VybC5oCkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTY4LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29y
ZTo6Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBSZXF1ZXN0U3RhdHVzID0gUmVxdWVzdFN0YXR1czo6TmV3UmVxdWVzdCk7CiAgICAgdm9p
ZCBjdXJsRGlkU2VuZERhdGEoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxv
bmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6Q3VybFJlc3BvbnNlJiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJl
cXVlc3QmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21w
bGV0ZShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKFdlYkNvcmU6OkN1cmxS
ZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUlu
Zm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaAppbmRleCAxN2YwOGMyOGVhMTI1YjU1MDk5M2VlZDI0ZDU5NjNiODUxMGExMTQx
Li41N2IxNDZlNThlN2E5ZGE3MDI2YzlkZWU1MjAzOTU1MWFkYWI3MWQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBlMTI2NGNlMjFiYTU3ZjJh
NDI3NDhlMzNhMWRhZDg4YTBlMjU4YmMyLi5kNzY3ZmMwNmIzNmYxNTZmZjMxYzM4M2U2NDNkNDM0
NGMyMTdhYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgcmV0
dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKLWF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlk
UmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNl
cHRpb25UeXBlCithdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIApAQCAtMTg3LDExICsxODcsMTEgQEAgYXV0byBXZWJVUkxTY2hlbWVU
YXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
IC0+IEUKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAg
ICAgICBtX3N5bmNEYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3N5bmNE
YXRhLmFwcGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsK
ICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVt
ZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9y
ZXNvdXJjZUxvYWRlcklELCBidWZmZXIuZ2V0KCkpLCBtX3dlYlBhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEo
bV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgYnVm
ZmVyKSwgbV93ZWJQYWdlSUQpOwogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggZjZmZjQ2
ZWVhNWYyOTBiN2I3ZTNmZTU5MjFkZjlmMTk0YmFjZDExNy4uYzMyMzA2OWIxY2MwMzFmMDI1YjIy
Yzg1OWEzNTQxODhmZGQyMzcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uVHlwZSB3
aWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsICBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKT4mJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAg
ICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgRXhjZXB0aW9uVHlw
ZSBkaWRDb21wbGV0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lk
IHN0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAppbmRleCBiNTEzYTI2ODA4ZWFh
MThlMzdmNGZkZjA0YTIzZDI5NjBiMjczYjJjLi45MjM0YjVjNjUzZjkxZWJhOTEwZmJkZjliZTFl
MjJhMDJjMTFjNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCkBAIC03MiwyMCAr
NzIsMTcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFTZW50KFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmUKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRhU2VudChtX2lkLCBieXRl
c1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCksIDApOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVz
b3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3Vy
Y2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gc2hhcmVkTWVt
b3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShsZW5ndGgpOworICAgIGF1dG8gc2hhcmVkTWVt
b3J5ID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGJ1ZmZlcik7CiAgICAgaWYgKCFzaGFyZWRN
ZW1vcnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2hhcmVkTWVtb3J5UHRyID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKTsKLSAgICBtZW1jcHkoc2hhcmVk
TWVtb3J5UHRyLCBkYXRhLCBsZW5ndGgpOwotCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFu
ZGxlOwogICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgLy8gVGFrZSBvd25lcnNoaXAgb2Ygc2hhcmVk
IG1lbW9yeSBhbmQgbWFyayBpdCBhcyBtZWRpYS1yZWxhdGVkIG1lbW9yeS4KICAgICBoYW5kbGUu
dGFrZU93bmVyc2hpcE9mTWVtb3J5KE1lbW9yeUxlZGdlcjo6TWVkaWEpOwotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNl
aXZlZChtX2lkLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCkgfSksIDApOworICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNlaXZlZChtX2lk
LCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyLnNpemUo
KSB9KSwgMCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjphY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaAppbmRl
eCA0N2VhODY2NzFiMTNkMTM5NWMzZGFkOWJkYTc5YWJmNjE2Y2JhMTc5Li45NDk0NjQ1MjJjMjYz
ZTZhNWU4MDczZjc0ZTlkMjQzNGJhYTkzOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgYm9vbCBzaG91bGRD
YWNoZVJlc3BvbnNlKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2b2lkIGRhdGFTZW50KFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9u
ZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgZmluYWw7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lk
IGxvYWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBkNzFhZTVl
MGE5YWYzZDllZTNhNTFkOGZjZjUwZmU1MzU5YjM5MGI3Li43NDkxOTBkMTliMGZhMWNlMGI1MTFl
ODQyMDcyNTYwMDY5MTE4NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2lu
Y2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC0yMDAsMTYgKzIw
MSwxNSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQor
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIExPRyhO
ZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSBv
ZiBzaXplICVsdSBmb3IgJyVzJyIsIGRhdGEuc2l6ZSgpLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0
cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1By
b2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5k
IGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVO
TElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXIt
PmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgbV9pbnRlcmNlcHRDb250
cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERh
dGFMZW5ndGhdKCkgbXV0YWJsZSB7CisgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZl
cihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAgICAgICAg
ZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2Rl
ZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVm
ZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTIxOCw3ICsyMTgsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgICAg
ICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQg
cmVjZWl2aW5nIGRhdGEiKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS5zaXplKCk7
CiAKLSAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIGF1dG8gYnVm
ZmVyID0gZGF0YS5idWZmZXIoKSA/IFJlZiB7ICpkYXRhLmJ1ZmZlcigpIH0gOiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTMwNiw3ICszMDcsNyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRs
ZSYgaGFuZAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0co
ImRpZFJlY2VpdmVSZXNvdXJjZToiKTsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwog
CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRl
IGJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIHNlbnQgZnJvbSB0aGUgbmV0d29yayBwcm9j
ZXNzLiIpOwpAQCAtMzIzLDcgKzMyNCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAKICAg
ICAvLyBPbmx5IHNlbmQgZGF0YSB0byB0aGUgZGlkUmVjZWl2ZURhdGEgY2FsbGJhY2sgaWYgaXQg
ZXhpc3RzLgogICAgIGlmICh1bnNpZ25lZCBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCkpCi0g
ICAgICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIucmVsZWFzZU5vbk51
bGwoKSwgYnVmZmVyU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgbV9j
b3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgYnVmZmVy
U2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKIAogICAgIGlmICghbV9jb3JlTG9hZGVy
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhMjJlNjJmMjhiNWZhNGNmYzkxYWE1ZTVj
ZTgyY2EyN2FlMjZhZDUzLi5hYzU0MjJmYzA2NzEwYmQwZTA4N2UwZjQ0MDllZDk0MDE3YzBjZjE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBG
b3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTgwLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5k
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQg
ZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNl
bnQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KaW5kZXgg
MDJhMTRmNTlhMzA0NzQ0YzJkMTgzZWE3OWU5OWViYWViNGNmYmJhMi4uZGFhMjRkMjdjNzFhODNj
ZjdjMGYxNjhkYTI2YTQ5YjQ4NzY5MjYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4K
QEAgLTI0LDcgKzI0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlKQogICAgIERpZFNlbmREYXRhKHVpbnQ2NF90IGJ5
dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KQogICAgIERpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQor
ICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBpbnQ2NF90IGVu
Y29kZWREYXRhTGVuZ3RoKQogICAgIERpZEZpbmlzaFJlc291cmNlTG9hZChXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKQogICAgIERpZEZhaWxSZXNvdXJjZUxv
YWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKICAgICBEaWRGYWlsU2VydmljZVdvcmtl
ckxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA4ZDJjNWYzZTI1Y2ExYTIz
NzhlNWUzMDA1ZDc1NDkyYmVhZjBiMWVhLi4yYjdlNGQyYzIwZmRkMTk5ODgyNzJkYThiZmNjNWE2
MTg2YzZkM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oCkBAIC02NSw2ICs2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBFbGVtZW50Owogc3RydWN0IFBsdWdpbkluZm87CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTc2LDExICsxNzcsMTEg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbVdpbGxT
ZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsgfQogICAgIHZv
aWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwm
IHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmll
ZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBzdHJlYW1EaWRS
ZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBs
ZW5ndGgpIGZpbmFsOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgc3Ry
ZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgZmluYWw7CiAgICAgdm9pZCBz
dHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7
CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1l
LCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJz
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIG1hbnVh
bFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBm
aW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9h
ZGluZygpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNl
bGxlZCkgZmluYWw7CiAgICAgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZl
bnQmKSBmaW5hbDsKQEAgLTM2Miw3ICszNjMsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5h
bDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgICAg
ICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpp
bmRleCBlNWZhMDcxMDlhOTMxODQ1MzlmYjFlMjQ3MGEzZjkzODZkNDMxNTU4Li5mYTZjZTZmNjlm
YzAyZjcwMWY4ODUxMzg4NDc1ZGVmM2YyNDMxNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTk0LDYgKzk0LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvU2Nyb2xsQW5pbWF0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xs
YmFyVGhlbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KQEAgLTExOTEsNyArMTE5
Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJl
Y2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0CiAgICAgfQogfQogCi12b2lkIFBERlBsdWdp
bjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgY291bnQp
Cit2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7CiAgICAgaWYgKCFtX3BkZlBsdWdpbikKICAgICAgICAgcmV0dXJuOwpAQCAt
MTIwMCw3ICsxMjAxLDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW0KICAgICBpZiAoIXJlcXVl
c3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlcXVlc3QtPmFkZERhdGEoZGF0YSwgY291bnQp
OworICAgIHJlcXVlc3QtPmFkZERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAog
dm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkRmFpbChOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJikKQEAg
LTE3MTgsMTUgKzE3MTksMTUgQEAgdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiwgdWludDMyX3QKICAgICAgICAgbV9p
c1Bvc3RTY3JpcHQgPSB0cnVlOwogfQogCi12b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2
ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KQordm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVh
bUlELCBzdHJlYW1JRCA9PSBwZGZEb2N1bWVudFJlcXVlc3RJRCk7CiAKICAgICBpZiAoIW1fZGF0
YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsK
IAotICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnl0ZXMsIGxlbmd0aCk7Ci0g
ICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKKyAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2Rh
dGEuZ2V0KCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fc3RyZWFtZWRC
eXRlcyArPSBidWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkRmlu
aXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTE3NjMsMTQgKzE3NjQsMTQgQEAgdm9p
ZCBQREZQbHVnaW46OmVuc3VyZURhdGFCdWZmZXJMZW5ndGgodWludDY0X3QgdGFyZ2V0TGVuZ3Ro
KQogICAgICAgICBDRkRhdGFJbmNyZWFzZUxlbmd0aChtX2RhdGEuZ2V0KCksIHRhcmdldExlbmd0
aCAtIGN1cnJlbnRMZW5ndGgpOwogfQogCi12b2lkIFBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBs
dWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIG1fZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRh
Q3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKLSAgICBlbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKG1fc3Ry
ZWFtZWRCeXRlcyArIGxlbmd0aCk7Ci0gICAgbWVtY3B5KENGRGF0YUdldE11dGFibGVCeXRlUHRy
KG1fZGF0YS5nZXQoKSkgKyBtX3N0cmVhbWVkQnl0ZXMsIGJ5dGVzLCBsZW5ndGgpOwotICAgIG1f
c3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CisgICAgZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aChtX3N0
cmVhbWVkQnl0ZXMgKyBidWZmZXIuc2l6ZSgpKTsKKyAgICBtZW1jcHkoQ0ZEYXRhR2V0TXV0YWJs
ZUJ5dGVQdHIobV9kYXRhLmdldCgpKSArIG1fc3RyZWFtZWRCeXRlcywgYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1ZmZlci5zaXplKCk7CiAK
ICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQogICAgIC8vIEtlZXAgb3VyIHJhbmdlcy1s
b29rdXAtdGFibGUgY29tcGFjdCBieSBjb250aW51b3VzbHkgdXBkYXRpbmcgaXRzIGZpcnN0IHJh
bmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDFkODQ0
ODA1ZjRjMTBlOTNmZWRjYWJkZWVjMjFkZDM1ZGRmODgyMDIuLmU0ZDYyZjRiZWE5YmZjMmZhODBl
ZjRkNmU5MGM1Y2NmMDY3OTRmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5oCkBAIC01NCwxMiArNTQsMTMgQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xh
c3MgRWxlbWVudDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW50
UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNjcm9sbGJhcjsK
LWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYwLDcgKzE2MSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRp
bWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWct
aW4gdGhhdCBhIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMs
IGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpID0gMDsKIAog
ICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gaGFzIGZpbmlzaGVkIGxvYWRp
bmcuCiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3Ry
ZWFtSUQpID0gMDsKQEAgLTE3Myw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1l
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWlu
IHRoYXQgdGhlIG1hbnVhbCBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2aXJ0dWFsIHZv
aWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBs
ZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEo
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBs
dWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZv
aWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNTM0ZGE1MmQ0N2Q2Mjg1
MGUyMDVmZjllOTljMzBiMzdkM2JjYmExMi4uMDM0NGY0YmUyM2E0Mzc2NzE5Nzc4OTk5N2Q3NjM3
YTIwMzFiN2VhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIC8vIE5ldHNjYXBl
UGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogCkBAIC0yMzUsOSArMjM1LDkgQEAg
dm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciosIGNvbnN0IFIKICAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJl
YW1EaWRSZWNlaXZlUmVzcG9uc2UobV9zdHJlYW1JRCwgcmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0
aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3Bv
bnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6
ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90
KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZl
RGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewotICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRh
KG1fc3RyZWFtSUQsIGJ5dGVzLCBsZW5ndGgpOworICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4t
PnN0cmVhbURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgUGx1
Z2luVmlldzo6U3RyZWFtOjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIApAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKICAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNl
KHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGVNUyhyZXNwb25zZSks
IG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAot
dm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
Ynl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBUaGUgcGx1Zy1pbiBj
YW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxlZCB0byBpbml0aWFsaXplLgogICAgIGlmICghbV9w
bHVnaW4pCkBAIC0zODIsMTEgKzM4MiwxMSBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWRE
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlm
ICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRl
ID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgbV9t
YW51YWxTdHJlYW1EYXRhLmFwcGVuZChieXRlcywgbGVuZ3RoKTsKKyAgICAgICAgbV9tYW51YWxT
dHJlYW1EYXRhLmFwcGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGJ5dGVzLCBsZW5ndGgpOworICAg
IG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShidWZmZXIpOwogfQogCiB2b2lk
IFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCkKQEAgLTExNzEsOSArMTE3
MSw5IEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKIAogICAgIC8v
IERlbGl2ZXIgdGhlIGRhdGEuCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAg
ICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCk7Ci0gICAgICAgIGZvciAo
Y29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKLSAgICAgICAgICAgIG1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50
LT5zaXplKCkpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEudGFrZSgpLT5mb3JFYWNoU2Vn
bWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAgICBtYW51
YWxMb2FkRGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAg
aWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGY2
NjMxMmE4MGFjZDFlMDM1MzEwZGZhYTNhNWYzYTE3YjcyYWFlNTUuLjI1NjE1Y2IzMGYyMjY0NjM5
MjQ0NDg4ZjJiZDdjNDEyMjc5MDc5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNCZWluZ0Rlc3Ryb3llZCgpIGNvbnN0IHsgcmV0dXJuICFtX3BsdWdpbiB8fCBtX3BsdWdpbi0+
aXNCZWluZ0Rlc3Ryb3llZCgpOyB9CiAKICAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgbWFudWFs
TG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAg
ICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBt
YW51YWxMb2FkRGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZWU0MGZiOTU4NWU3OWQ4NmIz
Y2ZkMmY1NzllZDQ2ZTYxYjllYzYzZS4uMzE0ODJlYjNiMzY4ZDc4YTYxYTdlYzFkMjRjNTk4MTBi
YzkxZWQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTcy
LDcgKzcyLDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7
IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1f
ZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAg
ICAgICByZXR1cm47CkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4K
ICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7
CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVy
PihtX3Jlc3BvbnNlRGF0YSkpCiAgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKTsKLSAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9y
ZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBzdGQ6OmdldDxT
aGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKGJ1ZmZlcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV9pc0Rvd25sb2FkKQotICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJl
Y2VpdmVEYXRhIHsgYnVmZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXItPnNp
emUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVm
ZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRp
Zmllcik7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLmdldCgpLCBzdGF0
aWNfY2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwor
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIu
c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0
YT4mJiBmb3JtRGF0YSkKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHZvaWQgV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0
YT4mCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3Zv
aWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faXNEb3dubG9hZCkKLSAgICAgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZl
RGF0YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2Zl
dGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19j
YXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICBl
bHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IGRhdGEsIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsg
YnVmZmVyICwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElk
ZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZEZpbmlzaEJsb2JMb2FkaW5nKCkKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFdlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICAg
ICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3Ro
aXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNl
aXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmNv
cHkoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAg
ICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0
YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGU5ODdlMTlhYzhi
NzM4ODcxYWFkODJiNGIzODU2Mjk2OGEyYjZjOWMuLjA5NDAwZGYwY2U3MjVmMzlhOGIxMWQ5MzVl
MTQ1NGUzOTlmNWEyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAg
LTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChS
ZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2goKSBmaW5h
bDsKQEAgLTYwLDggKzYwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnZlcnRGZXRjaFRvRG93
bmxvYWQoKSBmaW5hbDsKIAogICAgIHZvaWQgY2xlYW51cCgpOwotICAgIAotICAgIHZvaWQgZGlk
UmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOworCisgICAgdm9p
ZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAg
IHZvaWQgZGlkRmluaXNoQmxvYkxvYWRpbmcoKTsKIAogICAgIHN0cnVjdCBCbG9iTG9hZGVyIGZp
bmFsIDogV2ViQ29yZTo6RmV0Y2hMb2FkZXJDbGllbnQgewpAQCAtNjksNyArNjksNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwg
eyB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpIGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEsIHNpemUp
OyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJiBkYXRhKSBmaW5hbCB7IGNsaWVudC0+ZGlkUmVjZWl2ZUJsb2JDaHVuayhkYXRhKTsgfQog
ICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Ip
IGZpbmFsIHsgY2xpZW50LT5kaWRGYWlsKGVycm9yKTsgfQogICAgICAgICB2b2lkIGRpZFN1Y2Nl
ZWQoKSBmaW5hbCB7IGNsaWVudC0+ZGlkRmluaXNoQmxvYkxvYWRpbmcoKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxNGEwODNjYTIwN2E5MDYzY2Y4MGIxZTdlOTY3
MGE0ODdjZjRkMzk5Li5lZDRmNWRlOWQ1ZTU2MThkNDMyNDU1MDgyZjVkYTE4OGFiZjliZjRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExNTIsMTAgKzExNTIsMTAgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQog
ICAgIHdlYlBhZ2UtPmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KG1fZnJhbWUpOwogfQogCi12
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fcGx1Z2luVmlldykKLSAgICAgICAgbG9h
ZGVyLT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGxvYWRlci0+Y29tbWl0RGF0
YShkYXRhKTsKIAogICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0YW5kLWFsb25lIG1lZGlh
IGRvY3VtZW50LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2VsIHRoZSBXZWJLaXQgbG9h
ZC4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIGFsbCBw
b3J0cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+LgpAQCAtMTE3Nyw3ICsxMTc3LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCB1aW50OF90KgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2hh
c1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldyA9IHRydWU7CiAgICAgfQotICAgIG1fcGx1Z2luVmll
dy0+bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgbV9wbHVnaW5W
aWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiYjUyOWQzYWVjNGUyYzc1ZjFhN2RlOTFiMTBi
NTU4MmQ0NTIyYjQyLi4xZDMwYmMzOTM4M2FmZmYyY2E5YzI4NzUzZGQyZDdlYzJiMjY0OTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTUyLDcgKzE1Miw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAKLSAgICB2b2lkIGNvbW1pdHRl
ZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5h
bDsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGlu
ZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIGZpbmFsOwogICAgIAogICAgIHZvaWQgdXBkYXRl
R2xvYmFsSGlzdG9yeSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5jcHAKaW5kZXggYTIwNWUwMDFjYTcxNTgyMDkxM2E4MWFlNGE4MzY1MzBmOWEwZjY0OC4u
NzJlMzU1NGM4ZTBhYTY5MGE2ZWM1NzgwMTc2ZjE5ZTBiOGQ3MGQyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyCiAKIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9p
ZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJQYWdlKG1fcGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDBkYzE2N2U1YjdiYzNiMDNlZjM5MzFlYWIzNTZj
NzgyNzkyOTUyOWUuLjY0OWJjODMxOWMyNzg2ZjAxZDYxN2MxMTE5OWRiMGM2YzA3N2ZhNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3Vw
cG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5NDJlZGM2
MjNhNGU2NTNiYjE4OGFlZTA1MDY0NGEzZjRhMDMyZTg5Li5mODlmZjcyYTBkMzFiZWMxMWVmODAy
OTdlZmJhOTJjMmE3YmM2NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtNzA1NywxMiArNzA1NywxMiBAQCB2b2lkIFdlYlBhZ2U6OnVybFNj
aGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIg
aGFuZAogICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodGFza0lkZW50aWZpZXIs
IHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURh
dGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2
ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhKQogewogICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50
aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOwog
ICAgIEFTU0VSVChoYW5kbGVyKTsKIAotICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0
YXNrSWRlbnRpZmllciwgZGF0YS5zaXplKCksIGRhdGEuZGF0YSgpKTsKKyAgICBoYW5kbGVyLT50
YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuYnVmZmVyKCkgPyAqZGF0YS5i
dWZmZXIoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBh
Z2U6OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmll
ciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRh
c2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhOTRiNWI5ZDdmZTMyZjI0YTg2ZGFh
YWQ0NDg0MmIwY2RkMGFlYjJmLi40ODg2NjcwN2M0NjEzZDlhN2NkMzUyMTVkZmNhOTIzYzY5Nzli
ZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0x
ODQsNiArMTg0LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3Mg
RGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29w
eTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTg5Niw3ICsxODk3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHVybFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdlYlVSTFNj
aGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
dGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rp
b24oV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJV
UkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lk
IHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRDb21w
bGV0ZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAKICAgICB2b2lkIHNldElzVGFraW5nU25hcHNob3RzRm9yQXBwbGljYXRpb25TdXNwZW5z
aW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYjI3MjI5NDcxZWFlODZlZTU5ODE5ODNkZDU3YjVlN2E4
MjkxY2Q0Yi4uYmRhNWY1MGFkZDIzYTk2NzQwZTg5ZDczM2Q3OWMxODdmMDUyYmUxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC01NjQsNyArNTY0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChl
bnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBVUkxT
Y2hlbWVUYXNrV2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBwcm9wb3NlZFJlcXVlc3QpIC0+IChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgYWN0dWFsUmVxdWVzdCkgQXN5bmMKICAgICBVUkxTY2hlbWVUYXNr
RGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZp
ZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0
YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkKICAgICBVUkxTY2hlbWVUYXNrRGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFu
ZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKLSAgICBVUkxTY2hl
bWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmll
ciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRh
c2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBV
UkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRl
bnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIHRhc2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkKICAgICBVUkxT
Y2hlbWVUYXNrRGlkQ29tcGxldGUoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmll
ciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRh
c2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogCiAgICAgU2V0SXNT
dXNwZW5kZWQoYm9vbCBzdXNwZW5kZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcAppbmRleCA2
ZDhkMGNmMjc4NGVkMzA1NjYyNWM3ZjZlODQ2YTkzYTcxMWNiYWNkLi42MTZlZGEwOGYwYjhmY2Fi
MmQ1N2ZjNDc1MzI5MTA3YjgxNWNkMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKQEAg
LTk2LDEzICs5NiwxMyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZQogICAgIHRhc2stPmRpZFJl
Y2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IHRhc2tJZGVudGlmaWVyLCBzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkKK3ZvaWQg
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgYXV0byogdGFzayA9IG1fdGFza3MuZ2V0KHRhc2tJZGVudGlmaWVyKTsK
ICAgICBpZiAoIXRhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIHRhc2stPmRpZFJlY2VpdmVE
YXRhKHNpemUsIGRhdGEpOworICAgIHRhc2stPmRpZFJlY2VpdmVEYXRhKGRhdGEpOwogfQogCiB2
b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZENvbXBsZXRlKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCmluZGV4IDU4YmVjYzE3YjVkODU5ODc0OTg4
NGQzMDI1MTY4OWNjY2MxNzY5M2YuLmFiMjBiZDU3M2FhNGFmYzE1ODA1OTBmMjcwNDY2MzAwNjg3
NzQwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNTksNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRh
c2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7
CiAgICAgdm9pZCB0YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQg
dGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgc2l6
ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lkIHRhc2tEaWRSZWNlaXZlRGF0YShX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpOwogICAgIHZvaWQgdGFza0RpZENvbXBsZXRlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgdGFz
a0RpZFN0b3BMb2FkaW5nKFdlYlVSTFNjaGVtZVRhc2tQcm94eSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5
LmNwcAppbmRleCAzNjA2YmJkYzY1MjE1ZGRjYTkyNjEzYTgxMDdkYWIxYjExZWNiNjU2Li45ZTcy
ZDg0Yzk3ZGY2ZDI5NzE0YTgzYzUxYWMxNzc2M2U1ZmI2NTNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5j
cHAKQEAgLTE0MCwyMSArMTQwLDIxIEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgfSk7
CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShzaXplX3Qg
c2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkKK3ZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5Ojpk
aWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
aWYgKCFoYXNMb2FkZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0Zv
ckNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIFdFQlVSTFNDSEVNRVRBU0tQUk9YWV9SRUxF
QVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6IFJlY2VpdmVkIGRhdGEgZHVyaW5nIHJlc3BvbnNlIHBy
b2Nlc3NpbmcsIHF1ZXVpbmcgaXQuIik7Ci0gICAgICAgIHF1ZXVlVGFzayhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGFWZWN0b3IgPSBWZWN0b3IgeyBkYXRhLCBzaXpl
IH1dIHsKLSAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGFWZWN0b3Iuc2l6ZSgpLCBkYXRh
VmVjdG9yLmRhdGEoKSk7CisgICAgICAgIHF1ZXVlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGRhdGEgPSBSZWYgeyBkYXRhIH1dIHsKKyAgICAgICAgICAgIGRpZFJl
Y2VpdmVEYXRhKGRhdGEpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKLSAgICBtX2NvcmVMb2FkZXItPmRpZFJl
Y2VpdmVEYXRhKGRhdGEsIHNpemUsIDAsIERhdGFQYXlsb2FkVHlwZTo6RGF0YVBheWxvYWRCeXRl
cyk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShkYXRhLCAwLCBEYXRhUGF5bG9h
ZFR5cGU6OkRhdGFQYXlsb2FkQnl0ZXMpOwogICAgIHByb2Nlc3NOZXh0UGVuZGluZ1Rhc2soKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJM
U2NoZW1lVGFza1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJV
UkxTY2hlbWVUYXNrUHJveHkuaAppbmRleCA3NTUwODc5NDE4MjBmZWVmYzVkMDEyNzE1OGMwNjRj
ZTI1OGEwODM1Li5lZDkxZjM4ZTNhZGQxM2JlMTljYjIxNzdlZDQ0OGZkZDJmYTc5NTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNr
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVUYXNrUHJveHkuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRQZXJmb3JtUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHNpemVfdCwgY29uc3QgdWludDhfdCogZGF0
YSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KTsKICAgICB2b2lkIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
IAogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCmluZGV4IGEyNTU2MGExMGMyODgyZTFhYmQxNzg0NTY5
NDg2ZWExM2VkODk2ZDQuLjMyODljMjM2MjlhMGRjMzFmYzBjMTk5ZWRmMTMyOTdiZWQ2MWExOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAKQEAgLTczLDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICAgICAgcGluZ0xvYWRDb21wbGV0ZSh7IH0sIHJlc3BvbnNlKTsKICAg
ICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwg
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwgeyBwaW5n
TG9hZENvbXBsZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgaW50KSBmaW5hbCB7IHBp
bmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
IHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsg
cGluZ0xvYWRDb21wbGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmluYWwgeyByZXR1cm4gbV9zaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOTU5
ZDc0OGI1NmJlMTA3NmJkOTc3OTkyMmNkMzU2ZDIxYTY4MTc0ZS4uOGRmOTkzZjJkNzc1YjZjOTNk
MmU4ZjA5OTBmNzJmODVmNjE4ZTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC00
OCwxMCArNDgsMTIgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDYWNoZWRGcmFtZTsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIFByb3RlY3Rp
b25TcGFjZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdl
YkZyYW1lTG9hZGVyQ2xpZW50PiB7CkBAIC0xNTEsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlk
UmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9h
ZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwor
ICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0
b3J5KCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA0M2U2M2Y0NTYzNDVlY2Yx
YzkyNGU1Yjc3MmE2ZjU0MTczYTkxNDJiLi44N2E1ZDY1N2Y3YjczM2QwN2M1ZGI2MDFmNjk4MWY5
MDQ5NzcxMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtOTkyLDEwICs5OTIs
OSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVu
dCgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9h
ZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChXZWJD
b3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7Ci0gICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0
V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5P
XSk7Ci0gICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOm5zRGF0YS5nZXQoKV07
CisgICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOmRhdGEuY3JlYXRlTlNEYXRh
KCkuZ2V0KCldOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRp
bmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKQEAgLTIwMTIsNyArMjAxMSw3IEBA
IFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9m
aWxlUGF0aDsKICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4gbV9maWxlSGFuZGxlOwog
Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCiAgICAgICAg
IHsKICAgICAgICAgICAgIGF1dG8gZGF0YUFycmF5ID0gYnVmZmVyLmNyZWF0ZU5TRGF0YUFycmF5
KCk7CiAgICAgICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBkYXRhQXJyYXkuZ2V0KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCAwZTA1YjE4
ZDY5NjM5ODI4ZDQzM2M0NmQ3OTIxY2Y3MGRlN2RmOWQxLi4yYTg3NzBkZjgwYmI5ZjcwYzEwYmI5
MWY5NTIwZDFlMTljODU5ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KQEAgLTk3Nyw3ICs5NzcsNyBAQCAtICh2b2lkKV9jb21taXREYXRhOihOU0Rh
dGEgKilkYXRhCiAgICAgYXV0byogZG9jdW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1
bWVudCgpOwogICAgIGRvY3VtZW50LT5zZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoX3ByaXZhdGUt
PnNob3VsZENyZWF0ZVJlbmRlcmVycyk7CiAKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpLT5jb21taXREYXRhKChjb25zdCB1aW50OF90KilbZGF0YSBi
eXRlc10sIFtkYXRhIGxlbmd0aF0pOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
ZmIyNTgzZmU5NzI2NGM3M2VlYjIzZWJiNGQzOTkwYjNiODRhMDdmMy4uMTI3MGU1N2RkOTViMGQw
MDAzYjVlNTY3N2Q0NzQyYTEyNTUyZDg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cApAQCAtNjQxLDkgKzY0MSw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZENoYW5n
ZVRpdGxlKERvY3VtZW50TG9hZGVyKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsK
KyAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSk7CiAKICAgICAvLyBJZiB0aGUgZG9jdW1lbnQg
aXMgYSBzdGFuZC1hbG9uZSBtZWRpYSBkb2N1bWVudCwgbm93IGlzIHRoZSByaWdodCB0aW1lIHRv
IGNhbmNlbCB0aGUgV2ViS2l0IGxvYWQuCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQg
YmUgc2hhcmVkIGFjcm9zcyBhbGwgcG9ydHMuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzQ4NzYyPi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDA5NWIyNTM1YTY4NzU0N2JkNzg4NDZmOTA3
NmFlNmM3ZDAxNjI5NDguLjc5MjZmZDM2NzE4MDllODM4NDdhNDgwMzFhOGI5MGM2MzhmYWY3ZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmcoKSkgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50
OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAg
ICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRl
OwogCiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBv
dmVycmlkZTsK
</data>
<flag name="commit-queue"
          id="473812"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448022</attachid>
            <date>2021-12-27 19:17:05 -0800</date>
            <delta_ts>2021-12-28 19:01:46 -0800</delta_ts>
            <desc>Patch For Review</desc>
            <filename>bug-232424-20211228141648.patch</filename>
            <type>text/plain</type>
            <size>261768</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTAxMzVkOTZlMzc3YmE4
NzE4NWM4MmQ0OWNkOTA0OWZmYTExMTA3Mi4uNmJmMzIzNGZjYjAwZWQzMjJlYWEwZWI0YTRkODFk
ZWUwZDM4OWQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OSBAQAorMjAyMS0xMi0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1
ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBtb2RpZnkgYWxsIGRpZFJlY2VpdmVEYXRhIGFuZCBy
ZWxhdGVkIG1ldGhvZHMgc28gdGhhdCB0aGV5IG5vIGxvbmdlcgorICAgICAgICB1c2UgdWludDhf
dCovaW50IGFuZCBpbnN0ZWFkIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIFdlIGRvIHRoZSBz
YW1lIGZvciBhbnkgaW50ZXJtZWRpYXJpZXMgdXNlZCBieSB0aGUgdmFyaW91cyBkaWRSZWNlaXZl
RGF0YQorICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgIFRoaXMgd2lsbCBmYWNpbGl0
YXRlIG1vdmluZyBuZXR3b3JraW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVQorICAg
ICAgICBwcm9jZXNzIGFuZCBhbGxvd3MgdG8gcmVtb3ZlIHNldmVyYWwgbWVtb3J5IGFsbG9jYXRp
b25zIGFuZCBjb3BpZXMgYXQgdGhlCisgICAgICAgIHByb2Nlc3MgYm91bmRhcmllcy4KKyAgICAg
ICAgV2UgY2FuIG5vdyBjb25zaWRlciB0cmFuc2ZlciB0aGUgdW5kZXJseWluZyBTaGFyZWRNZW1v
cnkgY3JlYXRlZCBpbgorICAgICAgICB0aGUgbmV0d29yayBwcm9jZXNzIGFsbCB0aGUgd2F5IHRv
IHRoZSBHUFUgcHJvY2Vzcy4KKworICAgICAgICBGbHktYnkgZml4OiBjaGFuZ2UgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciB0eXBlIHRvIFNoYXJlZEJ1ZmZlciB3aGVuIGFwcHJvcHJpYXRlLgorCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4gQ292ZXJlZCBieSBhbGwg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keU93bmVyOjpibG9iQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YSk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Up
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRl
bnRGaWx0ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjphZGRE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGRC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVy
Q2xpZW50V3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAg
ICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwYWdl
L0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVk
QnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6
OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRv
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNw
b25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZl
RGF0YTpsZW5ndGhSZWNlaXZlZDpdKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAg
ICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6
CisKIDIwMjEtMTItMjMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTY2FsYWJsZUltYWdlRGVjb2RlciBzaG91bGQgYmUgdXNpbmcgU2hhcmVkQnVmZmVyIGlu
c3RlYWQgb2YgRGF0YVNlZ21lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2UyN2UxNGM2OWZkMjQ0YWU3YjI0NDVl
M2U0OTg3YzZmNzFiYjI4My4uYTA4M2U5YjQ5OTQ1MjM1MjIwYTA2ZTg4NDI1NWJhOGMwODhmNWVj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDIgQEAKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAg
ICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2Fk
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
cmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW46CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZyb21QcmVs
b2FkZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9y
bWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFG
b3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFSZWNl
aXZlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJj
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpT
dHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFu
dWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVk
ZWxpdmVyTWFudWFsU3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eTo6dGFza0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVt
ZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6
ZVNhbmRib3gpOgorCiAyMDIxLTEyLTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXBsYWNlIFdlYktpdC9Db2NvYUNvbG9yLmggd2l0aCBXZWJDb3JlL0NvbG9y
Q29jb2EuaCwgbm90IGNvbmZ1c2luZyBhdCBhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggNTc2
ODFiMjFhNzM0MzllOTBiZjIxYmEyNDQ5NTgyNTk3ZTAxOTk4Mi4uYmIxYzViNTM2YzRmOTkxNWZi
YWJkOWFjMzAzN2JjNDQ4Yzc3NDZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2lu
ZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMi0xNCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlZjk0OWRlNjA2ODk2Y2E5OTNlZGY4ZjM0ZDljMWIz
MGE1YjY1NGFiLi5kNTk1N2RkYjFmNGFmODhhNGI1ZmQ3MTMwZjEwNzE0OWFiNTA5YTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTItMjIgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRC
dWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMb2FkZXJDbGllbnQpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9jb21taXRE
YXRhOl0pOgorCiAyMDIxLTEyLTIyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29t
PgogCiAgICAgICAgIEZpeCBXZWJLaXQgQnVpbGQgaXNzdWVzIHdoZW4gdXNpbmcgc3lzdGVtIGNv
bnRlbnQgcGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcAppbmRleCBjMjMxZjIwN2RhMjVjZDJhMTU4NjBkMjhkYjNjZTE3ZTg1NzU3
N2Q1Li5lNjEzYWE1MDlmNzRjMGRlMGU2ZDM4MzUxOGU1MjZmNzNhYTU4ZWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAt
MzIwLDEzICszMjAsMTMgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICB9CiB9CiAKLXZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBzaXplKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGlmIChtX3NvdXJjZSkgewotICAgICAgICBtX3NvdXJjZS0+ZW5x
dWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKKyAgICAgICAgbV9zb3Vy
Y2UtPmVucXVldWUoYnVmZmVyLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZl
ci5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDg3MWQyYzA4NjMzMWE5ODI5
NGExNjZhNGI0MmUzMTg0ZTAzNzc3MmIuLmQ0NjUxYjIzZGE3MWNmOGY0YzhjOTk2NzFkMjI3ZWI1
YWM4ZDJhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQgRmV0
Y2hCb2R5Q29uc3VtZXIoVHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KIAotICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKKyAgICB2b2lkIGFwcGVuZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJu
ICEhbV9idWZmZXI7IH0KICAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggYTYzMzEwOGI1NDc3ODM5
M2ZjNTQ3NTAwMzJhOWEyZTg2YWRlN2ZjYy4uNTM2NjgxNTViZGViYzFhZWYzOWY0ZDk5ZmI5ZGFk
YzFlYmVmN2EwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlPd25lci5jcHAKQEAgLTI5OCwxMSArMjk4LDEwIEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJs
b2JMb2FkaW5nRmFpbGVkKCkKICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZl
dGNoQm9keU93bmVyOjpibG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
Cit2b2lkIEZldGNoQm9keU93bmVyOjpibG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7Ci0gICAgQVNTRVJUKGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291
cmNlKTsKLSAgICBpZiAoIW1fcmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVucXVldWUoQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpCisgICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291
cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSkKICAgICAgICAgc3Rv
cCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmgKaW5kZXggNWNhN2UzOTZjNDIyNzAxOTM1NmIwODA2ZTRlZWRiZTk1ZTkyOGY0Yi4uODFmZDA2
ZWNkZDZmYzM4YzllODU5ODdjZWJkZmMxNmRkODZmM2M5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIkZldGNoTG9hZGVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXJDbGllbnQuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTAwLDcgKzEwMSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0
ZToKICAgICAvLyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZm
ZXImKTsKICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9h
ZGluZ0ZhaWxlZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMyw3ICsx
MTQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmlu
YWw7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZpbmFsIHsg
b3duZXIuYmxvYkNodW5rKGJ1ZmZlcik7IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWwgeyBv
d25lci5ibG9iTG9hZGluZ1N1Y2NlZWRlZCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEz
NjYwZTg2YjdhMjU0OC4uNGI0NWJmZDg3NTA0MDZmNmU3ZGE3MThmOTk4MTY5NDcxYTVlODQ1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTE0
OCwxMyArMTQ4LDEzIEBAIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogdmFsdWUsIGludCBzaXplKQordm9pZCBGZXRjaExvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAg
ICAgaWYgKCFtX2NvbnN1bWVyKSB7Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZh
bHVlLCBzaXplKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2NvbnN1bWVyLT5hcHBlbmQodmFsdWUsIHNpemUp
OworICAgIG1fY29uc3VtZXItPmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lkIEZldGNoTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA0NjEyZDBlMGUzYTdlZmUzMDYw
Mzk2YjBkNzVhMmZhM2JjNGVkZGFkLi41ZWVhZWY4MmQxZGYzZWZjZWQyMTQwMDNkZjUxODg4NzAz
NmY5NzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBA
IC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCBBUEkuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgdXNlU3RyTGVuKSBmaW5hbDsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKaW5kZXggZmVkM2U1
ZWFlNzFhNTdjOTUyYWExNzFhZGNjYmRkOWJkMDQ1ZTc4OS4uMTA5ZTA4ZWNmN2E0N2U3YzAzN2Uz
MmRjYWFjYWI4NmM4MWMxOGQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaExvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6
ZV90KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMGU3YjAwNWU4OWEz
ZDE3NDBiMWNmOWFkZmY4YjRmMmYyZmM0M2M5OS4uZGNhMGUyMzgyZTMyZmMwMzcyODg3ZmQ0ODUy
MTRhMTczMDFiMWJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwCkBAIC0zNjIsMTIgKzM2MiwxMiBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNv
dQogICAgICAgICByZXNwb25zZUNhbGxiYWNrKG1fcmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNo
UmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQordm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9yZXNwb25z
ZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlIHx8IG1fY29uc3VtZURhdGFDYWxsYmFjayk7CiAKICAg
ICBpZiAobV9jb25zdW1lRGF0YUNhbGxiYWNrKSB7Ci0gICAgICAgIFNwYW4gY2h1bmsgeyBkYXRh
LCBzaXplIH07CisgICAgICAgIFNwYW4gY2h1bmsgeyBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpIH07CiAgICAgICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9k
eUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
CiAgICAgYXV0byYgc291cmNlID0gKm1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZTsK
IAogICAgIGlmICghc291cmNlLmlzUHVsbGluZygpKSB7Ci0gICAgICAgIG1fcmVzcG9uc2UuYm9k
eSgpLmNvbnN1bWVyKCkuYXBwZW5kKGRhdGEsIHNpemUpOworICAgICAgICBtX3Jlc3BvbnNlLmJv
ZHkoKS5jb25zdW1lcigpLmFwcGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgc3Rv
cCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghc291cmNlLmVucXVldWUoQXJy
YXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpIHsKKyAgICBpZiAoIXNvdXJjZS5lbnF1
ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSkgewogICAgICAgICBzdG9wKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBGZXRjaFJlc3Bv
bnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdp
dGhQYWRkaW4KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQ2h1bmsoUmVmPEpTQzo6VWlu
dDhBcnJheT4mJiBjaHVuaykKIHsKLSAgICBib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoY2h1bmst
PmRhdGEoKSwgY2h1bmstPmJ5dGVMZW5ndGgoKSk7CisgICAgYm9keSgpLmNvbnN1bWVyKCkuYXBw
ZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3Ro
KCkpKTsKIH0KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFzU3RyZWFtKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggNmIwNTA1
ZDg4YjEzMmUyOGNiOTU0YWI5YTBlN2VmZTgxM2Y3MDJhZi4uZjk5MjQ5YzM5ZjlkMGIyZmM4N2Ey
ZjljNDZkNzkzOTI4ODgxNGJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lk
IGRpZFN1Y2NlZWQoKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogCiAgICAgICAgIEZldGNoUmVzcG9uc2UmIG1fcmVz
cG9uc2U7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIG1fcmVzcG9uc2VDYWxsYmFjazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAppbmRleCAyN2E2ZDcwMzM0Y2EzMjA2YTk0ZTkxOTk0MzM2MzdjNGEz
MDUyZTdkLi5hNjQxZjgxMDdiNGZkMTc5MTFmZGI5MmJiMzBmNDVlMmU4MmI1MmZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCkBAIC0xNzcsMTAgKzE3NywxMCBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
cwogCiAvLyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291
cmNlKTsKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5h
cHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuaAppbmRleCBjZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2Jl
Li4wZDNiZGI3NDlkN2EzMzY4YjNjYTY4YzIxNzMxNjA1OTE1NDlkMWMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVy
cmlkZXMuCi0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIG5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CiAKICAgICAvLyBNb2RlbFBsYXllckNsaWVudCBvdmVycmlkZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXgg
ZDUxNzNmYmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOS4uZmVlOTg4NDIyMWJiNDNl
OGNjMDYyZWFiY2QwYTk5ZWM1NGMwMzQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3Ry
ZWFtOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJl
YW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCBiN2Y3
NWVkYTNiMjMzYjE5YjIwZWQ3MDQyODk0OWJiMzM1ODk4ZTgxLi43Mzg1MmQ0YzBhZjAzODQ3NWYx
NWI2NTQ5ZGM2ODliZjg1NTFiMjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlckxvYWRlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRl
eHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMTYzLDE2ICsxNjQsMTUgQEAgdm9p
ZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXIKICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0TG9hZGluZygp
OwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCkKIHsKLSAgICBBU1NFUlQo
ZGF0YSk7Ci0gICAgQVNTRVJUKGRhdGFMZW5ndGggPiAwKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNp
emUoKSk7CiAKICAgICAvLyBCYWlsIG91dCBpZiB3ZSBhbHJlYWR5IGVuY291bnRlcmVkIGFuIGVy
cm9yLgogICAgIGlmIChtX2Vycm9yQ29kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGxl
bmd0aCA9IGRhdGFMZW5ndGg7CisgICAgaW50IGxlbmd0aCA9IGJ1ZmZlci5zaXplKCk7CiAgICAg
dW5zaWduZWQgcmVtYWluaW5nQnVmZmVyU3BhY2UgPSBtX3RvdGFsQnl0ZXMgLSBtX2J5dGVzTG9h
ZGVkOwogICAgIGlmIChsZW5ndGggPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlbWFpbmluZ0J1
ZmZlclNwYWNlKSkgewogICAgICAgICAvLyBJZiB0aGUgYnVmZmVyIGhhcyBoaXQgbWF4aW11bSBz
aXplLCBpdCBjYW4ndCBiZSBncm93biBhbnkgbW9yZS4KQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lk
IEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlm
IChtX3ZhcmlhYmxlTGVuZ3RoKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBt
X3RvdGFsQnl0ZXMgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF0YUxlbmd0aCk7CisgICAgICAg
ICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBidWZmZXIuc2l6ZSgpOwog
ICAgICAgICAgICAgaWYgKG5ld0xlbmd0aCA8IG1fdG90YWxCeXRlcykgewogICAgICAgICAgICAg
ICAgIGZhaWxlZChOb3RSZWFkYWJsZUVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0yMDYsNyArMjA2LDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobGVuZ3RoIDw9IDAp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4obV9yYXdE
YXRhLT5kYXRhKCkpICsgbV9ieXRlc0xvYWRlZCwgZGF0YSwgbGVuZ3RoKTsKKyAgICBtZW1jcHko
c3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQsIGJ1
ZmZlci5kYXRhKCksIGxlbmd0aCk7CiAgICAgbV9ieXRlc0xvYWRlZCArPSBsZW5ndGg7CiAKICAg
ICBtX2lzUmF3RGF0YUNvbnZlcnRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXJMb2FkZXIuaAppbmRleCA1MzljMjMwNGE4MmU2M2FhZGZlMmM1NjdjOThkMGI4YzY4
N2E4ZTlmLi5iN2U1YjQwNTdmYjIwNmZmMzIzMTU1Y2MwZjE1MDJmY2EyMGQyNjdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtNzAsNyArNzAsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwg
aW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNWM1YmIyYWVhODM5OTE4YjA2OTc3
NTg4MWNlM2EzNjlhNDI4ZTViOS4uNzgxNzc1YTg0MTY2MjZlODI5MGZlYWI4MjRlN2IyYWVmNWNh
YjJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKQEAgLTYxNiwxMCArNjE2LDEwIEBAIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0
cnVtZW50CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJS
ZXNwb25zZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVE
YXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCi0gICAgICAgIG5ldHdv
cmtBZ2VudC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlk
ZW50aWZpZXIsIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0
d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5k
ZXggZDI5NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MS4uODJhY2NlZDIwY2Zk
NTEzMWIyNTAyZjA5OWE5YzRmYTJmZGQ2MTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTkzLDEzICsxOTMsMTMg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZShQYWdlJiwgRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lJiwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJj
ZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVz
cG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIERv
Y3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2Fk
aW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdChX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9u
c2UoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0
YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRG
YWlsTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC00MTQsNyArNDE0LDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNlKik7
CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
cik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0
YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGlu
Z0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2ls
bExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC0xMDgy
LDE3ICsxMDgyLDE3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVuCiAgICAgICAgIGRpZFJlY2Vp
dmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2VJbXBsKCphZ2VudHMsIGRvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlciwgaWRlbnRpZmllcik7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAg
ICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQotICAgICAg
ICBkaWRSZWNlaXZlRGF0YUltcGwoKmFnZW50cywgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0
aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwoKmFnZW50
cywgaWRlbnRpZmllciwgYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLWlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGRpZFJlY2VpdmVEYXRhSW1wbChpbnN0cnVtZW50
aW5nQWdlbnRzKGdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZGF0
YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMoZ2xv
YmFsU2NvcGUpLCBpZGVudGlmaWVyLCBidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUq
IGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Ms
IFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDM5YjAxMWNmMDZmN2YzODUz
MjQzZTBhNzYzYTNiMWQ0NTQ5MDQxNDkuLjMyOGViZTdlNjQxMTk1ZTVhNDY4NTAyNzU1OTEwZjc4
YzQ4YjU4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcApAQCAtOTAsMTAgKzkwLDEwIEBAIHNpemVfdCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRh
QnVmZmVyLnNpemUoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQor
dm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAg
bV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXIu
YXBwZW5kKGRhdGEpOwogfQogCiB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRCdWZmZXJSZXNvdXJjZURhdGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YSYgcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRk
UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCkKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEg
Y29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIFJlc291
cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJ
ZCk7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpCkBAIC0yMzAsMTUgKzIzMCwxNSBAQCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
bWF5YmVBZGRSZXNvdXJjZQogICAgIGlmICghc2hvdWxkQnVmZmVyUmVzb3VyY2VEYXRhKCpyZXNv
dXJjZURhdGEpKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VEYXRhOwogCi0gICAgaWYgKHJlc291
cmNlRGF0YS0+ZGF0YUxlbmd0aCgpICsgZGF0YUxlbmd0aCA+IG1fbWF4aW11bVNpbmdsZVJlc291
cmNlQ29udGVudFNpemUpCisgICAgaWYgKHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0aCgpICsgZGF0
YS5zaXplKCkgPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQogICAgICAgICBt
X2NvbnRlbnRTaXplIC09IHJlc291cmNlRGF0YS0+ZXZpY3RDb250ZW50KCk7CiAgICAgaWYgKHJl
c291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VE
YXRhOwogCi0gICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRhTGVuZ3RoKSAmJiAhcmVzb3VyY2VE
YXRhLT5pc0NvbnRlbnRFdmljdGVkKCkpIHsKKyAgICBpZiAoZW5zdXJlRnJlZVNwYWNlKGRhdGEu
c2l6ZSgpKSAmJiAhcmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRFdmljdGVkKCkpIHsKICAgICAgICAg
bV9yZXF1ZXN0SWRzRGVxdWUuYXBwZW5kKHJlcXVlc3RJZCk7Ci0gICAgICAgIHJlc291cmNlRGF0
YS0+YXBwZW5kRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgbV9jb250ZW50U2l6ZSAr
PSBkYXRhTGVuZ3RoOworICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSk7Cisg
ICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YS5zaXplKCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IHJlc291cmNlRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmgKaW5kZXggZGFhZTVmZTRhMzFlMzE1OTM2Mzc5MDQyM2Y1ZmJkMzM3MGM1Y2Qz
OS4uYzhjZWQxMmE2NDA3ZmRjZDU3NGVjYzJhNzgxOWVkZTY2MzgwM2RhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTEwOCw3ICsx
MDgsNyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29u
c3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYXBw
ZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgICAg
IHZvaWQgYXBwZW5kRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAgICAgdW5zaWduZWQg
ZGVjb2RlRGF0YVRvQ29udGVudCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKQEAg
LTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAg
ICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9
IGZhbHNlKTsKLSAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCk7CisgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBtYXli
ZURlY29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIHZvaWQg
YWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc291cmNl
Kik7CiAgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggM2NlYjRiNDdmMTA2OGEwYWZl
YWYwMGYxNzljMjgwMGM0NzZiZDZiMS4uOWE2MWViNDJkODFlNzkzYzljZjQ5YmNkNTZmZDIzMDRk
ZjQ5YWU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTI0LDE1ICsxMjQsMTMgQEAgcHVibGlj
OgogICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQv
cGxhaW4iX3MsIHRleHRFbmNvZGluZywgdXNlRGV0ZWN0b3IpOwogICAgIH0KIAotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJy
aWRlCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Ym9vbCB1c2VTdHJMZW4pIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIWRhdGFMZW5ndGgp
CisgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGlmIChkYXRhTGVuZ3RoID09IC0xKQotICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0
cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7Ci0KLSAgICAgICAgbV9y
ZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsK
KyAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSB1c2VTdHJMZW4gPyBzdHJsZW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEoKSkpIDogYnVmZmVyLnNpemUoKTsKKyAg
ICAgICAgbV9yZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRh
KCksIGRhdGFMZW5ndGgpKTsKICAgICB9CiAKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZQpAQCAtNTQ5LDkgKzU0Nyw4IEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpCiAgICAgICAgICAgICBpZiAocHJldmlvdXNSZXNvdXJjZURhdGEt
Pmhhc0NvbnRlbnQoKSkKICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291
cmNlQ29udGVudChyZXF1ZXN0SWQsIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5jb250ZW50KCksIHBy
ZXZpb3VzUmVzb3VyY2VEYXRhLT5iYXNlNjRFbmNvZGVkKCkpOwogICAgICAgICAgICAgZWxzZSBp
ZiAocHJldmlvdXNSZXNvdXJjZURhdGEtPmhhc0J1ZmZlcmVkRGF0YSgpKSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byBwcmV2aW91c0J1ZmZlciA9IHByZXZpb3VzUmVzb3VyY2VEYXRhLT5idWZmZXIo
KTsKLSAgICAgICAgICAgICAgICBwcmV2aW91c0J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1
dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXli
ZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUo
KSk7CisgICAgICAgICAgICAgICAgcHJldmlvdXNSZXNvdXJjZURhdGEtPmJ1ZmZlcigpLT5mb3JF
YWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAg
ICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElk
LCBidWZmZXIpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCkBAIC01NzQsMjQgKzU3MSwyOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgIC8v
IElmIHdlIHJldmFsaWRhdGVkIHRoZSByZXNvdXJjZSBhbmQgZ290IE5vdCBtb2RpZmllZCwgc2Vu
ZCBjb250ZW50IGxlbmd0aCBmb2xsb3dpbmcgZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAgLy8gYXMg
dGhlcmUgd2lsbCBiZSBubyBjYWxscyB0byBkaWRSZWNlaXZlRGF0YSBmcm9tIHRoZSBuZXR3b3Jr
IHN0YWNrLgogICAgIGlmIChpc05vdE1vZGlmaWVkICYmIGNhY2hlZFJlc291cmNlICYmIGNhY2hl
ZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKQotICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlm
aWVyLCBudWxscHRyLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCk7CisgICAgICAg
IGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNhY2hl
ZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmllcnMu
Y29udGFpbnMoaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyByZXF1
ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyLnRvVUludDY0
KCkpOworICAgIGludCBkYXRhTGVuZ3RoID0gZGF0YS5zaXplKCk7CiAKLSAgICBpZiAoZGF0YSkg
ewotICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNv
dXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJ
ZCwgZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgaWYgKGRhdGEuZGF0YSgpKSB7CisgICAgICAgIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1f
cmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBkYXRhKTsKIAog
ICAgICAgICAvLyBGb3IgYSBzeW5jaHJvbm91cyBYSFIsIGlmIHdlIGRpZG4ndCBhZGQgZGF0YSB0
aGVuIHdlIGNhbiBhcHBseSBpdCBoZXJlIGFzIGJhc2U2NCBlbmNvZGVkIGNvbnRlbnQuCiAgICAg
ICAgIC8vIE9mdGVuIHRoZSBkYXRhIGlzIHRleHQgYW5kIHdlIHdvdWxkIGhhdmUgYSBkZWNvZGVy
LCBidXQgZm9yIG5vbi10ZXh0IHdlIHdvbid0IGhhdmUgYSBkZWNvZGVyLgogICAgICAgICAvLyBT
eW5jIFhIUnMgbWF5IG5vdCBoYXZlIGEgY2FjaGVkIHJlc291cmNlLCB3aGlsZSBub24tc3luYyBY
SFJzIHVzdWFsbHkgdHJhbnNmZXIgZGF0YSBvdmVyIG9uIGNvbXBsZXRpb24uCiAgICAgICAgIGlm
IChtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5ICYmIHJlc291cmNlRGF0YSAmJiAhcmVzb3VyY2VE
YXRhLT5oYXNCdWZmZXJlZERhdGEoKSAmJiAhcmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgp
KQotICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVz
dElkLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhkYXRhLCBkYXRhTGVuZ3RoKSwgdHJ1ZSk7CisgICAg
ICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChyZXF1ZXN0SWQsIGJh
c2U2NEVuY29kZVRvU3RyaW5nKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSksIHRydWUpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGRhdGFMZW5ndGggPSBlbmNvZGVkRGF0YUxlbmd0aDsKKyAgICAg
ICAgZW5jb2RlZERhdGFMZW5ndGggPSAwOwogICAgIH0KIAogICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5kYXRhUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAoKSwgZGF0YUxlbmd0aCwgZW5j
b2RlZERhdGFMZW5ndGgpOwpAQCAtMTI3MSw3ICsxMjcyLDcgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJl
c3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBh
bHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJh
c2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVu
dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI5Niw5ICsxMjk3LDkgQEAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1
ZXN0V2l0aFJlc3BvbnMKICAgICB9CiAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkcyhX
VEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOwogICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOwotICAg
IGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZmZXIgPSBk
YXRhLnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAgbG9hZGVyLT5kaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwo
KV0oKSB7CiAgICAgICAgIGlmIChidWZmZXItPnNpemUoKSkKLSAgICAgICAgICAgIGxvYWRlci0+
ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5
bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICAgICAgbG9hZGVyLT5kaWRSZWNlaXZlRGF0YShi
dWZmZXIsIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogICAgICAg
ICBsb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkpOwogICAgIH0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaAppbmRleCA2YmNkODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRh
MTQxM2Q0Li5jYTZmNzRlMWI4Njk4MGY0MGIxNTVkMTNlMTZiNzFhZGZiOTQwNDU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0
IENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBS
ZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2
b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIENhY2hl
ZFJlc291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXgg
NDMzMmQ2OTFiYmY4MjZhN2M4N2VhODNhMzE3ZTk2MTE1YTIwNDk5My4uYTA5ODFhZGQ3OTg1MzJi
OTdiYWE0MDQxMjhiYTM4ODk2ZGFmNjg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZl
clJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1
dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAg
bV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAg
ICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBh
Z2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKaW5k
ZXggMjE1YzA0ZWM5ODk1ZTlmMWU2ZTE0N2RhODIwOTMwMDk4NTIzOTYyMy4uZmE3YWQzMDM5YTIw
NWU5MDU3MTA4ZjNjNmYzOTI0MTliYzQ2NDdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlckNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFz
cyBDb250ZW50RmlsdGVyQ2xpZW50IHsKQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29u
c3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50Rmls
dGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZp
cnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVS
TCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAppbmRleCA2YmYzYWMyOTdlYzZiMjYzYTA3ODY0MGJjZjNhZDU3NzlkYjBmZWRiLi4y
NTFkMjI1MmIwYjNjYzdhOWFlMWFiZTgxYTA5MTQxYTcxZjc5Yjg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTQ4Myw4ICs0ODMsOCBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmcoKQogICAgICAgICAvLyBJZiB0aGlzIGlzIGFuIGVt
cHR5IGRvY3VtZW50LCBpdCB3aWxsIG5vdCBoYXZlIGFjdHVhbGx5IGJlZW4gY3JlYXRlZCB5ZXQu
IENvbW1pdCBkdW1teSBkYXRhIHNvIHRoYXQKICAgICAgICAgLy8gRG9jdW1lbnRXcml0ZXI6OmJl
Z2luKCkgZ2V0cyBjYWxsZWQgYW5kIGNyZWF0ZXMgdGhlIERvY3VtZW50LgogICAgICAgICBpZiAo
IW1fZ290Rmlyc3RCeXRlKQotICAgICAgICAgICAgY29tbWl0RGF0YSgwLCAwKTsKLSAgICAgICAg
CisgICAgICAgICAgICBjb21taXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworCiAgICAg
ICAgIGlmICghZnJhbWVMb2FkZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZnJh
bWVMb2FkZXIoKS0+Y2xpZW50KCkuZmluaXNoZWRMb2FkaW5nKHRoaXMpOwpAQCAtMTE1Nyw4ICsx
MTU3LDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3ko
UG9saWN5QWN0aW9uIHBvbGljeSkKICAgICBpZiAoIWlzU3RvcHBpbmcoKSAmJiBtX3N1YnN0aXR1
dGVEYXRhLmlzVmFsaWQoKSAmJiBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkgewogICAgICAgICBh
dXRvIGNvbnRlbnQgPSBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKTsKICAgICAgICAgaWYgKGNv
bnRlbnQgJiYgY29udGVudC0+c2l6ZSgpKSB7Ci0gICAgICAgICAgICBjb250ZW50LT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgIGRhdGFSZWNlaXZl
ZChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgY29udGVudC0+
Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgeworICAgICAg
ICAgICAgICAgIGRhdGFSZWNlaXZlZChidWZmZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKQpAQCAtMTE3MSw3ICsxMTcx
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9s
aWN5QWN0aW9uIHBvbGljeSkKICAgICB9CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1p
dExvYWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmNvbW1pdExvYWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIEJvdGgg
dW5sb2FkaW5nIHRoZSBvbGQgcGFnZSBhbmQgcGFyc2luZyB0aGUgbmV3IHBhZ2UgbWF5IGV4ZWN1
dGUgSmF2YVNjcmlwdCB3aGljaCBkZXN0cm95cyB0aGUgZGF0YXNvdXJjZQogICAgIC8vIGJ5IHN0
YXJ0aW5nIGEgbmV3IGxvYWQsIHNvIHJldGFpbiB0ZW1wb3JhcmlseS4KQEAgLTExODYsNyArMTE4
Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCkKICAgICBpZiAoQXJjaGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1JTUVUeXBl
KHJlc3BvbnNlKCkubWltZVR5cGUoKSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgotICAgIGZy
YW1lTG9hZGVyLT5jbGllbnQoKS5jb21taXR0ZWRMb2FkKHRoaXMsIGRhdGEsIGxlbmd0aCk7Cisg
ICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmNvbW1pdHRlZExvYWQodGhpcywgZGF0YSk7CiAKICAg
ICBpZiAoaXNNdWx0aXBhcnRSZXBsYWNpbmdMb2FkKCkpCiAgICAgICAgIGZyYW1lTG9hZGVyLT5j
bGllbnQoKS5kaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpOwpAQCAtMTIxNSw3ICsxMjE1LDcg
QEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFVzZUFjdGl2ZVNlcnZpY2VXb3JrZXJGcm9tUGFy
ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWUKIH0KICNlbmRpZgogCi12b2lkIERvY3VtZW50TG9h
ZGVyOjpjb21taXREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQordm9p
ZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7
CiAgICAgaWYgKCFtX2dvdEZpcnN0Qnl0ZSkgewogICAgICAgICBtX2dvdEZpcnN0Qnl0ZSA9IHRy
dWU7CkBAIC0xMzEzLDI0ICsxMzEzLDI0IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERh
dGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCiAjZW5kaWYKIAogICAgIEFT
U0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzaW5nKCkpOwotICAgIG1fd3JpdGVyLmFkZERh
dGEoYnl0ZXMsIGxlbmd0aCk7CisgICAgbV93cml0ZXIuYWRkRGF0YShkYXRhKTsKIH0KIAotdm9p
ZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX21h
aW5SZXNvdXJjZSk7Ci0gICAgZGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCk7CisgICAgZGF0YVJl
Y2VpdmVkKGJ1ZmZlcik7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0
YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKLSAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0
ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKSkKKyAgICBpZiAobV9j
b250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2
ZWQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKICNlbmRp
ZgogCi0gICAgQVNTRVJUKGRhdGEpOwotICAgIEFTU0VSVChsZW5ndGgpOworICAgIEFTU0VSVChi
dWZmZXIuZGF0YSgpKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSk7CiAgICAgQVNTRVJUKCFt
X3Jlc3BvbnNlLmlzTnVsbCgpKTsKIAogICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIENGTmV0d29y
ayB3aGVyZSBjYWxsYmFja3MgY2FuIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRzIGFyZSBk
ZWZlcnJlZC4KQEAgLTEzNDAsMTIgKzEzNDAsMTIgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0
YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiAjZW5kaWYKIAogICAg
IGlmIChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKQotICAgICAgICBm
cmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEodGhpcywgbV9p
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgZGF0YSwgbGVuZ3RoLCAtMSk7
CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hEaWRSZWNlaXZlRGF0
YSh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCBidWZmZXIs
IC0xKTsKIAotICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNl
aXZlZChkYXRhLCBsZW5ndGgsIC0xLCBmYWxzZSk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9z
dC0+bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGJ1ZmZlciwgLTEsIGZhbHNlKTsKIAogICAgIGlm
ICghaXNNdWx0aXBhcnRSZXBsYWNpbmdMb2FkKCkpCi0gICAgICAgIGNvbW1pdExvYWQoZGF0YSwg
bGVuZ3RoKTsKKyAgICAgICAgY29tbWl0TG9hZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50
TG9hZGVyOjpzZXR1cEZvclJlcGxhY2UoKQpAQCAtMTYxNCw3ICsxNjE0LDcgQEAgYm9vbCBEb2N1
bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRNSU1FVHlw
ZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1l
bnQoKSk7Ci0gICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5S
ZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKCptX3BhcnNlZEFyY2hpdmVE
YXRhKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMjI1Nyw4ICsyMjU3LDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgp
CiAKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRl
ZCA9IGZhbHNlOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURh
dGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1p
dExvYWQobWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKTsKIH0KIAogdm9pZCBE
b2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCkBAIC0yNDEwLDkgKzI0MDksOSBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChT
ZWN1cml0eVBvbGljeVZpb2xhdGlvbgogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRh
UmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKLSAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgc2l6ZSk7CisgICAgZGF0YVJlY2VpdmVkKGJ1ZmZl
cik7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JD
b250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBiNDY5ODFkNzUwYjI1YzFmZDMwN2YxNmZkYTc0Yjdl
ZTMwNmE0YzM5Li4yOGUyOGE2ODhhZTZiNTdlMGYwZDE0YzRlN2EwYzI1NThjYjY3ZTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtODYsNiArODYsNyBAQCBjbGFz
cyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3Vy
Y2U7CiBjbGFzcyBVc2VyQ29udGVudFVSTFBhdHRlcm47CkBAIC0zNzcsNyArMzc4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzZXRUaW1pbmcoKSB7IG1fbG9hZFRpbWluZyA9IHsgfTsgfQogCiAg
ICAgLy8gVGhlIFdlYktpdCBsYXllciBjYWxscyB0aGlzIGZ1bmN0aW9uIHdoZW4gaXQncyByZWFk
eSBmb3IgdGhlIGRhdGEgdG8gYWN0dWFsbHkgYmUgYWRkZWQgdG8gdGhlIGRvY3VtZW50LgotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6
ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3QmIGFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KCkgY29uc3Q7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3QqIGFwcGxpY2F0aW9uQ2Fj
aGVIb3N0VW5sZXNzQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKQEAgLTQ3Nyw3ICs0NzgsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBjb21taXRJZlJlYWR5KCk7CiAgICAgdm9pZCBzZXRNYWluRG9j
dW1lbnRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBjb21taXRMb2FkKGNv
bnN0IHVpbnQ4X3QqLCBpbnQpOworICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHNl
dHVwRm9yUmVwbGFjZSgpOwpAQCAtNDkzLDcgKzQ5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBt
YWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNw
b25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwpAQCAtNTAzLDEzICs1MDQsMTMg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAvLyBDb250
ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgY29udGVu
dEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0
aXR1dGVEYXRhJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgYm9vbCBtYXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IGI5YzQxMzUyNTY3NjI2NzIxOTA3YWYzNjZkZmIxZGVjNzk0YzI0NzQuLjg2NGI2NWExZDExMzFm
YjYzNzEyNWIxNzM5OTFlOWQzZTBhNmU3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00MzcsMjAgKzQzNywyMCBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBpZGVudAogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2Uo
aWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVz
b3VyY2UpOwotICAgIGRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGF0
YSwgZGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+aWRlbnRpZmll
cigpLCBidWZmZXIpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAKICAgICBpZiAobV9kZWxheUNhbGxiYWNrc0Zv
ckludGVncml0eUNoZWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRh
KGJ1ZmZlciwgZmFsc2UpOwogfQogCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Zmlu
aXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
UmVzb3VyY2VUaW1pbmcmIHJlc291cmNlVGltaW5nKQpAQCAtNDkzLDIwICs0OTMsMTQgQEAgdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWYKIAogICAgICAgICBpZiAob3B0aW9ucygpLmZpbHRlcmluZ1Bv
bGljeSA9PSBSZXNwb25zZUZpbHRlcmluZ1BvbGljeTo6RGlzYWJsZSkgewogICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7Ci0gICAg
ICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkg
ewotICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21l
bnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKSkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1
ZmZlciwgZmFsc2UpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlc3Bv
bnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpEZWZhdWx0KTsKIAogICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCBSZXNvdXJjZVJl
c3BvbnNlOjpmaWx0ZXIocmVzcG9uc2UsIG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRjaE9w
dGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlID8gUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4
cG9zZUFsbEhlYWRlcnNDaGVjazo6Tm8gOiBSZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3JtRXhwb3Nl
QWxsSGVhZGVyc0NoZWNrOjpZZXMpKTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBt
X3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyLT5m
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsK
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRv
KiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQorICAgICAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSgqYnVmZmVyLCBmYWxzZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTY2NywxMSArNjYxLDggQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICB9
CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlm
IChkYXRhKSB7Ci0gICAgICAgIGRhdGEtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50
KSB7Ci0gICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBzZWdtZW50LmRhdGEo
KSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgaWYgKGRhdGEpCisg
ICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsICpkYXRhKTsKIAogICAgIGNvbnN0IGF1
dG8qIHRpbWluZyA9IHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwo
KTsKICAgICBhdXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21TeW5jaHJv
bm91c0xvYWQocmVxdWVzdFVSTCwgbV9vcHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWluZywgdGlt
aW5nID8gKnRpbWluZyA6IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCksIHJlc3Bv
bnNlLCBzZWN1cml0eU9yaWdpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCBmMWY0MWVlOTFkNmNlOGExYzU4NjIzODE3YjM1
OGY3NzQ2NTFlMGE0Li5jODZiYTdmNDUzODNiNmMyODYwMDMyZDNhZWJmYmEzZTA4NjA3NjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
CkBAIC04NiwxNCArODYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudAogICAgICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJlc291cmNl
JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
Qnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsK
KyAgICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAg
ICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VUaW1pbmcmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRpbWlu
Z0ZvcldvcmtlckxvYWQoY29uc3QgUmVzb3VyY2VUaW1pbmcmKTsKICAgICAgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOwogCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwogICAgICAgICB2b2lkIGRpZEZh
aWwoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
ICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAppbmRleCBiMDQ2ZWYwZGUy
MDQ4ZWZkNDMxOTcwMjYyMmI5NmE3ZGYyZmVhZmE3Li40ZmY5MzgxODBmZGQyOGZjNzE1ZDA4ODgx
NjA4ZmM2Mjg5NDkyZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5j
cHAKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjpyZXBvcnREYXRhUmVj
ZWl2ZWQoKQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnJlc29sdmVTdHlsZShEb2N1bWVudDo6
UmVzb2x2ZVN0eWxlVHlwZTo6UmVidWlsZCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRXcml0ZXI6OmFk
ZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCit2b2lkIERvY3VtZW50
V3JpdGVyOjphZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGSVhN
RTogQ2hhbmdlIHRoZXNlIHRvIEFTU0VSVCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MDQyNyBoYXMgYmVlbiByZXNvbHZlZC4KICAgICBSRUxFQVNFX0FTU0VS
VChtX3N0YXRlICE9IFN0YXRlOjpOb3RTdGFydGVkKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lk
IERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVu
Z3RoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChtX3BhcnNlcik7Ci0gICAg
bV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBieXRlcywgbGVuZ3RoKTsKKyAgICBtX3BhcnNl
ci0+YXBwZW5kQnl0ZXMoKnRoaXMsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZv
aWQgRG9jdW1lbnRXcml0ZXI6Omluc2VydERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYg
bWFya3VwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAppbmRleCAwNzE3MmM5
NzM5ZWI1NzM1YmM4MWY4ZGVmMmZiOWIyODVjMjU0ZDBiLi5jMGEzNGE2YjdlOWNmZTk2NDMwNDVh
OTVlNzkzMjI1MjM2M2IyNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIu
aApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIERvY3VtZW50UGFyc2VyOwogY2xhc3MgRnJhbWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBEb2N1bWVudFdyaXRlciB7CkBA
IC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYmVnaW4oKTsKICAgICBib29sIGJl
Z2luKGNvbnN0IFVSTCYsIGJvb2wgZGlzcGF0Y2hXaW5kb3dPYmplY3RBdmFpbGFibGUgPSB0cnVl
LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IG51bGxwdHIpOwotICAgIHZvaWQgYWRkRGF0YShj
b25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CisgICAgdm9pZCBhZGREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHkoY29u
c3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRoZSBw
YXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDc1OGNiZTgwNjU0ZTg4ODk3
YWNkOWVkNDExOTkwYzg2ODZjYWYzYmEuLmQyM2M5NmI2YzUyODAzZmVjMmU0NTdiN2VjN2RiYzll
YjM3OTk1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC04NzAs
NyArODcwLDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlw
YXJ0Q29udGVudCgpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0
dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBT
aGFyZWRCdWZmZXImKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCAyMjY5OWM5YzUxODMyYTVhYThjODlhYmFiMmZmYzdlMDk4
NWJmYzAwLi4xMTZhMTdkMWY1YzllNjQ3ZTFmMTQxYTEwMDg2YjA3OTgzOTNmM2VhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCos
IGludCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29u
c3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1l
bnRMb2FkZXIqKSBmaW5hbDsKIAogICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCBmZGM5N2RjNDYyYzg3NTI2YWExODhmNzk2OGQ2MGEwYzgzZDY4MGQ5
Li4xMWMwYThmNjg2MTUwNmUwOTYxZTUyYThmZjRjNzIwYjI1YmUyOTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE2ODcsNyArMTY4Nyw3IEBAIGJvb2wgRnJhbWVM
b2FkZXI6OndpbGxMb2FkTWVkaWFFbGVtZW50VVJMKFVSTCYgdXJsLCBOb2RlJiBpbml0aWF0b3JO
b2RlKQogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgIFJlc291
cmNlRXJyb3IgZXJyb3I7CiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZShyZXF1ZXN0LCBpZGVudGlm
aWVyLCBlcnJvcik7Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdl
cyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCBSZXNvdXJjZVJl
c3BvbnNlKHVybCwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSksIDAsIC0xLCAtMSwgZXJyb3IpOwor
ICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExv
YWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0
cmluZygpLCAtMSwgU3RyaW5nKCkpLCBudWxscHRyLCAtMSwgZXJyb3IpOwogCiAgICAgdXJsID0g
cmVxdWVzdC51cmwoKTsKIApAQCAtMjA4Nyw4ICsyMDg3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZSh0aXRsZSk7CiAKICAgICAgICAgLy8gU2VuZCByZW1haW5pbmcgbm90aWZp
Y2F0aW9ucyBmb3IgdGhlIG1haW4gcmVzb3VyY2UuCi0gICAgICAgIG5vdGlmaWVyKCkuc2VuZFJl
bWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgbWFpblJlc291
cmNlSWRlbnRpZmllciwgbWFpblJlc291cmNlUmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpLAot
ICAgICAgICAgICAgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50PihtX2RvY3VtZW50TG9hZGVyLT5y
ZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwgbWFpblJlc291Y2VFcnJvcik7
CisgICAgICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1
bWVudExvYWRlci5nZXQoKSwgbWFpblJlc291cmNlSWRlbnRpZmllciwgbWFpblJlc291cmNlUmVx
dWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpLCBudWxscHRyLCBzdGF0aWNfY2FzdDxpbnQ+KG1fZG9j
dW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCBtYWluUmVz
b3VjZUVycm9yKTsKIAogICAgICAgICBWZWN0b3I8UmVmPEZyYW1lPj4gdGFyZ2V0RnJhbWVzOwog
ICAgICAgICB0YXJnZXRGcmFtZXMuYXBwZW5kKG1fZnJhbWUpOwpAQCAtMjEzNiw3ICsyMTM1LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAgICAg
IC8vIEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywg
dGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAgICAgICAgIC8vIEhvd2V2
ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdv
bid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAgICAgICAgIC8vIENvdWxkIGJlIGFuIGlzc3Vl
IHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgotICAgICAgICAgICAgbm90aWZpZXIoKS5zZW5kUmVt
YWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVy
LCByZXF1ZXN0LCByZXNwb25zZSwgMCwgc3RhdGljX2Nhc3Q8aW50PihyZXNwb25zZS5leHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKSksIDAsIGVycm9yKTsKKyAgICAgICAgICAgIG5vdGlmaWVyKCkuc2Vu
ZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRp
ZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIG51bGxwdHIsIHN0YXRpY19jYXN0PGludD4ocmVzcG9u
c2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCBlcnJvcik7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBGSVhNRTogV2h5IG9ubHkgdGhpcyBmcmFtZSBhbmQgbm90IHBhcmVudCBmcmFtZXM/CkBA
IC0zMTY2LDcgKzMxNjUsOCBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICAgICAg
ICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291
cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKICAg
ICAgICAgfQogICAgIH0KLSAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNl
LCBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAs
IC0xLCBlcnJvcik7CisKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNl
LCBkYXRhLCAtMSwgZXJyb3IpOwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCkBAIC0zNjQ3
LDcgKzM2NDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cgogCiAgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSA9IHJlc291cmNlLnJlc3BvbnNlKCk7CiAgICAgcmVzcG9uc2Uuc2V0U291
cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TWVtb3J5Q2FjaGUpOwotICAgIG5vdGlmaWVy
KCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwg
aWRlbnRpZmllciwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsIDAsIHJlc291cmNlLmVuY29kZWRTaXpl
KCksIDAsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHJlc3Bv
bnNlLCBudWxscHRyLCByZXNvdXJjZS5lbmNvZGVkU2l6ZSgpLCBlcnJvcik7CiB9CiAKIHZvaWQg
RnJhbWVMb2FkZXI6OmFwcGx5VXNlckFnZW50SWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBlZTlm
M2QwYzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThkMTIzNjUyLi4zNTJhNGM0ZmI1MDRmN2NkNGQy
ZWM0MDZlNmJjMjkxMWE1NWZkMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtNyw3ICs3LDcgQEAKICAqIGFyZSBtZXQ6CiAgKgogICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCiAgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCkBAIC01MCw3ICs1MCw3IEBACiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotI2lmZGVmIF9fT0JKQ19fIAorI2lmZGVmIF9fT0JKQ19fCiAj
aW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIHR5cGVkZWYgaWQgUmVtb3RlQVhPYmpl
Y3RSZWY7CiAjZWxzZQpAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsKIApAQCAtMjE0LDkg
KzIxNCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRD
b250ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVu
dCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVy
KiwgY29uc3QgdWludDhfdCosIGludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRM
b2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSA9IDA7Ci0gICAgCisKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKSA9IDA7CiAKQEAgLTI3Miw3ICsy
NzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYp
IGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5
UG9saWN5KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICAKKwogICAgIHZpcnR1YWwg
dm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hl
ZEZyYW1lKikgPSAwOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zODEsNyArMzgxLDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIEFsbG93c0NvbnRlbnRKYXZhU2NyaXB0
IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gQWxsb3dzQ29udGVudEphdmFTY3JpcHQ6OlllczsgfQotICAgIAorCiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmFibGVJbkFw
cEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCkgeyB9CkBAIC0zOTAs
NyArMzkwLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRVc2VQREZQbHVnaW4oY29uc3QgU3RyaW5nJiwgU3RyaW5nVmlldykgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgotICAgIAorCiAgICAgdmlydHVhbCBib29sIGlz
UGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggNWQxMjBlMjQ3YWMyNjI3MTE2MWRlMGRjNTIzMDI0ZGM4ZGUzNGQ2OS4uMWExN2E3MGZhNThj
NzIyOGY2Mzg5MzU5ZGQwZDMzOWQwZTA1Y2QyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcApAQCAtMjMxLDEzICsyMzEsMTMgQEAgdm9pZCBNZWRp
YVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1MKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1Nl
bnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAgIFJlZlB0
cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgZGF0YUxlbmd0aCk7
CisgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CiB9CiAKIHZv
aWQgTWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmZjZjMjg4NzEwMDg4ZjRiMDU0Y2U0NzYz
ZDVkYTBkZGM5MmMyMDY1Li43YjU1NzcyMGVmMDUzM2ZiYWEyMjY1NjUzOGVmZGQ5NmY2MTc5ZmI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTg2
LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIGJv
b2wgc2hvdWxkQ2FjaGVSZXNwb25zZShDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJlc291cmNlJiwgdW5z
aWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cAppbmRleCA2MDQzYWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkxNTAzLi41Y2FhZGY2
MjljNzBhZTA4NmI3N2JkNzJjZDI4Njc1MzZiOGZhOTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAgLTE0MSwzMCAr
MTQxLDE0IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwCiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
ZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBl
KTsKLX0KLQotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKLSAgICBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERh
dGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBpZiAobV9jbGllbnQpIHsKLSAgICAg
ICAgaWYgKGJ1ZmZlcikgewotICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0o
YXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0
YSh0aGlzLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGRhdGEsIGxlbmd0aCk7Ci0gICAgfQorICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlcik7CiAKLSAgICBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CisgICAgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlw
ZSk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCmluZGV4
IGI1MTc0ZWRjOTRiOTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzguLjFlYzdkNjFlM2ExNzVj
MjJiNTU4NzU4ZDM3ZWQwYzU1YmU1ZjEzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC0zNiwxMiArMzYsMTMgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xp
ZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xp
ZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXIm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCBi
b29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Miw4ICs2
Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc0LDggKzc0LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotCiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKICAg
ICBXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCmluZGV4IDYy
YmI1NmUzNGU2ZjQ2ZDI2MjgzNmNmY2E0NjViNGRiMGUzMDgzY2YuLjFhYzBlNjdjN2Y2OGRlZDBl
Y2I3OGUxMWMwMjQ2OWIxMDkxZDUzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRl
ci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAj
aW5jbHVkZSAiUXVpY2tMb29rLmgiCkBAIC03OCwxMiArNzksMTIgQEAgdm9pZCBSZXNvdXJjZUxv
YWROb3RpZmllcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNv
bnN0IFJlc28KICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXItPmRvY3VtZW50
TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCByLCBsb2FkZXIpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCkKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQotICAgICAg
ICBwYWdlLT5wcm9ncmVzcygpLmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRpZmllcigp
LCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNyZW1lbnRQcm9ncmVz
cyhsb2FkZXItPmlkZW50aWZpZXIoKSwgYnVmZmVyLnNpemUoKSk7CiAKLSAgICBkaXNwYXRjaERp
ZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVy
KCksIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaXNwYXRjaERp
ZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVy
KCksIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5v
dGlmaWVyOjpkaWRGaW5pc2hMb2FkKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtMTUzLDEzICsxNTQsMTMgQEAg
dm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgUmUKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUsIGlkZW50aWZpZXIsIGxvYWRlciwgciwg
cmVzb3VyY2VMb2FkZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRj
aERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0
Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKICAgICAvLyBOb3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVyQ2xpZW50
IG1heSBjYXVzZSB0aGUgZnJhbWUgdG8gYmUgZGVzdHJveWVkLgogICAgIFJlZjxGcmFtZT4gcHJv
dGVjdChtX2ZyYW1lKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlk
UmVjZWl2ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhTGVuZ3RoKTsKKyAg
ICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgobG9hZGVyLCBpZGVudGlmaWVyLCBidWZmZXIuc2l6ZSgpKTsKIAotICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoJm1fZnJhbWUsIGlkZW50aWZpZXIsIGRhdGEs
IGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhKCZtX2ZyYW1lLCBpZGVudGlmaWVyLCBidWZmZXIsIGVuY29k
ZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2Fk
TWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQpAQCAtMTgwLDcgKzE4MSw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRGYWlsTG9hZGluZygmbV9mcmFtZSwgbG9hZGVyLCBpZGVudGlmaWVyLCBlcnJvcik7CiB9
CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgLy8gSWYgdGhlIHJlcXVl
c3QgaXMgbnVsbCwgd2lsbFNlbmRSZXF1ZXN0IGNhbmNlbGxlZCB0aGUgbG9hZC4gV2Ugc2hvdWxk
CiAgICAgLy8gb25seSBkaXNwYXRjaCBkaWRGYWlsTG9hZGluZyBpbiB0aGlzIGNhc2UuCkBAIC0x
OTMsOCArMTk0LDggQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0Rl
bGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwKICAgICBpZiAoIXJlc3BvbnNl
LmlzTnVsbCgpKQogICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXIsIGlk
ZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlmIChkYXRhTGVuZ3RoID4gMCkKLSAgICAgICAg
ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5n
dGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgp
KQorICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlciwgaWRlbnRpZmllciwgKmJ1
ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKSB7CiAg
ICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCmluZGV4IDZkYTE2MDMyNWY0MmZlZjU0MGM2
YmQ1MGJiMTgyZTg2OWRhZGU5ZTMuLjJiMjVkOGEzZGQ2MTk0MGY1Y2FmNTRkYTljNzQ2NWIwYTI4
ZDM0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3Rp
Zmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5o
CkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlc291cmNlTG9hZE5vdGlmaWVyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSZXNvdXJjZUxvYWROb3RpZmllcik7CkBAIC01NSwxOCArNTYs
MTggQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkZXIq
LCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9h
ZGVyKiwgY29uc3QgdWludDhfdCosIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBTaGFy
ZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQg
ZGlkRmFpbFRvTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAog
ICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKiA9IG51bGxw
dHIpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVE
YXRhKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRG
aW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9pZCBzZW5kUmVtYWluaW5nRGVs
ZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1
ZmZlcj4sIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAg
ICAgYm9vbCBpc0luaXRpYWxSZXF1ZXN0SWRlbnRpZmllcihSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAppbmRleCA2ZGViYjI1ODhhM2U4MmIyMWM2MWQ3ZThmMzZlNGY0YmJiYTI1ZTYwLi42NjQ3
YzI3MDgxMTgwZWJjZWMyYjVjYTI5ZmQ2MGI3MjNhYjY0ODM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI5OSw5ICsyOTksOSBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpsb2FkRGF0YVVSTCgpCiAKICAgICAgICAgYXV0byBkYXRhU2l6ZSA9IGRlY29kZVJl
c3VsdC0+ZGF0YS5zaXplKCk7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgZGF0YVJlc3BvbnNl
ID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHVybCwgZGVjb2RlUmVzdWx0LnZh
bHVlKCkpOwotICAgICAgICB0aGlzLT5kaWRSZWNlaXZlUmVzcG9uc2UoZGF0YVJlc3BvbnNlLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRhdGFTaXplLCBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkZWNvZGVSZXN1bHQtPmRhdGEpKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGRhdGFSZXNwb25z
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBkYXRhU2l6
ZSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGVjb2RlUmVzdWx0LT5kYXRh
KSldKCkgewogICAgICAgICAgICAgaWYgKCF0aGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpICYm
IGRhdGFTaXplICYmIG1fcmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkhFQUQiKQotICAgICAgICAg
ICAgICAgIHRoaXMtPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShkYXRhKSwgZGF0YVNpemUsIERh
dGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgdGhpcy0+ZGlkUmVjZWl2
ZUJ1ZmZlcihkYXRhLCBkYXRhU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKIAogICAg
ICAgICAgICAgaWYgKCF0aGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAgICAgICAgICAg
ICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKQEAgLTMyOCw3ICszMjgsNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQog
ICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmFk
ZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAg
aWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzM2LDEwICszMzYsNyBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBGcmFnbQogICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKQogICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogCi0g
ICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKCpidWZmZXIpOwot
ICAgIGVsc2UKLSAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cisg
ICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdApAQCAtNTM5
LDcgKzUzNiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByLCBDb21wbGV0aW9uSGFuCiAgICAgICAgIGZyYW1lTG9hZGVy
KCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIG1fcmVzcG9uc2UpOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhlIGZvbGxv
d2luZyBhc3NlcnRpb25zIGFyZSBub3QgcXVpdGUgdmFsaWQgaGVyZSwgc2luY2UgYSBzdWJjbGFz
cwogICAgIC8vIG1pZ2h0IG92ZXJyaWRlIGRpZFJlY2VpdmVEYXRhIGluIGEgd2F5IHRoYXQgaW52
YWxpZGF0ZXMgdGhlbS4gVGhpcwpAQCAtNTQ3LDMwICs1NDQsMjIgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBsb25nIGwKICAgICAvLyBBU1NFUlQoY29uID09IGNvbm5lY3Rpb24pOwogICAgIC8vIEFTU0VS
VCghbV9yZWFjaGVkVGVybWluYWxTdGF0ZSk7CiAKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlw
ZSk7CisgICAgZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRh
UGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdU
Rk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0K
LXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKLXsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0
YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCi0gICAgQVNTRVJUKCFidWZm
ZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKLQogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlz
IGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwog
ICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhh
bXBsZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYuCiAgICAgUmVmPFJlc291cmNlTG9hZGVyPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGFkZERhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgs
IGJ1ZmZlci5nZXQoKSwgZGF0YVBheWxvYWRUeXBlKTsKKyAgICBhZGRCdWZmZXIoYnVmZmVyLCBk
YXRhUGF5bG9hZFR5cGUpOwogCiAgICAgLy8gRklYTUU6IElmIHdlIGdldCBhIHJlc291cmNlIHdp
dGggbW9yZSB0aGFuIDJCIGJ5dGVzLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJpZ2h0IHRoaW5n
LgogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcg
c3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBh
biBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRM
b2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2Zy
YW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSwgc3RhdGljX2Nhc3Q8aW50PihlbmNv
ZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtNzI5
LDE0ICs3MTgsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5
bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYKICAgICBkaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNl
aXZlRGF0YShkYXRhLCBsZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVz
KTsKKyAgICBkaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZEJ5dGVzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShi
dWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgZGlkUmVj
ZWl2ZUJ1ZmZlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKaW5kZXggOTA3NWNiYzBhMzA0MGVhMTUwYTg2MjVjZGEwODkwYjFl
ZTEzOGM3Mi4uMTA5OGU0ZjI3ODg5Y2RhN2IzYTljZmQ0ZDU0NmFlMmZkOWE3YzU2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTEwNyw4ICsxMDcsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAKQEAgLTE2Nyw4ICsxNjcsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNl
bGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsg
fQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNp
Z25lZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLSAgICAKICAgICB2b2lkIHNldFJlZmVycmVy
UG9saWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJl
clBvbGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQ
b2xpY3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KIApAQCAt
MTkyLDcgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSA9IDA7CiAKLSAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1
aW50OF90KiwgdW5zaWduZWQsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5
cGUpOworICAgIHZvaWQgYWRkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBE
YXRhUGF5bG9hZFR5cGUpOwogICAgIHZvaWQgbG9hZERhdGFVUkwoKTsKICAgICB2b2lkIGZpbmlz
aE5ldHdvcmtMb2FkKCk7CiAKQEAgLTIwMiw4ICsyMDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNw
b25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwg
UmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgU2hhcmVkQnVm
ZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCAzN2Qw
YmI4MjFhYmQ4NmE5YjU2MDZlMTI3ZWZjOTQxMmE1MWJiMWE5Li45NzJmMmFmMjI2MDNmNDI0Y2Q4
Nzc1ZjU5MTAxMGUyZDc2OTM4YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTUxOCwzMiArNTE4LDE1IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZVBvbGljeSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVy
ID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7Ci0gICAgICAgIGlmIChwcmV2aWV3TG9hZGVyLT5k
aWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgpKQorICAgICAgICBpZiAocHJldmlld0xvYWRlci0+
ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBs
ZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQot
Ci12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotI2lmIFVTRShRVUlDS19MT09LKQotICAg
IGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIuZ2V0KCkpIHsKLSAgICAg
ICAgaWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLmdldCgpKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0
YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKICAgICBBU1NFUlQobV9yZXNvdXJj
ZSk7CiAKICAgICBpZiAobV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID49
IDQwMCAmJiAhbV9yZXNvdXJjZS0+c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSkK
QEAgLTU1NSwxMyArNTM4LDEzIEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAvLyBhbnl0
aGluZyBpbmNsdWRpbmcgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0
OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCiAgICAgUmVmPFN1YnJlc291cmNlTG9h
ZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgYnVmZmVyLmNvcHlSZWYoKSwgZW5jb2RlZERh
dGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CisgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIAog
ICAgIGlmICghbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCkgewogICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291
cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7Cisg
ICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlci5tYWtlQ29udGlndW91cygp
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgK
aW5kZXggODMyYzlmMGU3M2QzODQ2NGE3OTVmNDAzODYwZjc5YzM0ZTczYmM3Zi4uM2RiZDUzMzhh
ZmU0OWI0Nzg1N2Q1MzQwOTc4ODc1MmVhYTFhZWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTczLDggKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25I
YW5kbGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CkBAIC05Miw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3Ry
aW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25D
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1Jl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBp
bnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAgICB2b2lkIG5vdGlmeURvbmUoTG9hZENvbXBs
ZXRpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
CmluZGV4IGNmMmRlMGM2MmQ5NWYzMzI1YjQyYjQ2ZTI0MDM3NzQ0MTA3NDJhMGQuLjNkMTkyODYy
ZjI3NzI5YjJmMzhkYjU0YmQ4MzY3OTk1MjVjMDE5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVy
ZW5jZV9jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7
IH0KLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1f
ZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSB7IG1fZGF0YS5hcHBlbmQoYnVmZmVyKTsgfQogICAgIHZvaWQgY2xl
YXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNv
dXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVz
cG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXJDbGllbnQuaAppbmRleCA4NGQ3OWIwYzk5ZGYxMGQ5OTM4MGI4NDgzMTczNzFi
YzFlODU3M2JmLi5jZWYwYzhmMWYxN2QwZjU3NjU5YTM1NDFiNTRmNjM4OTkwNjRiMWM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKQEAgLTM3
LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVGhyZWFkYWJsZUxvYWRlckNsaWVudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwpAQCAtNDQsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRE
YXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcg
Lyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwg
aW50IC8qZGF0YUxlbmd0aCovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCAvKiB1c2VTdHJMZW4gKi8pIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3Jh
cHBlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFw
cGVyLmgKaW5kZXggNDJhZTY0OTA5YTVlMGZlNDRjNmE1ZTAwNjBkNThjOTY0ZWM1NjA1MS4uZjM2
YTJkNDA3YWY4ODE1OTA0Mjg2NmI4NWU5ZTAxODYxZGFhYzcyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKQEAgLTY2
LDEwICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQorICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKQog
ICAgIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5ndGgpOworICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlciwgdXNlU3RyTGVuKTsKICAgICB9CiAKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggZGZmODk3
MDFjOTM5YmM3M2MzNzAzMmFkOWM0MmFkMjA2MzI2YWQ2ZS4uN2MwMzQ5NDVlZTAzYTc0ZjUzMzM5
YmI4MWZmYTBlMDZjNjljNzE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMjMxLDE0ICsyMzEsMTMgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXIKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFp
blRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIHVzZVN0ckxlbikKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGRhdGEsIGRhdGFM
ZW5ndGgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFJlZiB7ICptX3dv
cmtlckNsaWVudFdyYXBwZXIgfSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJl
cXVlc3RJZGVudGlmaWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVu
dFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdvcmtlclJlcXVlc3RJ
ZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gUmVmIHsgZGF0
YSB9LCB1c2VTdHJMZW5dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29y
a2xldEdsb2JhbFNjb3BlKCkpOwotICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVy
LT5kaWRSZWNlaXZlRGF0YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAg
cHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCB1c2VT
dHJMZW4pOwogICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyKTsKICAgICB9LCBtX3Rhc2tN
b2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmgKaW5kZXggNzIzYjQ1NmVjOGU5ZTMwNmZjMThjYzhmMzZkZTZkY2Q4YWUzMDQ3MC4uMzM5
ZDZmNDczMTBhMWVkMjg5MDM2YWQwYTQwNGYzOGE3YTI2ODYyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCkBAIC0xMDUsNyArMTA1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgLy8gQWxsIGV4ZWN1dGVkIG9uIHRoZSBtYWluIHRocmVhZC4KICAg
ICAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAgICAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAg
ICAgICAgIHZvaWQgZGlkRmluaXNoVGltaW5nKGNvbnN0IFJlc291cmNlVGltaW5nJikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA1MTk3OGY0MTIzODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRl
NWQ4NWE3Li5lZDc1NjY1MjZiMmQ3ZWZiZjFjNTE3MDIwOTVhODc5YmFmNTY5NDQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpt
YXliZUxvYWRGYWxsYmFja0Zvck1haW5FcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3Vy
Y2VEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCosIGludCwgbG9uZyBsb25nLCBib29sKQordm9p
ZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIGxvbmcgbG9uZywgYm9vbCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCBiOTYz
NTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNkZjcyMzY3MmEwLi5kMmFlYWVjM2UxNGM2M2JjYmY2
MDFlOWFhZjAyNGMxZjllYzQ3NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtOTUsNyArOTUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgU3Vic3RpdHV0ZURhdGEmKTsKICAgICB2b2lkIG1heWJlTG9hZE1haW5SZXNvdXJjZUZvclJl
ZGlyZWN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVEYXRhJik7CiAgICAgYm9v
bCBtYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25zZShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYWluUmVzb3VyY2VEYXRhUmVj
ZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSk7CisgICAgdm9pZCBtYWluUmVzb3VyY2VEYXRhUmVj
ZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBi
b29sIGFsbEF0T25jZSk7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsK
ICAgICB2b2lkIGZhaWxlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcAppbmRleCAyYmIzZmU3NWI5OTc3ZTgzMzIyYWUyNTgwZjcyMTJlZTViZjIxNjEwLi4yNTZl
ODliMjExYjM4YjJkMjFkY2Q2NjU3ODI2OWU2NjA3MzY3MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcApAQCAtNTEsNyArNTEsMTAgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikK
IHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGgu
aXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkK
KyAgICAgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgUmVmUHRy
IHsgJmRhdGEoKSB9KTsKKyAgICBlbHNlCisgICAgICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VB
bmREYXRhKHJlc3BvbnNlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1
bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggN2Iy
ZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNi4uNTRmZWVkMmNhNjQxMmI0NTIw
OTg3MGM3NzM0MzYwOWQ4NTA5Yjc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTk5LDkgKzk5LDkgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogICAgIG1fYXBwbGlj
YXRpb25DYWNoZVJlc291cmNlID0gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUobV9y
ZXNvdXJjZS0+dXJsKCksIHJlc3BvbnNlLCBtX3R5cGUpOwogfQogCi12b2lkIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEs
IGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChidWZmZXIp
OwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaAppbmRleCAwMmQ3
YWQ5N2EyOGQ0N2MzZmFiNWUzYmFiMDdlYmU5YjA2OWUyMzJkLi4wYjI5NjI4OGYzMWE0MzI1ZDQ4
NDlhNDQyZThhZTYwMmMxNzMxOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCkBA
IC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZv
aWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7
CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcAppbmRleCA1MDQ2NWNjNmMwMTMzZTVhNzc0NDVjZjk0NzMzM2ZlMjA2NDA4NjFk
Li5hMmRhZmM5ZDg3YzI2N2EyZjk1ZTQ4NTVmZGIwODRkYTI5ZDNmMjc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBp
bmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURh
dGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFs
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgbV9k
YXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+
c2l6ZSgpKTsKQEAgLTU1OCwxNSArNTU4LDE1IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZElt
YWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB2b2lkIENhY2hlZElt
YWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpOwotICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOworICAgIHVwZGF0
ZUJ1ZmZlckludGVybmFsKGRhdGEubWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZEltYWdl
Ojp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVChk
YXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJE
YXRhKTsKLSAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LCBsZW5ndGgpKTsKLSAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgp
OworICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGJ1ZmZlcik7CisgICAgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
CmluZGV4IGU4NDMwODcwYjQ4YWYzZGM5NWJiYTNjYWQxYTY0ZTA2OGFlMTU1MTMuLmE1ZGM2M2Yy
M2RiZDQxYTI3MGVlNTZjMzJhNDQxNzc3ZDZhZGRiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEo
KTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOwotICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGU7CiAKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hh
bmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZl
ckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHVwZGF0
ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBs
YWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggNzFlMTYwODJmZmU2
NTVkMTExZjE2OTkwZDEyMzA1MzViZWFjYmY5NS4uZDMzNjExMzIxM2ZiZWJmZjRlOTFmZjY1Zjgz
ZmZlMjRkM2U4YTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCwxMiArNDgsMTIgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6
OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUg
dHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9ySWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9
CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNl
OjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2Fj
aGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRhTGVuZ3RoID0g
ZW5jb2RlZFNpemUoKTsKLSAgICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3Vz
RGF0YUxlbmd0aCkKKyAgICBpZiAoZGF0YS5zaXplKCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0
YShwcmV2aW91c0RhdGFMZW5ndGgpOworICAgIHJldHVybiBkYXRhLmdldFNvbWVEYXRhKHByZXZp
b3VzRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQpAQCAtNzIsNyArNzIsNyBAQCB2
b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKICAgICAgICAgcHJldmlvdXNEYXRhU2l6ZSArPSBpbmNyZW1lbnRhbERh
dGEuc2l6ZSgpOwogCiAgICAgICAgIFNldEZvclNjb3BlPGJvb2w+IG5vdGlmeVNjb3BlKG1faW5J
bmNyZW1lbnRhbERhdGFOb3RpZnksIHRydWUpOwotICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS5kYXRhKCksIGluY3JlbWVudGFsRGF0YS5zaXplKCkp
OworICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS5j
cmVhdGVTaGFyZWRCdWZmZXIoKSk7CiAgICAgfQogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+
c2l6ZSgpKTsKIApAQCAtODksMTEgKzg5LDExIEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIH0KIH0K
IAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKLSAgICBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGRhdGEsIGxlbmd0aCk7Ci0gICAgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBub3RpZnlDbGllbnRzRGF0YVdhc1Jl
Y2VpdmVkKGJ1ZmZlcik7CisgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoYnVmZmVyKTsK
IH0KIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CkBAIC0xMTAsOSArMTEwLDkgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdAogICAgICAgICBpZiAo
ZGF0YSkgewogICAgICAgICAgICAgaWYgKGRhdGEgIT0gbV9kYXRhLmdldCgpKQogICAgICAgICAg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAgICAgICBpZiAo
YXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRh
KSkgeworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5j
cmVtZW50YWxEYXRhQ2h1bmsoKm1fZGF0YSkpIHsKICAgICAgICAgICAgICAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2Fz
UmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVu
dGFsRGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CkBAIC0xMzAsMTUgKzEzMCwxNSBA
QCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0CiAgICAgfQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFsZW5n
dGgpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
PiB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjID0g
dy5uZXh0KCkpCi0gICAgICAgIGMtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgbGVuZ3RoKTsK
KyAgICAgICAgYy0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOwogfQogCiBzdGF0aWMgdm9p
ZCBpdGVyYXRlUmVkaXJlY3RzKENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiYmIGhhbmRsZSwgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQmIGNsaWVudCwgVmVjdG9yPHN0ZDo6
cGFpcjxSZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2U+PiYmIHJlZGlyZWN0c0luUmV2
ZXJzZU9yZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MCw5ICsxNzAsOSBAQCB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGMpCiAgICAgICAgICAgICBp
ZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICAgICAgbV9kYXRhLT5mb3JFYWNoU2VnbWVu
dChbJl0oYXV0byYgc2VnbWVudCkgeworICAgICAgICAgICAgICAgIG1fZGF0YS0+Zm9yRWFjaFNl
Z21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoaGFzQ2xpZW50KCpjbGllbnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2xp
ZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgYnVm
ZmVyKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
ICghaGFzQ2xpZW50KCpjbGllbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCBhNzg2NWY4YWQxNzhhZWZiMzIyMGE1NmRjZmYxOTU5
OTNjZjk1YWU0Li4zNmU0N2ExZGJhMjMxMjhkYzUzMDczYjcwYjVmM2Y4NTM4MDRhZTZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAt
MjgsNiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNl
Q2xpZW50OwogY2xhc3MgUmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2UgZmluYWwg
OiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZp
bmFsOwotICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJ
Z25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KQEAgLTY2LDggKzY3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3aXRjaENsaWVudHNUb1Jl
dmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNv
ZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxh
Y2VtZW50OyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxj
dWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKikg
Y29uc3Q7Ci0gICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZm
ZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVm
ZmVyJikgY29uc3Q7CisgICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwogICAgIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgcHJl
dmlld1Jlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQuaAppbmRleCAyM2VhYjhkZjI5NThmZjhiNDlmMzU0NWI1MDgzZmUyOTg5ZWYxMjIwLi5jZDY1
MGEyZjMxMzZjZTliMjYyZmJkZmM4MjkyOGJmMjEwNzlmYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaApAQCAtMzEs
NiArMzEsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgOiBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgpAQCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiAvKiBk
YXRhICovLCBpbnQgLyogbGVuZ3RoICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRUaW1p
bmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
aW5kZXggOWRlMGEwNGNkNWVjNWYzZmFkMmZiMTZkN2IzMjJjODU4YTM4YTZiMi4uN2I5YzYxZjk2
NjE3NTQ2YjY2YmNjM2M2M2VjYTBlODU3ZTI2MmVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGlj
eTo6QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggYzk4MmRkNjkzN2EwYmMy
YmYzOGM0MjYxMjZmZmU2ZTc4Yzc5NjQ3OC4uNTM0ZTAxMmNjNGZhNWRkMmJlMWZkNmVlZTVhYTZh
ZTRlNWZhZTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZW5j
b2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4
dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51
bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5kZXggOTZkODk4
MmU5MzUwMzQ3Njk2ZmM5NjlkNTg1YWI3MDc1ZGUwMjBlZC4uY2EwMTkzNGQzMWJhNWQ1MDlmZWJl
N2QyZjkxMjI0OWQyNzEyNmFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTQ3LDggKzQ3LDcgQEAgcHVibGljOgogICAgIH5MZWdh
Y3lQcmV2aWV3TG9hZGVyKCk7CiAKICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lk
IGRpZEZhaWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLm1tCmluZGV4IDQ4NzU2YTMzYjU4NzJiNDRiMmYwYmEwODQyNDFmODZjZmFlYmNh
YTAuLmEyNGI4YzU5ZDQ2MGFmZjVlMmZlZjgzMTkwYzIwODY1NzIzNjVkMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTYzLDcg
KzYzLDcgQEAgc3RhdGljIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtYWtlQ2xpZW50
KGNvbnN0IFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGMKICAgICByZXR1cm4gZW1wdHlDbGllbnQo
KTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBMT0coTmV0
d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRoIHNpemUgJWxk
LiIsIGJ1ZmZlci5zaXplKCkpOwogICAgIG1fb3JpZ2luYWxEYXRhLmFwcGVuZChidWZmZXIpOwog
ICAgIG1fY29udmVydGVyLT51cGRhdGVNYWluUmVzb3VyY2UoKTsKLSAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZUJ1ZmZlcihidWZmZXIpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZm
ZXIpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNjIsOCArMTYyLDcgQEAgdm9pZCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0Nv
bnZlcnRlciYsIGNvbnMKICAgICBpZiAoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gZGF0YUNvcHkgPSBkYXRhLmNvcHkoKTsKLSAgICByZXNvdXJj
ZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGRhdGFDb3B5KSwgZGF0YUNvcHktPnNp
emUoKSwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVC
dWZmZXIoZGF0YSwgZGF0YS5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFBy
ZXZpZXdDb252ZXJ0ZXImKQpAQCAtMjQzLDExICsyNDIsNiBAQCBMZWdhY3lQcmV2aWV3TG9hZGVy
OjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291
cmNlUgogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBjcmVhdGVkIHdpdGgg
cHJldmlldyBmaWxlIG5hbWUgXCIlc1wiLiIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUo
KS51dGY4KCkuZGF0YSgpKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0
dXJuIGRpZFJlY2VpdmVCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKS5n
ZXQoKSk7Ci19Ci0KIGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogewogICAgIHJldHVybiAhbV9zaG91bGREZWNpZGVQ
b2xpY3lCZWZvcmVMb2FkaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCA2
MDI2MzFiYjdjZDEwODYwYjFhMzEyMTA0M2M5N2Q4ZWZlNDQ3NjFkLi42N2FjNzdlMmJmNzYxMDQ1
YzhjMThkNWM3YWRlYzdmNzMzOGFiNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNw
cApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CkBAIC0yMTAsMTMgKzIxMSwxMyBAQCB2b2lkIEV2ZW50U291cmNlOjpk
aXNwYXRjaEVycm9yRXZlbnQoKQogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6Ok5vKSk7CiB9CiAKLXZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCkKIHsKICAgICBBU1NFUlQobV9z
dGF0ZSA9PSBPUEVOKTsKICAgICBBU1NFUlQobV9yZXF1ZXN0SW5GbGlnaHQpOwogICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW1faXNTdXNwZW5kZWRGb3JCYWNr
Rm9yd2FyZENhY2hlKTsKIAotICAgIGFwcGVuZChtX3JlY2VpdmVCdWZmZXIsIG1fZGVjb2Rlci0+
ZGVjb2RlKGRhdGEsIGxlbmd0aCkpOworICAgIGFwcGVuZChtX3JlY2VpdmVCdWZmZXIsIG1fZGVj
b2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKTsKICAgICBwYXJzZUV2
ZW50U3RyZWFtKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCBkMDEyZDM3
N2QxOTc2NzVmMGZlMTE0NWYxNzE5ZjE3ZmRkYmZlYTNiLi5kNjYyYWUyODA2ZjRiMjQ4NjdiMDE2
MDhlMDRkYmI0Zjk3ZGJhMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC04NCw3
ICs4NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CmluZGV4IDdhZmFhZmYyYmQxNTE3OTM3ZmE4Yzc4NzQ5ZjhmNmU3NTA2N2U1NmQuLmI4NmQ0OWQ0
YWYzM2M2NDU4MmI2YmVhNDA2MjI2MTU5OTJkNWFjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIFZlY3Rvcjx1aW50OF90PiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiAKICAgICBWZWN0b3I8dWludDhfdD4g
Y29tYmluZWREYXRhOwogICAgIGlmIChoYXNPbmVTZWdtZW50KCkgJiYgc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFi
bGVEYXRhKSkKLSAgICAgICAgY29tYmluZWREYXRhID0gc3RkOjpleGNoYW5nZShzdGQ6OmdldDxW
ZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSwg
VmVjdG9yPHVpbnQ4X3Q+KCkpOworICAgICAgICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4Y2hhbmdl
KHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oY29uc3RfY2FzdDxEYXRhU2VnbWVudCY+KG1fc2Vn
bWVudHNbMF0uc2VnbWVudC5nZXQoKSkubV9pbW11dGFibGVEYXRhKSwgVmVjdG9yPHVpbnQ4X3Q+
KCkpOwogICAgIGVsc2UKICAgICAgICAgY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0
YShtX3NlZ21lbnRzLCBtX3NpemUpOwogCkBAIC0yNTAsNiArMjUwLDEzIEBAIHZvaWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTcGFuPGNvbnN0CiAgICAgICAgIGFwcGx5KFNwYW4geyBzZWdtZW50LnNlZ21lbnQtPmRhdGEo
KSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7CiB9CiAKK3ZvaWQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihjb25zdCBGdW5jdGlvbjx2b2lk
KFJlZjxTaGFyZWRCdWZmZXI+JiYpPiYgYXBwbHkpIGNvbnN0Cit7CisgICAgYXV0byBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfTsKKyAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21l
bnRzKQorICAgICAgICBhcHBseShTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZWdtZW50LnNlZ21lbnQu
Y29weVJlZigpKSk7Cit9CisKIGJvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0
aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiB7CiAgICAgaWYgKHBy
ZWZpeC5lbXB0eSgpKQpAQCAtNDE1LDcgKzQyMiw3IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKCkKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJiBzZWdtZW50KQogewogICAgIG1fc2l6ZSA9
IHNlZ21lbnQtPnNpemUoKTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2Vn
bWVudCkgfSk7CkBAIC02MDMsNyArNjEwLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjpl
bnN1cmVCdWZmZXIoKQogICAgICAgICBtX2J1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21l
bnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNo
YXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXpl
X3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAg
ICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNl
Z21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6
IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNjE5LDcgKzYy
Niw3IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBT
aGFyZWRCdWZmZXJEYXRhVmlldyYgb3RoZXIsIHNpCiAKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0
IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8Y29u
c3QgRGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CiAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBk
YXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCiAgICAgICAgIFtzaXplID0gc2l6ZSgp
XSgpIHsgcmV0dXJuIHNpemU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
aW5kZXggYzI3YzkyNjlmZmVmMjQ5YWI1ZThhYmEyNGQ3NjJmYzQwYzFjMjMwMC4uMzQ4NGE2YTUz
YjgwNDA2NGJlNTdhMjgzZWY0MThhOGE2MmQ1ODlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKQEAgLTE3OCwxMiArMTc4LDEzIEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKGNvbnN0IEZ1
bmN0aW9uPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik+JikgY29uc3Q7CiAKICAgICB1c2luZyBE
YXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNv
bXBhdGliaWxpdHkgd2hlbiB1c2luZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3Qg
YmVnaW5Qb3NpdGlvbjsKLSAgICAgICAgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50OworICAgICAg
ICBjb25zdCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IHNlZ21lbnQ7CiAgICAgfTsKICAgICB1c2lu
ZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsK
ICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJl
dHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KQEAgLTI1OSw3ICsyNjAsMTAgQEAgcHVibGljOgog
ICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCiAgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoKSk7CiAgICAgICAgIGVsc2UgaWYgY29uc3Rl
eHByIChzaXplb2YuLi4oQXJncykgPT0gMQotICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92
PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgICYmIChzdGQ6Omlz
X3NhbWVfdjxBcmdzLCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0g
MQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3Rk
OjpyZW1vdmVfcmVmZXJlbmNlX3Q8QXJncz4+LCBEYXRhU2VnbWVudD4gJiYuLi4pKQogICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLikpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
Lik7CkBAIC0yODYsOCArMjkwLDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXRUJDT1JF
X0VYUE9SVCBTaGFyZWRCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXIoY29uc3QgRGF0YVNlZ21l
bnQmIHNlZ21lbnQpCisgICAgICAgIDogU2hhcmVkQnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVu
dD4geyBzZWdtZW50IH0pIHsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKQEAg
LTM1OSw3ICszNjUsNyBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2Vn
bWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3KFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0
aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQp
OwogICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1
ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplOyB9CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7IH0KQEAgLTM3
MCw3ICszNzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0
YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVm
PERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50
PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50Owog
ICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApp
bmRleCA4ODY5MWRjMjU2ZDZkZDZjNDVmNDZlMDE1NDk2NzQyNDVhYTM1MzM3Li5jOTU4Zjg0NGRh
YzE0Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhhODEyOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtNTEsOSArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2Uo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAg
IC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgotICAgIHZpcnR1YWwgdm9pZCBkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSB7IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9X
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRl
eCBlYzBhN2FjZjQ3MzI2MWM3NGU3ZWVmZmFkYzljY2MzYzNlNTdmMjI4Li43NzA4YTU4ZDJiNTgw
OGI5NDAwMmQyMDVlOThhMjdiYjJjZTZmMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9p
ZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdl
YkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2Fk
ZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpCiB7CiAgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2UpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKaW5k
ZXggY2RmMTQzZjNjM2NkZTk3MWZkNzlkY2Y3MzI4YmZjZDdiMzI2MDJkYy4uNjI2N2JlMDBjNTRl
ZTYxNzAyZmI3N2IyYTVmYjU2N2IyN2ViOWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZv
aWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdp
dGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGY5MjFmM2RhMGU2OWIzMzk5Nzdj
OWUzZTQ5NjY3YTI4ZjVlOTVjYmQuLjcyNjQ3MjVjOGU1NjIyZGYzOGI0NWJjZDk5YWM3ODc1NWI5
ZWI4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIubW0KQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
ZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZv
aWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKQEAgLTEzMCw3
ICsxMzAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTgogICAgIG1fcGFyZW50LmxvYWRGaW5p
c2hlZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIENh
Y2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKCZyZXNvdXJjZSA9PSBt
X3Jlc291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJlc291cmNlLnJlc291cmNlQnVmZmVy
KCkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWdu
ZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xD
aGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwg
eyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlz
aGVkKCk7IH0KQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxv
YWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAot
dm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fYnVmZmVyLmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIpOwogICAg
IG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDkz
MDE5MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIuLmI3YjA3ZmYxNDU0ZDU2MWEz
MDIxMDhhZTMyMjkxZThmODM0MzdiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9u
c2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWls
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBv
bGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50
OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyog
c3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwpAQCAtMTEwNyw3ICsxMTA3LDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxGcmEKICAgICAvLyB0aGF0IGZpcnN0IHBhY2thZ2UgZGVsaXZl
cnkgd291bGQgaW5jbHVkZSB0aGUgdGltZSBvZiBzZW5kaW5nIG91dCB0aGUgcmVxdWVzdCBhbmQg
Z2V0dGluZyB0aGUgZGF0YSBiYWNrLiBTaW5jZSB3ZSBjYW4ndCBkaXN0aW5ndWlzaCB0aGUKICAg
ICAvLyBzZW5kaW5nIHRpbWUgZnJvbSB0aGUgcmVjZWl2aW5nIHRpbWUsIGl0IGlzIGJldHRlciB0
byBpZ25vcmUgaXQuCiAgICAgaWYgKCFzdGQ6OmlzbmFuKG1lbWJlcnMtPmRvd25sb2FkU3RhcnRU
aW1lKSkgewotICAgICAgICBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyArPSBidWZmZXIt
PnNpemUoKTsKKyAgICAgICAgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgKz0gZGF0YS5z
aXplKCk7CiAgICAgICAgIGRvdWJsZSB0aW1lU2luY2VTdGFydCA9IChXYWxsVGltZTo6bm93KCkg
LSBtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSkuc2Vjb25kcygpOwogICAgICAgICBHU1RfVFJB
Q0VfT0JKRUNUKHNyYywgIlIldTogZG93bmxvYWRlZCAlIiBHX0dVSU5UNjRfRk9STUFUICIgYnl0
ZXMgaW4gJWYgc2Vjb25kcyA9fiAlMS4wZiBieXRlcy9zZWNvbmQiLCBtX3JlcXVlc3ROdW1iZXIs
IG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzLCB0aW1lU2luY2VTdGFydAogICAgICAgICAg
ICAgLCB0aW1lU2luY2VTdGFydCA/IG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzIC8gdGlt
ZVNpbmNlU3RhcnQgOiAwKTsKQEAgLTExMTUsMjAgKzExMTUsMTkgQEAgdm9pZCBDYWNoZWRSZXNv
dXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlZjxGcmEKICAgICAgICAgbWVtYmVycy0+ZG93bmxvYWRTdGFydFRpbWUgPSBXYWxsVGltZTo6
bm93KCk7CiAgICAgfQogCi0gICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2Vn
bWVudCkgewotICAgICAgICBpbnQgbGVuZ3RoID0gc2VnbWVudC5zaXplKCk7Ci0gICAgICAgIEdT
VF9MT0dfT0JKRUNUKHNyYywgIlIldTogSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgbV9yZXF1ZXN0
TnVtYmVyLCBsZW5ndGgpOworICAgIGludCBsZW5ndGggPSBkYXRhLnNpemUoKTsKKyAgICBHU1Rf
TE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51
bWJlciwgbGVuZ3RoKTsKIAotICAgICAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVuZ3Ro
OwotICAgICAgICBBU1NFUlQoIW1lbWJlcnMtPmhhdmVTaXplIHx8IG1lbWJlcnMtPnJlYWRQb3Np
dGlvbiA8PSBtZW1iZXJzLT5zaXplKTsKKyAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVu
Z3RoOworICAgIEFTU0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBvc2l0
aW9uIDw9IG1lbWJlcnMtPnNpemUpOwogCi0gICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2Fn
ZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpF
Q1RfQ0FTVChzcmMpLAotICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcoIndlYmtpdC1uZXR3
b3JrLXN0YXRpc3RpY3MiLCAicmVhZC1wb3NpdGlvbiIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMt
PnJlYWRQb3NpdGlvbiwgInNpemUiLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5zaXplLCBudWxs
cHRyKSkpOworICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNy
YyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAorICAgICAg
ICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFkLXBv
c2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIsIEdf
VFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7CisKKyAgICBjaGVja1VwZGF0
ZUJsb2Nrc2l6ZShsZW5ndGgpOworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVmZmVyTmV3
V3JhcHBlZEZhc3QoZmFzdE1lbUR1cChkYXRhLmRhdGEoKSwgbGVuZ3RoKSwgbGVuZ3RoKTsKKyAg
ICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7CiAKLSAg
ICAgICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKLSAgICAgICAgR3N0QnVmZmVyKiBi
dWZmZXIgPSBnc3RCdWZmZXJOZXdXcmFwcGVkRmFzdChmYXN0TWVtRHVwKHNlZ21lbnQuZGF0YSgp
LCBsZW5ndGgpLCBsZW5ndGgpOwotICAgICAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFk
YXB0ZXIuZ2V0KCksIGJ1ZmZlcik7Ci0gICAgfSk7CiAgICAgc3RvcExvYWRlcklmTmVlZGVkKHNy
YywgbWVtYmVycyk7CiAgICAgbWVtYmVycy0+cmVzcG9uc2VDb25kaXRpb24ubm90aWZ5T25lKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IGJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQyYmU0ZTJi
ZDExYWE4NDMuLmRjYWM1OTk3YTYxMzVkMmFiNzU5YTdhZDJlYmIwNDM1MmQ1MTRhNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiwxMSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVz
b3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+
UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVD
bGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lk
IFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgYnVmZmVyLmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIp
IHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIsIGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGM0ZjA1NDg1ZjI4NzBiMTE2
ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUuLmU0NDJjOTczNGMxMTk4NDkwYTFjNmNhYzU3NzI1ZmQ1
MTk2YjNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTQ0LDEzICs0NCwxNCBAQCBPQkpDX0NMQVNTIE5T
Q2FjaGVkVVJMUmVzcG9uc2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUHJvdGVjdGlvblNwYWNl
OwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9s
aWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY1LDkgKzY2LDkgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9u
ZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0Jl
U2VudCovKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgq
LykgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKTsKLSAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0
aCovKSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOworCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCA0YzA0MjEwYzVhNTEzYWMzZjU0NzE0NmQ5Zjg1YzgyYmQ4ODEz
Nzc2Li4zMGI0YmIwZmRhZWY3YWUyY2M3NGFjNjA5ZjdiMDA5OTdlNWE2ZGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmNwcApAQCAtNzEsOSArNzEsOSBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUgog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQordm9pZCBTeW5jaHJv
bm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKIHsKLSAgICBt
X2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
eW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCmluZGV4IDY4MzhlOWQ4Y2Y0Mzc5NmQyZjM5NGJh
MWY1NGYwOWQwYjY3ZThhYmQuLmM0Y2I3MmRjN2E2NTVmZDM2OTZhMzMzZmUwNWNkZWQ2Mjk3NmFm
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25v
dXNMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5
bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVy
TWVzc2FnZVF1ZXVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN5bmNocm9ub3VzTG9h
ZGVyTWVzc2FnZVF1ZXVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTeW5jaHJvbm91c0xv
YWRlck1lc3NhZ2VRdWV1ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTeW5jaHJv
bm91c0xvYWRlck1lc3NhZ2VRdWV1ZSk7IH0KQEAgLTY2LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3Bv
bnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwg
aW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCAvKmVuY29kZWRE
YXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
ICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9y
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tCmluZGV4IGZjMjcyNTQwODkyYjhlMmNkNzdkZThmNmQ5ZTU0YThjOGI1OTdm
NjEuLjE5ODE0YTM2NWM5ZjY2MWEyMWMyMjlhZGJkMDQ2MTFjMjA5NDdlNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVy
YXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2Vi
Q29yZU5TVQogCiAgICAgICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIg
PSBzdGQ6Om1pbihidWZmZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUluZGV4ICsgMSk7
CiAgICAgICAgICAgICBieXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXI7Ci0g
ICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpTaGFyZWRCdWZm
ZXJEYXRhVmlldyhidWZmZXJWaWV3LCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcikuY3JlYXRl
U2hhcmVkQnVmZmVyKCldOworICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNl
aXZlZERhdGE6U2hhcmVkQnVmZmVyRGF0YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNGcm9tVGhpc1Zp
ZXdUb0RlbGl2ZXIpLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKV07CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsKICAgICAgICAgICAg
IFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmlj
cyB7IH1dOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisgICAgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
ICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAg
ICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZm
ZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQo
YnVmZmVyKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmlu
aXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCBm
OTA5NmVlMmU5ZjI0MmZmMDRkNzA1YzJhYTEwOTNhNTVlNTczNWRiLi5lYTRhOWJmMjk3ODI5ZWJk
MDI5MTQ3NmNiZjhhN2U1NDk0NzIxMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtMTU4
LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lv
biA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcp
Ynl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0
ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxl
dGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToobnVsbGFi
bGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CistICh2b2lkKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4mJilkYXRhOwogLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBy
ZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5k
bGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4m
Jiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVk
V2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQp
cmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJy
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggNWUyZThlOGQ5ZDc2NjcyYTI0MTRmNzZm
NWMwOGYyNTllMDI5ZjUwNC4uM2M4YmUwOGMyOTM0ZTU0ZGEzYjc0OWNhNmRhMzRlZGE5NmRjOWI4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNo
ZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVu
c2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmlu
aXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CkBAIC02NTIsMTMgKzY1MiwxMyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwog
ICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNl
OnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6
OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3Rh
c2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFttX3Rh
c2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpXVEZNb3ZlKGJ1ZmZlcildOworICAg
IFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpidWZmZXIuY3JlYXRlTlNE
YXRhKCldOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6cmVk
aXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC05MzEsMTUgKzkzMSwxNCBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwogICAgIHJldHVy
biByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRSYW5nZSku
aXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSByZWNlaXZlZERhdGE6KFJldGFpblB0cjxOU0RhdGE+JiYpZGF0YQogewogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwog
ICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRh
aW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNE
YXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAgICAgIHN0
cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOworICAg
ICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IFtkYXRhIGxlbmd0
aF07CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0g
KGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRl
bGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCi0gICAgICAgICAg
ICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0
KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdl
dCgpIGRpZFJlY2VpdmVEYXRhOm5zRGF0YS5nZXQoKV07CisgICAgICAgICAgICBbZGF0YURlbGVn
YXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBk
YXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2Vp
dmVEYXRhOmRhdGEuZ2V0KCldOwogICAgIH1dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXgg
ZjMyM2FmMjY0MDE2YjY2MzkzMTFhYzIzMjQ2ZWM1ZWQ4MGEzOTU0NS4uM2JkMmNjNzQyODZlYzQ2
Nzg2NDAyNDhjNWUxY2ZlY2M1YTAyNjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMjQzLDcg
KzI0Myw3IEBAIGJvb2wgQ3VybENhY2hlTWFuYWdlcjo6Z2V0Q2FjaGVkUmVzcG9uc2UoY29uc3Qg
U3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiBq
b2IsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBDdXJsQ2FjaGVNYW5h
Z2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI1
NSwxMSArMjU1LDExIEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCogZGF0YSwKICAgICAgICAgaWYgKGl0LT52
YWx1ZS0+Z2V0Sm9iKCkgIT0gJmpvYikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBp
ZiAoIWl0LT52YWx1ZS0+c2F2ZUNhY2hlZERhdGEoZGF0YSwgc2l6ZSkpCisgICAgICAgIGlmICgh
aXQtPnZhbHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKQogICAg
ICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsKIAogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9IHNpemU7CisgICAgICAgICAgICBtX2N1
cnJlbnRTdG9yYWdlU2l6ZSArPSBkYXRhLnNpemUoKTsKICAgICAgICAgICAgIG1fTFJVRW50cnlM
aXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0KHVybCk7CiAgICAgICAgICAgICBtYWtlUm9vbUZvck5l
d0VudHJ5KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCmluZGV4IGM5ZTI5ZDgwOTcwYzQwNDZl
Nzk2MTYyYmQ5ODMyOTExYjZkZWU2OGMuLmI2NWI5NjNiNjhlNmE2OGQ5ODE5M2FhZjczZjEwODAz
ZDk3ZmNkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNwb25z
ZSYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmLCBSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYs
IGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7IC8vIFNhdmUgZGF0
YQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSYpOwogICAgIHZvaWQg
ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IDM0OTQ0NTkyNTRhYzkz
ZmMxOWNiMTIxNTBhNjFiYzJiY2VkMDJkNmUuLmFhZjBjOGQ5NDA3MDU1ZDY4YTA1NWZiMzUwNzk2
N2RlNGMwMDg2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDdXJsRG93
bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxS
ZXNwb25zZSYmIHIKIH0KIAogCi12b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZm
ZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApA
QCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX2xpc3RlbmVyKQotICAgICAgICBtX2xpc3RlbmVyLT5kaWRSZWNlaXZl
RGF0YU9mTGVuZ3RoKGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9saXN0ZW5lci0+ZGlkUmVj
ZWl2ZURhdGFPZkxlbmd0aChidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsRG93bmxvYWQ6
OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgTmV0d29ya0xvYWRNZXRyaWNz
JiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERv
d25sb2FkLmgKaW5kZXggY2RlNDQ0NTc3NWY3NDQyMzMwNTMwYjY1YjEzNTdiYTZiZmQ5YmI4MS4u
YTEyMDc1ODM0OTNmNzgzMzc1NmQzYzQ5ODdjZjVjOTVkZmE5NzljNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaApAQCAtMzgs
NiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VIYW5kbGU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxEb3du
bG9hZExpc3RlbmVyIHsKIHB1YmxpYzoKQEAgLTcyLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICBS
ZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1
bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERpZFJlY2VpdmVS
ZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1
ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29t
cGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwg
Q2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5k
ZXggMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZkN2QyZjI5NmUzYTM0ZC4uZDFlNTg2MjRhYWVl
MmVjZTgxMjlkZDM0ZWE5ODY2MjZlNmNkZjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApA
QCAtMTE5LDEyICsxMTksMTIgQEAgQ3VybE11bHRpcGFydEhhbmRsZTo6Q3VybE11bHRpcGFydEhh
bmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnMKIAogfQogCi12b2lk
IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBz
byBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRl
bnQoKSkgeyB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA5YTFhMWJiZDE5MzhhMTRmNjlm
Y2NlZTNmMGY4OWI5N2E0YTIxODc0Li41YzA4YmNjNWViM2U0YmJjYzAyOWI0NzY3ODY4ZjQzZTJm
OTVjMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50OwogY2xhc3MgQ3Vy
bFJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDdXJsTXVsdGlwYXJ0SGFu
ZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+Q3Vy
bE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKCk7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAppbmRleCBjODEzODg2YThkNWM1ZmE2YzEyZDE0MTMz
MTkxMDFhZjI1MDJhMmFkLi5kZjc2MzdkZTlkOWZmMmI2YjEwODU1ZDBjNTc3MTI1NTM0YjJhNmVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGll
bnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRp
cGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChjb25zdCBTaGFy
ZWRCdWZmZXImKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZUNs
aWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYmFjYjJiNTUwYjI4NDEzMWQxYWMyMGFhNjYzODg2ZmUy
MmZlN2Y5OC4uZDBlZjBlNzExNjJiNTM2M2FkNDI1NDE3ZDg1ZWM3MjM4ZjNmNjJiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVh
ZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwgaGVh
ZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogCi1zaXplX3QgQ3Vy
bFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC00MTEsNyArNDExLDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAg
IHJldHVybiBDVVJMX1dSSVRFRlVOQ19QQVVTRTsKICAgICB9CiAKLSAgICBhdXRvIHJlY2VpdmVC
eXRlcyA9IGJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gcmVjZWl2ZUJ5dGVzID0gYnVmZmVyLnNp
emUoKTsKICAgICBtX3RvdGFsUmVjZWl2ZWRTaXplICs9IHJlY2VpdmVCeXRlczsKIAogICAgIHdy
aXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGJ1ZmZlcik7CkBAIC00MjAsOCArNDIwLDgg
QEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIGlmIChtX211bHRpcGFydEhhbmRsZSkKICAgICAg
ICAgICAgIG1fbXVsdGlwYXJ0SGFuZGxlLT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOwogICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQpIG11dGFi
bGUgewotICAgICAgICAgICAgICAgIGNsaWVudC5jdXJsRGlkUmVjZWl2ZUJ1ZmZlcihyZXF1ZXN0
LCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0gUmVm
IHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVxdWVzdENsaWVudCYgY2xp
ZW50KSB7CisgICAgICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0
LCBidWZmZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00NDQsMTYg
KzQ0NCwxNiBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFy
dChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaGVhZGVycykKICAgICBpbnZva2VEaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWNlaXZlQnl0ZXMgPSBidWZmZXIt
PnNpemUoKTsKKyAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci5zaXplKCk7CiAKICAgICBp
ZiAocmVjZWl2ZUJ5dGVzKSB7Ci0gICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQp
IG11dGFibGUgewotICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlQnVmZmVyKHJlcXVl
c3QsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFJlZiB7
IGJ1ZmZlciB9XShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQmIGNsaWVu
dCkgeworICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0LCBidWZm
ZXIpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IGE2ZmIzMTU3NjZiYTVjMmYzZWEz
MmI5ZWY1MWViMDAzZThjYjg5ZDAuLjkyYjc0Njk3YmMzMTc1Y2UwY2RhZGYxNTFmYTI1NDNhMDNl
MTE5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5oCkBAIC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICBDVVJMKiBzZXR1
cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6
ZV90LCBzaXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKLSAg
ICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwor
ICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29t
cGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFu
c2ZlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGll
bnQuaAppbmRleCAzNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2YWU3Li43MzAz
M2YwZWY0ZWI0ZGYyMWFiNzY0NjNjYzM5ODE5YjI4Njc4NDliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaApA
QCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxSZXNwb25zZTsK
IGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJs
UmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3Qm
LCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxS
ZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3Vy
bERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmlj
YXRlSW5mbyYmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
aW5kZXggMzA1ZDRlNWM5ZmMyNzA3NzU3ODdiMGY5YTkxOTc5YzA4ODg5YThhNi4uMzg5N2UwMWM2
ZDA3NjZkYWNmM2UxOWIyMzczMzZmNWI1NWNlNTI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTYgKzE0MiwxNSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0
LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNl
aXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5k
aWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZN
b3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgQ3VybENhY2hlTWFu
YWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlcik7CisgICAg
Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBidWZmZXIsIGJ1ZmZlci5zaXpl
KCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxl
dGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCBkYWYwYTU5YTRlNTg2ZDcxMTRhYmI0ZTVlZjlj
NTRmNmE4YmVmYzcwLi4wMjRiYzRlOWFlMzFkZjI1YThmOWI3MGNiYTI4MWZhY2VhYzhjZjAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlSGFu
ZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMg
Q3VybFJlcXVlc3RDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1NCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1
ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIGZpbmFsOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZm
ZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7Cisg
ICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25zdCBTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdv
cmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1
cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFt
LmNwcAppbmRleCBjMDcwNGYwY2RkNjQ0MjM3M2Y3YjcwYmZlNjE1MzliZjViMzdkNjI1Li4zNjY1
OGY5MWRjOWQ2NzIzMGIyMzllNDk3YzAwMDBhYzYyYWFlOTgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCkBAIC05LDcgKzks
NyBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCiAgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDdXJsU3RyZWFtLmgiCiAKICNpbmNs
dWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKIAogI2lmIFVTRShDVVJMKQpAQCAtMTI5LDEw
ICsxMzAsMTAgQEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUoKQogICAgIGlmICghbV9j
dXJsSGFuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlY2VpdmVCdWZmZXIgPSBt
YWtlVW5pcXVlQXJyYXk8dWludDhfdD4oa1JlY2VpdmVCdWZmZXJTaXplKTsKKyAgICBWZWN0b3I8
dWludDhfdD4gcmVjZWl2ZUJ1ZmZlcihrUmVjZWl2ZUJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBi
eXRlc1JlY2VpdmVkID0gMDsKIAotICAgIGF1dG8gZXJyb3JDb2RlID0gbV9jdXJsSGFuZGxlLT5y
ZWNlaXZlKHJlY2VpdmVCdWZmZXIuZ2V0KCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNl
aXZlZCk7CisgICAgYXV0byBlcnJvckNvZGUgPSBtX2N1cmxIYW5kbGUtPnJlY2VpdmUocmVjZWl2
ZUJ1ZmZlci5kYXRhKCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNlaXZlZCk7CiAgICAg
aWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykgewogICAgICAgICBpZiAoZXJyb3JDb2RlICE9IENV
UkxFX0FHQUlOKQogICAgICAgICAgICAgbm90aWZ5RmFpbHVyZShlcnJvckNvZGUpOwpAQCAtMTQz
LDggKzE0NCw5IEBAIHZvaWQgQ3VybFN0cmVhbTo6dHJ5VG9SZWNlaXZlKCkKICAgICBpZiAoIWJ5
dGVzUmVjZWl2ZWQpCiAgICAgICAgIGRlc3Ryb3lIYW5kbGUoKTsKIAotICAgIG1fc2NoZWR1bGVy
LmNhbGxDbGllbnRPbk1haW5UaHJlYWQobV9zdHJlYW1JRCwgW3N0cmVhbUlEID0gbV9zdHJlYW1J
RCwgYnVmZmVyID0gV1RGTW92ZShyZWNlaXZlQnVmZmVyKSwgbGVuZ3RoID0gYnl0ZXNSZWNlaXZl
ZF0oQ2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURh
dGEoc3RyZWFtSUQsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKTsKKyAgICByZWNlaXZlQnVmZmVyLnJl
c2l6ZShieXRlc1JlY2VpdmVkKTsKKyAgICBtX3NjaGVkdWxlci5jYWxsQ2xpZW50T25NYWluVGhy
ZWFkKG1fc3RyZWFtSUQsIFtzdHJlYW1JRCA9IG1fc3RyZWFtSUQsIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVjZWl2ZUJ1ZmZlcikpXShDbGllbnQmIGNsaWVudCkgewor
ICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlcik7CiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0
cmVhbS5oCmluZGV4IDRmNTliMjBlOGRiMjc5MDM5OTRiMzMxNTRjZTY0YjA5OTRmM2EwYmEuLmU4
YTMyYzI2NDYxYjQzMDhlYTIyN2M2ZGY4Yzk3MjQzOTkwNWQwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaApAQCAtOSw3ICs5LDcg
QEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwogICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxT
dHJlYW1TY2hlZHVsZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTb2NrZXRTdHJlYW1F
cnJvcjsKIAogdXNpbmcgQ3VybFN0cmVhbUlEID0gdWludDE2X3Q7CkBAIC00Niw3ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKEN1cmxT
dHJlYW1JRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoQ3VybFN0cmVh
bUlELCBzaXplX3QpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1
cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZmZXImKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwgQ1VSTGNvZGUp
ID0gMDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCBiODA0ZmRlMDk3
M2JiZmIyODMzMWNmN2MzYTFmMjBiMDQzZTc0ZmU4Li4zNjZiMDU5YzAyODA0YjE5OWM4ODZhOWMy
YzY3MjczZjkyNGYyZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTU5LDkgKzU5
LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZElu
dGVybmFsKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRh
KCk7CiAKKyAgICAvLyBDdXJsU3RyZWFtOjpDbGllbnQKICAgICB2b2lkIGRpZE9wZW4oQ3VybFN0
cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90
KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFt
SUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChDdXJsU3Ry
ZWFtSUQsIENVUkxjb2RlKSBmaW5hbDsKIAogICAgIGJvb2wgaXNTdHJlYW1JbnZhbGlkYXRlZCgp
IHsgcmV0dXJuIG1fc3RyZWFtSUQgPT0gaW52YWxpZEN1cmxTdHJlYW1JRDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggNGI5NDkxYzExNTQzZjJiNjBmMTJkMzZl
OWU2YTBjYmFhZTM0YTcyZS4uYThmNTdhNzJkMGVhY2NhNzc1NWJlODRmY2FhMWM5YmYxMDk1OGMw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiRGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQuaCIKICNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCkBAIC0xMDQsMTIgKzEw
NSwxMiBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFNlbmREYXRhKEN1cmxTdHJl
YW1JRCwgc2l6ZV90IGxlbmd0aCkKICAgICBzZW5kUGVuZGluZ0RhdGEoKTsKIH0KIAotdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIGlmIChtX3N0YXRlICE9IE9wZW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLCBsZW5ndGgpOwor
ICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZEZh
aWwoQ3VybFN0cmVhbUlELCBDVVJMY29kZSBlcnJvckNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50LmgKaW5kZXggMWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUzMzlkZmQyYzNiNWRlYzI1Ny4u
MGZlNjVhMjllNjM2MTZkYjQyZjdjOWVhMWQxODUyMjFjMjAwNDBjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPExl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgp
IHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDMxNWUwNjUxNTMwZGNkYjAyODAxNjU0
Yjc1N2Q4MTQ3M2MyMGZkMzAuLmFlNzE1NWVjZWYzNWQzZTE4ODhkOTE2NTY0NTdlMzgxMTU5ZGY0
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTMwMCw3ICszMDAsNyBAQCAtICh2b2lkKWNvbm5lY3Rp
b246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAq
KWRhdGEgbAogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NzkzCiAgICAgICAgIC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFu
eSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQog
ICAgICAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93
IHRyYW5zZmVyIHNpemUuCi0gICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1
ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKKyAg
ICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKICAgICB9OwogCiAgICAgW3NlbGYgY2Fs
bEZ1bmN0aW9uT25NYWluVGhyZWFkOldURk1vdmUod29yayldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMDhkMDU3YmJiNWYxN2MyMDQ1YmZmOTA2ZmY1YWRh
ODVmMTA0MjkzMC4uZjdmMjY2Y2U4ZDgxOTEwNjBjODU3YTJmOGE2YWQ5ZmRlYmQ4MTgyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC01NDYsOCArNTQ2LDgg
QEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogICAgICAgICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAv
LyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQo
KS4KICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1J
TUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExv
YWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1l
bnQKLSAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewot
ICAgICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERh
dGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgZGF0YSgpLT5mb3JF
YWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAg
ICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShidWZmZXIp
OwogICAgICAgICB9KTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndy
aXRlcigpLmVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5jcHAKaW5kZXggODJhMmE4YzRiMThhY2NlNzk4YjI3YzJjOGQwMDk1ODlmZjc1
Y2JhOC4uNGU4YWI3ODFhNDA2MWFiMThjNTAzMzczYmRhMzhmNmM1NWQ4YTAyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMTE1
LDEyICsxMTUsMTIgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFIKICAgICAgICAgbV9lcnJvck9j
Y3VycmVkID0gdHJ1ZTsKIH0KIAotdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJG
b250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBib29sKQogewogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChi
dWZmZXIpOwogfQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBkYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5
OGQ5OWI1MTc2YTM5Li43Y2JhYThlNTUxMGM4YzRmY2FmMmViOTJjNmY3M2IzZDJhMTJjNjAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAg
LTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzV29ya2VyRm9udExvYWRSZXF1ZXN0
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImLCBib29sKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAKaW5kZXggYmY1YTQ0ZmUzNDhkMmZmY2U5MTZmYjE5NDkxNWU2N2JmZGE5YWVjMS4u
Y2QyNmVjZDZhMzdhN2VkMzlmZjcxZWRkYTM1ZThlZmE5MGIzN2M0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBA
IHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKK3ZvaWQgV29y
a2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgYm9vbCB1c2VTdHJMZW4pCiB7CiAgICAgaWYgKG1fZmFpbGVkKQogICAgICAgICByZXR1cm47
CkBAIC0yMTIsMTMgKzIxMiwxMSBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgICAgIG1fZGVjb2Rl
ciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0Il9zLCAiVVRG
LTgiKTsKICAgICB9CiAKLSAgICBpZiAoIWxlbikKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmIChsZW4gPT0gLTEpCi0gICAgICAgIGxlbiA9
IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKLSAgICBtX3Nj
cmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CisgICAgc2l6ZV90IGxl
biA9IHVzZVN0ckxlbiA/IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZm
ZXIuZGF0YSgpKSkgOiBidWZmZXIuc2l6ZSgpOworICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBsZW4pKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBl
YWFiZTFlYTVkMTNiMzNmOWMzY2M2NmRkNDk1NTdlYjY5ZTM3ZWZjLi4wYmMzYTAyNWIzNjc5ZTI1
NjMwODYyNGVlZWJhODlkY2NjNDVjODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQogCiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sIHVzZVN0ckxlbikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCBmYmEzNjMyMmIyOWE2ZDViNzk3YjM5ZWRjM2MzZDE3
MTI0YjNiNWJjLi5jZTM3MDk2ODlkOWYwOTIxZTA5MDNhMDM3N2RiMjY4YTU0NTBiMmI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVG
b3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2goKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA5YjEx
MmI5ZGIyY2Q4NGQwMzJmNTlkYWZhOGU4ZTM4ZTA3MGU1M2Y3Li5kYzNhZWE4Y2FkOWQwOTZiNDJi
Y2E2NWIyNjEyMzJmMTM3NDNkMWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKQEAgLTEwMzQsNyArMTAzNCw3IEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlRGVjb2RlcigpIGNvbnN0CiAgICAgcmV0dXJuIFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJVVEYtOCIpOwogfQogCi12b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQordm9p
ZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGJvb2wgdXNlU3RyTGVuKQogewogICAgIGlmIChtX2Vycm9yKQogICAgICAgICByZXR1cm47
CkBAIC0xMDUyLDE3ICsxMDUyLDE2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgaWYgKHVzZURlY29kZXIgJiYg
IW1fZGVjb2RlcikKICAgICAgICAgbV9kZWNvZGVyID0gY3JlYXRlRGVjb2RlcigpOwogCi0gICAg
aWYgKCFsZW4pCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChsZW4gPT0gLTEpCi0gICAgICAgIGxlbiA9IHN0cmxlbihyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKSk7CisgICAgc2l6ZV90IGxlbiA9IHVzZVN0ckxlbiA/IHN0cmxl
bihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0YSgpKSkgOiBidWZmZXIu
c2l6ZSgpOwogCiAgICAgaWYgKHVzZURlY29kZXIpCi0gICAgICAgIG1fcmVzcG9uc2VCdWlsZGVy
LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKKyAgICAgICAgbV9yZXNwb25z
ZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGxlbikpOwog
ICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChkYXRhLCBsZW4pOworICAgICAgICBtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlci5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICBpZiAoIW1fZXJyb3Ip
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMmQxM2JlYzM5NDY0NDhiOWI0
ZjkyNWQzMmJkODZiYTJkODAzNzc1YS4uNmJmMTlmODJiZDJmZjc2NzA3ZGE0NTcxNDc1MDdlOTkx
ZDI0NjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTE2Miw3ICsxNjIs
NyBAQCBwcml2YXRlOgogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKICAgICB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJl
c291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlzRG9uZShib29sKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmNwcAppbmRleCA2MTdmNDc2ODk1NjQyZGVjMjMyNTRiNTQwZWU4MTkxMWFj
NGEyZGY2Li43ZjUxMmM2YzExYThlNzEwOGNmMDA2MmI1ODRkMjdiNTg5MDhkMThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTk2LDEwICs5NywxMCBAQCB2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc1RvQmVTZQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVz
U2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNl
OjpkYXRhUmVjZWl2ZWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQg
UmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQo
KnRoaXMsIFdURk1vdmUoZGF0YSkpOworICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0
aGlzLCBkYXRhKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjphY2Nlc3NDb250cm9s
Q2hlY2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAppbmRleCA1Yjdh
N2UyYTc0MjQ0MzJkODZjYjI4YTFiZTcxNzE4YTE2NzM3NWU3Li45NTEwNmY2NzIyNzNiNDVmMGEy
NGE0N2ExYTJiZGQxNDA5ZTBmNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNTcsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKTsKICAgICB2b2lk
IHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkYXRhU2VudCh1aW50NjRfdCwgdWludDY0
X3QpOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImKTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKaW5kZXggNzFmZDAyMjI5YmJiMWM1NzMy
NmZkZmNmZTI2YzExZjc2MWFiY2Y3Mi4uMDU0Yjg5M2UxMTExMGRjZjlhNzAwMjUyZjRmNzk1YjAx
YTU4N2I5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZhaWxMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuY3BwCmluZGV4IDk1ODYwOTFlYTAwNDFiNmYxNTg2OWQ0MmJiZGE3MjQzMjk3Njkw
ZWMuLmJhOGQwNDhmNjVkYzMzOTg0ZjBjZDQ3NjM1YWI5MTAxODc5YmQzYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQordm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpCiB7CiAgICAg
Q09SU19DSEVDS0VSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyLmgKaW5kZXggNTA1YTRlZmU1NzFkNDg5ZTUwYTk4OGJlYjgxODViN2ZlYWIzZGIxMC4u
MGNiMzE1ZmQ4ZmY1MzE5OTE1N2RlNzhmODQ1MmQ3MWM0ZjVlMjk4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5oCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50
NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBm
aW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCmluZGV4IDRiOWVlNTc0YjkyYzdjMzcxN2E0
YmMyODE5YTZiZTNhMTkwNjU3MTUuLmY0NzllMDkwMmIyMTc5Mjk1NWQzNzY4MTRiMjFjODlmZjU1
ZGI1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2Uo
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3Rh
bEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IDhjMTA0ZDgxNjBiN2FhZmQwOTk3MTVkYTZkNGU2
ZjdjNDYzN2ZhMDguLjYwYjY5YTkzNmJiNzhkZjI1MTA3NDljNzU0ZmU2YWEyMjkzZmUwMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNTQs
MTEgKzI1NCwxMCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdAogICAgIG1fY2xpZW50LmdldCgp
LmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgdGhlIGVuY29kZWQgZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVj
b2RlZCBkYXRhIGxlbmd0aC4KLSAgICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsKLSAgICBt
X2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgc2l6ZSk7Cisg
ICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGJ1ZmZlci5zaXplKCkp
OwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmgKaW5kZXggZTZhNzYxMTU5NjJiOTY1OWU3YmZlNzhjNmY0ZGM2ZjUzMTJiM2NiZS4uMGU0YzFh
ZTQ5MjNjMzM3ZjVjZjliMGE0MDhiNWE4ODIyOWY1OTY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1
aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5k
KSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAppbmRleCAzNDhjZmZiOWU4ZTI1
ZWU4M2JiYjM5YTAyY2QzY2Y2ZDI4NTRkMzllLi44YTI4NTgyNjExM2Y5ZDhlZTY2MGRiNjg4YjNj
NTM5M2ZmOTdiMmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENsaWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAz
NmFjYzYzMTQ1ZjQwNWIxOTU1ZDMzNTQwZGFhNzA4ZjlhNjI5MzQxLi5lNmZkMmFjNzBlYzdlMGU3
NTkwYWRlMjcyZTE0MjdmY2U5NmRkZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NjMsMjkgKzg2Mywy
OSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZERpZFJlY2VpdmVSZXNwb25zZVBv
dGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleAogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkKLSAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9H
KCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwotICAgIG1fbnVt
Qnl0ZXNSZWNlaXZlZCArPSBidWZmZXItPnNpemUoKTsKKyAgICAgICAgTE9BREVSX1JFTEVBU0Vf
TE9HKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX251
bUJ5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLnNpemUoKTsKIAogICAgIEFTU0VSVCghbV9jYWNoZUVu
dHJ5Rm9yVmFsaWRhdGlvbik7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewog
ICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0
YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qg
c2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsK
LSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXpl
KCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6
ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlcik7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsK
ICAgICB9CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47
CiAgICAgLy8gRklYTUU6IEF0IGxlYXN0IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAt
MSBmcm9tIHRoZSByZXNvdXJjZSBoYW5kbGUuCi0gICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5n
dGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7CisgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGgg
PSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoIDogYnVmZmVyLnNpemUoKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgewotICAgICAg
ICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJl
ZERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFM
ZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJ
Zk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMjczLDcgKzEyNzMsNyBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgbV9idWZmZXJl
ZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzZW5kQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVu
Y29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBj
ZjEwY2YwZTcxYTFiYzY1NTQwZTg3ZDZiYTRjMWI5Yzg1NmMwYTFkLi44MTdhZWYyNmM4MzZjMzRh
N2Q0NGVlN2NjOTVlZGQ5YTI5OGQ2YTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAg
ICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IGZpbmFsOwogICAgIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGZpbmFs
OwpAQCAtMTkzLDcgKzE5Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0QnVmZmVyaW5n
VGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgYnVmZmVyaW5nVGltZXJGaXJlZCgpOwotICAgIHZv
aWQgc2VuZEJ1ZmZlcihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVu
Y29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIHNlbmRCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2
b2lkIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRi
b3hFeHRlbnNpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
CmluZGV4IGJjMmMzMzdlNGVlZTAxYWY4M2UxMzY3MjMxN2E5YTllYWJjN2M2ZjguLmYwZWZkMDRi
YjJlMThmNmYzY2JjMTYzZmFmMjNkYTA0NjZiZWU1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRl
ZExlZ2FjeVQKICAgICBkaWRGaW5pc2goeyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xv
YWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQordm9pZCBQ
aW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBQSU5H
X1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IGU3ODA4ZDhlNjU1
ODJmNzkzODg4MjhkNTE3NThjYjE5M2NmNTVmYzcuLmIyMjVjNDdiOTRhZmEwYjQ0ZWRjMjY3MGRm
YzU4YWQ3YWZjOTE0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgK
QEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290
aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVn
b3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVp
bnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9j
a2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
ZWNvbm5lY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suY3BwCmluZGV4IDE3ZDQ3OTA3YTNmNmVlNTJiZTY1MDFkMWRhYjBjYTYwNzUxZDZiMGIu
LmFhYWUyYmZiZGY4M2EzOWFjZWMwNjNmZWIyNDQ2MTZkYzg0OGVkYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3
IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5
QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QcmVjb25uZWN0VGFzay5oCmluZGV4IDg1ODA4ZTEyMWI2OGNhOGI3M2UyNTE4ZDE5M2Fi
Mzk1ODFlYWQxZTcuLjhjNmIwZGVlZDY2YzUxMDE5YmU4OTg0ZWQ1Yjg3ZTBjMWQ3OTBmODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKQEAgLTU1
LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZp
bmFsOwogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCmluZGV4IDI1ZDRlMzdmOTQ1NGJlZTMyZjA0ZDhjYzhj
NDcxZDVkM2Y3ZWQ4MmIuLjhjOGRjMzZiMWU1MzkzOGY4MWViNGFiYWFmZjAxOTBmMmI1NGVkYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIgpAQCAtMTczLDcgKzE3NCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckRv
d25sb2FkVGFzazo6c3RhcnQoKQogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlv
bihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50
NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oCmluZGV4IGFiNTll
YWU1MjY2NTMwNjIxMmEyOGU5MzIzYTJiOGI0ZmZlMGM3OGYuLmI4OWFiM2ViZDc2MmY2ODEyYTVl
OTdiZmY2OTBiYTkwZjAyNTdmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2suaApAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZv
cm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC02Niw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckRv
d25sb2FkVGFzayhOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIERvd25sb2FkSUQp
OwogCiAgICAgLy8gSVBDIE1lc3NhZ2UKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgaW50NjRfdCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRG
YWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluCmluZGV4IDFkM2JmYjdjYzMxMDk3
OTljYzgwMDFiYmE3MWQ4OWMwZjZmMmQ5MmYuLjUwZDJiNDJhNzFiMGVkYWI3OWZiY2U5ZGRiOWYx
OTk4MmRiNTM1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFNl
cnZpY2VXb3JrZXJEb3dubG9hZFRhc2sgTm90UmVmQ291bnRlZCB7CiAgICAgRGlkRmFpbChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAg
IERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKQogICAgIERpZFJlY2VpdmVGb3JtRGF0YShJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlIGRhdGEpCiAgICAgRGlkRmluaXNoKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmNwcAppbmRleCA0ZTc5MTliM2RkYzAyYWUxNGQwZWQ5Njg0YjhjNjhiYjZmMjhh
NDM0Li40Zjc4YjlkZjU0ZTVlNjc3ODc4NDEzNWEyN2EwM2RiYzYyOWJmZDc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5j
bHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24u
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIgotI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJD
b3B5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCIKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OnByb2Nlc3NSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IGJvb2wgbgogICAgICAgICBtX2xvYWRlci5zZXRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7
CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9p
ZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYg
KG1faXNEb25lKQogICAgICAgICByZXR1cm47CkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZyb21QcmVsb2FkZXIoKQogICAgICAgICAgICAg
ZGlkRmluaXNoV2l0aE1ldHJpY3MobV9wcmVsb2FkZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBkaWRSZWNlaXZlRGF0YShJ
UEM6OkRhdGFSZWZlcmVuY2UgeyBjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpIH0sIGxlbmd0
aCk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKFJlZiB7IGNvbnN0X2Nhc3Q8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciY+KCpjaHVuaykgfSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKaW5kZXggYzM0NTgwMjY3ZmIzMjY5
ZTZkY2JkY2VmYzM0ZDA2ODJjNmEwODg2Yy4uNTIyNWU1NDU5OTk1MWQ4ZjgxYzcwYWY4MmViYmEy
Njg5ZTM1MDA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBAIC00
OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERl
Y29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkzLDcgKzk0LDcgQEAgcHJpdmF0ZToKICAg
ICBlbnVtIGNsYXNzIFNob3VsZFNldFNvdXJjZSA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyQ29weSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRp
ZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmluaXNoV2l0aE1ldHJpY3MoY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLm1lc3NhZ2VzLmluCmluZGV4IDE4ZTYyOWYwZDE0NmVkMmQ0MjlkYjFiYTI4NzAx
ZTgzZmI5NmU2MmYuLjdkYjUzZTliZDAzODA0NTQ3M2EyNWFmMzdkNDdjMTk1Nzk1ZTIzMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmlu
CkBAIC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgTm90
UmVmQ291bnRlZCB7CiAgICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQog
ICAgIERpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Up
Ci0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVj
ZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2go
KQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5jcHAKaW5kZXggNWQ5YmQzMzMzOTIxMWNhMWNkNDQ3Yjg3OTJmNTQ2MWVhODdlZGRmNC4u
ZTU2NTRjYzMxMzliNDlkNjFhOTg1MTNjZDAxNmJlY2Y3MzliYmNmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzUs
MTAgKzE3NSwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygp
OwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNr
KQotICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBtX2JvZHlDYWxsYmFjayhSZWZQdHIgeyAm
YnVmZmVyIH0sIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAppbmRleCA2N2FiYzU1YzYwZmYyNGUzOWRk
MDRlY2M1MDIxYjYwNWVlOGJlYmIxLi41Zjg4YWMyYWE4ZGY5NjI4ZDRjNTlkZGQwOTRmMGNlZTFk
MjFhN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBOZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgdXNp
bmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0Rm9y
UmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlD
YWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKCkg
Y29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBib29sIHNob3Vs
ZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA3YTI2MjIxOWRlNzhi
MjM1ZDEyNWE5MmI2ZTIzNmQzMzI2MmY3YTI3Li5kOWQ3NDc1MjUzMmYxODllYjFiZTJjMDNkN2Uy
OWU4NTllODk2ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9yIFNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
bwogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0Vt
cHR5KCkpCkBAIC0xODYsOCArMTg2LDExIEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAg
ICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvamF2
YXNjcmlwdCJfcywgIlVURi04Iik7CiAgICAgfQogCi0gICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZl
ci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKKyAgICBpZiAoIWJ1ZmZlci5p
c0VtcHR5KCkpIHsKKyAgICAgICAgYnVmZmVyLmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdt
ZW50KSB7CisgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoc2Vn
bWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAog
dm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAppbmRleCA0NGZjMDY4NWZhMGZlZGM4NzQyMTkxNmU5
MTNhNjc0YjFjMGZkYmVhLi43ZTgxOGYzNDEzZGEyOWY4NjFlMTAwMzk5MWU4ZDUzODkyMzQ2ZWUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApA
QCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9y
Q3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZp
bmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4
IDQxZDgyMzUwMjQ3NDdiNmZjNGEzYWM1NDhlMTMzNGVkNmNiNWVmN2EuLjgxNGViMzIwZDRlNzQ4
YTI5YWUwOTEzNWFmYzFkYTVmMzc1MTVlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAKQEAgLTEyMCwxNSArMTIwLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFNwZWN1
bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTcGVjdWxhdGl2
ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NF
UlQoIW1fY2FjaGVFbnRyeSk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewog
ICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0
YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEw
MjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBi
dWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLnNpemUoKSA8PSBtYXhpbXVtQ2Fj
aGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQo
YnVmZmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS5yZXNldCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IDFi
ODQzZGI3ZWMyNzBkYjlkYWI5ZThhMjVmMmE0OGE4ZWNhZTJhOGEuLjlhZGNhNjA1ZTcyODBiYjdi
MzRjZTc0NGQ4Nzg4YmJiNDQ4OTI0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQg
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmlu
ZGV4IDQxNjY4YTViMWNkNzM4Njk2N2I4ZmQ5NzNlOTY3MzJlY2E5MDdlZGMuLjA3NzJhZjFhODZk
MjI0MTdiZjExZjE2YmQ2YjdiNTgwZmU1N2E3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTM4
LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU011dGFibGVVUkxSZXF1ZXN0OwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRMUyhjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZENvbXBs
ZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRyYW5zZmVy
U2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxvYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
CmluZGV4IDQ3NzFmZGU5MjBkNmI5OGU4M2ZjMjlkZDNhYWY5N2EwYTZkOWE4ODAuLjY0OWI1Y2E3
OGM2ODc1ZWNkZTBkM2Q0MzZmOTU5MGRiNTE3OWQwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpA
QCAtNDQzLDEyICs0NDMsMTIgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkQ29tcGxl
dGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXIKICAgICAgICAgbV9j
bGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwog
fQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQog
ewotICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZl
ZCAlemQgYnl0ZXMiLCBkYXRhLT5zaXplKCkpOworICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2su
Z2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZlZCAlemQgYnl0ZXMiLCBkYXRhLnNpemUoKSk7CiAK
ICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZN
b3ZlKGRhdGEpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEpOwogfQog
CiB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0
ZWRMZWdhY3lUTFMsIFdlYktpdDo6UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCmluZGV4IDg0NjY5ZTIwOWQ3N2JmNTJhMzZhZmUy
YTdkYWIyNTJhNjkwMGRjZjcuLjEzZmNjN2JkNDhhNTVhMDkzOTEyOTI2YmE0NDg0Y2Y1ZTM1NTEz
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
RGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TYW1lU2l0ZUluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50
Lmg+CiAjaW5jbHVkZSA8cGFsL3RleHQvVGV4dEVuY29kaW5nLmg+CkBAIC0xNzIsMTMgKzE3Mywx
MyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwbwogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25z
ZSgpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0
aGlzIH07CiAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBzdGF0ZSgpID09
IFN0YXRlOjpDb21wbGV0ZWQgfHwgKCFtX2NsaWVudCAmJiAhaXNEb3dubG9hZCgpKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgTmV0
d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xv
YWRNZXRyaWNzJiYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggNDViZTVj
ZTE4NDMyNTI3MWQ1YzA4MGRkMzRmMWVlNGExNjY0MmExZi4uZTU1ODY0YTk1ZjdiY2JjMDg1YzQ2
NjI4YmZmMDU4NTczNTczMjg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCkBAIC0zNiw2ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY4LDcgKzY5LDcgQEAgcHJpdmF0ZToK
ICAgICBSZWY8V2ViQ29yZTo6Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZXF1ZXN0U3RhdHVzID0gUmVxdWVzdFN0YXR1czo6TmV3UmVx
dWVzdCk7CiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCB1
bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6
Q3VybFJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIo
V2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2
b2lkIGN1cmxEaWRDb21wbGV0ZShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9y
KFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCAxN2YwOGMyOGVhMTI1YjU1MDk5M2VlZDI0
ZDU5NjNiODUxMGExMTQxLi41N2IxNDZlNThlN2E5ZGE3MDI2YzlkZWU1MjAzOTU1MWFkYWI3MWQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBJUEMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBl
MTI2NGNlMjFiYTU3ZjJhNDI3NDhlMzNhMWRhZDg4YTBlMjU4YmMyLi5kNzY3ZmMwNmIzNmYxNTZm
ZjMxYzM4M2U2NDNkNDM0NGMyMTdhYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KSAtPiBFCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKLWF1dG8gV2ViVVJM
U2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCithdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCiB7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTg3LDExICsxODcsMTEgQEAgYXV0
byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpIC0+IEUKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChp
c1N5bmMoKSkgewotICAgICAgICBtX3N5bmNEYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgICAgICBtX3N5bmNEYXRhLmFwcGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlk
ZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIuZ2V0KCkpLCBtX3dlYlBhZ2VJ
RCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNr
RGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3Vy
Y2VMb2FkZXJJRCwgYnVmZmVyKSwgbV93ZWJQYWdlSUQpOwogICAgIHJldHVybiBFeGNlcHRpb25U
eXBlOjpOb25lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmgKaW5kZXggZjZmZjQ2ZWVhNWYyOTBiN2I3ZTNmZTU5MjFkZjlmMTk0YmFjZDExNy4uYzMyMzA2
OWIxY2MwMzFmMDI1YjIyYzg1OWEzNTQxODhmZGQyMzcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAg
RXhjZXB0aW9uVHlwZSB3aWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsICBGdW5jdGlvbjx2b2lkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRQZXJmb3Jt
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIEV4Y2Vw
dGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAg
ICAgRXhjZXB0aW9uVHlwZSBkaWRDb21wbGV0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAKICAgICB2b2lkIHN0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAppbmRl
eCBiNTEzYTI2ODA4ZWFhMThlMzdmNGZkZjA0YTIzZDI5NjBiMjczYjJjLi45MjM0YjVjNjUzZjkx
ZWJhOTEwZmJkZjliZTFlMjJhMDJjMTFjNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHku
Y3BwCkBAIC03MiwyMCArNzIsMTcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRh
dGFTZW50KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmUKICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRh
U2VudChtX2lkLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCksIDApOwogfQogCi12b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAg
IGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShsZW5ndGgpOworICAg
IGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGJ1ZmZlcik7CiAg
ICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2hhcmVk
TWVtb3J5UHRyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKTsKLSAg
ICBtZW1jcHkoc2hhcmVkTWVtb3J5UHRyLCBkYXRhLCBsZW5ndGgpOwotCiAgICAgU2hhcmVkTWVt
b3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgLy8gVGFrZSBvd25l
cnNoaXAgb2Ygc2hhcmVkIG1lbW9yeSBhbmQgbWFyayBpdCBhcyBtZWRpYS1yZWxhdGVkIG1lbW9y
eS4KICAgICBoYW5kbGUudGFrZU93bmVyc2hpcE9mTWVtb3J5KE1lbW9yeUxlZGdlcjo6TWVkaWEp
OwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1v
dmUoaGFuZGxlKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCkgfSksIDApOworICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRh
dGFSZWNlaXZlZChtX2lkLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxl
KSwgYnVmZmVyLnNpemUoKSB9KSwgMCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVBy
b3h5OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlUHJveHkuaAppbmRleCA0N2VhODY2NzFiMTNkMTM5NWMzZGFkOWJkYTc5YWJmNjE2Y2JhMTc5
Li45NDk0NjQ1MjJjMjYzZTZhNWU4MDczZjc0ZTlkMjQzNGJhYTkzOTMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZVByb3h5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGly
ZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAg
ICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2b2lkIGRh
dGFTZW50KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9u
ZywgdW5zaWduZWQgbG9uZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsK
KyAgICB2b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAppbmRleCBkNzFhZTVlMGE5YWYzZDllZTNhNTFkOGZjZjUwZmU1MzU5YjM5MGI3Li43NDkxOTBk
MTliMGZhMWNlMGI1MTFlODQyMDcyNTYwMDY5MTE4NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgi
CkBAIC0yMDAsMTYgKzIwMSwxNSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIG1fY29y
ZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGljeURlY2lz
aW9uQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YSBvZiBzaXplICVsdSBmb3IgJyVzJyIsIGRhdGEuc2l6ZSgpLCBtX2NvcmVM
b2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mg
c2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIp
OwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGlu
ZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAg
bV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CisgICAgICAgIG1faW50ZXJjZXB0
Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpLCBlbmNvZGVk
RGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0g
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVE
YXRhKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxOCw3ICsyMTgsOCBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGlu
dDY0X3QgZQogICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2
ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEiKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQg
Kz0gZGF0YS5zaXplKCk7CiAKLSAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMp
OworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIoKSA/IFJlZiB7ICpkYXRhLmJ1ZmZlcigp
IH0gOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2
ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTMwNiw3ICszMDcsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxl
UmVzb3VyY2U6OkhhbmRsZSYgaGFuZAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVMb2Fk
ZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgV0VCUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZToiKTsKIAotICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNo
YXJlZEJ1ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIHNlbnQgZnJvbSB0
aGUgbmV0d29yayBwcm9jZXNzLiIpOwpAQCAtMzIzLDcgKzMyNCw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlJiBoYW5kCiAKICAgICAvLyBPbmx5IHNlbmQgZGF0YSB0byB0aGUgZGlkUmVjZWl2ZURhdGEg
Y2FsbGJhY2sgaWYgaXQgZXhpc3RzLgogICAgIGlmICh1bnNpZ25lZCBidWZmZXJTaXplID0gYnVm
ZmVyLT5zaXplKCkpCi0gICAgICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZm
ZXIucmVsZWFzZU5vbk51bGwoKSwgYnVmZmVyU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNl
KTsKKyAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIucmVsZWFzZU5v
bk51bGwoKSwgYnVmZmVyU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKIAogICAgIGlm
ICghbV9jb3JlTG9hZGVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhMjJlNjJmMjhi
NWZhNGNmYzkxYWE1ZTVjZTgyY2EyN2FlMjZhZDUzLi5hYzU0MjJmYzA2NzEwYmQwZTA4N2UwZjQ0
MDllZDk0MDE3YzBjZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogbmFtZXNwYWNl
IElQQyB7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgwLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYpOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0
b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWRE
YXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFNlcnZpY2VXb3Jr
ZXJMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVz
c2FnZXMuaW4KaW5kZXggMDJhMTRmNTlhMzA0NzQ0YzJkMTgzZWE3OWU5OWViYWViNGNmYmJhMi4u
ZGFhMjRkMjdjNzFhODNjZjdjMGYxNjhkYTI2YTQ5YjQ4NzY5MjYwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VM
b2FkZXIgTGVnYWN5UmVjZWl2ZXIgewogICAgIFdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlKQogICAgIERpZFNlbmRE
YXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KQogICAg
IERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBi
b29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQotICAgIERpZFJlY2Vp
dmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKQorICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSBk
YXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZEZpbmlzaFJlc291cmNlTG9h
ZChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKQogICAgIERp
ZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKICAgICBEaWRG
YWlsU2VydmljZVdvcmtlckxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA4
ZDJjNWYzZTI1Y2ExYTIzNzhlNWUzMDA1ZDc1NDkyYmVhZjBiMWVhLi4yYjdlNGQyYzIwZmRkMTk5
ODgyNzJkYThiZmNjNWE2MTg2YzZkM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC02NSw2ICs2NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBFbGVtZW50Owogc3RydWN0IFBs
dWdpbkluZm87CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
MTc2LDExICsxNzcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlw
dCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBmaW5hbDsKICAgICB2
b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiBy
ZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZp
bmFsIHsgfQogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7Ci0gICAg
dm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURh
dGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgZmlu
YWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0Nh
bmNlbGxlZCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBs
YXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6
U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsK
LSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRh
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFp
bChib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNv
bnN0IFdlYk1vdXNlRXZlbnQmKSBmaW5hbDsKQEAgLTM2Miw3ICszNjMsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50
OF90KiwgaW50KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciopIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQppbmRleCBlNWZhMDcxMDlhOTMxODQ1MzlmYjFlMjQ3MGEzZjkzODZkNDMx
NTU4Li5mYTZjZTZmNjlmYzAyZjcwMWY4ODUxMzg4NDc1ZGVmM2YyNDMxNGNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTk0
LDYgKzk0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsQW5pbWF0b3IuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1doZWVsRXZl
bnRUZXN0TW9uaXRvci5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4K
QEAgLTExOTEsNyArMTE5Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2Fk
ZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0CiAgICAgfQogfQog
Ci12b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgY291bnQpCit2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKCFtX3BkZlBsdWdpbikKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTIwMCw3ICsxMjAxLDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdp
blN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW0K
ICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlcXVlc3QtPmFkZERh
dGEoZGF0YSwgY291bnQpOworICAgIHJlcXVlc3QtPmFkZERhdGEoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKIH0KIAogdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVu
dDo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNv
dXJjZUVycm9yJikKQEAgLTE3MTgsMTUgKzE3MTksMTUgQEAgdm9pZCBQREZQbHVnaW46OnN0cmVh
bURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiwgdWludDMy
X3QKICAgICAgICAgbV9pc1Bvc3RTY3JpcHQgPSB0cnVlOwogfQogCi12b2lkIFBERlBsdWdpbjo6
c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NF
UlRfVU5VU0VEKHN0cmVhbUlELCBzdHJlYW1JRCA9PSBwZGZEb2N1bWVudFJlcXVlc3RJRCk7CiAK
ICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVN
dXRhYmxlKDAsIDApKTsKIAotICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnl0
ZXMsIGxlbmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKKyAgICBDRkRhdGFB
cHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwor
ICAgIG1fc3RyZWFtZWRCeXRlcyArPSBidWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIFBERlBsdWdp
bjo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTE3NjMsMTQg
KzE3NjQsMTQgQEAgdm9pZCBQREZQbHVnaW46OmVuc3VyZURhdGFCdWZmZXJMZW5ndGgodWludDY0
X3QgdGFyZ2V0TGVuZ3RoKQogICAgICAgICBDRkRhdGFJbmNyZWFzZUxlbmd0aChtX2RhdGEuZ2V0
KCksIHRhcmdldExlbmd0aCAtIGN1cnJlbnRMZW5ndGgpOwogfQogCi12b2lkIFBERlBsdWdpbjo6
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5n
dGgpCit2b2lkIFBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIG1fZGF0YSA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKLSAgICBlbnN1cmVEYXRhQnVm
ZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyArIGxlbmd0aCk7Ci0gICAgbWVtY3B5KENGRGF0YUdl
dE11dGFibGVCeXRlUHRyKG1fZGF0YS5nZXQoKSkgKyBtX3N0cmVhbWVkQnl0ZXMsIGJ5dGVzLCBs
ZW5ndGgpOwotICAgIG1fc3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CisgICAgZW5zdXJlRGF0YUJ1
ZmZlckxlbmd0aChtX3N0cmVhbWVkQnl0ZXMgKyBidWZmZXIuc2l6ZSgpKTsKKyAgICBtZW1jcHko
Q0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdldCgpKSArIG1fc3RyZWFtZWRCeXRlcywg
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1
ZmZlci5zaXplKCk7CiAKICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQogICAgIC8vIEtl
ZXAgb3VyIHJhbmdlcy1sb29rdXAtdGFibGUgY29tcGFjdCBieSBjb250aW51b3VzbHkgdXBkYXRp
bmcgaXRzIGZpcnN0IHJhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oCmluZGV4IDFkODQ0ODA1ZjRjMTBlOTNmZWRjYWJkZWVjMjFkZDM1ZGRmODgyMDIuLmU0ZDYy
ZjRiZWE5YmZjMmZhODBlZjRkNmU5MGM1Y2NmMDY3OTRmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC01NCwxMiArNTQsMTMgQEAgY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9h
dFNpemU7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNs
YXNzIFNjcm9sbGJhcjsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYwLDcgKzE2MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8g
VGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
RGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gaGFz
IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRp
bmcodWludDY0X3Qgc3RyZWFtSUQpID0gMDsKQEAgLTE3Myw3ICsxNzQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBs
YXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhl
YWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRl
bGxzIHRoZSBwbHVnLWluIHRoYXQgdGhlIG1hbnVhbCBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4K
LSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFt
RGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogCiAgICAg
Ly8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4K
ICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXgg
NTM0ZGE1MmQ0N2Q2Mjg1MGUyMDVmZjllOTljMzBiMzdkM2JjYmExMi4uMDM0NGY0YmUyM2E0Mzc2
NzE5Nzc4OTk5N2Q3NjM3YTIwMzFiN2VhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgog
ICAgIC8vIE5ldHNjYXBlUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50CiAgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogCkBAIC0y
MzUsOSArMjM1LDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVSZXNwb25z
ZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFIKICAgICBtX3BsdWdpblZpZXct
Pm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UobV9zdHJlYW1JRCwgcmVzcG9uc2VV
UkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUs
IGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdp
blZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6U3Ry
ZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVh
bURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ5dGVzLCBsZW5ndGgpOworICAgIG1fcGx1Z2lu
Vmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ1ZmZlcik7
CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIApAQCAtMzc0LDcgKzM3NCw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlk
UmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERh
dGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0ZWRGaWxl
bmFtZSgpKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAv
LyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxlZCB0byBpbml0aWFsaXpl
LgogICAgIGlmICghbV9wbHVnaW4pCkBAIC0zODIsMTEgKzM4MiwxMSBAQCB2b2lkIFBsdWdpblZp
ZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxl
bmd0aCkKIAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21h
bnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNl
KTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChieXRlcywgbGVuZ3RoKTsKKyAg
ICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGJ5dGVz
LCBsZW5ndGgpOworICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShidWZm
ZXIpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCkK
QEAgLTExNzEsOSArMTE3MSw5IEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3Ry
ZWFtKCkKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCiAgICAgaWYgKG1fbWFudWFsU3RyZWFt
RGF0YSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCk7
Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKLSAgICAg
ICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwg
ZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEudGFr
ZSgpLT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7Cisg
ICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKKyAgICAgICAgfSk7
CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3Rh
dGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCmluZGV4IGY2NjMxMmE4MGFjZDFlMDM1MzEwZGZhYTNhNWYzYTE3YjcyYWFlNTUuLjI1
NjE1Y2IzMGYyMjY0NjM5MjQ0NDg4ZjJiZDdjNDEyMjc5MDc5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTczLDcgKzczLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCgpIGNvbnN0IHsgcmV0dXJuICFtX3BsdWdp
biB8fCBtX3BsdWdpbi0+aXNCZWluZ0Rlc3Ryb3llZCgpOyB9CiAKICAgICB2b2lkIG1hbnVhbExv
YWREaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKTsKKyAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5n
KCk7CiAgICAgdm9pZCBtYW51YWxMb2FkRGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZWU0
MGZiOTU4NWU3OWQ4NmIzY2ZkMmY1NzllZDQ2ZTYxYjllYzYzZS4uMzE0ODJlYjNiMzY4ZDc4YTYx
YTdlYzFkMjRjNTk4MTBiYzkxZWQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJl
Y2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9j
b25uZWN0aW9uKQogICAgICAgICByZXR1cm47CkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4KICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2VNZXNzYWdlKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFy
ZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCiAgICAgICAgICAgICBtX3Jlc3BvbnNl
RGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKLSAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5k
KGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV9pc0Rvd25sb2Fk
KQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxpbnQ2
NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJl
Y2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9
LCBtX2ZldGNoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVm
ZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRj
aElkZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxp
bnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmlu
aXNoKFJlZjxGb3JtRGF0YT4mJiBmb3JtRGF0YSkKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmlu
aXNoKFJlZjxGb3JtRGF0YT4mCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZUJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1f
Y29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faXNEb3dubG9hZCkKLSAg
ICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRU
YXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90
PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBi
dWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVu
dGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IGRhdGEsIHNpemUgfSwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRp
ZFJlY2VpdmVEYXRhIHsgYnVmZmVyICwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUo
KSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKQEAgLTIyOCw3ICsyMjgsNyBAQCB2
b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKCkKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNo
KCk7CiAgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgewot
ICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKKyAgICAgICAgZGlkUmVjZWl2
ZURhdGEoYnVmZmVyLmNvcHkoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgIGlmIChtX2Rp
ZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9y
bURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmlu
ZGV4IGU5ODdlMTlhYzhiNzM4ODcxYWFkODJiNGIzODU2Mjk2OGEyYjZjOWMuLjA5NDAwZGYwY2U3
MjVmMzlhOGIxMWQ5MzVlMTQ1NGUzOTlmNWEyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3Jt
RGF0YUFuZEZpbmlzaChSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBk
aWRGaW5pc2goKSBmaW5hbDsKQEAgLTYwLDggKzYwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bnZlcnRGZXRjaFRvRG93bmxvYWQoKSBmaW5hbDsKIAogICAgIHZvaWQgY2xlYW51cCgpOwotICAg
IAotICAgIHZvaWQgZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QpOworCisgICAgdm9pZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkRmluaXNoQmxvYkxvYWRpbmcoKTsKIAogICAgIHN0cnVj
dCBCbG9iTG9hZGVyIGZpbmFsIDogV2ViQ29yZTo6RmV0Y2hMb2FkZXJDbGllbnQgewpAQCAtNjks
NyArNjksNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQog
ICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxvYkNo
dW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKSBmaW5hbCB7IGNsaWVudC0+ZGlkUmVjZWl2ZUJsb2JD
aHVuayhkYXRhKTsgfQogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgY2xpZW50LT5kaWRGYWlsKGVycm9yKTsgfQogICAgICAg
ICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5hbCB7IGNsaWVudC0+ZGlkRmluaXNoQmxvYkxvYWRpbmco
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxNGEwODNjYTIwN2E5
MDYzY2Y4MGIxZTdlOTY3MGE0ODdjZjRkMzk5Li5lZDRmNWRlOWQ1ZTU2MThkNDMyNDU1MDgyZjVk
YTE4OGFiZjliZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExNTIs
MTAgKzExNTIsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRp
cGFydENvbnRlbnQoKQogICAgIHdlYlBhZ2UtPmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KG1f
ZnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fcGx1Z2luVmll
dykKLSAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGxv
YWRlci0+Y29tbWl0RGF0YShkYXRhKTsKIAogICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0
YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2Vs
IHRoZSBXZWJLaXQgbG9hZC4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFy
ZWQgYWNyb3NzIGFsbCBwb3J0cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+LgpAQCAtMTE3
Nyw3ICsxMTc3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChE
b2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KgogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldyA9IHRydWU7CiAgICAgfQot
ICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7
CisgICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAK
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRl
ciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiYjUyOWQzYWVjNGUy
Yzc1ZjFhN2RlOTFiMTBiNTU4MmQ0NTIyYjQyLi4xZDMwYmMzOTM4M2FmZmYyY2E5YzI4NzUzZGQy
ZDdlYzJiMjY0OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTUyLDcgKzE1
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBm
aW5hbDsKICAgICB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAKLSAg
ICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50
OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lk
IGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIGZpbmFsOwogICAgIAog
ICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggYTIwNWUwMDFjYTcxNTgyMDkxM2E4MWFlNGE4
MzY1MzBmOWEwZjY0OC4uNzJlMzU1NGM4ZTBhYTY5MGE2ZWM1NzgwMTc2ZjE5ZTBiOGQ3MGQyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAKIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6
On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIHdlYlBhZ2UgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDBkYzE2N2U1YjdiYzNi
MDNlZjM5MzFlYWIzNTZjNzgyNzkyOTUyOWUuLjY0OWJjODMxOWMyNzg2ZjAxZDYxN2MxMTE5OWRi
MGM2YzA3N2ZhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJQcmV2aWV3TG9hZGVy
Q2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRl
OwogICAgIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA5NDJlZGM2MjNhNGU2NTNiYjE4OGFlZTA1MDY0NGEzZjRhMDMyZTg5Li5mODlmZjcy
YTBkMzFiZWMxMWVmODAyOTdlZmJhOTJjMmE3YmM2NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzA1NywxMiArNzA1NywxMiBAQCB2b2lk
IFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMU2NoZW1lSGFu
ZGxlcklkZW50aWZpZXIgaGFuZAogICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlUmVzcG9uc2Uo
dGFza0lkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVU
YXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmll
ciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlOjp1cmxTY2hl
bWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxl
cklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRp
ZmllciwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhKQogewogICAgIGF1dG8qIGhh
bmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxl
cklkZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsKIAotICAgIGhhbmRsZXItPnRhc2tE
aWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5zaXplKCksIGRhdGEuZGF0YSgpKTsK
KyAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuYnVm
ZmVyKCkgPyAqZGF0YS5idWZmZXIoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkuZ2V0KCkpOwog
fQogCiB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVI
YW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhOTRiNWI5
ZDdmZTMyZjI0YTg2ZGFhYWQ0NDg0MmIwY2RkMGFlYjJmLi40ODg2NjcwN2M0NjEzZDlhN2NkMzUy
MTVkZmNhOTIzYzY5NzliZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0xODQsNiArMTg0LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25u
ZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3Mg
U2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTg5Niw3ICsx
ODk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVybFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJlZGly
ZWN0aW9uKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRQ
ZXJmb3JtUmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCB1cmxT
Y2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRS
ZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmKTsKKyAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVI
YW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJ
ZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKICAgICB2b2lkIHVybFNj
aGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHNldElzVGFraW5nU25hcHNob3RzRm9yQXBw
bGljYXRpb25TdXNwZW5zaW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYjI3MjI5NDcxZWFlODZlZTU5
ODE5ODNkZDU3YjVlN2E4MjkxY2Q0Yi4uYmRhNWY1MGFkZDIzYTk2NzQwZTg5ZDczM2Q3OWMxODdm
MDUyYmUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01NjQsNyArNTY0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGUKICAgICBVUkxTY2hlbWVUYXNrV2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBwcm9wb3NlZFJlcXVl
c3QpIC0+IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgYWN0dWFsUmVxdWVzdCkgQXN5bmMKICAg
ICBVUkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYktpdDo6V2ViVVJMU2NoZW1l
SGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkKICAgICBV
UkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxl
cklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRl
bnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSkKLSAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YSkKKyAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkg
ZGF0YSkKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUoV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
KQogCiAgICAgU2V0SXNTdXNwZW5kZWQoYm9vbCBzdXNwZW5kZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5LmNwcAppbmRleCA2ZDhkMGNmMjc4NGVkMzA1NjYyNWM3ZjZlODQ2YTkzYTcxMWNiYWNkLi42
MTZlZGEwOGYwYjhmY2FiMmQ1N2ZjNDc1MzI5MTA3YjgxNWNkMjNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRs
ZXJQcm94eS5jcHAKQEAgLTk2LDEzICs5NiwxMyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eTo6dGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZQog
ICAgIHRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLXZvaWQgV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhf
dCogZGF0YSkKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURh
dGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byogdGFzayA9IG1fdGFza3MuZ2V0KHRh
c2tJZGVudGlmaWVyKTsKICAgICBpZiAoIXRhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIHRh
c2stPmRpZFJlY2VpdmVEYXRhKHNpemUsIGRhdGEpOworICAgIHRhc2stPmRpZFJlY2VpdmVEYXRh
KGRhdGEpOwogfQogCiB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZENvbXBs
ZXRlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCmluZGV4IDU4YmVj
YzE3YjVkODU5ODc0OTg4NGQzMDI1MTY4OWNjY2MxNzY5M2YuLmFiMjBiZDU3M2FhNGFmYzE1ODA1
OTBmMjcwNDY2MzAwNjg3NzQwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCkBAIC0zNSw2ICsz
NSw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksNyArNjAsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCB0YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOwotICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lkIHRhc2tE
aWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgdGFza0RpZENvbXBsZXRlKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwogICAgIHZvaWQgdGFza0RpZFN0b3BMb2FkaW5nKFdlYlVSTFNjaGVtZVRhc2tQcm94eSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVUYXNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJM
U2NoZW1lVGFza1Byb3h5LmNwcAppbmRleCAzNjA2YmJkYzY1MjE1ZGRjYTkyNjEzYTgxMDdkYWIx
YjExZWNiNjU2Li45ZTcyZDg0Yzk3ZGY2ZDI5NzE0YTgzYzUxYWMxNzc2M2U1ZmI2NTNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNr
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNj
aGVtZVRhc2tQcm94eS5jcHAKQEAgLTE0MCwyMSArMTQwLDIxIEBAIHZvaWQgV2ViVVJMU2NoZW1l
VGFza1Byb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNl
aXZlRGF0YShzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkKK3ZvaWQgV2ViVVJMU2No
ZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgaWYgKCFoYXNMb2FkZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1fd2FpdGluZ0ZvckNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIFdFQlVSTFNDSEVN
RVRBU0tQUk9YWV9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6IFJlY2VpdmVkIGRhdGEgZHVy
aW5nIHJlc3BvbnNlIHByb2Nlc3NpbmcsIHF1ZXVpbmcgaXQuIik7Ci0gICAgICAgIHF1ZXVlVGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGFWZWN0b3IgPSBWZWN0
b3IgeyBkYXRhLCBzaXplIH1dIHsKLSAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGFWZWN0
b3Iuc2l6ZSgpLCBkYXRhVmVjdG9yLmRhdGEoKSk7CisgICAgICAgIHF1ZXVlVGFzayhbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGEgPSBSZWYgeyBkYXRhIH1dIHsKKyAg
ICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKLSAgICBtX2Nv
cmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIHNpemUsIDAsIERhdGFQYXlsb2FkVHlwZTo6
RGF0YVBheWxvYWRCeXRlcyk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShkYXRh
LCAwLCBEYXRhUGF5bG9hZFR5cGU6OkRhdGFQYXlsb2FkQnl0ZXMpOwogICAgIHByb2Nlc3NOZXh0
UGVuZGluZ1Rhc2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAppbmRleCA3NTUwODc5NDE4MjBmZWVm
YzVkMDEyNzE1OGMwNjRjZTI1OGEwODM1Li5lZDkxZjM4ZTNhZGQxM2JlMTljYjIxNzdlZDQ0OGZk
ZDJmYTc5NTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVUYXNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRQZXJm
b3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHNpemVfdCwgY29u
c3QgdWludDhfdCogZGF0YSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCmluZGV4IGEyNTU2MGExMGMy
ODgyZTFhYmQxNzg0NTY5NDg2ZWExM2VkODk2ZDQuLjMyODljMjM2MjlhMGRjMzFmYzBjMTk5ZWRm
MTMyOTdiZWQ2MWExOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvUGluZ0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBv
cnQvUGluZ0hhbmRsZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUhhbmRsZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKQEAgLTczLDcgKzc0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcGluZ0xvYWRDb21wbGV0ZSh7IH0s
IHJlc3BvbnNlKTsKICAgICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGlu
dCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwg
aW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGYWls
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmluYWwgeyBy
ZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggOTU5ZDc0OGI1NmJlMTA3NmJkOTc3OTkyMmNkMzU2ZDIxYTY4MTc0ZS4uOGRm
OTkzZjJkNzc1YjZjOTNkMmU4ZjA5OTBmNzJmODVmNjE4ZTU4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC00OCwxMCArNDgsMTIgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDYWNoZWRG
cmFtZTsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBIaXN0b3J5SXRlbTsK
IGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBjbGFzcyBXZWJGcmFtZUxv
YWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PiB7CkBAIC0xNTEsNyArMTUzLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsIHsg
fQogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZv
aWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3Qq
LCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExv
YWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmlu
aXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5
UmVkaXJlY3RMaW5rcygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA0
M2U2M2Y0NTYzNDVlY2YxYzkyNGU1Yjc3MmE2ZjU0MTczYTkxNDJiLi44N2E1ZDY1N2Y3YjczM2Qw
N2M1ZGI2MDFmNjk4MWY5MDQ5NzcxMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpA
QCAtOTkyLDEwICs5OTIsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNl
TXVsdGlwYXJ0Q29udGVudCgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29t
bWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNE
YXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGgg
ZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRh
Om5zRGF0YS5nZXQoKV07CisgICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOmRh
dGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKQEAgLTIw
MTIsNyArMjAxMSw3IEBAIFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJldGFpblB0
cjxOU1N0cmluZz4gbV9maWxlUGF0aDsKICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4g
bV9maWxlSGFuZGxlOwogCi0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCisgICAgICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92
ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gZGF0YUFycmF5ID0gYnVmZmVyLmNy
ZWF0ZU5TRGF0YUFycmF5KCk7CiAgICAgICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBkYXRh
QXJyYXkuZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQppbmRleCAwZTA1YjE4ZDY5NjM5ODI4ZDQzM2M0NmQ3OTIxY2Y3MGRlN2RmOWQxLi4yYTg3NzBk
ZjgwYmI5ZjcwYzEwYmI5MWY5NTIwZDFlMTljODU5ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTk3Nyw3ICs5NzcsNyBAQCAtICh2b2lkKV9j
b21taXREYXRhOihOU0RhdGEgKilkYXRhCiAgICAgYXV0byogZG9jdW1lbnQgPSBfcHJpdmF0ZS0+
Y29yZUZyYW1lLT5kb2N1bWVudCgpOwogICAgIGRvY3VtZW50LT5zZXRTaG91bGRDcmVhdGVSZW5k
ZXJlcnMoX3ByaXZhdGUtPnNob3VsZENyZWF0ZVJlbmRlcmVycyk7CiAKLSAgICBfcHJpdmF0ZS0+
Y29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5jb21taXREYXRhKChjb25zdCB1
aW50OF90KilbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOworICAgIF9wcml2YXRlLT5jb3Jl
RnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERhdGEoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKaW5kZXggZmIyNTgzZmU5NzI2NGM3M2VlYjIzZWJiNGQzOTkwYjNiODRhMDdmMy4u
MTI3MGU1N2RkOTViMGQwMDAzYjVlNTY3N2Q0NzQyYTEyNTUyZDg1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcApAQCAtNjQxLDkgKzY0MSw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBsb2FkZXItPmNvbW1pdERhdGEo
ZGF0YSwgbGVuZ3RoKTsKKyAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSk7CiAKICAgICAvLyBJ
ZiB0aGUgZG9jdW1lbnQgaXMgYSBzdGFuZC1hbG9uZSBtZWRpYSBkb2N1bWVudCwgbm93IGlzIHRo
ZSByaWdodCB0aW1lIHRvIGNhbmNlbCB0aGUgV2ViS2l0IGxvYWQuCiAgICAgLy8gRklYTUU6IFRo
aXMgY29kZSBzaG91bGQgYmUgc2hhcmVkIGFjcm9zcyBhbGwgcG9ydHMuIDxodHRwOi8vd2Via2l0
Lm9yZy9iLzQ4NzYyPi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDA5NWIyNTM1YTY4
NzU0N2JkNzg4NDZmOTA3NmFlNmM3ZDAxNjI5NDguLjc5MjZmZDM2NzE4MDllODM4NDdhNDgwMzFh
OGI5MGM2MzhmYWY3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTEyLDcgKzEx
Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmcoKSkg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdHRlZExv
YWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExv
YWRlciopIG92ZXJyaWRlOwogCiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqKSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448023</attachid>
            <date>2021-12-27 19:18:07 -0800</date>
            <delta_ts>2021-12-28 19:01:59 -0800</delta_ts>
            <desc>Patch For EWS (combined patch)</desc>
            <filename>bug-232424-20211228141754.patch</filename>
            <type>text/plain</type>
            <size>276538</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3MDk2ZjA2YzcyZmVh
MmZjMWUwMzk0MDIyMzg5MWVlZGJmZGM4MC4uNmJmMzIzNGZjYjAwZWQzMjJlYWEwZWI0YTRkODFk
ZWUwZDM4OWQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1NiBAQAorMjAyMS0xMi0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1
ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBtb2RpZnkgYWxsIGRpZFJlY2VpdmVEYXRhIGFuZCBy
ZWxhdGVkIG1ldGhvZHMgc28gdGhhdCB0aGV5IG5vIGxvbmdlcgorICAgICAgICB1c2UgdWludDhf
dCovaW50IGFuZCBpbnN0ZWFkIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIFdlIGRvIHRoZSBz
YW1lIGZvciBhbnkgaW50ZXJtZWRpYXJpZXMgdXNlZCBieSB0aGUgdmFyaW91cyBkaWRSZWNlaXZl
RGF0YQorICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgIFRoaXMgd2lsbCBmYWNpbGl0
YXRlIG1vdmluZyBuZXR3b3JraW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVQorICAg
ICAgICBwcm9jZXNzIGFuZCBhbGxvd3MgdG8gcmVtb3ZlIHNldmVyYWwgbWVtb3J5IGFsbG9jYXRp
b25zIGFuZCBjb3BpZXMgYXQgdGhlCisgICAgICAgIHByb2Nlc3MgYm91bmRhcmllcy4KKyAgICAg
ICAgV2UgY2FuIG5vdyBjb25zaWRlciB0cmFuc2ZlciB0aGUgdW5kZXJseWluZyBTaGFyZWRNZW1v
cnkgY3JlYXRlZCBpbgorICAgICAgICB0aGUgbmV0d29yayBwcm9jZXNzIGFsbCB0aGUgd2F5IHRv
IHRoZSBHUFUgcHJvY2Vzcy4KKworICAgICAgICBGbHktYnkgZml4OiBjaGFuZ2UgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciB0eXBlIHRvIFNoYXJlZEJ1ZmZlciB3aGVuIGFwcHJvcHJpYXRlLgorCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4gQ292ZXJlZCBieSBhbGwg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keU93bmVyOjpibG9iQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YSk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Up
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRl
bnRGaWx0ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjphZGRE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGRC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVy
Q2xpZW50V3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAg
ICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwYWdl
L0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVk
QnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6
OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRv
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNw
b25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZl
RGF0YTpsZW5ndGhSZWNlaXZlZDpdKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAg
ICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6
CisKKzIwMjEtMTItMjMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBTY2FsYWJsZUltYWdlRGVjb2RlciBzaG91bGQgYmUgdXNpbmcgU2hhcmVkQnVmZmVyIGlu
c3RlYWQgb2YgRGF0YVNlZ21lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzQ0MQorICAgICAgICByZGFyOi8vcHJvYmxlbS84NTg1NDIwNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERhdGFTZWdtZW50
IHNob3VsZCBiZSBhIFNoYXJlZEJ1ZmZlcidzIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIG5v
dAorICAgICAgICBiZSB1c2VkIG91dHNpZGUgU2hhcmVkQnVmZmVyJ3MgY29kZS4KKyAgICAgICAg
SGlzdG9yaWNhbGx5LCB1c2luZyB0aGUgaW5uZXIgRGF0YVNlZ21lbnQgd2FzIHJlcXVpcmVkIGFz
IGl0IHdhcyB0aHJlYWQKKyAgICAgICAgc2FmZSB3aGlsZSBTaGFyZWRCdWZmZXIgd2Fzbid0OiBU
aGlzIGlzIG5vIGxvbmdlciB0aGUgY2FzZS4KKyAgICAgICAgU2hhcmVkQnVmZmVyIGFuZCBEYXRh
U2VnbWVudCBhcmUgc2VtYW50aWNhbGx5IHZlcnkgc2ltaWxhciwgc28gdGhpcyBpcworICAgICAg
ICBtb3N0bHkgYSBmaW5kL3JlcGxhY2UgY2hhbmdlLgorICAgICAgICBGbGF0dGVuaW5nIHRoZSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIGlzIHN0aWxsIHJlcXVpcmVkIGFzIG1vc3QgZGVjb2RlcnMK
KyAgICAgICAgcmVxdWlyZSByZWFkaW5nIHRoZSByYXcgYnl0ZXMuCisKKyAgICAgICAgTm8gY2hh
bmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0
b3JlOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpJbWFn
ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlm
L0FWSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBVklGSW1hZ2VSZWFkZXI6
OnBhcnNlSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFWSUZJbWFnZVJlYWRlcjo6ZGVjb2Rl
RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdl
UmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
UmVhZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6cmVhZFVpbnQxNik6
CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6cmVhZFVpbnQzMik6CisgICAgICAg
IChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgIChHSUZJbWFnZVJl
YWRlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZVJlYWRlcjo6
ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVH
MjAwMEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHMjAwMEltYWdlRGVj
b2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlUmVhZGVyOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgor
CisyMDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgbWFrZSBTaGFyZWRCdWZmZXI6OmNvcHkoKSByZXR1cm4gYSBjb250aWd1b3VzIFNoYXJlZEJ1
ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0
NjIyCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2ODI5NTI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbWFrZSBTaGFyZWRCdWZmZXI6OmNvcHkoKSBy
ZXR1cm4gYSBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorCisgICAgICAgIEFQSSB0ZXN0cyBhZGRl
ZC4KKworICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKwogMjAyMS0xMi0yNiAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S11bYTExeV0gVGVzdCBhY2Nlc3NpYmlsaXR5L2FyaWEtaW5oZXJpdHMtcHJlc2VudGF0aW9uYWwu
aHRtbCBpcyBmYWlsaW5nIHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2UyN2UxNGM2OWZkMjQ0YWU3
YjI0NDVlM2U0OTg3YzZmNzFiYjI4My4uYTA4M2U5YjQ5OTQ1MjM1MjIwYTA2ZTg4NDI1NWJhOGMw
ODhmNWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDIgQEAKKzIwMjEtMTItMjIgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291
cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQK
KyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZy
b21QcmVsb2FkZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFGb3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKToKKyAgICAgICAgKiBTaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVU
YXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmll
dzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmll
dzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhh
bmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5p
dGlhbGl6ZVNhbmRib3gpOgorCiAyMDIxLTEyLTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXBsYWNlIFdlYktpdC9Db2NvYUNvbG9yLmggd2l0aCBXZWJDb3Jl
L0NvbG9yQ29jb2EuaCwgbm90IGNvbmZ1c2luZyBhdCBhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5k
ZXggNTc2ODFiMjFhNzM0MzllOTBiZjIxYmEyNDQ5NTgyNTk3ZTAxOTk4Mi4uYmIxYzViNTM2YzRm
OTkxNWZiYWJkOWFjMzAzN2JjNDQ4Yzc3NDZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0
d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMi0xNCAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlZjk0OWRlNjA2ODk2Y2E5OTNlZGY4ZjM0
ZDljMWIzMGE1YjY1NGFiLi5kNTk1N2RkYjFmNGFmODhhNGI1ZmQ3MTMwZjEwNzE0OWFiNTA5YTJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTIt
MjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBT
aGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQpOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMb2FkZXJDbGllbnQp
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9j
b21taXREYXRhOl0pOgorCiAyMDIxLTEyLTIyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgogCiAgICAgICAgIEZpeCBXZWJLaXQgQnVpbGQgaXNzdWVzIHdoZW4gdXNpbmcgc3lz
dGVtIGNvbnRlbnQgcGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBjMjMxZjIwN2RhMjVjZDJhMTU4NjBkMjhkYjNjZTE3
ZTg1NzU3N2Q1Li5lNjEzYWE1MDlmNzRjMGRlMGU2ZDM4MzUxOGU1MjZmNzNhYTU4ZWVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cApAQCAtMzIwLDEzICszMjAsMTMgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICB9CiB9
CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBzaXplKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX3NvdXJjZSkgewotICAgICAgICBtX3NvdXJj
ZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKKyAgICAgICAg
bV9zb3VyY2UtPmVucXVldWUoYnVmZmVyLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBt
X2J1ZmZlci5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0
RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDg3MWQyYzA4NjMz
MWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAzNzc3MmIuLmQ0NjUxYjIzZGE3MWNmOGY0YzhjOTk2NzFk
MjI3ZWI1YWM4ZDJhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGlj
aXQgRmV0Y2hCb2R5Q29uc3VtZXIoVHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KIAotICAg
IHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKKyAgICB2b2lkIGFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsg
cmV0dXJuICEhbV9idWZmZXI7IH0KICAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggYTYzMzEwOGI1
NDc3ODM5M2ZjNTQ3NTAwMzJhOWEyZTg2YWRlN2ZjYy4uNTM2NjgxNTViZGViYzFhZWYzOWY0ZDk5
ZmI5ZGFkYzFlYmVmN2EwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5jcHAKQEAgLTI5OCwxMSArMjk4LDEwIEBAIHZvaWQgRmV0Y2hCb2R5T3du
ZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkKICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12
b2lkIEZldGNoQm9keU93bmVyOjpibG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCit2b2lkIEZldGNoQm9keU93bmVyOjpibG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3Ry
ZWFtU291cmNlKTsKLSAgICBpZiAoIW1fcmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVucXVldWUoQXJy
YXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpCisgICAgaWYgKCFtX3JlYWRhYmxlU3Ry
ZWFtU291cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSkKICAgICAg
ICAgc3RvcCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eU93bmVyLmgKaW5kZXggNWNhN2UzOTZjNDIyNzAxOTM1NmIwODA2ZTRlZWRiZTk1ZTkyOGY0Yi4u
ODFmZDA2ZWNkZDZmYzM4YzllODU5ODdjZWJkZmMxNmRkODZmM2M5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkZldGNoTG9hZGVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAwLDcgKzEwMSw3IEBAIHByb3RlY3RlZDoKIAog
cHJpdmF0ZToKICAgICAvLyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVu
ayhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBTaGFy
ZWRCdWZmZXImKTsKICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBi
bG9iTG9hZGluZ0ZhaWxlZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTEx
Myw3ICsxMTQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQ
SQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9Cisg
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZp
bmFsIHsgb3duZXIuYmxvYkNodW5rKGJ1ZmZlcik7IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmlu
YWwgeyBvd25lci5ibG9iTG9hZGluZ1N1Y2NlZWRlZCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggMDNmODliNjFjYTVmN2M3MTc2Yjlk
ODhjZDEzNjYwZTg2YjdhMjU0OC4uNGI0NWJmZDg3NTA0MDZmNmU3ZGE3MThmOTk4MTY5NDcxYTVl
ODQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAK
QEAgLTE0OCwxMyArMTQ4LDEzIEBAIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaExvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogdmFsdWUsIGludCBzaXplKQordm9pZCBGZXRj
aExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wp
CiB7CiAgICAgaWYgKCFtX2NvbnN1bWVyKSB7Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVE
YXRhKHZhbHVlLCBzaXplKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEoYnVmZmVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2NvbnN1bWVyLT5hcHBlbmQodmFsdWUs
IHNpemUpOworICAgIG1fY29uc3VtZXItPmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lkIEZldGNo
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA0NjEyZDBlMGUzYTdl
ZmUzMDYwMzk2YjBkNzVhMmZhM2JjNGVkZGFkLi41ZWVhZWY4MmQxZGYzZWZjZWQyMTQwMDNkZjUx
ODg4NzAzNmY5NzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCBBUEkuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgdXNlU3RyTGVuKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKaW5kZXgg
ZmVkM2U1ZWFlNzFhNTdjOTUyYWExNzFhZGNjYmRkOWJkMDQ1ZTc4OS4uMTA5ZTA4ZWNmN2E0N2U3
YzAzN2UzMmRjYWFjYWI4NmM4MWMxOGQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
Kiwgc2l6ZV90KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMGU3YjAw
NWU4OWEzZDE3NDBiMWNmOWFkZmY4YjRmMmYyZmM0M2M5OS4uZGNhMGUyMzgyZTMyZmMwMzcyODg3
ZmQ0ODUyMTRhMTczMDFiMWJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0zNjIsMTIgKzM2MiwxMiBAQCB2b2lkIEZldGNoUmVzcG9u
c2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNvdQogICAgICAgICByZXNwb25zZUNhbGxiYWNrKG1fcmVzcG9uc2UpOwogfQogCi12b2lk
IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9y
ZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlIHx8IG1fY29uc3VtZURhdGFDYWxsYmFjayk7
CiAKICAgICBpZiAobV9jb25zdW1lRGF0YUNhbGxiYWNrKSB7Ci0gICAgICAgIFNwYW4gY2h1bmsg
eyBkYXRhLCBzaXplIH07CisgICAgICAgIFNwYW4gY2h1bmsgeyBidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpIH07CiAgICAgICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRmV0Y2hSZXNwb25z
ZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCiAgICAgYXV0byYgc291cmNlID0gKm1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNv
dXJjZTsKIAogICAgIGlmICghc291cmNlLmlzUHVsbGluZygpKSB7Ci0gICAgICAgIG1fcmVzcG9u
c2UuYm9keSgpLmNvbnN1bWVyKCkuYXBwZW5kKGRhdGEsIHNpemUpOworICAgICAgICBtX3Jlc3Bv
bnNlLmJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAg
ICAgc3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghc291cmNlLmVucXVl
dWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpIHsKKyAgICBpZiAoIXNvdXJj
ZS5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSkgewogICAgICAgICBzdG9w
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBGZXRj
aFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5
U2l6ZVdpdGhQYWRkaW4KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQ2h1bmsoUmVmPEpT
Qzo6VWludDhBcnJheT4mJiBjaHVuaykKIHsKLSAgICBib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQo
Y2h1bmstPmRhdGEoKSwgY2h1bmstPmJ5dGVMZW5ndGgoKSk7CisgICAgYm9keSgpLmNvbnN1bWVy
KCkuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRl
TGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFzU3RyZWFt
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXgg
NmIwNTA1ZDg4YjEzMmUyOGNiOTU0YWI5YTBlN2VmZTgxM2Y3MDJhZi4uZjk5MjQ5YzM5ZjlkMGIy
ZmM4N2EyZjljNDZkNzkzOTI4ODgxNGJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgogICAgICAg
ICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogCiAgICAgICAgIEZldGNoUmVzcG9uc2Um
IG1fcmVzcG9uc2U7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIG1fcmVzcG9uc2VDYWxs
YmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCAyN2E2ZDcwMzM0Y2EzMjA2YTk0ZTkxOTk0MzM2
MzdjNGEzMDUyZTdkLi5hNjQxZjgxMDdiNGZkMTc5MTFmZGI5MmJiMzBmNDVlMmU4MmI1MmZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0xNzcsMTAgKzE3NywxMCBAQCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYgcwogCiAvLyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBt
X3Jlc291cmNlKTsKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1f
ZGF0YS5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuaAppbmRleCBjZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4
NTgwM2JlLi4wZDNiZGI3NDlkN2EzMzY4YjNjYTY4YzIxNzMxNjA1OTE1NDlkMWMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dCBvdmVycmlkZXMuCi0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICAvLyBNb2RlbFBsYXllckNsaWVudCBvdmVycmlkZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5r
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgK
aW5kZXggZDUxNzNmYmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOS4uZmVlOTg4NDIy
MWJiNDNlOGNjMDYyZWFiY2QwYTk5ZWM1NGMwMzQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRh
YmxlU3RyZWFtOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFi
bGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRl
eCBiN2Y3NWVkYTNiMjMzYjE5YjIwZWQ3MDQyODk0OWJiMzM1ODk4ZTgxLi43Mzg1MmQ0YzBhZjAz
ODQ3NWYxNWI2NTQ5ZGM2ODliZjg1NTFiMjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMTYzLDE2ICsxNjQsMTUg
QEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXIKICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0TG9h
ZGluZygpOwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCkKIHsKLSAgICBB
U1NFUlQoZGF0YSk7Ci0gICAgQVNTRVJUKGRhdGFMZW5ndGggPiAwKTsKKyAgICBBU1NFUlQoYnVm
ZmVyLnNpemUoKSk7CiAKICAgICAvLyBCYWlsIG91dCBpZiB3ZSBhbHJlYWR5IGVuY291bnRlcmVk
IGFuIGVycm9yLgogICAgIGlmIChtX2Vycm9yQ29kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aW50IGxlbmd0aCA9IGRhdGFMZW5ndGg7CisgICAgaW50IGxlbmd0aCA9IGJ1ZmZlci5zaXplKCk7
CiAgICAgdW5zaWduZWQgcmVtYWluaW5nQnVmZmVyU3BhY2UgPSBtX3RvdGFsQnl0ZXMgLSBtX2J5
dGVzTG9hZGVkOwogICAgIGlmIChsZW5ndGggPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlbWFp
bmluZ0J1ZmZlclNwYWNlKSkgewogICAgICAgICAvLyBJZiB0aGUgYnVmZmVyIGhhcyBoaXQgbWF4
aW11bSBzaXplLCBpdCBjYW4ndCBiZSBncm93biBhbnkgbW9yZS4KQEAgLTE4MSw3ICsxODEsNyBA
QCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3RoKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBuZXdMZW5n
dGggPSBtX3RvdGFsQnl0ZXMgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF0YUxlbmd0aCk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBidWZmZXIuc2l6
ZSgpOwogICAgICAgICAgICAgaWYgKG5ld0xlbmd0aCA8IG1fdG90YWxCeXRlcykgewogICAgICAg
ICAgICAgICAgIGZhaWxlZChOb3RSZWFkYWJsZUVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobGVuZ3Ro
IDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4o
bV9yYXdEYXRhLT5kYXRhKCkpICsgbV9ieXRlc0xvYWRlZCwgZGF0YSwgbGVuZ3RoKTsKKyAgICBt
ZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2Fk
ZWQsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCk7CiAgICAgbV9ieXRlc0xvYWRlZCArPSBsZW5ndGg7
CiAKICAgICBtX2lzUmF3RGF0YUNvbnZlcnRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCA1MzljMjMwNGE4MmU2M2FhZGZlMmM1NjdjOThk
MGI4YzY4N2E4ZTlmLi5iN2U1YjQwNTdmYjIwNmZmMzIzMTU1Y2MwZjE1MDJmY2EyMGQyNjdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtNzAsNyArNzAs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNWM1YmIyYWVhODM5OTE4
YjA2OTc3NTg4MWNlM2EzNjlhNDI4ZTViOS4uNzgxNzc1YTg0MTY2MjZlODI5MGZlYWI4MjRlN2Iy
YWVmNWNhYjJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTYxNiwxMCArNjE2LDEwIEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1w
bChJbnN0cnVtZW50CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVM
b2FkZXJSZXNwb25zZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQog
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0Fn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCi0gICAgICAg
IG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0
aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVE
YXRhKGlkZW50aWZpZXIsIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggZDI5NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MS4uODJhY2Nl
ZDIwY2ZkNTEzMWIyNTAyZjA5OWE5YzRmYTJmZGQ2MTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTkzLDEzICsx
OTMsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShQYWdlJiwgRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lJiwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9h
ZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJh
bWUqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhGcmFt
ZSosIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZh
aWxMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVx
dWVzdChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNl
UmVzcG9uc2UoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRGYWlsTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC00MTQsNyArNDE0LDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291
cmNlKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwog
ICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWls
TG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZv
aWQgd2lsbExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBA
IC0xMDgyLDE3ICsxMDgyLDE3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVuCiAgICAgICAgIGRp
ZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2VJbXBsKCphZ2VudHMsIGRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlciwgaWRlbnRpZmllcik7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQo
KSk7CiAgICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQot
ICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwoKmFnZW50cywgaWRlbnRpZmllciwgZGF0YSwgZGF0
YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwo
KmFnZW50cywgaWRlbnRpZmllciwgYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLWlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGRpZFJlY2VpdmVEYXRhSW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0
aCwgZGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMoZ2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQog
CiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmco
RnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1l
dHJpY3MsIFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDM5YjAxMWNmMDZm
N2YzODUzMjQzZTBhNzYzYTNiMWQ0NTQ5MDQxNDkuLjMyOGViZTdlNjQxMTk1ZTVhNDY4NTAyNzU1
OTEwZjc4YzQ4YjU4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtOTAsMTAgKzkwLDEwIEBAIHNpemVfdCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4g
bV9kYXRhQnVmZmVyLnNpemUoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7
Ci0gICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFC
dWZmZXIuYXBwZW5kKGRhdGEpOwogfQogCiB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKQEAgLTIyMSw3ICsyMjEsNyBAQCBz
dGF0aWMgYm9vbCBzaG91bGRCdWZmZXJSZXNvdXJjZURhdGEoY29uc3QgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YSYgcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1h
eWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJl
cXVlc3RJZCk7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpCkBAIC0yMzAsMTUgKzIzMCwxNSBAQCBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6bWF5YmVBZGRSZXNvdXJjZQogICAgIGlmICghc2hvdWxkQnVmZmVyUmVzb3VyY2VEYXRh
KCpyZXNvdXJjZURhdGEpKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VEYXRhOwogCi0gICAgaWYg
KHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0aCgpICsgZGF0YUxlbmd0aCA+IG1fbWF4aW11bVNpbmds
ZVJlc291cmNlQ29udGVudFNpemUpCisgICAgaWYgKHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0aCgp
ICsgZGF0YS5zaXplKCkgPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQogICAg
ICAgICBtX2NvbnRlbnRTaXplIC09IHJlc291cmNlRGF0YS0+ZXZpY3RDb250ZW50KCk7CiAgICAg
aWYgKHJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKQogICAgICAgICByZXR1cm4gcmVz
b3VyY2VEYXRhOwogCi0gICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRhTGVuZ3RoKSAmJiAhcmVz
b3VyY2VEYXRhLT5pc0NvbnRlbnRFdmljdGVkKCkpIHsKKyAgICBpZiAoZW5zdXJlRnJlZVNwYWNl
KGRhdGEuc2l6ZSgpKSAmJiAhcmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRFdmljdGVkKCkpIHsKICAg
ICAgICAgbV9yZXF1ZXN0SWRzRGVxdWUuYXBwZW5kKHJlcXVlc3RJZCk7Ci0gICAgICAgIHJlc291
cmNlRGF0YS0+YXBwZW5kRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgbV9jb250ZW50
U2l6ZSArPSBkYXRhTGVuZ3RoOworICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0
YSk7CisgICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YS5zaXplKCk7CiAgICAgfQogCiAgICAg
cmV0dXJuIHJlc291cmNlRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZGFhZTVmZTRhMzFlMzE1OTM2Mzc5MDQyM2Y1ZmJkMzM3
MGM1Y2QzOS4uYzhjZWQxMmE2NDA3ZmRjZDU3NGVjYzJhNzgxOWVkZTY2MzgwM2RhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTEw
OCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZv
aWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7Cisg
ICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAgICAgdW5z
aWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJ
ZDsKQEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBl
KTsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5j
b2RlZCA9IGZhbHNlKTsKLSAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VE
YXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
ZGF0YUxlbmd0aCk7CisgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9p
ZCBtYXliZURlY29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAg
IHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJl
c291cmNlKik7CiAgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggM2NlYjRiNDdmMTA2
OGEwYWZlYWYwMGYxNzljMjgwMGM0NzZiZDZiMS4uOWE2MWViNDJkODFlNzkzYzljZjQ5YmNkNTZm
ZDIzMDRkZjQ5YWU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTI0LDE1ICsxMjQsMTMgQEAg
cHVibGljOgogICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUo
InRleHQvcGxhaW4iX3MsIHRleHRFbmNvZGluZywgdXNlRGV0ZWN0b3IpOwogICAgIH0KIAotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
IG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgYm9vbCB1c2VTdHJMZW4pIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIWRhdGFM
ZW5ndGgpCisgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGlmIChkYXRhTGVuZ3RoID09IC0xKQotICAgICAgICAgICAgZGF0YUxlbmd0
aCA9IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7Ci0KLSAgICAg
ICAgbV9yZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5n
dGgpKTsKKyAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSB1c2VTdHJMZW4gPyBzdHJsZW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEoKSkpIDogYnVmZmVyLnNpemUo
KTsKKyAgICAgICAgbV9yZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZl
ci5kYXRhKCksIGRhdGFMZW5ndGgpKTsKICAgICB9CiAKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZQpAQCAtNTQ5LDkgKzU0Nyw4IEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIGlkZW50aWZpCiAgICAgICAgICAgICBpZiAocHJldmlvdXNSZXNvdXJj
ZURhdGEtPmhhc0NvbnRlbnQoKSkKICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNl
dFJlc291cmNlQ29udGVudChyZXF1ZXN0SWQsIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5jb250ZW50
KCksIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5iYXNlNjRFbmNvZGVkKCkpOwogICAgICAgICAgICAg
ZWxzZSBpZiAocHJldmlvdXNSZXNvdXJjZURhdGEtPmhhc0J1ZmZlcmVkRGF0YSgpKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byBwcmV2aW91c0J1ZmZlciA9IHByZXZpb3VzUmVzb3VyY2VEYXRhLT5i
dWZmZXIoKTsKLSAgICAgICAgICAgICAgICBwcmV2aW91c0J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQo
WyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRh
LT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50
LnNpemUoKSk7CisgICAgICAgICAgICAgICAgcHJldmlvdXNSZXNvdXJjZURhdGEtPmJ1ZmZlcigp
LT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAg
ICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVx
dWVzdElkLCBidWZmZXIpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCkBAIC01NzQsMjQgKzU3MSwyOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaQog
ICAgIC8vIElmIHdlIHJldmFsaWRhdGVkIHRoZSByZXNvdXJjZSBhbmQgZ290IE5vdCBtb2RpZmll
ZCwgc2VuZCBjb250ZW50IGxlbmd0aCBmb2xsb3dpbmcgZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAg
Ly8gYXMgdGhlcmUgd2lsbCBiZSBubyBjYWxscyB0byBkaWRSZWNlaXZlRGF0YSBmcm9tIHRoZSBu
ZXR3b3JrIHN0YWNrLgogICAgIGlmIChpc05vdE1vZGlmaWVkICYmIGNhY2hlZFJlc291cmNlICYm
IGNhY2hlZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKQotICAgICAgICBkaWRSZWNlaXZlRGF0YShp
ZGVudGlmaWVyLCBudWxscHRyLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCk7Cisg
ICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCks
IGNhY2hlZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRp
ZmllcnMuY29udGFpbnMoaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmlu
ZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgIGludCBkYXRhTGVuZ3RoID0gZGF0YS5zaXplKCk7CiAKLSAgICBpZiAo
ZGF0YSkgewotICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0
KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJl
cXVlc3RJZCwgZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgaWYgKGRhdGEuZGF0YSgpKSB7CisgICAg
ICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0
YSA9IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBkYXRh
KTsKIAogICAgICAgICAvLyBGb3IgYSBzeW5jaHJvbm91cyBYSFIsIGlmIHdlIGRpZG4ndCBhZGQg
ZGF0YSB0aGVuIHdlIGNhbiBhcHBseSBpdCBoZXJlIGFzIGJhc2U2NCBlbmNvZGVkIGNvbnRlbnQu
CiAgICAgICAgIC8vIE9mdGVuIHRoZSBkYXRhIGlzIHRleHQgYW5kIHdlIHdvdWxkIGhhdmUgYSBk
ZWNvZGVyLCBidXQgZm9yIG5vbi10ZXh0IHdlIHdvbid0IGhhdmUgYSBkZWNvZGVyLgogICAgICAg
ICAvLyBTeW5jIFhIUnMgbWF5IG5vdCBoYXZlIGEgY2FjaGVkIHJlc291cmNlLCB3aGlsZSBub24t
c3luYyBYSFJzIHVzdWFsbHkgdHJhbnNmZXIgZGF0YSBvdmVyIG9uIGNvbXBsZXRpb24uCiAgICAg
ICAgIGlmIChtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5ICYmIHJlc291cmNlRGF0YSAmJiAhcmVz
b3VyY2VEYXRhLT5oYXNCdWZmZXJlZERhdGEoKSAmJiAhcmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNv
dXJjZSgpKQotICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQo
cmVxdWVzdElkLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhkYXRhLCBkYXRhTGVuZ3RoKSwgdHJ1ZSk7
CisgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChyZXF1ZXN0
SWQsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSksIHRydWUp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGRhdGFMZW5ndGggPSBlbmNvZGVkRGF0YUxlbmd0aDsK
KyAgICAgICAgZW5jb2RlZERhdGFMZW5ndGggPSAwOwogICAgIH0KIAogICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5kYXRhUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAoKSwgZGF0YUxlbmd0
aCwgZW5jb2RlZERhdGFMZW5ndGgpOwpAQCAtMTI3MSw3ICsxMjcyLDcgQEAgUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0
V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0
IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAg
aWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUo
Y29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI5Niw5ICsxMjk3LDkgQEAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICB9CiAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZp
ZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOwogICAgIHJlc3BvbnNlLnNldEhUVFBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJlc3BvbnNlLm1pbWVUeXBlKCkp
OwotICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZm
ZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAgbG9hZGVyLT5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5v
bk51bGwoKV0oKSB7CiAgICAgICAgIGlmIChidWZmZXItPnNpemUoKSkKLSAgICAgICAgICAgIGxv
YWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpLCBE
YXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICAgICAgbG9hZGVyLT5kaWRSZWNlaXZl
RGF0YShidWZmZXIsIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwog
ICAgICAgICBsb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkpOwog
ICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA2YmNkODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2
YjBlNmRhMTQxM2Q0Li5jYTZmNzRlMWI4Njk4MGY0MGIxNTVkMTNlMTZiNzFhZGZiOTQwNDU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUo
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVz
dCYsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
ICAgICB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlcios
IENhY2hlZFJlc291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
aW5kZXggNDMzMmQ2OTFiYmY4MjZhN2M4N2VhODNhMzE3ZTk2MTE1YTIwNDk5My4uYTA5ODFhZGQ3
OTg1MzJiOTdiYWE0MDQxMjhiYTM4ODk2ZGFmNjg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6
ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAg
aWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAg
ICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VC
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7
CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291
cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50
LmgKaW5kZXggMjE1YzA0ZWM5ODk1ZTlmMWU2ZTE0N2RhODIwOTMwMDk4NTIzOTYyMy4uZmE3YWQz
MDM5YTIwNWU5MDU3MTA4ZjNjNmYzOTI0MTliYzQ2NDdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVz
b3VyY2VFcnJvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwog
CiBjbGFzcyBDb250ZW50RmlsdGVyQ2xpZW50IHsKQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVm
KCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250
ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0
YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwog
ICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZp
bHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2Vk
UGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCA2YmYzYWMyOTdlYzZiMjYzYTA3ODY0MGJjZjNhZDU3NzlkYjBm
ZWRiLi4yNTFkMjI1MmIwYjNjYzdhOWFlMWFiZTgxYTA5MTQxYTcxZjc5Yjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTQ4Myw4ICs0ODMsOCBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmcoKQogICAgICAgICAvLyBJZiB0aGlzIGlz
IGFuIGVtcHR5IGRvY3VtZW50LCBpdCB3aWxsIG5vdCBoYXZlIGFjdHVhbGx5IGJlZW4gY3JlYXRl
ZCB5ZXQuIENvbW1pdCBkdW1teSBkYXRhIHNvIHRoYXQKICAgICAgICAgLy8gRG9jdW1lbnRXcml0
ZXI6OmJlZ2luKCkgZ2V0cyBjYWxsZWQgYW5kIGNyZWF0ZXMgdGhlIERvY3VtZW50LgogICAgICAg
ICBpZiAoIW1fZ290Rmlyc3RCeXRlKQotICAgICAgICAgICAgY29tbWl0RGF0YSgwLCAwKTsKLSAg
ICAgICAgCisgICAgICAgICAgICBjb21taXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOwor
CiAgICAgICAgIGlmICghZnJhbWVMb2FkZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZmluaXNoZWRMb2FkaW5nKHRoaXMpOwpAQCAtMTE1
Nyw4ICsxMTU3LDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQ
b2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkKICAgICBpZiAoIWlzU3RvcHBpbmcoKSAmJiBtX3N1
YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSAmJiBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkgewogICAg
ICAgICBhdXRvIGNvbnRlbnQgPSBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKTsKICAgICAgICAg
aWYgKGNvbnRlbnQgJiYgY29udGVudC0+c2l6ZSgpKSB7Ci0gICAgICAgICAgICBjb250ZW50LT5m
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgIGRhdGFS
ZWNlaXZlZChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgY29u
dGVudC0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgewor
ICAgICAgICAgICAgICAgIGRhdGFSZWNlaXZlZChidWZmZXIpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKQpAQCAtMTE3MSw3
ICsxMTcxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xp
Y3koUG9saWN5QWN0aW9uIHBvbGljeSkKICAgICB9CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNvbW1pdExvYWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1l
bnRMb2FkZXI6OmNvbW1pdExvYWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8v
IEJvdGggdW5sb2FkaW5nIHRoZSBvbGQgcGFnZSBhbmQgcGFyc2luZyB0aGUgbmV3IHBhZ2UgbWF5
IGV4ZWN1dGUgSmF2YVNjcmlwdCB3aGljaCBkZXN0cm95cyB0aGUgZGF0YXNvdXJjZQogICAgIC8v
IGJ5IHN0YXJ0aW5nIGEgbmV3IGxvYWQsIHNvIHJldGFpbiB0ZW1wb3JhcmlseS4KQEAgLTExODYs
NyArMTE4Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkKICAgICBpZiAoQXJjaGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1J
TUVUeXBlKHJlc3BvbnNlKCkubWltZVR5cGUoKSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgot
ICAgIGZyYW1lTG9hZGVyLT5jbGllbnQoKS5jb21taXR0ZWRMb2FkKHRoaXMsIGRhdGEsIGxlbmd0
aCk7CisgICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmNvbW1pdHRlZExvYWQodGhpcywgZGF0YSk7
CiAKICAgICBpZiAoaXNNdWx0aXBhcnRSZXBsYWNpbmdMb2FkKCkpCiAgICAgICAgIGZyYW1lTG9h
ZGVyLT5jbGllbnQoKS5kaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpOwpAQCAtMTIxNSw3ICsx
MjE1LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFVzZUFjdGl2ZVNlcnZpY2VXb3JrZXJG
cm9tUGFyZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWUKIH0KICNlbmRpZgogCi12b2lkIERvY3Vt
ZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3Ro
KQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgaWYgKCFtX2dvdEZpcnN0Qnl0ZSkgewogICAgICAgICBtX2dvdEZpcnN0Qnl0
ZSA9IHRydWU7CkBAIC0xMzEzLDI0ICsxMzEzLDI0IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNv
bW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCiAjZW5kaWYKIAog
ICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzaW5nKCkpOwotICAgIG1fd3JpdGVy
LmFkZERhdGEoYnl0ZXMsIGxlbmd0aCk7CisgICAgbV93cml0ZXIuYWRkRGF0YShkYXRhKTsKIH0K
IAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX21haW5SZXNvdXJjZSk7Ci0gICAgZGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCk7CisgICAg
ZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNl
aXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKLSAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRl
bnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKSkKKyAgICBp
ZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRh
UmVjZWl2ZWQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsK
ICNlbmRpZgogCi0gICAgQVNTRVJUKGRhdGEpOwotICAgIEFTU0VSVChsZW5ndGgpOworICAgIEFT
U0VSVChidWZmZXIuZGF0YSgpKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSk7CiAgICAgQVNT
RVJUKCFtX3Jlc3BvbnNlLmlzTnVsbCgpKTsKIAogICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIENG
TmV0d29yayB3aGVyZSBjYWxsYmFja3MgY2FuIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRz
IGFyZSBkZWZlcnJlZC4KQEAgLTEzNDAsMTIgKzEzNDAsMTIgQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiAjZW5kaWYK
IAogICAgIGlmIChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKQotICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEodGhp
cywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgZGF0YSwgbGVuZ3Ro
LCAtMSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hEaWRSZWNl
aXZlRGF0YSh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCBi
dWZmZXIsIC0xKTsKIAotICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURh
dGFSZWNlaXZlZChkYXRhLCBsZW5ndGgsIC0xLCBmYWxzZSk7CisgICAgbV9hcHBsaWNhdGlvbkNh
Y2hlSG9zdC0+bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGJ1ZmZlciwgLTEsIGZhbHNlKTsKIAog
ICAgIGlmICghaXNNdWx0aXBhcnRSZXBsYWNpbmdMb2FkKCkpCi0gICAgICAgIGNvbW1pdExvYWQo
ZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgY29tbWl0TG9hZChidWZmZXIpOwogfQogCiB2b2lkIERv
Y3VtZW50TG9hZGVyOjpzZXR1cEZvclJlcGxhY2UoKQpAQCAtMTYxNCw3ICsxNjE0LDcgQEAgYm9v
bCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRN
SU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+
ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCks
IG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKCptX3BhcnNlZEFy
Y2hpdmVEYXRhKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMjI1Nyw4ICsyMjU3
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCgpCiAKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2Nv
bW1pdHRlZCA9IGZhbHNlOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNv
dXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAg
IGNvbW1pdExvYWQobWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKTsKIH0KIAog
dm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCkBAIC0yNDEwLDkgKzI0MDks
OSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25F
dmVudChTZWN1cml0eVBvbGljeVZpb2xhdGlvbgogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRG
aWx0ZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCit2b2lkIERvY3VtZW50TG9hZGVy
OjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKLSAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgc2l6ZSk7CisgICAgZGF0YVJlY2VpdmVk
KGJ1ZmZlcik7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxv
YWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBiNDY5ODFkNzUwYjI1YzFmZDMwN2YxNmZk
YTc0YjdlZTMwNmE0YzM5Li4yOGUyOGE2ODhhZTZiNTdlMGYwZDE0YzRlN2EwYzI1NThjYjY3ZTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtODYsNiArODYsNyBA
QCBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRl
UmVzb3VyY2U7CiBjbGFzcyBVc2VyQ29udGVudFVSTFBhdHRlcm47CkBAIC0zNzcsNyArMzc4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRUaW1pbmcoKSB7IG1fbG9hZFRpbWluZyA9IHsgfTsg
fQogCiAgICAgLy8gVGhlIFdlYktpdCBsYXllciBjYWxscyB0aGlzIGZ1bmN0aW9uIHdoZW4gaXQn
cyByZWFkeSBmb3IgdGhlIGRhdGEgdG8gYWN0dWFsbHkgYmUgYWRkZWQgdG8gdGhlIGRvY3VtZW50
LgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRl
cywgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3QmIGFwcGxpY2F0
aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3QqIGFwcGxpY2F0
aW9uQ2FjaGVIb3N0VW5sZXNzQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKQEAgLTQ3Nyw3ICs0Nzgs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21taXRJZlJlYWR5KCk7CiAgICAgdm9pZCBzZXRN
YWluRG9jdW1lbnRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBjb21taXRM
b2FkKGNvbnN0IHVpbnQ4X3QqLCBpbnQpOworICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCBTaGFy
ZWRCdWZmZXImKTsKICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2
b2lkIHNldHVwRm9yUmVwbGFjZSgpOwpAQCAtNDkzLDcgKzQ5NCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBtYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwpAQCAtNTAzLDEzICs1
MDQsMTMgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAv
LyBDb250ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3Ig
Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5n
JiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkws
IFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgZGF0YVJlY2VpdmVk
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGF0YVJlY2VpdmVk
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgYm9vbCBtYXliZUxvYWRFbXB0eSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CmluZGV4IGI5YzQxMzUyNTY3NjI2NzIxOTA3YWYzNjZkZmIxZGVjNzk0YzI0NzQuLjg2NGI2NWEx
ZDExMzFmYjYzNzEyNWIxNzM5OTFlOWQzZTBhNmU3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00MzcsMjAgKzQzNywy
MCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudAogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09
IG1fcmVzb3VyY2UpOwotICAgIGRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIo
KSwgZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+aWRl
bnRpZmllcigpLCBidWZmZXIpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAKICAgICBpZiAobV9kZWxheUNhbGxi
YWNrc0ZvckludGVncml0eUNoZWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZURhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKGJ1ZmZlciwgZmFsc2UpOwogfQogCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6ZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgUmVzb3VyY2VUaW1pbmcmIHJlc291cmNlVGltaW5nKQpAQCAtNDkzLDIwICs0OTMsMTQg
QEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWYKIAogICAgICAgICBpZiAob3B0aW9ucygpLmZpbHRl
cmluZ1BvbGljeSA9PSBSZXNwb25zZUZpbHRlcmluZ1BvbGljeTo6RGlzYWJsZSkgewogICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7
Ci0gICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZm
ZXIoKSkgewotICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8m
IHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRh
KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+
cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEoKmJ1ZmZlciwgZmFsc2UpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJU
KHJlc3BvbnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpEZWZhdWx0KTsKIAog
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCBSZXNv
dXJjZVJlc3BvbnNlOjpmaWx0ZXIocmVzcG9uc2UsIG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBG
ZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlID8gUmVzb3VyY2VSZXNwb25zZTo6UGVy
Zm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6Tm8gOiBSZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3Jt
RXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpZZXMpKTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBidWZm
ZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgYnVm
ZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6
ZSgpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQorICAgICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSgqYnVmZmVyLCBmYWxzZSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTY2NywxMSArNjYxLDggQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gK
ICAgICB9CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIAot
ICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGRhdGEtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBz
ZWdtZW50KSB7Ci0gICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBzZWdtZW50
LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgaWYgKGRh
dGEpCisgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsICpkYXRhKTsKIAogICAgIGNv
bnN0IGF1dG8qIHRpbWluZyA9IHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NP
ck51bGwoKTsKICAgICBhdXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21T
eW5jaHJvbm91c0xvYWQocmVxdWVzdFVSTCwgbV9vcHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWlu
ZywgdGltaW5nID8gKnRpbWluZyA6IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCks
IHJlc3BvbnNlLCBzZWN1cml0eU9yaWdpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCBmMWY0MWVlOTFkNmNlOGExYzU4NjIz
ODE3YjM1OGY3NzQ2NTFlMGE0Li5jODZiYTdmNDUzODNiNmMyODYwMDMyZDNhZWJmYmEzZTA4NjA3
NjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5oCkBAIC04NiwxNCArODYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAv
LyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAgICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJl
c291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVzcG9uc2VSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hl
ZFRpbWluZ0ZvcldvcmtlckxvYWQoY29uc3QgUmVzb3VyY2VUaW1pbmcmKTsKICAgICAgICAgdm9p
ZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgICAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwogICAgICAgICB2b2lk
IGRpZEZhaWwoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAgICAgICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAppbmRleCBiMDQ2
ZWYwZGUyMDQ4ZWZkNDMxOTcwMjYyMmI5NmE3ZGYyZmVhZmE3Li40ZmY5MzgxODBmZGQyOGZjNzE1
ZDA4ODgxNjA4ZmM2Mjg5NDkyZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjpyZXBvcnRE
YXRhUmVjZWl2ZWQoKQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnJlc29sdmVTdHlsZShEb2N1
bWVudDo6UmVzb2x2ZVN0eWxlVHlwZTo6UmVidWlsZCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRXcml0
ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCit2b2lkIERv
Y3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAv
LyBGSVhNRTogQ2hhbmdlIHRoZXNlIHRvIEFTU0VSVCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MDQyNyBoYXMgYmVlbiByZXNvbHZlZC4KICAgICBSRUxFQVNF
X0FTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpOb3RTdGFydGVkKTsKQEAgLTI3Myw3ICsyNzMsNyBA
QCB2b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXpl
X3QgbGVuZ3RoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChtX3BhcnNlcik7
Ci0gICAgbV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBieXRlcywgbGVuZ3RoKTsKKyAgICBt
X3BhcnNlci0+YXBwZW5kQnl0ZXMoKnRoaXMsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9
CiAKIHZvaWQgRG9jdW1lbnRXcml0ZXI6Omluc2VydERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0
cmluZyYgbWFya3VwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
V3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAppbmRleCAw
NzE3MmM5NzM5ZWI1NzM1YmM4MWY4ZGVmMmZiOWIyODVjMjU0ZDBiLi5jMGEzNGE2YjdlOWNmZTk2
NDMwNDVhOTVlNzkzMjI1MjM2M2IyNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRX
cml0ZXIuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1
bWVudDsKIGNsYXNzIERvY3VtZW50UGFyc2VyOwogY2xhc3MgRnJhbWU7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBEb2N1bWVudFdyaXRl
ciB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYmVnaW4oKTsKICAgICBi
b29sIGJlZ2luKGNvbnN0IFVSTCYsIGJvb2wgZGlzcGF0Y2hXaW5kb3dPYmplY3RBdmFpbGFibGUg
PSB0cnVlLCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IG51bGxwdHIpOwotICAgIHZvaWQgYWRk
RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CisgICAgdm9pZCBhZGRE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3Vz
bHkoY29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50
IHRoZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDc1OGNiZTgwNjU0
ZTg4ODk3YWNkOWVkNDExOTkwYzg2ODZjYWYzYmEuLmQyM2M5NmI2YzUyODAzZmVjMmU0NTdiN2Vj
N2RiYzllYjM3OTk1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC04NzAsNyArODcwLDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNl
TXVsdGlwYXJ0Q29udGVudCgpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lk
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBTaGFyZWRCdWZmZXImKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAyMjY5OWM5YzUxODMyYTVhYThjODlhYmFiMmZm
YzdlMDk4NWJmYzAwLi4xMTZhMTdkMWY1YzllNjQ3ZTFmMTQxYTEwMDg2YjA3OTgzOTNmM2VhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRD
b250ZW50KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZp
bmFsOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgdWlu
dDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVy
KiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmco
RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKIAogICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAppbmRleCBmZGM5N2RjNDYyYzg3NTI2YWExODhmNzk2OGQ2MGEwYzgz
ZDY4MGQ5Li4xMWMwYThmNjg2MTUwNmUwOTYxZTUyYThmZjRjNzIwYjI1YmUyOTg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE2ODcsNyArMTY4Nyw3IEBAIGJvb2wg
RnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFFbGVtZW50VVJMKFVSTCYgdXJsLCBOb2RlJiBpbml0
aWF0b3JOb2RlKQogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyOwogICAg
IFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZShyZXF1ZXN0LCBp
ZGVudGlmaWVyLCBlcnJvcik7Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVN
ZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCBSZXNv
dXJjZVJlc3BvbnNlKHVybCwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSksIDAsIC0xLCAtMSwgZXJy
b3IpOworICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1
bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1
cmwsIFN0cmluZygpLCAtMSwgU3RyaW5nKCkpLCBudWxscHRyLCAtMSwgZXJyb3IpOwogCiAgICAg
dXJsID0gcmVxdWVzdC51cmwoKTsKIApAQCAtMjA4Nyw4ICsyMDg3LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNw
YXRjaERpZFJlY2VpdmVUaXRsZSh0aXRsZSk7CiAKICAgICAgICAgLy8gU2VuZCByZW1haW5pbmcg
bm90aWZpY2F0aW9ucyBmb3IgdGhlIG1haW4gcmVzb3VyY2UuCi0gICAgICAgIG5vdGlmaWVyKCku
c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgbWFp
blJlc291cmNlSWRlbnRpZmllciwgbWFpblJlc291cmNlUmVxdWVzdCwgUmVzb3VyY2VSZXNwb25z
ZSgpLAotICAgICAgICAgICAgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50PihtX2RvY3VtZW50TG9h
ZGVyLT5yZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwgbWFpblJlc291Y2VF
cnJvcik7CisgICAgICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMo
bV9kb2N1bWVudExvYWRlci5nZXQoKSwgbWFpblJlc291cmNlSWRlbnRpZmllciwgbWFpblJlc291
cmNlUmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpLCBudWxscHRyLCBzdGF0aWNfY2FzdDxpbnQ+
KG1fZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCBt
YWluUmVzb3VjZUVycm9yKTsKIAogICAgICAgICBWZWN0b3I8UmVmPEZyYW1lPj4gdGFyZ2V0RnJh
bWVzOwogICAgICAgICB0YXJnZXRGcmFtZXMuYXBwZW5kKG1fZnJhbWUpOwpAQCAtMjEzNiw3ICsy
MTM1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBi
eXRlcywgdGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAgICAgICAgIC8v
IEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0
aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAgICAgICAgIC8vIENvdWxkIGJlIGFu
IGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgotICAgICAgICAgICAgbm90aWZpZXIoKS5z
ZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVu
dGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgMCwgc3RhdGljX2Nhc3Q8aW50PihyZXNwb25zZS5l
eHBlY3RlZENvbnRlbnRMZW5ndGgoKSksIDAsIGVycm9yKTsKKyAgICAgICAgICAgIG5vdGlmaWVy
KCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwg
aWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIG51bGxwdHIsIHN0YXRpY19jYXN0PGludD4o
cmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCBlcnJvcik7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBGSVhNRTogV2h5IG9ubHkgdGhpcyBmcmFtZSBhbmQgbm90IHBhcmVudCBmcmFt
ZXM/CkBAIC0zMTY2LDcgKzMxNjUsOCBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVM
b2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAg
ICAgICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/
IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMg
OiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8p
KTsKICAgICAgICAgfQogICAgIH0KLSAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJl
c3BvbnNlLCBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEtPnNpemUo
KSA6IDAsIC0xLCBlcnJvcik7CisKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJl
c3BvbnNlLCBkYXRhLCAtMSwgZXJyb3IpOwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCkBA
IC0zNjQ3LDcgKzM2NDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21N
ZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cgogCiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSA9IHJlc291cmNlLnJlc3BvbnNlKCk7CiAgICAgcmVzcG9uc2Uu
c2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TWVtb3J5Q2FjaGUpOwotICAgIG5v
dGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5n
ZXQoKSwgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsIDAsIHJlc291cmNlLmVuY29k
ZWRTaXplKCksIDAsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3Qs
IHJlc3BvbnNlLCBudWxscHRyLCByZXNvdXJjZS5lbmNvZGVkU2l6ZSgpLCBlcnJvcik7CiB9CiAK
IHZvaWQgRnJhbWVMb2FkZXI6OmFwcGx5VXNlckFnZW50SWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRl
eCBlZTlmM2QwYzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThkMTIzNjUyLi4zNTJhNGM0ZmI1MDRm
N2NkNGQyZWM0MDZlNmJjMjkxMWE1NWZkMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaApAQCAtNyw3ICs3LDcgQEAKICAqIGFyZSBtZXQ6CiAgKgogICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCiAgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCkBAIC01MCw3ICs1MCw3IEBACiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmZGVmIF9fT0JKQ19fIAorI2lmZGVmIF9fT0JK
Q19fCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIHR5cGVkZWYgaWQgUmVtb3Rl
QVhPYmplY3RSZWY7CiAjZWxzZQpAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRs
ZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsKIApAQCAt
MjE0LDkgKzIxNCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlcGxhY2VNdWx0
aXBhcnRDb250ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0
Q29udGVudCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50
TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21t
aXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSA9IDA7Ci0gICAg
CisKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKSA9IDA7CiAKQEAgLTI3
Miw3ICsyNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0
IFVSTCYpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICAKKwogICAgIHZp
cnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1l
KENhY2hlZEZyYW1lKikgPSAwOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zODEsNyAr
MzgxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIEFsbG93c0NvbnRlbnRKYXZh
U2NyaXB0IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gQWxsb3dzQ29udGVudEphdmFTY3JpcHQ6OlllczsgfQotICAgIAorCiAj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmFi
bGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCkgeyB9CkBA
IC0zOTAsNyArMzkwLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRVc2VQREZQbHVnaW4oY29uc3QgU3RyaW5nJiwgU3RyaW5nVmll
dykgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgotICAgIAorCiAgICAgdmlydHVhbCBi
b29sIGlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggNWQxMjBlMjQ3YWMyNjI3MTE2MWRlMGRjNTIzMDI0ZGM4ZGUzNGQ2OS4uMWExN2E3
MGZhNThjNzIyOGY2Mzg5MzU5ZGQwZDMzOWQwZTA1Y2QyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcApAQCAtMjMxLDEzICsyMzEsMTMgQEAgdm9p
ZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1MKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBi
eXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNvdXJjZTo6
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAg
IFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmIChtX2Ns
aWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgZGF0YUxl
bmd0aCk7CisgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CiB9
CiAKIHZvaWQgTWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmZjZjMjg4NzEwMDg4ZjRiMDU0
Y2U0NzYzZDVkYTBkZGM5MmMyMDY1Li43YjU1NzcyMGVmMDUzM2ZiYWEyMjY1NjUzOGVmZGQ5NmY2
MTc5ZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgK
QEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwog
ICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJlc291cmNl
JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmNwcAppbmRleCA2MDQzYWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkxNTAzLi41
Y2FhZGY2MjljNzBhZTA4NmI3N2JkNzJjZDI4Njc1MzZiOGZhOTdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAgLTE0
MSwzMCArMTQxLDE0IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwCiAgICAgfSk7CiB9CiAKLXZv
aWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotICAgIGRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxv
YWRUeXBlKTsKLX0KLQotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKLSAg
ICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5j
b2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBpZiAobV9jbGllbnQpIHsK
LSAgICAgICAgaWYgKGJ1ZmZlcikgewotICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVu
dChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlRGF0YSh0aGlzLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVE
YXRhKHRoaXMsIGRhdGEsIGxlbmd0aCk7Ci0gICAgfQorICAgIGlmIChtX2NsaWVudCkKKyAgICAg
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlcik7CiAKLSAgICBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIFdURk1vdmUoYnVm
ZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CisgICAgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5o
CmluZGV4IGI1MTc0ZWRjOTRiOTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzguLjFlYzdkNjFl
M2ExNzVjMjJiNTU4NzU4ZDM3ZWQwYzU1YmU1ZjEzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC0zNiwxMiArMzYsMTMg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBTaGFyZWRC
dWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgeyB9CiAgICAgdmly
dHVhbCBib29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02
Miw4ICs2Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVk
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc0LDgg
Kzc0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotCiAgICAgdm9pZCBub3RpZnlEb25lKCk7
CiAKICAgICBXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50PiBtX2NsaWVu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCmlu
ZGV4IDYyYmI1NmUzNGU2ZjQ2ZDI2MjgzNmNmY2E0NjViNGRiMGUzMDgzY2YuLjFhYzBlNjdjN2Y2
OGRlZDBlY2I3OGUxMWMwMjQ2OWIxMDkxZDUzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUxvYWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaWYgVVNFKFFVSUNLX0xP
T0spCiAjaW5jbHVkZSAiUXVpY2tMb29rLmgiCkBAIC03OCwxMiArNzksMTIgQEAgdm9pZCBSZXNv
dXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFJlc28KICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCByLCBsb2FkZXIpOwogfQogCi12
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciog
bG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQot
ICAgICAgICBwYWdlLT5wcm9ncmVzcygpLmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRp
ZmllcigpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNyZW1lbnRQ
cm9ncmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSwgYnVmZmVyLnNpemUoKSk7CiAKLSAgICBkaXNw
YXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVu
dGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaXNw
YXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVu
dGlmaWVyKCksIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFJlc291cmNl
TG9hZE5vdGlmaWVyOjpkaWRGaW5pc2hMb2FkKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtMTUzLDEzICsxNTQs
MTMgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9u
c2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmUKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUsIGlkZW50aWZpZXIsIGxvYWRl
ciwgciwgcmVzb3VyY2VMb2FkZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpk
aXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6
ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICAvLyBOb3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVy
Q2xpZW50IG1heSBjYXVzZSB0aGUgZnJhbWUgdG8gYmUgZGVzdHJveWVkLgogICAgIFJlZjxGcmFt
ZT4gcHJvdGVjdChtX2ZyYW1lKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3Bh
dGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhTGVuZ3Ro
KTsKKyAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRl
bnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBidWZmZXIuc2l6ZSgpKTsKIAotICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoJm1fZnJhbWUsIGlkZW50aWZpZXIs
IGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKCZtX2ZyYW1lLCBpZGVudGlmaWVyLCBidWZmZXIs
IGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlz
cGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQpAQCAtMTgwLDcg
KzE4MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmFpbExvYWRp
bmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGYWlsTG9hZGluZygmbV9mcmFtZSwgbG9hZGVyLCBpZGVudGlmaWVyLCBlcnJv
cik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3Zv
aWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXIsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgLy8gSWYgdGhl
IHJlcXVlc3QgaXMgbnVsbCwgd2lsbFNlbmRSZXF1ZXN0IGNhbmNlbGxlZCB0aGUgbG9hZC4gV2Ug
c2hvdWxkCiAgICAgLy8gb25seSBkaXNwYXRjaCBkaWRGYWlsTG9hZGluZyBpbiB0aGlzIGNhc2Uu
CkBAIC0xOTMsOCArMTk0LDggQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwKICAgICBpZiAoIXJl
c3BvbnNlLmlzTnVsbCgpKQogICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2Fk
ZXIsIGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlmIChkYXRhTGVuZ3RoID4gMCkKLSAg
ICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50aWZpZXIsIGRhdGEsIGRh
dGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+
c2l6ZSgpKQorICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlciwgaWRlbnRpZmll
ciwgKmJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgaWYgKGVycm9yLmlzTnVsbCgp
KSB7CiAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCmluZGV4IDZkYTE2MDMyNWY0MmZl
ZjU0MGM2YmQ1MGJiMTgyZTg2OWRhZGU5ZTMuLjJiMjVkOGEzZGQ2MTk0MGY1Y2FmNTRkYTljNzQ2
NWIwYTI4ZDM0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWROb3RpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3Rp
Zmllci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNv
dXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlc291cmNlTG9hZE5vdGlmaWVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXNvdXJjZUxvYWROb3RpZmllcik7CkBAIC01NSwx
OCArNTYsMTggQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VM
b2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcios
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291
cmNlTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAg
IHZvaWQgZGlkRmFpbFRvTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIAogICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKiA9
IG51bGxwdHIpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRl
ciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlzcGF0
Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHZv
aWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9pZCBzZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgs
IGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1l
c3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPGNvbnN0IFNo
YXJlZEJ1ZmZlcj4sIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogCiAgICAgYm9vbCBpc0luaXRpYWxSZXF1ZXN0SWRlbnRpZmllcihSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAppbmRleCA2ZGViYjI1ODhhM2U4MmIyMWM2MWQ3ZThmMzZlNGY0YmJiYTI1ZTYw
Li42NjQ3YzI3MDgxMTgwZWJjZWMyYjVjYTI5ZmQ2MGI3MjNhYjY0ODM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI5OSw5ICsyOTksOSBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCgpCiAKICAgICAgICAgYXV0byBkYXRhU2l6ZSA9IGRl
Y29kZVJlc3VsdC0+ZGF0YS5zaXplKCk7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgZGF0YVJl
c3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHVybCwgZGVjb2RlUmVz
dWx0LnZhbHVlKCkpOwotICAgICAgICB0aGlzLT5kaWRSZWNlaXZlUmVzcG9uc2UoZGF0YVJlc3Bv
bnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRhdGFT
aXplLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkZWNvZGVSZXN1bHQtPmRh
dGEpKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGRhdGFS
ZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBk
YXRhU2l6ZSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGVjb2RlUmVzdWx0
LT5kYXRhKSldKCkgewogICAgICAgICAgICAgaWYgKCF0aGlzLT5yZWFjaGVkVGVybWluYWxTdGF0
ZSgpICYmIGRhdGFTaXplICYmIG1fcmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkhFQUQiKQotICAg
ICAgICAgICAgICAgIHRoaXMtPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShkYXRhKSwgZGF0YVNp
emUsIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgdGhpcy0+ZGlk
UmVjZWl2ZUJ1ZmZlcihkYXRhLCBkYXRhU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsK
IAogICAgICAgICAgICAgaWYgKCF0aGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAgICAg
ICAgICAgICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKQEAgLTMyOCw3ICsz
MjgsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3Vy
Y2UoKQogICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgs
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXls
b2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7
CiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzM2LDEwICszMzYs
NyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBGcmFnbQogICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0g
RGF0YVBheWxvYWRXaG9sZVJlc291cmNlKQogICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgp
OwogCi0gICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKCpidWZm
ZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKGRhdGEsIGxlbmd0
aCk7CisgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdApA
QCAtNTM5LDcgKzUzNiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByLCBDb21wbGV0aW9uSGFuCiAgICAgICAgIGZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIG1fcmVzcG9uc2Up
OwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhl
IGZvbGxvd2luZyBhc3NlcnRpb25zIGFyZSBub3QgcXVpdGUgdmFsaWQgaGVyZSwgc2luY2UgYSBz
dWJjbGFzcwogICAgIC8vIG1pZ2h0IG92ZXJyaWRlIGRpZFJlY2VpdmVEYXRhIGluIGEgd2F5IHRo
YXQgaW52YWxpZGF0ZXMgdGhlbS4gVGhpcwpAQCAtNTQ3LDMwICs1NDQsMjIgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBsb25nIGwKICAgICAvLyBBU1NFUlQoY29uID09IGNvbm5lY3Rpb24pOwogICAgIC8v
IEFTU0VSVCghbV9yZWFjaGVkVGVybWluYWxTdGF0ZSk7CiAKLSAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CisgICAgZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3Ro
LCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
IGRhdGFQYXlsb2FkVHlwZSkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIs
IDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7
Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBn
ZXQgZGF0YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCi0gICAgQVNTRVJU
KCFidWZmZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKLQogICAgIC8vIFByb3RlY3QgdGhpcyBp
biB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNh
biBkbwogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBv
bmUgZXhhbXBsZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYuCiAgICAgUmVmPFJlc291cmNlTG9h
ZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGFkZERhdGFPckJ1ZmZlcihkYXRhLCBs
ZW5ndGgsIGJ1ZmZlci5nZXQoKSwgZGF0YVBheWxvYWRUeXBlKTsKKyAgICBhZGRCdWZmZXIoYnVm
ZmVyLCBkYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgLy8gRklYTUU6IElmIHdlIGdldCBhIHJlc291
cmNlIHdpdGggbW9yZSB0aGFuIDJCIGJ5dGVzLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJpZ2h0
IHRoaW5nLgogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdv
cmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3Vs
ZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25z
LnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAm
JiBtX2ZyYW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVE
YXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0
YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5j
b2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRS
ZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSwgc3RhdGljX2Nhc3Q8aW50
PihlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpA
QCAtNzI5LDE0ICs3MTgsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYKICAgICBkaWRSZWNl
aXZlUmVzcG9uc2UocmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
K3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBk
aWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZEJ5dGVzKTsKKyAgICBkaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVCdWZmZXIoV1RG
TW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAg
ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5
dGVzKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggOTA3NWNiYzBhMzA0MGVhMTUwYTg2MjVjZGEw
ODkwYjFlZTEzOGM3Mi4uMTA5OGU0ZjI3ODg5Y2RhN2IzYTljZmQ0ZDU0NmFlMmZkOWE3YzU2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTEwNyw4ICsxMDcsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJik7CiAKQEAgLTE2Nyw4ICsxNjcsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdh
c0NhbmNlbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNl
bGxlZDsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLSAgICAKICAgICB2b2lkIHNldFJl
ZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5y
ZWZlcnJlclBvbGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVm
ZXJyZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0K
IApAQCAtMTkyLDcgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5j
ZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2Vs
KGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAKLSAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBEYXRhUGF5
bG9hZFR5cGUpOworICAgIHZvaWQgYWRkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZvaWQgbG9hZERhdGFVUkwoKTsKICAgICB2b2lk
IGZpbmlzaE5ldHdvcmtMb2FkKCk7CiAKQEAgLTIwMiw4ICsyMDAsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0
ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3Vy
Y2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVl
c3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgU2hh
cmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRl
eCAzN2QwYmI4MjFhYmQ4NmE5YjU2MDZlMTI3ZWZjOTQxMmE1MWJiMWE5Li45NzJmMmFmMjI2MDNm
NDI0Y2Q4Nzc1ZjU5MTAxMGUyZDc2OTM4YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUxOCwzMiArNTE4LDE1IEBAIHZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZVBvbGljeSgpCiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKIHsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoYXV0byBwcmV2aWV3
TG9hZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7Ci0gICAgICAgIGlmIChwcmV2aWV3TG9h
ZGVyLT5kaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgpKQorICAgICAgICBpZiAocHJldmlld0xv
YWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihk
YXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUp
OwotfQotCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotI2lmIFVTRShRVUlDS19MT09L
KQotICAgIGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIuZ2V0KCkpIHsK
LSAgICAgICAgaWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLmdldCgp
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0
aCwgZGF0YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKICAgICBBU1NFUlQobV9y
ZXNvdXJjZSk7CiAKICAgICBpZiAobV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29k
ZSgpID49IDQwMCAmJiAhbV9yZXNvdXJjZS0+c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJv
cnMoKSkKQEAgLTU1NSwxMyArNTM4LDEzIEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAv
LyBhbnl0aGluZyBpbmNsdWRpbmcgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMg
b2JqZWN0OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCiAgICAgUmVmPFN1YnJlc291
cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgYnVmZmVyLmNvcHlSZWYoKSwgZW5j
b2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CisgICAgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBl
KTsKIAogICAgIGlmICghbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCkgewogICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0
aCk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlci5tYWtlQ29udGln
dW91cygpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmgKaW5kZXggODMyYzlmMGU3M2QzODQ2NGE3OTVmNDAzODYwZjc5YzM0ZTczYmM3Zi4uM2Ri
ZDUzMzhhZmU0OWI0Nzg1N2Q1MzQwOTc4ODc1MmVhYTFhZWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTczLDggKzczLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1
bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRl
c1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBs
ZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9y
Jikgb3ZlcnJpZGU7CkBAIC05Miw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9p
ZCwgU3RyaW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJl
Y3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2
aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5l
d1JlcXVlc3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAgICB2b2lkIG5vdGlmeURvbmUoTG9h
ZENvbXBsZXRpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNv
dXJjZS5oCmluZGV4IGNmMmRlMGM2MmQ5NWYzMzI1YjQyYjQ2ZTI0MDM3NzQ0MTA3NDJhMGQuLjNk
MTkyODYyZjI3NzI5YjJmMzhkYjU0YmQ4MzY3OTk1MjVjMDE5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0K
ICAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X3JlZmVyZW5jZV9jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0
KCkgfSk7IH0KLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSB7IG1fZGF0YS5hcHBlbmQoYnVmZmVyKTsgfQogICAgIHZv
aWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsaXZl
cihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRh
KG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAppbmRleCA4NGQ3OWIwYzk5ZGYxMGQ5OTM4MGI4NDgz
MTczNzFiYzFlODU3M2JmLi5jZWYwYzhmMWYxN2QwZjU3NjU5YTM1NDFiNTRmNjM4OTkwNjRiMWM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgK
QEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoVGhyZWFkYWJsZUxvYWRlckNsaWVudCk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNDQsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25n
IGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgaW50IC8qZGF0YUxlbmd0aCovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCAvKiB1c2VTdHJMZW4gKi8pIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50V3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGll
bnRXcmFwcGVyLmgKaW5kZXggNDJhZTY0OTA5YTVlMGZlNDRjNmE1ZTAwNjBkNThjOTY0ZWM1NjA1
MS4uZjM2YTJkNDA3YWY4ODE1OTA0Mjg2NmI4NWU5ZTAxODYxZGFhYzcyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgK
QEAgLTY2LDEwICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICB9CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQorICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3Ry
TGVuKQogICAgIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5ndGgpOworICAgICAgICAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgdXNlU3RyTGVuKTsKICAgICB9CiAKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXgg
ZGZmODk3MDFjOTM5YmM3M2MzNzAzMmFkOWM0MmFkMjA2MzI2YWQ2ZS4uN2MwMzQ5NDVlZTAzYTc0
ZjUzMzM5YmI4MWZmYTBlMDZjNjljNzE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMjMxLDE0ICsyMzEsMTMgQEAgdm9pZCBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VMb2FkZXIKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAotdm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIHVzZVN0ckxlbikKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGRhdGEs
IGRhdGFMZW5ndGgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFJlZiB7
ICptX3dvcmtlckNsaWVudFdyYXBwZXIgfSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dv
cmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtl
ckNsaWVudFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdvcmtlclJl
cXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gUmVm
IHsgZGF0YSB9LCB1c2VTdHJMZW5dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0
LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwotICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRX
cmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAg
ICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVy
LCB1c2VTdHJMZW4pOwogICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
KQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlm
aWVyLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyKTsKICAgICB9LCBt
X3Rhc2tNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmgKaW5kZXggNzIzYjQ1NmVjOGU5ZTMwNmZjMThjYzhmMzZkZTZkY2Q4YWUzMDQ3
MC4uMzM5ZDZmNDczMTBhMWVkMjg5MDM2YWQwYTQwNGYzOGE3YTI2ODYyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCkBAIC0xMDUsNyArMTA1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gQWxsIGV4ZWN1dGVkIG9uIHRoZSBtYWluIHRocmVh
ZC4KICAgICAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCosIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAg
ICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3Zl
cnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoVGltaW5nKGNvbnN0IFJlc291cmNlVGltaW5nJikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA1MTk3OGY0MTIzODc0ZGM1NjYwZWZmNDcwNjU5
NzA3ZDRlNWQ4NWE3Li5lZDc1NjY1MjZiMmQ3ZWZiZjFjNTE3MDIwOTVhODc5YmFmNTY5NDQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRGYWxsYmFja0Zvck1haW5FcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWlu
UmVzb3VyY2VEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCosIGludCwgbG9uZyBsb25nLCBib29s
KQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNv
bnN0IFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZywgYm9vbCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRl
eCBiOTYzNTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNkZjcyMzY3MmEwLi5kMmFlYWVjM2UxNGM2
M2JjYmY2MDFlOWFhZjAyNGMxZjllYzQ3NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtOTUsNyArOTUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgU3Vic3RpdHV0ZURhdGEmKTsKICAgICB2b2lkIG1heWJlTG9hZE1haW5SZXNvdXJj
ZUZvclJlZGlyZWN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVEYXRhJik7CiAg
ICAgYm9vbCBtYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYWluUmVzb3VyY2VE
YXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSk7CisgICAgdm9pZCBtYWluUmVzb3VyY2VE
YXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBib29sIGFsbEF0T25jZSk7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdNYWluUmVzb3Vy
Y2UoKTsKICAgICB2b2lkIGZhaWxlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmNwcAppbmRleCAyYmIzZmU3NWI5OTc3ZTgzMzIyYWUyNTgwZjcyMTJlZTViZjIxNjEw
Li4yNTZlODliMjExYjM4YjJkMjFkY2Q2NjU3ODI2OWU2NjA3MzY3MzI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmNwcApAQCAtNTEsNyArNTEsMTAgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAog
dm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxv
YWRlcikKIHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBt
X3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBpZiAobV9wYXRoLmlzRW1w
dHkoKSkKKyAgICAgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwg
UmVmUHRyIHsgJmRhdGEoKSB9KTsKKyAgICBlbHNlCisgICAgICAgIGxvYWRlci5kZWxpdmVyUmVz
cG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRk
VHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNi4uNTRmZWVkMmNhNjQx
MmI0NTIwOTg3MGM3NzM0MzYwOWQ4NTA5Yjc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTk5LDkgKzk5LDkgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogICAgIG1f
YXBwbGljYXRpb25DYWNoZVJlc291cmNlID0gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVh
dGUobV9yZXNvdXJjZS0+dXJsKCksIHJlc3BvbnNlLCBtX3R5cGUpOwogfQogCi12b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBwZW5k
KGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChi
dWZmZXIpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJl
Y3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCAwMmQ3YWQ5N2EyOGQ0N2MzZmFiNWUzYmFiMDdlYmU5YjA2OWUyMzJkLi4wYjI5NjI4OGYzMWE0
MzI1ZDQ4NDlhNDQyZThhZTYwMmMxNzMxOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwot
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCByZWRpcmVjdFJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikg
ZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcAppbmRleCA1MDQ2NWNjNmMwMTMzZTVhNzc0NDVjZjk0NzMzM2ZlMjA2
NDA4NjFkLi5hMmRhZmM5ZDg3YzI2N2EyZjk1ZTQ4NTVmZGIwODRkYTI5ZDNmMjc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw3ICs0Njgs
NyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJ
bWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcklu
dGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZElt
YWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1f
ZGF0YS0+c2l6ZSgpKTsKQEAgLTU1OCwxNSArNTU4LDE1IEBAIEVuY29kZWREYXRhU3RhdHVzIENh
Y2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB2b2lkIENh
Y2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOworICAg
IHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEubWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBk
YXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hl
ZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFT
U0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RC
dWZmZXJEYXRhKTsKLSAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLCBsZW5ndGgpKTsKLSAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBs
ZW5ndGgpOworICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGJ1ZmZlcik7CisgICAgQ2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oCmluZGV4IGU4NDMwODcwYjQ4YWYzZGM5NWJiYTNjYWQxYTY0ZTA2OGFlMTU1MTMuLmE1
ZGM2M2YyM2RiZDQxYTI3MGVlNTZjMzJhNDQxNzc3ZDZhZGRiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFn
ZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0
dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGU7CiAKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lk
IHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0
ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lk
IHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBk
aWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggNzFlMTYw
ODJmZmU2NTVkMTExZjE2OTkwZDEyMzA1MzViZWFjYmY5NS4uZDMzNjExMzIxM2ZiZWJmZjRlOTFm
ZjY1ZjgzZmZlMjRkM2U4YTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCwxMiArNDgsMTIgQEAgQ2FjaGVkUmF3UmVz
b3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9ySWNvbk9yUmF3UmVzb3VyY2Uo
KSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jl
c291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmll
dz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRhTGVu
Z3RoID0gZW5jb2RlZFNpemUoKTsKLSAgICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgpIDw9IHBy
ZXZpb3VzRGF0YUxlbmd0aCkKKyAgICBpZiAoZGF0YS5zaXplKCkgPD0gcHJldmlvdXNEYXRhTGVu
Z3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBkYXRhLT5nZXRT
b21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOworICAgIHJldHVybiBkYXRhLmdldFNvbWVEYXRh
KHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQpAQCAtNzIsNyArNzIs
NyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICAgICAgcHJldmlvdXNEYXRhU2l6ZSArPSBpbmNyZW1l
bnRhbERhdGEuc2l6ZSgpOwogCiAgICAgICAgIFNldEZvclNjb3BlPGJvb2w+IG5vdGlmeVNjb3Bl
KG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnksIHRydWUpOwotICAgICAgICBub3RpZnlDbGllbnRz
RGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS5kYXRhKCksIGluY3JlbWVudGFsRGF0YS5z
aXplKCkpOworICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFs
RGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CiAgICAgfQogICAgIHNldEVuY29kZWRTaXplKG1f
ZGF0YS0+c2l6ZSgpKTsKIApAQCAtODksMTEgKzg5LDExIEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogICAg
IH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVy
aW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKLSAg
ICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGRhdGEsIGxlbmd0aCk7Ci0gICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBub3RpZnlDbGllbnRzRGF0
YVdhc1JlY2VpdmVkKGJ1ZmZlcik7CisgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoYnVm
ZmVyKTsKIH0KIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCkBAIC0xMTAsOSArMTEwLDkgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdAogICAgICAg
ICBpZiAoZGF0YSkgewogICAgICAgICAgICAgaWYgKGRhdGEgIT0gbV9kYXRhLmdldCgpKQogICAg
ICAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAgICAg
ICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayhkYXRhKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoKm1fZGF0YSkpIHsKICAgICAgICAgICAgICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNE
YXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGlu
Y3JlbWVudGFsRGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CkBAIC0xMzAsMTUgKzEz
MCwxNSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0CiAgICAgfQogfQogCi12b2lkIENhY2hlZFJh
d1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVu
dHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgaWYg
KCFsZW5ndGgpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNl
Q2xpZW50PiB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
KiBjID0gdy5uZXh0KCkpCi0gICAgICAgIGMtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgbGVu
Z3RoKTsKKyAgICAgICAgYy0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOwogfQogCiBzdGF0
aWMgdm9pZCBpdGVyYXRlUmVkaXJlY3RzKENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jl
c291cmNlPiYmIGhhbmRsZSwgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQmIGNsaWVudCwgVmVjdG9y
PHN0ZDo6cGFpcjxSZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2U+PiYmIHJlZGlyZWN0
c0luUmV2ZXJzZU9yZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MCw5ICsxNzAsOSBAQCB2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGMpCiAgICAgICAg
ICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICAgICAgbV9kYXRhLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgICAgICAgICAgICAgIG1fZGF0YS0+Zm9y
RWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgewogICAgICAgICAg
ICAgICAgICAgICBpZiAoaGFzQ2xpZW50KCpjbGllbnQpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNp
emUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhp
cywgYnVmZmVyKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmICghaGFzQ2xpZW50KCpjbGllbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCBhNzg2NWY4YWQxNzhhZWZiMzIyMGE1NmRj
ZmYxOTU5OTNjZjk1YWU0Li4zNmU0N2ExZGJhMjMxMjhkYzUzMDczYjcwYjVmM2Y4NTM4MDRhZTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
aApAQCAtMjgsNiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJl
c291cmNlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2Ug
ZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikg
ZmluYWw7CiAgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBz
aG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KQEAgLTY2LDggKzY3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3aXRjaENsaWVu
dHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKICAgICBib29sIG1heVRyeVJlcGxh
Y2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0
YVJlcGxhY2VtZW50OyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3
PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKikgY29uc3Q7Ci0gICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RkOjpvcHRpb25hbDxTaGFy
ZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hh
cmVkQnVmZmVyJikgY29uc3Q7CisgICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVk
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZv
aWQgcHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQuaAppbmRleCAyM2VhYjhkZjI5NThmZjhiNDlmMzU0NWI1MDgzZmUyOTg5ZWYxMjIw
Li5jZDY1MGEyZjMxMzZjZTliMjYyZmJkZmM4MjkyOGJmMjEwNzlmYmNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaApA
QCAtMzEsNiArMzEsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgOiBwdWJs
aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgpAQCAtNDYsNyArNDcsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90
KiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
ZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1p
bmcmKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKaW5kZXggOWRlMGEwNGNkNWVjNWYzZmFkMmZiMTZkN2IzMjJjODU4YTM4YTZiMi4uN2I5
YzYxZjk2NjE3NTQ2YjY2YmNjM2M2M2VjYTBlODU3ZTI2MmVmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURh
dGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggYzk4MmRkNjkz
N2EwYmMyYmYzOGM0MjYxMjZmZmU2ZTc4Yzc5NjQ3OC4uNTM0ZTAxMmNjNGZhNWRkMmJlMWZkNmVl
ZTVhYTZhZTRlNWZhZTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJp
bmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29u
c3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0
dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5kZXgg
OTZkODk4MmU5MzUwMzQ3Njk2ZmM5NjlkNTg1YWI3MDc1ZGUwMjBlZC4uY2EwMTkzNGQzMWJhNWQ1
MDlmZWJlN2QyZjkxMjI0OWQyNzEyNmFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTQ3LDggKzQ3LDcgQEAgcHVibGljOgogICAg
IH5MZWdhY3lQcmV2aWV3TG9hZGVyKCk7CiAKICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKICAg
ICB2b2lkIGRpZEZhaWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IDQ4NzU2YTMzYjU4NzJiNDRiMmYwYmEwODQyNDFmODZj
ZmFlYmNhYTAuLmEyNGI4YzU5ZDQ2MGFmZjVlMmZlZjgzMTkwYzIwODY1NzIzNjVkMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAg
LTYzLDcgKzYzLDcgQEAgc3RhdGljIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtYWtl
Q2xpZW50KGNvbnN0IFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGMKICAgICByZXR1cm4gZW1wdHlD
bGllbnQoKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgTGVnYWN5UHJldmll
d0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgaWYgKG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBM
T0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRoIHNp
emUgJWxkLiIsIGJ1ZmZlci5zaXplKCkpOwogICAgIG1fb3JpZ2luYWxEYXRhLmFwcGVuZChidWZm
ZXIpOwogICAgIG1fY29udmVydGVyLT51cGRhdGVNYWluUmVzb3VyY2UoKTsKLSAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0
YShidWZmZXIpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNjIsOCArMTYyLDcgQEAgdm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJl
dmlld0NvbnZlcnRlciYsIGNvbnMKICAgICBpZiAoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZGF0YUNvcHkgPSBkYXRhLmNvcHkoKTsKLSAgICBy
ZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGRhdGFDb3B5KSwgZGF0YUNv
cHktPnNpemUoKSwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgcmVzb3VyY2VMb2FkZXItPmRpZFJl
Y2VpdmVCdWZmZXIoZGF0YSwgZGF0YS5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCiB2
b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0
aW5nKFByZXZpZXdDb252ZXJ0ZXImKQpAQCAtMjQzLDExICsyNDIsNiBAQCBMZWdhY3lQcmV2aWV3
TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0
IFJlc291cmNlUgogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBjcmVhdGVk
IHdpdGggcHJldmlldyBmaWxlIG5hbWUgXCIlc1wiLiIsIG1fY29udmVydGVyLT5wcmV2aWV3Rmls
ZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0g
ICAgcmV0dXJuIGRpZFJlY2VpdmVCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVu
Z3RoKS5nZXQoKSk7Ci19Ci0KIGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogewogICAgIHJldHVybiAhbV9zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApp
bmRleCA2MDI2MzFiYjdjZDEwODYwYjFhMzEyMTA0M2M5N2Q4ZWZlNDQ3NjFkLi42N2FjNzdlMmJm
NzYxMDQ1YzhjMThkNWM3YWRlYzdmNzMzOGFiNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291
cmNlLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0yMTAsMTMgKzIxMSwxMyBAQCB2b2lkIEV2ZW50U291
cmNlOjpkaXNwYXRjaEVycm9yRXZlbnQoKQogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKLXZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIEV2ZW50U291cmNlOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCkKIHsKICAgICBBU1NF
UlQobV9zdGF0ZSA9PSBPUEVOKTsKICAgICBBU1NFUlQobV9yZXF1ZXN0SW5GbGlnaHQpOwogICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW1faXNTdXNwZW5kZWRG
b3JCYWNrRm9yd2FyZENhY2hlKTsKIAotICAgIGFwcGVuZChtX3JlY2VpdmVCdWZmZXIsIG1fZGVj
b2Rlci0+ZGVjb2RlKGRhdGEsIGxlbmd0aCkpOworICAgIGFwcGVuZChtX3JlY2VpdmVCdWZmZXIs
IG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKTsKICAgICBw
YXJzZUV2ZW50U3RyZWFtKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCBk
MDEyZDM3N2QxOTc2NzVmMGZlMTE0NWYxNzE5ZjE3ZmRkYmZlYTNiLi5kNjYyYWUyODA2ZjRiMjQ4
NjdiMDE2MDhlMDRkYmI0Zjk3ZGJhMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBA
IC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCmluZGV4IGQzOTYxNTY4ODRiNGI3OWUzZTU1ZDU2OTFkNzE4Yzg4NzVmZjlmZjcuLmI4
NmQ0OWQ0YWYzM2M2NDU4MmI2YmVhNDA2MjI2MTU5OTJkNWFjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIFZlY3Rvcjx1aW50
OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gY29tYmluZWREYXRhOwogICAgIGlmIChoYXNPbmVTZWdtZW50KCkgJiYgc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9p
bW11dGFibGVEYXRhKSkKLSAgICAgICAgY29tYmluZWREYXRhID0gc3RkOjpleGNoYW5nZShzdGQ6
OmdldDxWZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVE
YXRhKSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOworICAgICAgICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4
Y2hhbmdlKHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oY29uc3RfY2FzdDxEYXRhU2VnbWVudCY+
KG1fc2VnbWVudHNbMF0uc2VnbWVudC5nZXQoKSkubV9pbW11dGFibGVEYXRhKSwgVmVjdG9yPHVp
bnQ4X3Q+KCkpOwogICAgIGVsc2UKICAgICAgICAgY29tYmluZWREYXRhID0gY29tYmluZVNlZ21l
bnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwogCkBAIC0yMzEsNiArMjMxLDggQEAgdm9pZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjbGVhcigpCiAKIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKIHsKKyAgICBpZiAobV9j
b250aWd1b3VzKQorICAgICAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPyBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKSA6IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRv
cHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsKICAgICBjbG9uZS0+bV9zaXplID0g
bV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9z
ZWdtZW50cy5zaXplKCkpOwpAQCAtMjQ4LDYgKzI1MCwxMyBAQCB2b2lkIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxj
b25zdAogICAgICAgICBhcHBseShTcGFuIHsgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21l
bnQuc2VnbWVudC0+c2l6ZSgpIH0pOwogfQogCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoY29uc3QgRnVuY3Rpb248dm9pZChSZWY8U2hh
cmVkQnVmZmVyPiYmKT4mIGFwcGx5KSBjb25zdAoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH07CisgICAgZm9yIChhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykKKyAg
ICAgICAgYXBwbHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VnbWVudC5zZWdtZW50LmNvcHlSZWYo
KSkpOworfQorCiBib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3Qg
U3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAogewogICAgIGlmIChwcmVmaXguZW1w
dHkoKSkKQEAgLTQxMyw3ICs0MjIsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpCiAg
ICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
UmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihS
ZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKIHsKICAgICBtX3NpemUgPSBzZWdtZW50
LT5zaXplKCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0p
OwpAQCAtNjAxLDcgKzYxMCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVm
ZmVyKCkKICAgICAgICAgbV9idWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxE
YXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZm
ZXJEYXRhVmlldyhSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0
aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3Nl
Z21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBv
c2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21l
bnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTYxNyw3ICs2MjYsNyBAQCBT
aGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcmIG90aGVyLCBzaQogCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJE
YXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8RGF0
YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPGNvbnN0IERhdGFT
ZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRh
dGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAogICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJl
dHVybiBzaXplOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGMy
N2M5MjY5ZmZlZjI0OWFiNWU4YWJhMjRkNzYyZmM0MGMxYzIzMDAuLjM0ODRhNmE1M2I4MDQwNjRi
ZTU3YTI4M2VmNDE4YThhNjJkNTg5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCkBAIC0xNzgsMTIgKzE3OCwxMyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYpPiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0
aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihjb25zdCBGdW5jdGlvbjx2
b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYpPiYpIGNvbnN0OwogCiAgICAgdXNpbmcgRGF0YVNlZ21l
bnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmls
aXR5IHdoZW4gdXNpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAg
IHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9z
aXRpb247Ci0gICAgICAgIFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudDsKKyAgICAgICAgY29uc3Qg
UmVmPGNvbnN0IERhdGFTZWdtZW50PiBzZWdtZW50OwogICAgIH07CiAgICAgdXNpbmcgRGF0YVNl
Z21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0
YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWdtZW50cy5iZWdpbigpOyB9CkBAIC0yNTksNyArMjYwLDEwIEBAIHB1YmxpYzoKICAgICAgICAg
aWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKCkpOwogICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6
ZW9mLi4uKEFyZ3MpID09IDEKLSAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBS
ZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8
QXJncywgUmVmPGNvbnN0IERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikp
OworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAg
ICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3Zl
X3JlZmVyZW5jZV90PEFyZ3M+PiwgRGF0YVNlZ21lbnQ+ICYmLi4uKSkKICAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwpAQCAt
Mjg2LDggKzI5MCwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQg
U2hhcmVkQnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyKGNvbnN0IERhdGFTZWdtZW50JiBzZWdt
ZW50KQorICAgICAgICA6IFNoYXJlZEJ1ZmZlcihSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IHsgc2Vn
bWVudCB9KSB7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
cmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CkBAIC0zNTksNyAr
MzY1LDcgQEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpl
eHRyYWN0RGF0YSgpCiAKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYs
IHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdT
aXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRh
VmlldyhSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21l
bnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBX
RUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRh
VmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3Nl
Z21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OyB9CkBAIC0zNzAsNyArMzc2
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0
ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxEYXRhU2Vn
bWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxjb25zdCBEYXRhU2VnbWVudD4gbV9zZWdt
ZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25z
dCBzaXplX3QgbV9zaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IGRlMzNmMWFmNDEyZGMwOGIyYjk2MWEx
OTQ5NDVjOWNjOTBhYTY2MjUuLmE0NzUwNzRhMTA4YTFiNTg3YjNiNmE4Yjk4ODA1OWRhZGU0N2U1
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
YWNraW5nU3RvcmUuaApAQCAtMjMzLDYgKzIzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biBQYWNrZWRDb2xvcjo6QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0KIAorICAgIC8vIG1f
cGl4ZWxzIHR5cGUgc2hvdWxkIGJlIGlkZW50aWNhbCB0byB0aGUgb25lIHNldCBpbiBJbWFnZUJh
Y2tpbmdTdG9yZUNhaXJvLmNwcAogICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gbV9waXhlbHM7CiAgICAgdWludDMyX3QqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0
ciB9OwogICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCA4ODY5MWRjMjU2ZDZkZDZjNDVmNDZlMDE1NDk2NzQyNDVhYTM1MzM3Li5jOTU4Zjg0NGRhYzE0
Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhhODEyOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aApAQCAtNTEsOSArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
dW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIC8v
IFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEsIGxlbmd0aCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSB7IFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJD
b3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBl
YzBhN2FjZjQ3MzI2MWM3NGU3ZWVmZmFkYzljY2MzYzNlNTdmMjI4Li43NzA4YTU4ZDJiNTgwOGI5
NDAwMmQyMDVlOThhMjdiYjJjZTZmMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBX
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpCiB7CiAgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2UpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKaW5kZXgg
Y2RmMTQzZjNjM2NkZTk3MWZkNzlkY2Y3MzI4YmZjZDdiMzI2MDJkYy4uNjI2N2JlMDBjNTRlZTYx
NzAyZmI3N2IyYTVmYjU2N2IyN2ViOWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGY5MjFmM2RhMGU2OWIzMzk5NzdjOWUz
ZTQ5NjY3YTI4ZjVlOTVjYmQuLjcyNjQ3MjVjOGU1NjIyZGYzOGI0NWJjZDk5YWM3ODc1NWI5ZWI4
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENhY2hlZFJhd1Jl
c291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmlu
YWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90
KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQg
ZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKQEAgLTEzMCw3ICsx
MzAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTgogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hl
ZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIENhY2hl
ZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKCZyZXNvdXJjZSA9PSBtX3Jl
c291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkp
CkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQg
bG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBs
b2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVk
KCk7IH0KQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6bG9hZEZpbmlzaGVkKCkKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9p
ZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fYnVmZmVyLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIpOwogICAgIG1f
cGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDkzMDE5
MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIuLmI3YjA3ZmYxNDU0ZDU2MWEzMDIx
MDhhZTMyMjkxZThmODM0MzdiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGlj
eUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyogc3Jj
ID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxGcmEKICAgICAvLyB0aGF0IGZpcnN0IHBhY2thZ2UgZGVsaXZlcnkg
d291bGQgaW5jbHVkZSB0aGUgdGltZSBvZiBzZW5kaW5nIG91dCB0aGUgcmVxdWVzdCBhbmQgZ2V0
dGluZyB0aGUgZGF0YSBiYWNrLiBTaW5jZSB3ZSBjYW4ndCBkaXN0aW5ndWlzaCB0aGUKICAgICAv
LyBzZW5kaW5nIHRpbWUgZnJvbSB0aGUgcmVjZWl2aW5nIHRpbWUsIGl0IGlzIGJldHRlciB0byBp
Z25vcmUgaXQuCiAgICAgaWYgKCFzdGQ6OmlzbmFuKG1lbWJlcnMtPmRvd25sb2FkU3RhcnRUaW1l
KSkgewotICAgICAgICBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyArPSBidWZmZXItPnNp
emUoKTsKKyAgICAgICAgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgKz0gZGF0YS5zaXpl
KCk7CiAgICAgICAgIGRvdWJsZSB0aW1lU2luY2VTdGFydCA9IChXYWxsVGltZTo6bm93KCkgLSBt
ZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSkuc2Vjb25kcygpOwogICAgICAgICBHU1RfVFJBQ0Vf
T0JKRUNUKHNyYywgIlIldTogZG93bmxvYWRlZCAlIiBHX0dVSU5UNjRfRk9STUFUICIgYnl0ZXMg
aW4gJWYgc2Vjb25kcyA9fiAlMS4wZiBieXRlcy9zZWNvbmQiLCBtX3JlcXVlc3ROdW1iZXIsIG1l
bWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzLCB0aW1lU2luY2VTdGFydAogICAgICAgICAgICAg
LCB0aW1lU2luY2VTdGFydCA/IG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzIC8gdGltZVNp
bmNlU3RhcnQgOiAwKTsKQEAgLTExMTUsMjAgKzExMTUsMTkgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxGcmEKICAgICAgICAgbWVtYmVycy0+ZG93bmxvYWRTdGFydFRpbWUgPSBXYWxsVGltZTo6bm93
KCk7CiAgICAgfQogCi0gICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVu
dCkgewotICAgICAgICBpbnQgbGVuZ3RoID0gc2VnbWVudC5zaXplKCk7Ci0gICAgICAgIEdTVF9M
T0dfT0JKRUNUKHNyYywgIlIldTogSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgbV9yZXF1ZXN0TnVt
YmVyLCBsZW5ndGgpOworICAgIGludCBsZW5ndGggPSBkYXRhLnNpemUoKTsKKyAgICBHU1RfTE9H
X09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51bWJl
ciwgbGVuZ3RoKTsKIAotICAgICAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVuZ3RoOwot
ICAgICAgICBBU1NFUlQoIW1lbWJlcnMtPmhhdmVTaXplIHx8IG1lbWJlcnMtPnJlYWRQb3NpdGlv
biA8PSBtZW1iZXJzLT5zaXplKTsKKyAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVuZ3Ro
OworICAgIEFTU0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBvc2l0aW9u
IDw9IG1lbWJlcnMtPnNpemUpOwogCi0gICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShH
U1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1Rf
Q0FTVChzcmMpLAotICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcoIndlYmtpdC1uZXR3b3Jr
LXN0YXRpc3RpY3MiLCAicmVhZC1wb3NpdGlvbiIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnJl
YWRQb3NpdGlvbiwgInNpemUiLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5zaXplLCBudWxscHRy
KSkpOworICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyks
IGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAorICAgICAgICBn
c3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFkLXBvc2l0
aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIsIEdfVFlQ
RV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7CisKKyAgICBjaGVja1VwZGF0ZUJs
b2Nrc2l6ZShsZW5ndGgpOworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVmZmVyTmV3V3Jh
cHBlZEZhc3QoZmFzdE1lbUR1cChkYXRhLmRhdGEoKSwgbGVuZ3RoKSwgbGVuZ3RoKTsKKyAgICBn
c3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7CiAKLSAgICAg
ICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKLSAgICAgICAgR3N0QnVmZmVyKiBidWZm
ZXIgPSBnc3RCdWZmZXJOZXdXcmFwcGVkRmFzdChmYXN0TWVtRHVwKHNlZ21lbnQuZGF0YSgpLCBs
ZW5ndGgpLCBsZW5ndGgpOwotICAgICAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0
ZXIuZ2V0KCksIGJ1ZmZlcik7Ci0gICAgfSk7CiAgICAgc3RvcExvYWRlcklmTmVlZGVkKHNyYywg
bWVtYmVycyk7CiAgICAgbWVtYmVycy0+cmVzcG9uc2VDb25kaXRpb24ubm90aWZ5T25lKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCA5YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVj
MjIxMjY1OGY4YzRmNjhhLi5iMjg5NmFlMzBhMWI4Y2MzZGYxMmEwNzQxMmNmNTAyMjE3ZmM2ODM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTc2LDkgKzc2LDggQEAgcHVibGljOgog
ICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJy
b3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9
IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKLSAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRh
KCkpCi0gICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVu
dC5jb3B5UmVmKCk7CisgICAgICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKwog
ICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlw
ZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRy
dWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CkBAIC0xOTQs
NyArMTkzLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3Qo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgot
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwor
ICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBWZWN0b3I8U2NhbGFi
bGVJbWFnZURlY29kZXJGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9sb2NrKTsKICAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIGJvb2wgbV9wcmVt
dWx0aXBseUFscGhhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDI2Zjg4NjQ5
NmU1YTVhMTRlMjhhZmIxYWZhOWJmYzMwMTc3ZjUxY2YuLmQ2OGMwYTM1ZmMxZjRhYjYwMTdiZDM5
ZWU0MzkxMDI2ODM1ZmM4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgQVZJRkltYWdlUmVhZGVyOjpBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJ
bWFnZURlY29kZXI+JiYgZGVjb2RlcikKIAogQVZJRkltYWdlUmVhZGVyOjp+QVZJRkltYWdlUmVh
ZGVyKCkgPSBkZWZhdWx0OwogCi1ib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGF2aWZEZWNv
ZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKICAgICAgICAgcmV0dXJuIGFsbERhdGFSZWNlaXZlZCA/
IG1fZGVjb2Rlci0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBB
VklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBVklGSW1hZ2VS
ZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2Rl
ckZyYW1lJiBidWZmZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
JiBkYXRhKQordm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUlu
ZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZp
Zi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXggNDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdi
YWE4NjBjZmNjYjViYTRiMy4uODVhY2IxN2NiY2ZjNTg4NWQ2YWM1NTI1YzdiNWM5ZWZmYzU4YzY2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZp
Zi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoK
ICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYpOwogICAgIH5B
VklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAg
dm9pZCBkZWNvZGVGcmFtZShzaXplX3QgaW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUm
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpOworICAgIGJvb2wg
cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwor
ICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZy
YW1lJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgc2l6ZV90IGltYWdlQ291bnQoKSBjb25z
dDsKICAgICBkb3VibGUgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVh
ZGVyLmgKaW5kZXggYmQ0MzBlOGE4YmVhMmM4MTZiMmM1MjJiZjViYTc4ODQ2YzM4ZTBmZi4uYzMx
NDEzNDc5ZDQzMjUxYjI3OGVkZDY3YTQ0MTkxNmYwODAyMTlkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVh
ZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQk1QSW1hZ2VSZWFkZXIgewogcHVibGljOgog
ICAgIC8vIFJlYWQgYSB2YWx1ZSBmcm9tIHxkYXRhW29mZnNldF18LCBjb252ZXJ0aW5nIGZyb20g
bGl0dGxlIHRvIG5hdGl2ZQogICAgIC8vIGVuZGlhbm5lc3MuCi0gICAgc3RhdGljIGlubGluZSB1
aW50MTZfdCByZWFkVWludDE2KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcmVhZFVp
bnQxNihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAg
ICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClb
b2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQp
CisgICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQzMl90IHJlc3VsdDsKICAg
ICAgICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCA0KTsKQEAgLTY5LDcg
KzY5LDcgQEAgcHVibGljOgogICAgIEJNUEltYWdlUmVhZGVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVy
KiBwYXJlbnQsIHNpemVfdCBkZWNvZGVkQW5kSGVhZGVyT2Zmc2V0LCBzaXplX3QgaW1nRGF0YU9m
ZnNldCwgYm9vbCB1c2VzQW5kTWFzayk7CiAKICAgICB2b2lkIHNldEJ1ZmZlcihTY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lKiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7IH0KLSAgICB2b2lk
IHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9k
YXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAKICAgICAvLyBEb2VzIHRoZSBhY3R1YWwgZGVjb2Rpbmcu
IElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgZGVjb2Rpbmcgb25seQogICAgIC8vIHByb2dyZXNzZXMg
YXMgZmFyIGFzIG5lY2Vzc2FyeSB0byBnZXQgdGhlIGltYWdlIHNpemUuIFJldHVybnMKQEAgLTI3
Miw3ICsyNzIsNyBAQCBwcml2YXRlOgogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIG1f
YnVmZmVyOwogCiAgICAgLy8gVGhlIGZpbGUgdG8gZGVjb2RlLgotICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxjb25zdCBT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwgcmVw
cmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3QgbV9k
ZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCAxMDgyZmRmMGRmZjIzOTFl
NTY1MzBhNDFmODdiYTQzOTgyMzI3NTM1Li5kNmJmZmMxMmIxZTFlNDZkNDNkMDQ3ZWRkYzJhZDk0
YjVjODU1M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9Cisg
ICAgdm9pZCBzZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkgeyBtX2Rh
dGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90
LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVu
c2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAgICAg
c2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8Y29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgYm9vbCBtX3BhcnNlQ29tcGxl
dGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGY0MjNjY2M5Y2Ux
MjdlZjdhZTc2YzkxMjgyNGFiZTg3NzNmYjcyZDEuLjQzNTAzNThmM2JlZWI5ZjI0NTg2M2NlN2Uw
MGFlODI3NTBkZTc0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzE3
LDcgKzMxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9ieXRlc1RvU2tpcCA9IHN0ZDo6bWF4KG51
bUJ5dGVzIC0gYnl0ZXNUb1NraXAsIHN0YXRpY19jYXN0PGxvbmc+KDApKTsKICAgICB9CiAKLSAg
ICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgb25seVNpemUpCiAgICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkg
PSBvbmx5U2l6ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIu
Y3BwCmluZGV4IDIwNDczZjBlZWViYjU2YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5MDc0NDIuLjkzM2Ew
MTNmMjFjNDdlOWNiNzk5ZWI3MmFiYjdlMzhjZmFiMWE2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
MjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEpQ
RUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAgIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOworICAgICAgICBjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGE7CiAgICAgICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgfSByZWFkZXIgPSB7ICptX2Rh
dGEsIDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyNzA5YjdjNjhiZjUz
MGQxOTVkNzY2NmEzZDZhY2U1MDAxM2JiZTM0Li40MDQ5NjNhNDc5YzA1ZmMwYzZkNWMzMGViN2Jl
Yzc4MTU2OWFiOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZWFkT2Zmc2V0ID0gMDsKICAgICB9CiAKLSAgICBi
b29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCisgICAgYm9vbCBkZWNvZGUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0QXRG
cmFtZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IHNpemVPbmx5OwogICAg
ICAgICBQTkdJbWFnZURlY29kZXIqIGRlY29kZXIgPSBzdGF0aWNfY2FzdDxQTkdJbWFnZURlY29k
ZXIqPihwbmdfZ2V0X3Byb2dyZXNzaXZlX3B0cihtX3BuZykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdl
RGVjb2Rlci5jcHAKaW5kZXggYjFiZWM1NWU3OGM0MzQ4MDFjMjU0YWNlMGRmNTk5MzFhMzZiNzRi
ZC4uNzcyZTgzMjY2ZTIzMGViNmRmZjdkYzFlZjdkYjU1MjM5NjNiZmIwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXRUJQSW1hZ2VE
ZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ICAgIC8vIFRoaXMgY2FuIGJlIGV4ZWN1dGVkIGJvdGggaW4gdGhlIG1haW4gdGhyZWFkICh3aGVu
IG5vdCB1c2luZyBhc3luYyBkZWNvZGluZykgb3IgaW4gdGhlIGRlY29kaW5nIHRocmVhZC4KICAg
ICAvLyBXaGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0aHJlYWQsIGEgY2FsbCB0byBzZXRE
YXRhKCkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0YQogICAgIC8vIHRo
ZSBXZWJQRGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQgc3Rh
dGUsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4KLSAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKKyAgICBS
ZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CiAgICAgV2Vi
UERhdGEgaW5wdXREYXRhID0geyBwcm90ZWN0ZWREYXRhLT5kYXRhKCksIHByb3RlY3RlZERhdGEt
PnNpemUoKSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVt
dXhlciogZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IGJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQyYmU0ZTJi
ZDExYWE4NDMuLmRjYWM1OTk3YTYxMzVkMmFiNzU5YTdhZDJlYmIwNDM1MmQ1MTRhNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiwxMSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVz
b3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+
UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVD
bGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lk
IFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgYnVmZmVyLmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIp
IHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIsIGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGM0ZjA1NDg1ZjI4NzBiMTE2
ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUuLmU0NDJjOTczNGMxMTk4NDkwYTFjNmNhYzU3NzI1ZmQ1
MTk2YjNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTQ0LDEzICs0NCwxNCBAQCBPQkpDX0NMQVNTIE5T
Q2FjaGVkVVJMUmVzcG9uc2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUHJvdGVjdGlvblNwYWNl
OwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9s
aWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY1LDkgKzY2LDkgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9u
ZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0Jl
U2VudCovKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgq
LykgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKTsKLSAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0
aCovKSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOworCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCA0YzA0MjEwYzVhNTEzYWMzZjU0NzE0NmQ5Zjg1YzgyYmQ4ODEz
Nzc2Li4zMGI0YmIwZmRhZWY3YWUyY2M3NGFjNjA5ZjdiMDA5OTdlNWE2ZGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmNwcApAQCAtNzEsOSArNzEsOSBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUgog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQordm9pZCBTeW5jaHJv
bm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKIHsKLSAgICBt
X2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
eW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCmluZGV4IDY4MzhlOWQ4Y2Y0Mzc5NmQyZjM5NGJh
MWY1NGYwOWQwYjY3ZThhYmQuLmM0Y2I3MmRjN2E2NTVmZDM2OTZhMzMzZmUwNWNkZWQ2Mjk3NmFm
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25v
dXNMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5
bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVy
TWVzc2FnZVF1ZXVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN5bmNocm9ub3VzTG9h
ZGVyTWVzc2FnZVF1ZXVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTeW5jaHJvbm91c0xv
YWRlck1lc3NhZ2VRdWV1ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTeW5jaHJv
bm91c0xvYWRlck1lc3NhZ2VRdWV1ZSk7IH0KQEAgLTY2LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3Bv
bnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwg
aW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCAvKmVuY29kZWRE
YXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
ICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9y
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tCmluZGV4IGZjMjcyNTQwODkyYjhlMmNkNzdkZThmNmQ5ZTU0YThjOGI1OTdm
NjEuLjE5ODE0YTM2NWM5ZjY2MWEyMWMyMjlhZGJkMDQ2MTFjMjA5NDdlNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVy
YXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2Vi
Q29yZU5TVQogCiAgICAgICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIg
PSBzdGQ6Om1pbihidWZmZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUluZGV4ICsgMSk7
CiAgICAgICAgICAgICBieXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXI7Ci0g
ICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpTaGFyZWRCdWZm
ZXJEYXRhVmlldyhidWZmZXJWaWV3LCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcikuY3JlYXRl
U2hhcmVkQnVmZmVyKCldOworICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNl
aXZlZERhdGE6U2hhcmVkQnVmZmVyRGF0YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNGcm9tVGhpc1Zp
ZXdUb0RlbGl2ZXIpLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKV07CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsKICAgICAgICAgICAg
IFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmlj
cyB7IH1dOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisgICAgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
ICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAg
ICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZm
ZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQo
YnVmZmVyKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmlu
aXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCBm
OTA5NmVlMmU5ZjI0MmZmMDRkNzA1YzJhYTEwOTNhNTVlNTczNWRiLi5lYTRhOWJmMjk3ODI5ZWJk
MDI5MTQ3NmNiZjhhN2U1NDk0NzIxMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtMTU4
LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lv
biA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcp
Ynl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0
ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxl
dGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToobnVsbGFi
bGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CistICh2b2lkKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4mJilkYXRhOwogLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBy
ZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5k
bGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4m
Jiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVk
V2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQp
cmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJy
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggNWUyZThlOGQ5ZDc2NjcyYTI0MTRmNzZm
NWMwOGYyNTllMDI5ZjUwNC4uM2M4YmUwOGMyOTM0ZTU0ZGEzYjc0OWNhNmRhMzRlZGE5NmRjOWI4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNo
ZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVu
c2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmlu
aXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CkBAIC02NTIsMTMgKzY1MiwxMyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwog
ICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNl
OnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6
OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3Rh
c2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFttX3Rh
c2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpXVEZNb3ZlKGJ1ZmZlcildOworICAg
IFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpidWZmZXIuY3JlYXRlTlNE
YXRhKCldOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6cmVk
aXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC05MzEsMTUgKzkzMSwxNCBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwogICAgIHJldHVy
biByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRSYW5nZSku
aXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSByZWNlaXZlZERhdGE6KFJldGFpblB0cjxOU0RhdGE+JiYpZGF0YQogewogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwog
ICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRh
aW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNE
YXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAgICAgIHN0
cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOworICAg
ICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IFtkYXRhIGxlbmd0
aF07CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0g
KGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRl
bGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCi0gICAgICAgICAg
ICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0
KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdl
dCgpIGRpZFJlY2VpdmVEYXRhOm5zRGF0YS5nZXQoKV07CisgICAgICAgICAgICBbZGF0YURlbGVn
YXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBk
YXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2Vp
dmVEYXRhOmRhdGEuZ2V0KCldOwogICAgIH1dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXgg
ZjMyM2FmMjY0MDE2YjY2MzkzMTFhYzIzMjQ2ZWM1ZWQ4MGEzOTU0NS4uM2JkMmNjNzQyODZlYzQ2
Nzg2NDAyNDhjNWUxY2ZlY2M1YTAyNjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMjQzLDcg
KzI0Myw3IEBAIGJvb2wgQ3VybENhY2hlTWFuYWdlcjo6Z2V0Q2FjaGVkUmVzcG9uc2UoY29uc3Qg
U3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiBq
b2IsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBDdXJsQ2FjaGVNYW5h
Z2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI1
NSwxMSArMjU1LDExIEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCogZGF0YSwKICAgICAgICAgaWYgKGl0LT52
YWx1ZS0+Z2V0Sm9iKCkgIT0gJmpvYikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBp
ZiAoIWl0LT52YWx1ZS0+c2F2ZUNhY2hlZERhdGEoZGF0YSwgc2l6ZSkpCisgICAgICAgIGlmICgh
aXQtPnZhbHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKQogICAg
ICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsKIAogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9IHNpemU7CisgICAgICAgICAgICBtX2N1
cnJlbnRTdG9yYWdlU2l6ZSArPSBkYXRhLnNpemUoKTsKICAgICAgICAgICAgIG1fTFJVRW50cnlM
aXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0KHVybCk7CiAgICAgICAgICAgICBtYWtlUm9vbUZvck5l
d0VudHJ5KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCmluZGV4IGM5ZTI5ZDgwOTcwYzQwNDZl
Nzk2MTYyYmQ5ODMyOTExYjZkZWU2OGMuLmI2NWI5NjNiNjhlNmE2OGQ5ODE5M2FhZjczZjEwODAz
ZDk3ZmNkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNwb25z
ZSYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmLCBSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYs
IGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7IC8vIFNhdmUgZGF0
YQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSYpOwogICAgIHZvaWQg
ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IDM0OTQ0NTkyNTRhYzkz
ZmMxOWNiMTIxNTBhNjFiYzJiY2VkMDJkNmUuLmFhZjBjOGQ5NDA3MDU1ZDY4YTA1NWZiMzUwNzk2
N2RlNGMwMDg2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDdXJsRG93
bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxS
ZXNwb25zZSYmIHIKIH0KIAogCi12b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZm
ZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApA
QCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX2xpc3RlbmVyKQotICAgICAgICBtX2xpc3RlbmVyLT5kaWRSZWNlaXZl
RGF0YU9mTGVuZ3RoKGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9saXN0ZW5lci0+ZGlkUmVj
ZWl2ZURhdGFPZkxlbmd0aChidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsRG93bmxvYWQ6
OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgTmV0d29ya0xvYWRNZXRyaWNz
JiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERv
d25sb2FkLmgKaW5kZXggY2RlNDQ0NTc3NWY3NDQyMzMwNTMwYjY1YjEzNTdiYTZiZmQ5YmI4MS4u
YTEyMDc1ODM0OTNmNzgzMzc1NmQzYzQ5ODdjZjVjOTVkZmE5NzljNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaApAQCAtMzgs
NiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VIYW5kbGU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxEb3du
bG9hZExpc3RlbmVyIHsKIHB1YmxpYzoKQEAgLTcyLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICBS
ZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1
bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERpZFJlY2VpdmVS
ZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1
ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29t
cGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwg
Q2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5k
ZXggMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZkN2QyZjI5NmUzYTM0ZC4uZDFlNTg2MjRhYWVl
MmVjZTgxMjlkZDM0ZWE5ODY2MjZlNmNkZjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApA
QCAtMTE5LDEyICsxMTksMTIgQEAgQ3VybE11bHRpcGFydEhhbmRsZTo6Q3VybE11bHRpcGFydEhh
bmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnMKIAogfQogCi12b2lk
IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBz
byBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRl
bnQoKSkgeyB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA5YTFhMWJiZDE5MzhhMTRmNjlm
Y2NlZTNmMGY4OWI5N2E0YTIxODc0Li41YzA4YmNjNWViM2U0YmJjYzAyOWI0NzY3ODY4ZjQzZTJm
OTVjMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50OwogY2xhc3MgQ3Vy
bFJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDdXJsTXVsdGlwYXJ0SGFu
ZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+Q3Vy
bE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKCk7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAppbmRleCBjODEzODg2YThkNWM1ZmE2YzEyZDE0MTMz
MTkxMDFhZjI1MDJhMmFkLi5kZjc2MzdkZTlkOWZmMmI2YjEwODU1ZDBjNTc3MTI1NTM0YjJhNmVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGll
bnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRp
cGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChjb25zdCBTaGFy
ZWRCdWZmZXImKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZUNs
aWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYmFjYjJiNTUwYjI4NDEzMWQxYWMyMGFhNjYzODg2ZmUy
MmZlN2Y5OC4uZDBlZjBlNzExNjJiNTM2M2FkNDI1NDE3ZDg1ZWM3MjM4ZjNmNjJiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVh
ZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwgaGVh
ZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogCi1zaXplX3QgQ3Vy
bFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC00MTEsNyArNDExLDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAg
IHJldHVybiBDVVJMX1dSSVRFRlVOQ19QQVVTRTsKICAgICB9CiAKLSAgICBhdXRvIHJlY2VpdmVC
eXRlcyA9IGJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gcmVjZWl2ZUJ5dGVzID0gYnVmZmVyLnNp
emUoKTsKICAgICBtX3RvdGFsUmVjZWl2ZWRTaXplICs9IHJlY2VpdmVCeXRlczsKIAogICAgIHdy
aXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGJ1ZmZlcik7CkBAIC00MjAsOCArNDIwLDgg
QEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIGlmIChtX211bHRpcGFydEhhbmRsZSkKICAgICAg
ICAgICAgIG1fbXVsdGlwYXJ0SGFuZGxlLT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOwogICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQpIG11dGFi
bGUgewotICAgICAgICAgICAgICAgIGNsaWVudC5jdXJsRGlkUmVjZWl2ZUJ1ZmZlcihyZXF1ZXN0
LCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0gUmVm
IHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVxdWVzdENsaWVudCYgY2xp
ZW50KSB7CisgICAgICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0
LCBidWZmZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00NDQsMTYg
KzQ0NCwxNiBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFy
dChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaGVhZGVycykKICAgICBpbnZva2VEaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWNlaXZlQnl0ZXMgPSBidWZmZXIt
PnNpemUoKTsKKyAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci5zaXplKCk7CiAKICAgICBp
ZiAocmVjZWl2ZUJ5dGVzKSB7Ci0gICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQp
IG11dGFibGUgewotICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlQnVmZmVyKHJlcXVl
c3QsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFJlZiB7
IGJ1ZmZlciB9XShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQmIGNsaWVu
dCkgeworICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0LCBidWZm
ZXIpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IGE2ZmIzMTU3NjZiYTVjMmYzZWEz
MmI5ZWY1MWViMDAzZThjYjg5ZDAuLjkyYjc0Njk3YmMzMTc1Y2UwY2RhZGYxNTFmYTI1NDNhMDNl
MTE5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5oCkBAIC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICBDVVJMKiBzZXR1
cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6
ZV90LCBzaXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKLSAg
ICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwor
ICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29t
cGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFu
c2ZlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGll
bnQuaAppbmRleCAzNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2YWU3Li43MzAz
M2YwZWY0ZWI0ZGYyMWFiNzY0NjNjYzM5ODE5YjI4Njc4NDliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaApA
QCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxSZXNwb25zZTsK
IGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJs
UmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3Qm
LCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxS
ZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3Vy
bERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmlj
YXRlSW5mbyYmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
aW5kZXggMzA1ZDRlNWM5ZmMyNzA3NzU3ODdiMGY5YTkxOTc5YzA4ODg5YThhNi4uMzg5N2UwMWM2
ZDA3NjZkYWNmM2UxOWIyMzczMzZmNWI1NWNlNTI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTYgKzE0MiwxNSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0
LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNl
aXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5k
aWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZN
b3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgQ3VybENhY2hlTWFu
YWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlcik7CisgICAg
Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBidWZmZXIsIGJ1ZmZlci5zaXpl
KCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxl
dGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCBkYWYwYTU5YTRlNTg2ZDcxMTRhYmI0ZTVlZjlj
NTRmNmE4YmVmYzcwLi4wMjRiYzRlOWFlMzFkZjI1YThmOWI3MGNiYTI4MWZhY2VhYzhjZjAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlSGFu
ZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMg
Q3VybFJlcXVlc3RDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1NCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1
ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIGZpbmFsOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZm
ZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7Cisg
ICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25zdCBTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdv
cmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1
cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFt
LmNwcAppbmRleCBjMDcwNGYwY2RkNjQ0MjM3M2Y3YjcwYmZlNjE1MzliZjViMzdkNjI1Li4zNjY1
OGY5MWRjOWQ2NzIzMGIyMzllNDk3YzAwMDBhYzYyYWFlOTgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCkBAIC05LDcgKzks
NyBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCiAgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDdXJsU3RyZWFtLmgiCiAKICNpbmNs
dWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKIAogI2lmIFVTRShDVVJMKQpAQCAtMTI5LDEw
ICsxMzAsMTAgQEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUoKQogICAgIGlmICghbV9j
dXJsSGFuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlY2VpdmVCdWZmZXIgPSBt
YWtlVW5pcXVlQXJyYXk8dWludDhfdD4oa1JlY2VpdmVCdWZmZXJTaXplKTsKKyAgICBWZWN0b3I8
dWludDhfdD4gcmVjZWl2ZUJ1ZmZlcihrUmVjZWl2ZUJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBi
eXRlc1JlY2VpdmVkID0gMDsKIAotICAgIGF1dG8gZXJyb3JDb2RlID0gbV9jdXJsSGFuZGxlLT5y
ZWNlaXZlKHJlY2VpdmVCdWZmZXIuZ2V0KCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNl
aXZlZCk7CisgICAgYXV0byBlcnJvckNvZGUgPSBtX2N1cmxIYW5kbGUtPnJlY2VpdmUocmVjZWl2
ZUJ1ZmZlci5kYXRhKCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNlaXZlZCk7CiAgICAg
aWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykgewogICAgICAgICBpZiAoZXJyb3JDb2RlICE9IENV
UkxFX0FHQUlOKQogICAgICAgICAgICAgbm90aWZ5RmFpbHVyZShlcnJvckNvZGUpOwpAQCAtMTQz
LDggKzE0NCw5IEBAIHZvaWQgQ3VybFN0cmVhbTo6dHJ5VG9SZWNlaXZlKCkKICAgICBpZiAoIWJ5
dGVzUmVjZWl2ZWQpCiAgICAgICAgIGRlc3Ryb3lIYW5kbGUoKTsKIAotICAgIG1fc2NoZWR1bGVy
LmNhbGxDbGllbnRPbk1haW5UaHJlYWQobV9zdHJlYW1JRCwgW3N0cmVhbUlEID0gbV9zdHJlYW1J
RCwgYnVmZmVyID0gV1RGTW92ZShyZWNlaXZlQnVmZmVyKSwgbGVuZ3RoID0gYnl0ZXNSZWNlaXZl
ZF0oQ2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURh
dGEoc3RyZWFtSUQsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKTsKKyAgICByZWNlaXZlQnVmZmVyLnJl
c2l6ZShieXRlc1JlY2VpdmVkKTsKKyAgICBtX3NjaGVkdWxlci5jYWxsQ2xpZW50T25NYWluVGhy
ZWFkKG1fc3RyZWFtSUQsIFtzdHJlYW1JRCA9IG1fc3RyZWFtSUQsIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVjZWl2ZUJ1ZmZlcikpXShDbGllbnQmIGNsaWVudCkgewor
ICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlcik7CiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0
cmVhbS5oCmluZGV4IDRmNTliMjBlOGRiMjc5MDM5OTRiMzMxNTRjZTY0YjA5OTRmM2EwYmEuLmU4
YTMyYzI2NDYxYjQzMDhlYTIyN2M2ZGY4Yzk3MjQzOTkwNWQwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaApAQCAtOSw3ICs5LDcg
QEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwogICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxT
dHJlYW1TY2hlZHVsZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTb2NrZXRTdHJlYW1F
cnJvcjsKIAogdXNpbmcgQ3VybFN0cmVhbUlEID0gdWludDE2X3Q7CkBAIC00Niw3ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKEN1cmxT
dHJlYW1JRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoQ3VybFN0cmVh
bUlELCBzaXplX3QpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1
cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZmZXImKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwgQ1VSTGNvZGUp
ID0gMDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCBiODA0ZmRlMDk3
M2JiZmIyODMzMWNmN2MzYTFmMjBiMDQzZTc0ZmU4Li4zNjZiMDU5YzAyODA0YjE5OWM4ODZhOWMy
YzY3MjczZjkyNGYyZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTU5LDkgKzU5
LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZElu
dGVybmFsKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRh
KCk7CiAKKyAgICAvLyBDdXJsU3RyZWFtOjpDbGllbnQKICAgICB2b2lkIGRpZE9wZW4oQ3VybFN0
cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90
KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFt
SUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChDdXJsU3Ry
ZWFtSUQsIENVUkxjb2RlKSBmaW5hbDsKIAogICAgIGJvb2wgaXNTdHJlYW1JbnZhbGlkYXRlZCgp
IHsgcmV0dXJuIG1fc3RyZWFtSUQgPT0gaW52YWxpZEN1cmxTdHJlYW1JRDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggNGI5NDkxYzExNTQzZjJiNjBmMTJkMzZl
OWU2YTBjYmFhZTM0YTcyZS4uYThmNTdhNzJkMGVhY2NhNzc1NWJlODRmY2FhMWM5YmYxMDk1OGMw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiRGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQuaCIKICNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCkBAIC0xMDQsMTIgKzEw
NSwxMiBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFNlbmREYXRhKEN1cmxTdHJl
YW1JRCwgc2l6ZV90IGxlbmd0aCkKICAgICBzZW5kUGVuZGluZ0RhdGEoKTsKIH0KIAotdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIGlmIChtX3N0YXRlICE9IE9wZW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLCBsZW5ndGgpOwor
ICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZEZh
aWwoQ3VybFN0cmVhbUlELCBDVVJMY29kZSBlcnJvckNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50LmgKaW5kZXggMWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUzMzlkZmQyYzNiNWRlYzI1Ny4u
MGZlNjVhMjllNjM2MTZkYjQyZjdjOWVhMWQxODUyMjFjMjAwNDBjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPExl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgp
IHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDMxNWUwNjUxNTMwZGNkYjAyODAxNjU0
Yjc1N2Q4MTQ3M2MyMGZkMzAuLmFlNzE1NWVjZWYzNWQzZTE4ODhkOTE2NTY0NTdlMzgxMTU5ZGY0
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTMwMCw3ICszMDAsNyBAQCAtICh2b2lkKWNvbm5lY3Rp
b246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAq
KWRhdGEgbAogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NzkzCiAgICAgICAgIC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFu
eSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQog
ICAgICAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93
IHRyYW5zZmVyIHNpemUuCi0gICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1
ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKKyAg
ICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKICAgICB9OwogCiAgICAgW3NlbGYgY2Fs
bEZ1bmN0aW9uT25NYWluVGhyZWFkOldURk1vdmUod29yayldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMDhkMDU3YmJiNWYxN2MyMDQ1YmZmOTA2ZmY1YWRh
ODVmMTA0MjkzMC4uZjdmMjY2Y2U4ZDgxOTEwNjBjODU3YTJmOGE2YWQ5ZmRlYmQ4MTgyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC01NDYsOCArNTQ2LDgg
QEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogICAgICAgICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAv
LyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQo
KS4KICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1J
TUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExv
YWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1l
bnQKLSAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewot
ICAgICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERh
dGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgZGF0YSgpLT5mb3JF
YWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAg
ICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShidWZmZXIp
OwogICAgICAgICB9KTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndy
aXRlcigpLmVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5jcHAKaW5kZXggODJhMmE4YzRiMThhY2NlNzk4YjI3YzJjOGQwMDk1ODlmZjc1
Y2JhOC4uNGU4YWI3ODFhNDA2MWFiMThjNTAzMzczYmRhMzhmNmM1NWQ4YTAyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMTE1
LDEyICsxMTUsMTIgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFIKICAgICAgICAgbV9lcnJvck9j
Y3VycmVkID0gdHJ1ZTsKIH0KIAotdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJG
b250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBib29sKQogewogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChi
dWZmZXIpOwogfQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBkYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5
OGQ5OWI1MTc2YTM5Li43Y2JhYThlNTUxMGM4YzRmY2FmMmViOTJjNmY3M2IzZDJhMTJjNjAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAg
LTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzV29ya2VyRm9udExvYWRSZXF1ZXN0
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImLCBib29sKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAKaW5kZXggYmY1YTQ0ZmUzNDhkMmZmY2U5MTZmYjE5NDkxNWU2N2JmZGE5YWVjMS4u
Y2QyNmVjZDZhMzdhN2VkMzlmZjcxZWRkYTM1ZThlZmE5MGIzN2M0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBA
IHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKK3ZvaWQgV29y
a2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgYm9vbCB1c2VTdHJMZW4pCiB7CiAgICAgaWYgKG1fZmFpbGVkKQogICAgICAgICByZXR1cm47
CkBAIC0yMTIsMTMgKzIxMiwxMSBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgICAgIG1fZGVjb2Rl
ciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0Il9zLCAiVVRG
LTgiKTsKICAgICB9CiAKLSAgICBpZiAoIWxlbikKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmIChsZW4gPT0gLTEpCi0gICAgICAgIGxlbiA9
IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKLSAgICBtX3Nj
cmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CisgICAgc2l6ZV90IGxl
biA9IHVzZVN0ckxlbiA/IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZm
ZXIuZGF0YSgpKSkgOiBidWZmZXIuc2l6ZSgpOworICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBsZW4pKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBl
YWFiZTFlYTVkMTNiMzNmOWMzY2M2NmRkNDk1NTdlYjY5ZTM3ZWZjLi4wYmMzYTAyNWIzNjc5ZTI1
NjMwODYyNGVlZWJhODlkY2NjNDVjODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQogCiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sIHVzZVN0ckxlbikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCBmYmEzNjMyMmIyOWE2ZDViNzk3YjM5ZWRjM2MzZDE3
MTI0YjNiNWJjLi5jZTM3MDk2ODlkOWYwOTIxZTA5MDNhMDM3N2RiMjY4YTU0NTBiMmI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVG
b3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2goKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA5YjEx
MmI5ZGIyY2Q4NGQwMzJmNTlkYWZhOGU4ZTM4ZTA3MGU1M2Y3Li5kYzNhZWE4Y2FkOWQwOTZiNDJi
Y2E2NWIyNjEyMzJmMTM3NDNkMWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKQEAgLTEwMzQsNyArMTAzNCw3IEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlRGVjb2RlcigpIGNvbnN0CiAgICAgcmV0dXJuIFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJVVEYtOCIpOwogfQogCi12b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQordm9p
ZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGJvb2wgdXNlU3RyTGVuKQogewogICAgIGlmIChtX2Vycm9yKQogICAgICAgICByZXR1cm47
CkBAIC0xMDUyLDE3ICsxMDUyLDE2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgaWYgKHVzZURlY29kZXIgJiYg
IW1fZGVjb2RlcikKICAgICAgICAgbV9kZWNvZGVyID0gY3JlYXRlRGVjb2RlcigpOwogCi0gICAg
aWYgKCFsZW4pCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChsZW4gPT0gLTEpCi0gICAgICAgIGxlbiA9IHN0cmxlbihyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKSk7CisgICAgc2l6ZV90IGxlbiA9IHVzZVN0ckxlbiA/IHN0cmxl
bihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0YSgpKSkgOiBidWZmZXIu
c2l6ZSgpOwogCiAgICAgaWYgKHVzZURlY29kZXIpCi0gICAgICAgIG1fcmVzcG9uc2VCdWlsZGVy
LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKKyAgICAgICAgbV9yZXNwb25z
ZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGxlbikpOwog
ICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChkYXRhLCBsZW4pOworICAgICAgICBtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlci5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICBpZiAoIW1fZXJyb3Ip
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMmQxM2JlYzM5NDY0NDhiOWI0
ZjkyNWQzMmJkODZiYTJkODAzNzc1YS4uNmJmMTlmODJiZDJmZjc2NzA3ZGE0NTcxNDc1MDdlOTkx
ZDI0NjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTE2Miw3ICsxNjIs
NyBAQCBwcml2YXRlOgogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKICAgICB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJl
c291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlzRG9uZShib29sKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmNwcAppbmRleCA2MTdmNDc2ODk1NjQyZGVjMjMyNTRiNTQwZWU4MTkxMWFj
NGEyZGY2Li43ZjUxMmM2YzExYThlNzEwOGNmMDA2MmI1ODRkMjdiNTg5MDhkMThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTk2LDEwICs5NywxMCBAQCB2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc1RvQmVTZQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVz
U2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNl
OjpkYXRhUmVjZWl2ZWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQg
UmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQo
KnRoaXMsIFdURk1vdmUoZGF0YSkpOworICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0
aGlzLCBkYXRhKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjphY2Nlc3NDb250cm9s
Q2hlY2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAppbmRleCA1Yjdh
N2UyYTc0MjQ0MzJkODZjYjI4YTFiZTcxNzE4YTE2NzM3NWU3Li45NTEwNmY2NzIyNzNiNDVmMGEy
NGE0N2ExYTJiZGQxNDA5ZTBmNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNTcsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKTsKICAgICB2b2lk
IHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkYXRhU2VudCh1aW50NjRfdCwgdWludDY0
X3QpOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImKTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKaW5kZXggNzFmZDAyMjI5YmJiMWM1NzMy
NmZkZmNmZTI2YzExZjc2MWFiY2Y3Mi4uMDU0Yjg5M2UxMTExMGRjZjlhNzAwMjUyZjRmNzk1YjAx
YTU4N2I5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZhaWxMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuY3BwCmluZGV4IDk1ODYwOTFlYTAwNDFiNmYxNTg2OWQ0MmJiZGE3MjQzMjk3Njkw
ZWMuLmJhOGQwNDhmNjVkYzMzOTg0ZjBjZDQ3NjM1YWI5MTAxODc5YmQzYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQordm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpCiB7CiAgICAg
Q09SU19DSEVDS0VSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyLmgKaW5kZXggNTA1YTRlZmU1NzFkNDg5ZTUwYTk4OGJlYjgxODViN2ZlYWIzZGIxMC4u
MGNiMzE1ZmQ4ZmY1MzE5OTE1N2RlNzhmODQ1MmQ3MWM0ZjVlMjk4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5oCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50
NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBm
aW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCmluZGV4IDRiOWVlNTc0YjkyYzdjMzcxN2E0
YmMyODE5YTZiZTNhMTkwNjU3MTUuLmY0NzllMDkwMmIyMTc5Mjk1NWQzNzY4MTRiMjFjODlmZjU1
ZGI1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2Uo
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3Rh
bEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IDhjMTA0ZDgxNjBiN2FhZmQwOTk3MTVkYTZkNGU2
ZjdjNDYzN2ZhMDguLjYwYjY5YTkzNmJiNzhkZjI1MTA3NDljNzU0ZmU2YWEyMjkzZmUwMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNTQs
MTEgKzI1NCwxMCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdAogICAgIG1fY2xpZW50LmdldCgp
LmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgdGhlIGVuY29kZWQgZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVj
b2RlZCBkYXRhIGxlbmd0aC4KLSAgICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsKLSAgICBt
X2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgc2l6ZSk7Cisg
ICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGJ1ZmZlci5zaXplKCkp
OwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmgKaW5kZXggZTZhNzYxMTU5NjJiOTY1OWU3YmZlNzhjNmY0ZGM2ZjUzMTJiM2NiZS4uMGU0YzFh
ZTQ5MjNjMzM3ZjVjZjliMGE0MDhiNWE4ODIyOWY1OTY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1
aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5k
KSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAppbmRleCAzNDhjZmZiOWU4ZTI1
ZWU4M2JiYjM5YTAyY2QzY2Y2ZDI4NTRkMzllLi44YTI4NTgyNjExM2Y5ZDhlZTY2MGRiNjg4YjNj
NTM5M2ZmOTdiMmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENsaWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAz
NmFjYzYzMTQ1ZjQwNWIxOTU1ZDMzNTQwZGFhNzA4ZjlhNjI5MzQxLi5lNmZkMmFjNzBlYzdlMGU3
NTkwYWRlMjcyZTE0MjdmY2U5NmRkZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NjMsMjkgKzg2Mywy
OSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZERpZFJlY2VpdmVSZXNwb25zZVBv
dGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleAogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkKLSAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9H
KCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwotICAgIG1fbnVt
Qnl0ZXNSZWNlaXZlZCArPSBidWZmZXItPnNpemUoKTsKKyAgICAgICAgTE9BREVSX1JFTEVBU0Vf
TE9HKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX251
bUJ5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLnNpemUoKTsKIAogICAgIEFTU0VSVCghbV9jYWNoZUVu
dHJ5Rm9yVmFsaWRhdGlvbik7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewog
ICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0
YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qg
c2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsK
LSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXpl
KCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6
ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlcik7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsK
ICAgICB9CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47
CiAgICAgLy8gRklYTUU6IEF0IGxlYXN0IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAt
MSBmcm9tIHRoZSByZXNvdXJjZSBoYW5kbGUuCi0gICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5n
dGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7CisgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGgg
PSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoIDogYnVmZmVyLnNpemUoKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgewotICAgICAg
ICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJl
ZERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFM
ZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJ
Zk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMjczLDcgKzEyNzMsNyBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgbV9idWZmZXJl
ZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzZW5kQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVu
Y29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBj
ZjEwY2YwZTcxYTFiYzY1NTQwZTg3ZDZiYTRjMWI5Yzg1NmMwYTFkLi44MTdhZWYyNmM4MzZjMzRh
N2Q0NGVlN2NjOTVlZGQ5YTI5OGQ2YTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAg
ICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IGZpbmFsOwogICAgIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGZpbmFs
OwpAQCAtMTkzLDcgKzE5Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0QnVmZmVyaW5n
VGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgYnVmZmVyaW5nVGltZXJGaXJlZCgpOwotICAgIHZv
aWQgc2VuZEJ1ZmZlcihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVu
Y29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIHNlbmRCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2
b2lkIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRi
b3hFeHRlbnNpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
CmluZGV4IGJjMmMzMzdlNGVlZTAxYWY4M2UxMzY3MjMxN2E5YTllYWJjN2M2ZjguLmYwZWZkMDRi
YjJlMThmNmYzY2JjMTYzZmFmMjNkYTA0NjZiZWU1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRl
ZExlZ2FjeVQKICAgICBkaWRGaW5pc2goeyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xv
YWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQordm9pZCBQ
aW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBQSU5H
X1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IGU3ODA4ZDhlNjU1
ODJmNzkzODg4MjhkNTE3NThjYjE5M2NmNTVmYzcuLmIyMjVjNDdiOTRhZmEwYjQ0ZWRjMjY3MGRm
YzU4YWQ3YWZjOTE0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgK
QEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290
aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVn
b3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVp
bnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9j
a2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
ZWNvbm5lY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suY3BwCmluZGV4IDE3ZDQ3OTA3YTNmNmVlNTJiZTY1MDFkMWRhYjBjYTYwNzUxZDZiMGIu
LmFhYWUyYmZiZGY4M2EzOWFjZWMwNjNmZWIyNDQ2MTZkYzg0OGVkYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3
IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5
QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QcmVjb25uZWN0VGFzay5oCmluZGV4IDg1ODA4ZTEyMWI2OGNhOGI3M2UyNTE4ZDE5M2Fi
Mzk1ODFlYWQxZTcuLjhjNmIwZGVlZDY2YzUxMDE5YmU4OTg0ZWQ1Yjg3ZTBjMWQ3OTBmODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKQEAgLTU1
LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZp
bmFsOwogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCmluZGV4IDI1ZDRlMzdmOTQ1NGJlZTMyZjA0ZDhjYzhj
NDcxZDVkM2Y3ZWQ4MmIuLjhjOGRjMzZiMWU1MzkzOGY4MWViNGFiYWFmZjAxOTBmMmI1NGVkYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIgpAQCAtMTczLDcgKzE3NCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckRv
d25sb2FkVGFzazo6c3RhcnQoKQogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlv
bihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50
NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oCmluZGV4IGFiNTll
YWU1MjY2NTMwNjIxMmEyOGU5MzIzYTJiOGI0ZmZlMGM3OGYuLmI4OWFiM2ViZDc2MmY2ODEyYTVl
OTdiZmY2OTBiYTkwZjAyNTdmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2suaApAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZv
cm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC02Niw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckRv
d25sb2FkVGFzayhOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIERvd25sb2FkSUQp
OwogCiAgICAgLy8gSVBDIE1lc3NhZ2UKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgaW50NjRfdCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRG
YWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluCmluZGV4IDFkM2JmYjdjYzMxMDk3
OTljYzgwMDFiYmE3MWQ4OWMwZjZmMmQ5MmYuLjUwZDJiNDJhNzFiMGVkYWI3OWZiY2U5ZGRiOWYx
OTk4MmRiNTM1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFNl
cnZpY2VXb3JrZXJEb3dubG9hZFRhc2sgTm90UmVmQ291bnRlZCB7CiAgICAgRGlkRmFpbChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAg
IERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKQogICAgIERpZFJlY2VpdmVGb3JtRGF0YShJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlIGRhdGEpCiAgICAgRGlkRmluaXNoKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmNwcAppbmRleCA0ZTc5MTliM2RkYzAyYWUxNGQwZWQ5Njg0YjhjNjhiYjZmMjhh
NDM0Li40Zjc4YjlkZjU0ZTVlNjc3ODc4NDEzNWEyN2EwM2RiYzYyOWJmZDc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5j
bHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24u
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIgotI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJD
b3B5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCIKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OnByb2Nlc3NSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IGJvb2wgbgogICAgICAgICBtX2xvYWRlci5zZXRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7
CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9p
ZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYg
KG1faXNEb25lKQogICAgICAgICByZXR1cm47CkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZyb21QcmVsb2FkZXIoKQogICAgICAgICAgICAg
ZGlkRmluaXNoV2l0aE1ldHJpY3MobV9wcmVsb2FkZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBkaWRSZWNlaXZlRGF0YShJ
UEM6OkRhdGFSZWZlcmVuY2UgeyBjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpIH0sIGxlbmd0
aCk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKFJlZiB7IGNvbnN0X2Nhc3Q8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciY+KCpjaHVuaykgfSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKaW5kZXggYzM0NTgwMjY3ZmIzMjY5
ZTZkY2JkY2VmYzM0ZDA2ODJjNmEwODg2Yy4uNTIyNWU1NDU5OTk1MWQ4ZjgxYzcwYWY4MmViYmEy
Njg5ZTM1MDA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBAIC00
OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERl
Y29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkzLDcgKzk0LDcgQEAgcHJpdmF0ZToKICAg
ICBlbnVtIGNsYXNzIFNob3VsZFNldFNvdXJjZSA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyQ29weSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRp
ZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmluaXNoV2l0aE1ldHJpY3MoY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLm1lc3NhZ2VzLmluCmluZGV4IDE4ZTYyOWYwZDE0NmVkMmQ0MjlkYjFiYTI4NzAx
ZTgzZmI5NmU2MmYuLjdkYjUzZTliZDAzODA0NTQ3M2EyNWFmMzdkNDdjMTk1Nzk1ZTIzMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmlu
CkBAIC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgTm90
UmVmQ291bnRlZCB7CiAgICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQog
ICAgIERpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Up
Ci0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVj
ZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2go
KQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5jcHAKaW5kZXggNWQ5YmQzMzMzOTIxMWNhMWNkNDQ3Yjg3OTJmNTQ2MWVhODdlZGRmNC4u
ZTU2NTRjYzMxMzliNDlkNjFhOTg1MTNjZDAxNmJlY2Y3MzliYmNmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzUs
MTAgKzE3NSwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygp
OwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNr
KQotICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBtX2JvZHlDYWxsYmFjayhSZWZQdHIgeyAm
YnVmZmVyIH0sIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAppbmRleCA2N2FiYzU1YzYwZmYyNGUzOWRk
MDRlY2M1MDIxYjYwNWVlOGJlYmIxLi41Zjg4YWMyYWE4ZGY5NjI4ZDRjNTlkZGQwOTRmMGNlZTFk
MjFhN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBOZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgdXNp
bmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0Rm9y
UmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlD
YWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKCkg
Y29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBib29sIHNob3Vs
ZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA3YTI2MjIxOWRlNzhi
MjM1ZDEyNWE5MmI2ZTIzNmQzMzI2MmY3YTI3Li5kOWQ3NDc1MjUzMmYxODllYjFiZTJjMDNkN2Uy
OWU4NTllODk2ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9yIFNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
bwogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0Vt
cHR5KCkpCkBAIC0xODYsOCArMTg2LDExIEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAg
ICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvamF2
YXNjcmlwdCJfcywgIlVURi04Iik7CiAgICAgfQogCi0gICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZl
ci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKKyAgICBpZiAoIWJ1ZmZlci5p
c0VtcHR5KCkpIHsKKyAgICAgICAgYnVmZmVyLmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdt
ZW50KSB7CisgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoc2Vn
bWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAog
dm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAppbmRleCA0NGZjMDY4NWZhMGZlZGM4NzQyMTkxNmU5
MTNhNjc0YjFjMGZkYmVhLi43ZTgxOGYzNDEzZGEyOWY4NjFlMTAwMzk5MWU4ZDUzODkyMzQ2ZWUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApA
QCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9y
Q3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZp
bmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4
IDQxZDgyMzUwMjQ3NDdiNmZjNGEzYWM1NDhlMTMzNGVkNmNiNWVmN2EuLjgxNGViMzIwZDRlNzQ4
YTI5YWUwOTEzNWFmYzFkYTVmMzc1MTVlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAKQEAgLTEyMCwxNSArMTIwLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFNwZWN1
bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTcGVjdWxhdGl2
ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NF
UlQoIW1fY2FjaGVFbnRyeSk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewog
ICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0
YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEw
MjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBi
dWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLnNpemUoKSA8PSBtYXhpbXVtQ2Fj
aGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQo
YnVmZmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS5yZXNldCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IDFi
ODQzZGI3ZWMyNzBkYjlkYWI5ZThhMjVmMmE0OGE4ZWNhZTJhOGEuLjlhZGNhNjA1ZTcyODBiYjdi
MzRjZTc0NGQ4Nzg4YmJiNDQ4OTI0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQg
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmlu
ZGV4IDQxNjY4YTViMWNkNzM4Njk2N2I4ZmQ5NzNlOTY3MzJlY2E5MDdlZGMuLjA3NzJhZjFhODZk
MjI0MTdiZjExZjE2YmQ2YjdiNTgwZmU1N2E3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTM4
LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU011dGFibGVVUkxSZXF1ZXN0OwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRMUyhjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZENvbXBs
ZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRyYW5zZmVy
U2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxvYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
CmluZGV4IDQ3NzFmZGU5MjBkNmI5OGU4M2ZjMjlkZDNhYWY5N2EwYTZkOWE4ODAuLjY0OWI1Y2E3
OGM2ODc1ZWNkZTBkM2Q0MzZmOTU5MGRiNTE3OWQwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpA
QCAtNDQzLDEyICs0NDMsMTIgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkQ29tcGxl
dGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXIKICAgICAgICAgbV9j
bGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwog
fQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQog
ewotICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZl
ZCAlemQgYnl0ZXMiLCBkYXRhLT5zaXplKCkpOworICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2su
Z2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZlZCAlemQgYnl0ZXMiLCBkYXRhLnNpemUoKSk7CiAK
ICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZN
b3ZlKGRhdGEpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEpOwogfQog
CiB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0
ZWRMZWdhY3lUTFMsIFdlYktpdDo6UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCmluZGV4IDg0NjY5ZTIwOWQ3N2JmNTJhMzZhZmUy
YTdkYWIyNTJhNjkwMGRjZjcuLjEzZmNjN2JkNDhhNTVhMDkzOTEyOTI2YmE0NDg0Y2Y1ZTM1NTEz
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
RGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TYW1lU2l0ZUluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50
Lmg+CiAjaW5jbHVkZSA8cGFsL3RleHQvVGV4dEVuY29kaW5nLmg+CkBAIC0xNzIsMTMgKzE3Mywx
MyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwbwogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25z
ZSgpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0
aGlzIH07CiAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBzdGF0ZSgpID09
IFN0YXRlOjpDb21wbGV0ZWQgfHwgKCFtX2NsaWVudCAmJiAhaXNEb3dubG9hZCgpKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgTmV0
d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xv
YWRNZXRyaWNzJiYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggNDViZTVj
ZTE4NDMyNTI3MWQ1YzA4MGRkMzRmMWVlNGExNjY0MmExZi4uZTU1ODY0YTk1ZjdiY2JjMDg1YzQ2
NjI4YmZmMDU4NTczNTczMjg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCkBAIC0zNiw2ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY4LDcgKzY5LDcgQEAgcHJpdmF0ZToK
ICAgICBSZWY8V2ViQ29yZTo6Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZXF1ZXN0U3RhdHVzID0gUmVxdWVzdFN0YXR1czo6TmV3UmVx
dWVzdCk7CiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCB1
bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6
Q3VybFJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIo
V2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2
b2lkIGN1cmxEaWRDb21wbGV0ZShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9y
KFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCAxN2YwOGMyOGVhMTI1YjU1MDk5M2VlZDI0
ZDU5NjNiODUxMGExMTQxLi41N2IxNDZlNThlN2E5ZGE3MDI2YzlkZWU1MjAzOTU1MWFkYWI3MWQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBJUEMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBl
MTI2NGNlMjFiYTU3ZjJhNDI3NDhlMzNhMWRhZDg4YTBlMjU4YmMyLi5kNzY3ZmMwNmIzNmYxNTZm
ZjMxYzM4M2U2NDNkNDM0NGMyMTdhYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KSAtPiBFCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKLWF1dG8gV2ViVVJM
U2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCithdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCiB7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTg3LDExICsxODcsMTEgQEAgYXV0
byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpIC0+IEUKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChp
c1N5bmMoKSkgewotICAgICAgICBtX3N5bmNEYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgICAgICBtX3N5bmNEYXRhLmFwcGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlk
ZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIuZ2V0KCkpLCBtX3dlYlBhZ2VJ
RCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNr
RGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3Vy
Y2VMb2FkZXJJRCwgYnVmZmVyKSwgbV93ZWJQYWdlSUQpOwogICAgIHJldHVybiBFeGNlcHRpb25U
eXBlOjpOb25lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmgKaW5kZXggZjZmZjQ2ZWVhNWYyOTBiN2I3ZTNmZTU5MjFkZjlmMTk0YmFjZDExNy4uYzMyMzA2
OWIxY2MwMzFmMDI1YjIyYzg1OWEzNTQxODhmZGQyMzcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAg
RXhjZXB0aW9uVHlwZSB3aWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsICBGdW5jdGlvbjx2b2lkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRQZXJmb3Jt
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIEV4Y2Vw
dGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAg
ICAgRXhjZXB0aW9uVHlwZSBkaWRDb21wbGV0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAKICAgICB2b2lkIHN0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAppbmRl
eCBiNTEzYTI2ODA4ZWFhMThlMzdmNGZkZjA0YTIzZDI5NjBiMjczYjJjLi45MjM0YjVjNjUzZjkx
ZWJhOTEwZmJkZjliZTFlMjJhMDJjMTFjNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHku
Y3BwCkBAIC03MiwyMCArNzIsMTcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRh
dGFTZW50KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmUKICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRh
U2VudChtX2lkLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCksIDApOwogfQogCi12b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAg
IGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShsZW5ndGgpOworICAg
IGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGJ1ZmZlcik7CiAg
ICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2hhcmVk
TWVtb3J5UHRyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKTsKLSAg
ICBtZW1jcHkoc2hhcmVkTWVtb3J5UHRyLCBkYXRhLCBsZW5ndGgpOwotCiAgICAgU2hhcmVkTWVt
b3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgLy8gVGFrZSBvd25l
cnNoaXAgb2Ygc2hhcmVkIG1lbW9yeSBhbmQgbWFyayBpdCBhcyBtZWRpYS1yZWxhdGVkIG1lbW9y
eS4KICAgICBoYW5kbGUudGFrZU93bmVyc2hpcE9mTWVtb3J5KE1lbW9yeUxlZGdlcjo6TWVkaWEp
OwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1v
dmUoaGFuZGxlKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCkgfSksIDApOworICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRh
dGFSZWNlaXZlZChtX2lkLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxl
KSwgYnVmZmVyLnNpemUoKSB9KSwgMCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVBy
b3h5OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlUHJveHkuaAppbmRleCA0N2VhODY2NzFiMTNkMTM5NWMzZGFkOWJkYTc5YWJmNjE2Y2JhMTc5
Li45NDk0NjQ1MjJjMjYzZTZhNWU4MDczZjc0ZTlkMjQzNGJhYTkzOTMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZVByb3h5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGly
ZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAg
ICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2b2lkIGRh
dGFTZW50KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9u
ZywgdW5zaWduZWQgbG9uZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsK
KyAgICB2b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAppbmRleCBkNzFhZTVlMGE5YWYzZDllZTNhNTFkOGZjZjUwZmU1MzU5YjM5MGI3Li43NDkxOTBk
MTliMGZhMWNlMGI1MTFlODQyMDcyNTYwMDY5MTE4NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgi
CkBAIC0yMDAsMTYgKzIwMSwxNSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIG1fY29y
ZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGljeURlY2lz
aW9uQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YSBvZiBzaXplICVsdSBmb3IgJyVzJyIsIGRhdGEuc2l6ZSgpLCBtX2NvcmVM
b2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mg
c2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIp
OwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGlu
ZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAg
bV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CisgICAgICAgIG1faW50ZXJjZXB0
Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpLCBlbmNvZGVk
RGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0g
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVE
YXRhKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxOCw3ICsyMTgsOCBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGlu
dDY0X3QgZQogICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2
ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEiKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQg
Kz0gZGF0YS5zaXplKCk7CiAKLSAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMp
OworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIoKSA/IFJlZiB7ICpkYXRhLmJ1ZmZlcigp
IH0gOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2
ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTMwNiw3ICszMDcsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxl
UmVzb3VyY2U6OkhhbmRsZSYgaGFuZAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVMb2Fk
ZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgV0VCUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZToiKTsKIAotICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNo
YXJlZEJ1ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIHNlbnQgZnJvbSB0
aGUgbmV0d29yayBwcm9jZXNzLiIpOwpAQCAtMzIzLDcgKzMyNCw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlJiBoYW5kCiAKICAgICAvLyBPbmx5IHNlbmQgZGF0YSB0byB0aGUgZGlkUmVjZWl2ZURhdGEg
Y2FsbGJhY2sgaWYgaXQgZXhpc3RzLgogICAgIGlmICh1bnNpZ25lZCBidWZmZXJTaXplID0gYnVm
ZmVyLT5zaXplKCkpCi0gICAgICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZm
ZXIucmVsZWFzZU5vbk51bGwoKSwgYnVmZmVyU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNl
KTsKKyAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIucmVsZWFzZU5v
bk51bGwoKSwgYnVmZmVyU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKIAogICAgIGlm
ICghbV9jb3JlTG9hZGVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhMjJlNjJmMjhi
NWZhNGNmYzkxYWE1ZTVjZTgyY2EyN2FlMjZhZDUzLi5hYzU0MjJmYzA2NzEwYmQwZTA4N2UwZjQ0
MDllZDk0MDE3YzBjZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogbmFtZXNwYWNl
IElQQyB7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgwLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYpOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0
b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWRE
YXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFNlcnZpY2VXb3Jr
ZXJMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVz
c2FnZXMuaW4KaW5kZXggMDJhMTRmNTlhMzA0NzQ0YzJkMTgzZWE3OWU5OWViYWViNGNmYmJhMi4u
ZGFhMjRkMjdjNzFhODNjZjdjMGYxNjhkYTI2YTQ5YjQ4NzY5MjYwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VM
b2FkZXIgTGVnYWN5UmVjZWl2ZXIgewogICAgIFdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlKQogICAgIERpZFNlbmRE
YXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KQogICAg
IERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBi
b29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQotICAgIERpZFJlY2Vp
dmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKQorICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSBk
YXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZEZpbmlzaFJlc291cmNlTG9h
ZChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKQogICAgIERp
ZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKICAgICBEaWRG
YWlsU2VydmljZVdvcmtlckxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA4
ZDJjNWYzZTI1Y2ExYTIzNzhlNWUzMDA1ZDc1NDkyYmVhZjBiMWVhLi4yYjdlNGQyYzIwZmRkMTk5
ODgyNzJkYThiZmNjNWE2MTg2YzZkM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC02NSw2ICs2NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBFbGVtZW50Owogc3RydWN0IFBs
dWdpbkluZm87CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
MTc2LDExICsxNzcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlw
dCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBmaW5hbDsKICAgICB2
b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiBy
ZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZp
bmFsIHsgfQogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7Ci0gICAg
dm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURh
dGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgZmlu
YWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0Nh
bmNlbGxlZCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBs
YXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6
U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsK
LSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRh
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFp
bChib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNv
bnN0IFdlYk1vdXNlRXZlbnQmKSBmaW5hbDsKQEAgLTM2Miw3ICszNjMsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50
OF90KiwgaW50KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciopIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQppbmRleCBlNWZhMDcxMDlhOTMxODQ1MzlmYjFlMjQ3MGEzZjkzODZkNDMx
NTU4Li5mYTZjZTZmNjlmYzAyZjcwMWY4ODUxMzg4NDc1ZGVmM2YyNDMxNGNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTk0
LDYgKzk0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsQW5pbWF0b3IuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1doZWVsRXZl
bnRUZXN0TW9uaXRvci5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4K
QEAgLTExOTEsNyArMTE5Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2Fk
ZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0CiAgICAgfQogfQog
Ci12b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgY291bnQpCit2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKCFtX3BkZlBsdWdpbikKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTIwMCw3ICsxMjAxLDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdp
blN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW0K
ICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlcXVlc3QtPmFkZERh
dGEoZGF0YSwgY291bnQpOworICAgIHJlcXVlc3QtPmFkZERhdGEoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKIH0KIAogdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVu
dDo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNv
dXJjZUVycm9yJikKQEAgLTE3MTgsMTUgKzE3MTksMTUgQEAgdm9pZCBQREZQbHVnaW46OnN0cmVh
bURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiwgdWludDMy
X3QKICAgICAgICAgbV9pc1Bvc3RTY3JpcHQgPSB0cnVlOwogfQogCi12b2lkIFBERlBsdWdpbjo6
c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NF
UlRfVU5VU0VEKHN0cmVhbUlELCBzdHJlYW1JRCA9PSBwZGZEb2N1bWVudFJlcXVlc3RJRCk7CiAK
ICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVN
dXRhYmxlKDAsIDApKTsKIAotICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnl0
ZXMsIGxlbmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKKyAgICBDRkRhdGFB
cHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwor
ICAgIG1fc3RyZWFtZWRCeXRlcyArPSBidWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIFBERlBsdWdp
bjo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTE3NjMsMTQg
KzE3NjQsMTQgQEAgdm9pZCBQREZQbHVnaW46OmVuc3VyZURhdGFCdWZmZXJMZW5ndGgodWludDY0
X3QgdGFyZ2V0TGVuZ3RoKQogICAgICAgICBDRkRhdGFJbmNyZWFzZUxlbmd0aChtX2RhdGEuZ2V0
KCksIHRhcmdldExlbmd0aCAtIGN1cnJlbnRMZW5ndGgpOwogfQogCi12b2lkIFBERlBsdWdpbjo6
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5n
dGgpCit2b2lkIFBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIG1fZGF0YSA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKLSAgICBlbnN1cmVEYXRhQnVm
ZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyArIGxlbmd0aCk7Ci0gICAgbWVtY3B5KENGRGF0YUdl
dE11dGFibGVCeXRlUHRyKG1fZGF0YS5nZXQoKSkgKyBtX3N0cmVhbWVkQnl0ZXMsIGJ5dGVzLCBs
ZW5ndGgpOwotICAgIG1fc3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CisgICAgZW5zdXJlRGF0YUJ1
ZmZlckxlbmd0aChtX3N0cmVhbWVkQnl0ZXMgKyBidWZmZXIuc2l6ZSgpKTsKKyAgICBtZW1jcHko
Q0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdldCgpKSArIG1fc3RyZWFtZWRCeXRlcywg
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1
ZmZlci5zaXplKCk7CiAKICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQogICAgIC8vIEtl
ZXAgb3VyIHJhbmdlcy1sb29rdXAtdGFibGUgY29tcGFjdCBieSBjb250aW51b3VzbHkgdXBkYXRp
bmcgaXRzIGZpcnN0IHJhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oCmluZGV4IDFkODQ0ODA1ZjRjMTBlOTNmZWRjYWJkZWVjMjFkZDM1ZGRmODgyMDIuLmU0ZDYy
ZjRiZWE5YmZjMmZhODBlZjRkNmU5MGM1Y2NmMDY3OTRmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC01NCwxMiArNTQsMTMgQEAgY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9h
dFNpemU7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNs
YXNzIFNjcm9sbGJhcjsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYwLDcgKzE2MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8g
VGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
RGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gaGFz
IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRp
bmcodWludDY0X3Qgc3RyZWFtSUQpID0gMDsKQEAgLTE3Myw3ICsxNzQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBs
YXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhl
YWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRl
bGxzIHRoZSBwbHVnLWluIHRoYXQgdGhlIG1hbnVhbCBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4K
LSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFt
RGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogCiAgICAg
Ly8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4K
ICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXgg
NTM0ZGE1MmQ0N2Q2Mjg1MGUyMDVmZjllOTljMzBiMzdkM2JjYmExMi4uMDM0NGY0YmUyM2E0Mzc2
NzE5Nzc4OTk5N2Q3NjM3YTIwMzFiN2VhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgog
ICAgIC8vIE5ldHNjYXBlUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50CiAgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogCkBAIC0y
MzUsOSArMjM1LDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVSZXNwb25z
ZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFIKICAgICBtX3BsdWdpblZpZXct
Pm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UobV9zdHJlYW1JRCwgcmVzcG9uc2VV
UkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUs
IGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdp
blZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6U3Ry
ZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVh
bURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ5dGVzLCBsZW5ndGgpOworICAgIG1fcGx1Z2lu
Vmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ1ZmZlcik7
CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIApAQCAtMzc0LDcgKzM3NCw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlk
UmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERh
dGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0ZWRGaWxl
bmFtZSgpKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAv
LyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxlZCB0byBpbml0aWFsaXpl
LgogICAgIGlmICghbV9wbHVnaW4pCkBAIC0zODIsMTEgKzM4MiwxMSBAQCB2b2lkIFBsdWdpblZp
ZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxl
bmd0aCkKIAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21h
bnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNl
KTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChieXRlcywgbGVuZ3RoKTsKKyAg
ICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGJ5dGVz
LCBsZW5ndGgpOworICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShidWZm
ZXIpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCkK
QEAgLTExNzEsOSArMTE3MSw5IEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3Ry
ZWFtKCkKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCiAgICAgaWYgKG1fbWFudWFsU3RyZWFt
RGF0YSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCk7
Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKLSAgICAg
ICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwg
ZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEudGFr
ZSgpLT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7Cisg
ICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKKyAgICAgICAgfSk7
CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3Rh
dGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCmluZGV4IGY2NjMxMmE4MGFjZDFlMDM1MzEwZGZhYTNhNWYzYTE3YjcyYWFlNTUuLjI1
NjE1Y2IzMGYyMjY0NjM5MjQ0NDg4ZjJiZDdjNDEyMjc5MDc5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTczLDcgKzczLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCgpIGNvbnN0IHsgcmV0dXJuICFtX3BsdWdp
biB8fCBtX3BsdWdpbi0+aXNCZWluZ0Rlc3Ryb3llZCgpOyB9CiAKICAgICB2b2lkIG1hbnVhbExv
YWREaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKTsKKyAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5n
KCk7CiAgICAgdm9pZCBtYW51YWxMb2FkRGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZWU0
MGZiOTU4NWU3OWQ4NmIzY2ZkMmY1NzllZDQ2ZTYxYjllYzYzZS4uMzE0ODJlYjNiMzY4ZDc4YTYx
YTdlYzFkMjRjNTk4MTBiYzkxZWQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJl
Y2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9j
b25uZWN0aW9uKQogICAgICAgICByZXR1cm47CkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4KICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2VNZXNzYWdlKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFy
ZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCiAgICAgICAgICAgICBtX3Jlc3BvbnNl
RGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKLSAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5k
KGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV9pc0Rvd25sb2Fk
KQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxpbnQ2
NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJl
Y2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9
LCBtX2ZldGNoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVm
ZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRj
aElkZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxp
bnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmlu
aXNoKFJlZjxGb3JtRGF0YT4mJiBmb3JtRGF0YSkKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmlu
aXNoKFJlZjxGb3JtRGF0YT4mCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZUJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1f
Y29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faXNEb3dubG9hZCkKLSAg
ICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRU
YXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90
PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBi
dWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVu
dGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IGRhdGEsIHNpemUgfSwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRp
ZFJlY2VpdmVEYXRhIHsgYnVmZmVyICwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUo
KSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKQEAgLTIyOCw3ICsyMjgsNyBAQCB2
b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKCkKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNo
KCk7CiAgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgewot
ICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKKyAgICAgICAgZGlkUmVjZWl2
ZURhdGEoYnVmZmVyLmNvcHkoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgIGlmIChtX2Rp
ZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9y
bURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmlu
ZGV4IGU5ODdlMTlhYzhiNzM4ODcxYWFkODJiNGIzODU2Mjk2OGEyYjZjOWMuLjA5NDAwZGYwY2U3
MjVmMzlhOGIxMWQ5MzVlMTQ1NGUzOTlmNWEyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3Jt
RGF0YUFuZEZpbmlzaChSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBk
aWRGaW5pc2goKSBmaW5hbDsKQEAgLTYwLDggKzYwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bnZlcnRGZXRjaFRvRG93bmxvYWQoKSBmaW5hbDsKIAogICAgIHZvaWQgY2xlYW51cCgpOwotICAg
IAotICAgIHZvaWQgZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QpOworCisgICAgdm9pZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkRmluaXNoQmxvYkxvYWRpbmcoKTsKIAogICAgIHN0cnVj
dCBCbG9iTG9hZGVyIGZpbmFsIDogV2ViQ29yZTo6RmV0Y2hMb2FkZXJDbGllbnQgewpAQCAtNjks
NyArNjksNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQog
ICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxvYkNo
dW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKSBmaW5hbCB7IGNsaWVudC0+ZGlkUmVjZWl2ZUJsb2JD
aHVuayhkYXRhKTsgfQogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgY2xpZW50LT5kaWRGYWlsKGVycm9yKTsgfQogICAgICAg
ICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5hbCB7IGNsaWVudC0+ZGlkRmluaXNoQmxvYkxvYWRpbmco
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxNGEwODNjYTIwN2E5
MDYzY2Y4MGIxZTdlOTY3MGE0ODdjZjRkMzk5Li5lZDRmNWRlOWQ1ZTU2MThkNDMyNDU1MDgyZjVk
YTE4OGFiZjliZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExNTIs
MTAgKzExNTIsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRp
cGFydENvbnRlbnQoKQogICAgIHdlYlBhZ2UtPmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KG1f
ZnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fcGx1Z2luVmll
dykKLSAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGxv
YWRlci0+Y29tbWl0RGF0YShkYXRhKTsKIAogICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0
YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2Vs
IHRoZSBXZWJLaXQgbG9hZC4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFy
ZWQgYWNyb3NzIGFsbCBwb3J0cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+LgpAQCAtMTE3
Nyw3ICsxMTc3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChE
b2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KgogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldyA9IHRydWU7CiAgICAgfQot
ICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7
CisgICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAK
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRl
ciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiYjUyOWQzYWVjNGUy
Yzc1ZjFhN2RlOTFiMTBiNTU4MmQ0NTIyYjQyLi4xZDMwYmMzOTM4M2FmZmYyY2E5YzI4NzUzZGQy
ZDdlYzJiMjY0OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTUyLDcgKzE1
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBm
aW5hbDsKICAgICB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAKLSAg
ICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50
OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lk
IGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIGZpbmFsOwogICAgIAog
ICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggYTIwNWUwMDFjYTcxNTgyMDkxM2E4MWFlNGE4
MzY1MzBmOWEwZjY0OC4uNzJlMzU1NGM4ZTBhYTY5MGE2ZWM1NzgwMTc2ZjE5ZTBiOGQ3MGQyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAKIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6
On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIHdlYlBhZ2UgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDBkYzE2N2U1YjdiYzNi
MDNlZjM5MzFlYWIzNTZjNzgyNzkyOTUyOWUuLjY0OWJjODMxOWMyNzg2ZjAxZDYxN2MxMTE5OWRi
MGM2YzA3N2ZhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJQcmV2aWV3TG9hZGVy
Q2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRl
OwogICAgIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA5NDJlZGM2MjNhNGU2NTNiYjE4OGFlZTA1MDY0NGEzZjRhMDMyZTg5Li5mODlmZjcy
YTBkMzFiZWMxMWVmODAyOTdlZmJhOTJjMmE3YmM2NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzA1NywxMiArNzA1NywxMiBAQCB2b2lk
IFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMU2NoZW1lSGFu
ZGxlcklkZW50aWZpZXIgaGFuZAogICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlUmVzcG9uc2Uo
dGFza0lkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVU
YXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmll
ciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlOjp1cmxTY2hl
bWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxl
cklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRp
ZmllciwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhKQogewogICAgIGF1dG8qIGhh
bmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxl
cklkZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsKIAotICAgIGhhbmRsZXItPnRhc2tE
aWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5zaXplKCksIGRhdGEuZGF0YSgpKTsK
KyAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuYnVm
ZmVyKCkgPyAqZGF0YS5idWZmZXIoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkuZ2V0KCkpOwog
fQogCiB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVI
YW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhOTRiNWI5
ZDdmZTMyZjI0YTg2ZGFhYWQ0NDg0MmIwY2RkMGFlYjJmLi40ODg2NjcwN2M0NjEzZDlhN2NkMzUy
MTVkZmNhOTIzYzY5NzliZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0xODQsNiArMTg0LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25u
ZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3Mg
U2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTg5Niw3ICsx
ODk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVybFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJlZGly
ZWN0aW9uKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRQ
ZXJmb3JtUmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCB1cmxT
Y2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRS
ZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmKTsKKyAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVI
YW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJ
ZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKICAgICB2b2lkIHVybFNj
aGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHNldElzVGFraW5nU25hcHNob3RzRm9yQXBw
bGljYXRpb25TdXNwZW5zaW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYjI3MjI5NDcxZWFlODZlZTU5
ODE5ODNkZDU3YjVlN2E4MjkxY2Q0Yi4uYmRhNWY1MGFkZDIzYTk2NzQwZTg5ZDczM2Q3OWMxODdm
MDUyYmUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01NjQsNyArNTY0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGUKICAgICBVUkxTY2hlbWVUYXNrV2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBwcm9wb3NlZFJlcXVl
c3QpIC0+IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgYWN0dWFsUmVxdWVzdCkgQXN5bmMKICAg
ICBVUkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYktpdDo6V2ViVVJMU2NoZW1l
SGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkKICAgICBV
UkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxl
cklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRl
bnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSkKLSAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YSkKKyAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkg
ZGF0YSkKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUoV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
KQogCiAgICAgU2V0SXNTdXNwZW5kZWQoYm9vbCBzdXNwZW5kZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5LmNwcAppbmRleCA2ZDhkMGNmMjc4NGVkMzA1NjYyNWM3ZjZlODQ2YTkzYTcxMWNiYWNkLi42
MTZlZGEwOGYwYjhmY2FiMmQ1N2ZjNDc1MzI5MTA3YjgxNWNkMjNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRs
ZXJQcm94eS5jcHAKQEAgLTk2LDEzICs5NiwxMyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eTo6dGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZQog
ICAgIHRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLXZvaWQgV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhf
dCogZGF0YSkKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURh
dGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byogdGFzayA9IG1fdGFza3MuZ2V0KHRh
c2tJZGVudGlmaWVyKTsKICAgICBpZiAoIXRhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIHRh
c2stPmRpZFJlY2VpdmVEYXRhKHNpemUsIGRhdGEpOworICAgIHRhc2stPmRpZFJlY2VpdmVEYXRh
KGRhdGEpOwogfQogCiB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZENvbXBs
ZXRlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCmluZGV4IDU4YmVj
YzE3YjVkODU5ODc0OTg4NGQzMDI1MTY4OWNjY2MxNzY5M2YuLmFiMjBiZDU3M2FhNGFmYzE1ODA1
OTBmMjcwNDY2MzAwNjg3NzQwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCkBAIC0zNSw2ICsz
NSw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksNyArNjAsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCB0YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOwotICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lkIHRhc2tE
aWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgdGFza0RpZENvbXBsZXRlKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwogICAgIHZvaWQgdGFza0RpZFN0b3BMb2FkaW5nKFdlYlVSTFNjaGVtZVRhc2tQcm94eSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVUYXNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJM
U2NoZW1lVGFza1Byb3h5LmNwcAppbmRleCAzNjA2YmJkYzY1MjE1ZGRjYTkyNjEzYTgxMDdkYWIx
YjExZWNiNjU2Li45ZTcyZDg0Yzk3ZGY2ZDI5NzE0YTgzYzUxYWMxNzc2M2U1ZmI2NTNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNr
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNj
aGVtZVRhc2tQcm94eS5jcHAKQEAgLTE0MCwyMSArMTQwLDIxIEBAIHZvaWQgV2ViVVJMU2NoZW1l
VGFza1Byb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNl
aXZlRGF0YShzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkKK3ZvaWQgV2ViVVJMU2No
ZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgaWYgKCFoYXNMb2FkZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1fd2FpdGluZ0ZvckNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIFdFQlVSTFNDSEVN
RVRBU0tQUk9YWV9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6IFJlY2VpdmVkIGRhdGEgZHVy
aW5nIHJlc3BvbnNlIHByb2Nlc3NpbmcsIHF1ZXVpbmcgaXQuIik7Ci0gICAgICAgIHF1ZXVlVGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGFWZWN0b3IgPSBWZWN0
b3IgeyBkYXRhLCBzaXplIH1dIHsKLSAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGFWZWN0
b3Iuc2l6ZSgpLCBkYXRhVmVjdG9yLmRhdGEoKSk7CisgICAgICAgIHF1ZXVlVGFzayhbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGEgPSBSZWYgeyBkYXRhIH1dIHsKKyAg
ICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKLSAgICBtX2Nv
cmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIHNpemUsIDAsIERhdGFQYXlsb2FkVHlwZTo6
RGF0YVBheWxvYWRCeXRlcyk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShkYXRh
LCAwLCBEYXRhUGF5bG9hZFR5cGU6OkRhdGFQYXlsb2FkQnl0ZXMpOwogICAgIHByb2Nlc3NOZXh0
UGVuZGluZ1Rhc2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAppbmRleCA3NTUwODc5NDE4MjBmZWVm
YzVkMDEyNzE1OGMwNjRjZTI1OGEwODM1Li5lZDkxZjM4ZTNhZGQxM2JlMTljYjIxNzdlZDQ0OGZk
ZDJmYTc5NTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVUYXNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRQZXJm
b3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHNpemVfdCwgY29u
c3QgdWludDhfdCogZGF0YSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCmluZGV4IGEyNTU2MGExMGMy
ODgyZTFhYmQxNzg0NTY5NDg2ZWExM2VkODk2ZDQuLjMyODljMjM2MjlhMGRjMzFmYzBjMTk5ZWRm
MTMyOTdiZWQ2MWExOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvUGluZ0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBv
cnQvUGluZ0hhbmRsZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUhhbmRsZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKQEAgLTczLDcgKzc0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcGluZ0xvYWRDb21wbGV0ZSh7IH0s
IHJlc3BvbnNlKTsKICAgICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGlu
dCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwg
aW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGYWls
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmluYWwgeyBy
ZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggOTU5ZDc0OGI1NmJlMTA3NmJkOTc3OTkyMmNkMzU2ZDIxYTY4MTc0ZS4uOGRm
OTkzZjJkNzc1YjZjOTNkMmU4ZjA5OTBmNzJmODVmNjE4ZTU4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC00OCwxMCArNDgsMTIgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDYWNoZWRG
cmFtZTsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBIaXN0b3J5SXRlbTsK
IGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBjbGFzcyBXZWJGcmFtZUxv
YWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PiB7CkBAIC0xNTEsNyArMTUzLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsIHsg
fQogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZv
aWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3Qq
LCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExv
YWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmlu
aXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5
UmVkaXJlY3RMaW5rcygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA0
M2U2M2Y0NTYzNDVlY2YxYzkyNGU1Yjc3MmE2ZjU0MTczYTkxNDJiLi44N2E1ZDY1N2Y3YjczM2Qw
N2M1ZGI2MDFmNjk4MWY5MDQ5NzcxMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpA
QCAtOTkyLDEwICs5OTIsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNl
TXVsdGlwYXJ0Q29udGVudCgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29t
bWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNE
YXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGgg
ZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRh
Om5zRGF0YS5nZXQoKV07CisgICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOmRh
dGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKQEAgLTIw
MTIsNyArMjAxMSw3IEBAIFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJldGFpblB0
cjxOU1N0cmluZz4gbV9maWxlUGF0aDsKICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4g
bV9maWxlSGFuZGxlOwogCi0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCisgICAgICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92
ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gZGF0YUFycmF5ID0gYnVmZmVyLmNy
ZWF0ZU5TRGF0YUFycmF5KCk7CiAgICAgICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBkYXRh
QXJyYXkuZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQppbmRleCAwZTA1YjE4ZDY5NjM5ODI4ZDQzM2M0NmQ3OTIxY2Y3MGRlN2RmOWQxLi4yYTg3NzBk
ZjgwYmI5ZjcwYzEwYmI5MWY5NTIwZDFlMTljODU5ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTk3Nyw3ICs5NzcsNyBAQCAtICh2b2lkKV9j
b21taXREYXRhOihOU0RhdGEgKilkYXRhCiAgICAgYXV0byogZG9jdW1lbnQgPSBfcHJpdmF0ZS0+
Y29yZUZyYW1lLT5kb2N1bWVudCgpOwogICAgIGRvY3VtZW50LT5zZXRTaG91bGRDcmVhdGVSZW5k
ZXJlcnMoX3ByaXZhdGUtPnNob3VsZENyZWF0ZVJlbmRlcmVycyk7CiAKLSAgICBfcHJpdmF0ZS0+
Y29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5jb21taXREYXRhKChjb25zdCB1
aW50OF90KilbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOworICAgIF9wcml2YXRlLT5jb3Jl
RnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERhdGEoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKaW5kZXggZmIyNTgzZmU5NzI2NGM3M2VlYjIzZWJiNGQzOTkwYjNiODRhMDdmMy4u
MTI3MGU1N2RkOTViMGQwMDAzYjVlNTY3N2Q0NzQyYTEyNTUyZDg1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcApAQCAtNjQxLDkgKzY0MSw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBsb2FkZXItPmNvbW1pdERhdGEo
ZGF0YSwgbGVuZ3RoKTsKKyAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSk7CiAKICAgICAvLyBJ
ZiB0aGUgZG9jdW1lbnQgaXMgYSBzdGFuZC1hbG9uZSBtZWRpYSBkb2N1bWVudCwgbm93IGlzIHRo
ZSByaWdodCB0aW1lIHRvIGNhbmNlbCB0aGUgV2ViS2l0IGxvYWQuCiAgICAgLy8gRklYTUU6IFRo
aXMgY29kZSBzaG91bGQgYmUgc2hhcmVkIGFjcm9zcyBhbGwgcG9ydHMuIDxodHRwOi8vd2Via2l0
Lm9yZy9iLzQ4NzYyPi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDA5NWIyNTM1YTY4
NzU0N2JkNzg4NDZmOTA3NmFlNmM3ZDAxNjI5NDguLjc5MjZmZDM2NzE4MDllODM4NDdhNDgwMzFh
OGI5MGM2MzhmYWY3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTEyLDcgKzEx
Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmcoKSkg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdHRlZExv
YWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExv
YWRlciopIG92ZXJyaWRlOwogCiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBiZTBlNjIwNDZhNjQ3NmExZjI1MmRlOTllNGY0NzEwMDdiZGI5
NGE1Li5jZTJkOTBlMjg1Yjg2NWJlNDJlMzQ0M2JhNGFiM2E4YmYzY2Y0YmY4IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAg
ICBtYWtlIFNoYXJlZEJ1ZmZlcjo6Y29weSgpIHJldHVybiBhIGNvbnRpZ3VvdXMgU2hhcmVkQnVm
ZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ2
MjIKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODY4Mjk1MjcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwog
MjAyMS0xMi0yNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS11bYTExeV0gU3RvcCBzZXR0aW5nIG1hbmFnZXMtZGVzY2VuZGFudHMgb24g
d2ViIHByb2Nlc3Mgcm9vdCBvYmplY3Qgd2l0aCBBVFNQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBmMTJiOWYwODM2MDU1
ODk0Y2Q2NWE4MjNkNWZmNmUzNGI5OGFkNTk4Li4wNjY5ZDA3YzY0ZjlkZjU0OWMzZTUxMDJlZDY3
YjY5Y2MyOTU0MmY5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMzAzLDYgKzMwMywxNSBAQCBURVNUX0YoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQog
CitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlJc0NvbnRpZ3VvdXMpCit7
CisgICAgRVhQRUNUX1RSVUUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS0+Y29weSgpLT5pc0NvbnRp
Z3VvdXMoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpLT5jb3B5KCktPmlzQ29udGlndW91cygpKTsKKyAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1w
bGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOworICAgIEVYUEVDVF9UUlVFKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSktPmNvcHkoKS0+
aXNDb250aWd1b3VzKCkpOworICAgIEVYUEVDVF9GQUxTRShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKS0+Y29weSgpLT5pc0NvbnRp
Z3VvdXMoKSk7Cit9CisKICNpZiBFTkFCTEUoTUhUTUwpCiAvLyBTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlciB1bml0LXRlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHRl
bXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448060</attachid>
            <date>2021-12-28 19:02:09 -0800</date>
            <delta_ts>2022-01-05 20:03:58 -0800</delta_ts>
            <desc>Patch for review</desc>
            <filename>bug-232424-20211229140206.patch</filename>
            <type>text/plain</type>
            <size>266675</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM5YmQwOWIyOTM0NTRm
YjhhNTE0NWY4ZDQwMzNhMzhjMmVmNDY4Yi4uMTQ2YTY2NjBjMmUwN2UxYzkzMzNlMjczZjZhNGFl
ZThhOGQ4MTJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyNiBAQAorMjAyMS0xMi0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1
ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBtb2RpZnkgYWxsIGRpZFJlY2VpdmVEYXRhIGFuZCBy
ZWxhdGVkIG1ldGhvZHMgc28gdGhhdCB0aGV5IG5vIGxvbmdlcgorICAgICAgICB1c2UgdWludDhf
dCovaW50IGFuZCBpbnN0ZWFkIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIFdlIGRvIHRoZSBz
YW1lIGZvciBhbnkgaW50ZXJtZWRpYXJpZXMgdXNlZCBieSB0aGUgdmFyaW91cyBkaWRSZWNlaXZl
RGF0YQorICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgIFRoaXMgd2lsbCBmYWNpbGl0
YXRlIG1vdmluZyBuZXR3b3JraW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVQorICAg
ICAgICBwcm9jZXNzIGFuZCBhbGxvd3MgdG8gcmVtb3ZlIHNldmVyYWwgbWVtb3J5IGFsbG9jYXRp
b25zIGFuZCBjb3BpZXMgYXQgdGhlCisgICAgICAgIHByb2Nlc3MgYm91bmRhcmllcy4KKyAgICAg
ICAgV2UgY2FuIG5vdyBjb25zaWRlciB0cmFuc2ZlciB0aGUgdW5kZXJseWluZyBTaGFyZWRNZW1v
cnkgY3JlYXRlZCBpbgorICAgICAgICB0aGUgbmV0d29yayBwcm9jZXNzIGFsbCB0aGUgd2F5IHRv
IHRoZSBHUFUgcHJvY2Vzcy4KKworICAgICAgICBGbHktYnkgZml4OiBjaGFuZ2UgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciB0eXBlIHRvIFNoYXJlZEJ1ZmZlciB3aGVuIGFwcHJvcHJpYXRlLgorCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4gQ292ZXJlZCBieSBhbGwg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keU93bmVyOjpibG9iQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YSk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Up
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRl
bnRGaWx0ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjphZGRE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGRC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVy
Q2xpZW50V3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAg
ICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwYWdl
L0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjp0YWtlRGF0YSk6IFVwZGF0ZSBkdWUgdG8gRGF0YVNlZ21lbnRWZWN0b3JFbnRyeTo6
c2VnbWVudCBiZWluZyBjb25zdAorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlciBjb25zdCk6IEFkZCBjb252ZW5pZW5j
ZSBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0
YVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNo
YXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6IE1h
a2UgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeTo6c2VnbWVudCBjb25zdC4KKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZUNsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJ
ZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93
bmxvYWQ6OmN1cmxEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5k
bGU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6
OmN1cmxEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFN0cmVhbTo6dHJ5VG9S
ZWNlaXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxD
dXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAo
LVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlv
bjpkaWRSZWNlaXZlRGF0YTpsZW5ndGhSZWNlaXZlZDpdKToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2Vk
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0
dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTItMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KIAogICAgICAgICBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkgaXMgc3RpbGwgZGFuZ2Vy
b3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGNlMjdlMTRjNjlmZDI0NGFlN2IyNDQ1ZTNlNDk4N2M2ZjcxYmIyODMu
LjFhYTk0MTY0OTU1YWQxMDdjMTZjMzNjMWNmZjY2ZGM4YTM3Mzg2Y2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTA1IEBACisyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBu
ZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRp
ZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckRvd25sb2Fk
VGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Omxv
YWRCb2R5RnJvbVByZWxvYWRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmg6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKiBT
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKToKKyAgICAgICAg
KiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291
cmNlUHJveHk6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3RyZWFtRGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNo
dW5rKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaDoKKwogMjAyMS0xMi0y
NiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBXZWJL
aXQvQ29jb2FDb2xvci5oIHdpdGggV2ViQ29yZS9Db2xvckNvY29hLmgsIG5vdCBjb25mdXNpbmcg
YXQgYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDU3NjgxYjIxYTczNDM5ZTkwYmYyMWJhMjQ0
OTU4MjU5N2UwMTk5ODIuLmU2ODNiZmQ1MmI4NWU4ZTUwMzUyNzcwN2NhNGRjYjc5MjViYjY2Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMjggIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jl
c291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZm
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0
MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg6CisKIDIw
MjEtMTItMTQgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5k
ZXggZWY5NDlkZTYwNjg5NmNhOTkzZWRmOGYzNGQ5YzFiMzBhNWI2NTRhYi4uOGUxZjEzNmU1ZGFk
ZmZjMTA0ZGRhYjI0NDVjNWFkZmQzYjk2N2Y2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVs
YXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84
NDc0NDY4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVQcmV2aWV3TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1l
Lm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfY29tbWl0RGF0YTpdKToKKwogMjAyMS0xMi0yMiAg
TWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggV2ViS2l0
IEJ1aWxkIGlzc3VlcyB3aGVuIHVzaW5nIHN5c3RlbSBjb250ZW50IHBhdGgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwppbmRleCAwYjc4ZjVjZTEwYTkyYzVmODk3YWI4MTY5MDFlOTU5MWI4Njkx
YzM4Li40NjAwOWRjODVhMzUzYzNlZDJmOGY5MzYxOTBmN2QwNDM4OGRjZTI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTItMjggIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291
cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQK
KyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAyMS0xMi0y
MSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgYSBVSSBkZWxlZ2F0ZSBtZXRob2QgdG8gZGVjaWRlIGhvdyB0byBoYW5kbGUg
ZGV0ZWN0ZWQgbW9kYWwgY29udGFpbmVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBjMjMxZjIwN2RhMjVjZDJhMTU4NjBk
MjhkYjNjZTE3ZTg1NzU3N2Q1Li5lNjEzYWE1MDlmNzRjMGRlMGU2ZDM4MzUxOGU1MjZmNzNhYTU4
ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcApAQCAtMzIwLDEzICszMjAsMTMgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28K
ICAgICB9CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBzaXplKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX3NvdXJjZSkgewotICAgICAg
ICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsK
KyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoYnVmZmVyLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXpl
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25z
dW1lcjo6c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDg3
MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAzNzc3MmIuLmQ0NjUxYjIzZGE3MWNmOGY0
YzhjOTk2NzFkMjI3ZWI1YWM4ZDJhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAg
ICAgZXhwbGljaXQgRmV0Y2hCb2R5Q29uc3VtZXIoVHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7
IH0KIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKKyAg
ICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIGJvb2wgaGFzRGF0YSgp
IGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KICAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXgg
YTYzMzEwOGI1NDc3ODM5M2ZjNTQ3NTAwMzJhOWEyZTg2YWRlN2ZjYy4uNTM2NjgxNTViZGViYzFh
ZWYzOWY0ZDk5ZmI5ZGFkYzFlYmVmN2EwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTI5OCwxMSArMjk4LDEwIEBAIHZvaWQgRmV0
Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkKICAgICBmaW5pc2hCbG9iTG9hZGluZygp
OwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpibG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCit2b2lkIEZldGNoQm9keU93bmVyOjpibG9iQ2h1bmsoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKGRhdGEpOwogICAgIEFTU0VSVChtX3Jl
YWRhYmxlU3RyZWFtU291cmNlKTsKLSAgICBpZiAoIW1fcmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVu
cXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpCisgICAgaWYgKCFtX3Jl
YWRhYmxlU3RyZWFtU291cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
KSkKICAgICAgICAgc3RvcCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmgKaW5kZXggNWNhN2UzOTZjNDIyNzAxOTM1NmIwODA2ZTRlZWRiZTk1
ZTkyOGY0Yi4uODFmZDA2ZWNkZDZmYzM4YzllODU5ODdjZWJkZmMxNmRkODZmM2M5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIkZldGNoTG9hZGVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAwLDcgKzEwMSw3IEBAIHByb3Rl
Y3RlZDoKIAogcHJpdmF0ZToKICAgICAvLyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lk
IGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVuayhj
b25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAg
ICAgdm9pZCBibG9iTG9hZGluZ0ZhaWxlZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmco
KTsKQEAgLTExMyw3ICsxMTQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVy
Q2xpZW50IEFQSQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNp
emUpOyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGJ1ZmZlcik7IH0KICAgICAgICAgdm9pZCBk
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRTdWNj
ZWVkKCkgZmluYWwgeyBvd25lci5ibG9iTG9hZGluZ1N1Y2NlZWRlZCgpOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggMDNmODliNjFjYTVm
N2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OC4uNGI0NWJmZDg3NTA0MDZmNmU3ZGE3MThmOTk4
MTY5NDcxYTVlODQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5jcHAKQEAgLTE0OCwxMyArMTQ4LDEzIEBAIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzCiAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRj
aExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogdmFsdWUsIGludCBzaXplKQor
dm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGJvb2wpCiB7CiAgICAgaWYgKCFtX2NvbnN1bWVyKSB7Ci0gICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVEYXRhKHZhbHVlLCBzaXplKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURh
dGEoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2NvbnN1bWVyLT5hcHBl
bmQodmFsdWUsIHNpemUpOworICAgIG1fY29uc3VtZXItPmFwcGVuZChidWZmZXIpOwogfQogCiB2
b2lkIEZldGNoTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA0NjEy
ZDBlMGUzYTdlZmUzMDYwMzk2YjBkNzVhMmZhM2JjNGVkZGFkLi41ZWVhZWY4MmQxZGYzZWZjZWQy
MTQwMDNkZjUxODg4NzAzNmY5NzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8g
VGhyZWFkYWJsZUxvYWRlckNsaWVudCBBUEkuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgdXNlU3RyTGVu
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50
LmgKaW5kZXggZmVkM2U1ZWFlNzFhNTdjOTUyYWExNzFhZGNjYmRkOWJkMDQ1ZTc4OS4uMTA5ZTA4
ZWNmN2E0N2U3YzAzN2UzMmRjYWFjYWI4NmM4MWMxOGQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90Kiwgc2l6ZV90KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5k
ZXggMGU3YjAwNWU4OWEzZDE3NDBiMWNmOWFkZmY4YjRmMmYyZmM0M2M5OS4uZGNhMGUyMzgyZTMy
ZmMwMzcyODg3ZmQ0ODUyMTRhMTczMDFiMWJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0zNjIsMTIgKzM2MiwxMiBAQCB2b2lkIEZl
dGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNvdQogICAgICAgICByZXNwb25zZUNhbGxiYWNrKG1fcmVzcG9uc2UpOwog
fQogCi12b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBB
U1NFUlQobV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlIHx8IG1fY29uc3VtZURhdGFD
YWxsYmFjayk7CiAKICAgICBpZiAobV9jb25zdW1lRGF0YUNhbGxiYWNrKSB7Ci0gICAgICAgIFNw
YW4gY2h1bmsgeyBkYXRhLCBzaXplIH07CisgICAgICAgIFNwYW4gY2h1bmsgeyBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpIH07CiAgICAgICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygmY2h1
bmspOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRmV0
Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiAgICAgYXV0byYgc291cmNlID0gKm1fcmVzcG9uc2UubV9yZWFkYWJs
ZVN0cmVhbVNvdXJjZTsKIAogICAgIGlmICghc291cmNlLmlzUHVsbGluZygpKSB7Ci0gICAgICAg
IG1fcmVzcG9uc2UuYm9keSgpLmNvbnN1bWVyKCkuYXBwZW5kKGRhdGEsIHNpemUpOworICAgICAg
ICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChidWZmZXIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpC
b2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghc291
cmNlLmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpIHsKKyAgICBp
ZiAoIXNvdXJjZS5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSkgewogICAg
ICAgICBzdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NjcsNyArNDY3LDcgQEAg
dm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50
NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQ2h1
bmsoUmVmPEpTQzo6VWludDhBcnJheT4mJiBjaHVuaykKIHsKLSAgICBib2R5KCkuY29uc3VtZXIo
KS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPmJ5dGVMZW5ndGgoKSk7CisgICAgYm9keSgp
LmNvbnN1bWVyKCkuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNodW5rLT5kYXRhKCksIGNo
dW5rLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9k
eUFzU3RyZWFtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKaW5kZXggNmIwNTA1ZDg4YjEzMmUyOGNiOTU0YWI5YTBlN2VmZTgxM2Y3MDJhZi4uZjk5MjQ5
YzM5ZjlkMGIyZmM4N2EyZjljNDZkNzkzOTI4ODgxNGJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2YXRl
OgogICAgICAgICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOworICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogCiAgICAgICAgIEZldGNo
UmVzcG9uc2UmIG1fcmVzcG9uc2U7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIG1fcmVz
cG9uc2VDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCAyN2E2ZDcwMzM0Y2EzMjA2YTk0
ZTkxOTk0MzM2MzdjNGEzMDUyZTdkLi5hNjQxZjgxMDdiNGZkMTc5MTFmZGI5MmJiMzBmNDVlMmU4
MmI1MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0xNzcsMTAgKzE3NywxMCBAQCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYgcwogCiAvLyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAK
LXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNv
dXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgp
OworICAgIG1fZGF0YS5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50
Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCBjZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2
MzJiZDFlNmU4NTgwM2JlLi4wZDNiZGI3NDlkN2EzMzY4YjNjYTY4YzIxNzMxNjA1OTE1NDlkMWMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICAvLyBDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudCBvdmVycmlkZXMuCi0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5h
bDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICAvLyBNb2RlbFBsYXllckNsaWVudCBvdmVycmlk
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1TaW5rLmgKaW5kZXggZDUxNzNmYmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOS4u
ZmVlOTg4NDIyMWJiNDNlOGNjMDYyZWFiY2QwYTk5ZWM1NGMwMzQ2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUs
NyArMzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNs
YXNzIFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1T
aW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmNwcAppbmRleCBiN2Y3NWVkYTNiMjMzYjE5YjIwZWQ3MDQyODk0OWJiMzM1ODk4ZTgxLi43Mzg1
MmQ0YzBhZjAzODQ3NWYxNWI2NTQ5ZGM2ODliZjg1NTFiMjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRl
ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMTYzLDE2
ICsxNjQsMTUgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXIKICAgICAgICAgbV9jbGllbnQtPmRp
ZFN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBGaWxlUmVhZGVy
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCkK
IHsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgQVNTRVJUKGRhdGFMZW5ndGggPiAwKTsKKyAgICBB
U1NFUlQoYnVmZmVyLnNpemUoKSk7CiAKICAgICAvLyBCYWlsIG91dCBpZiB3ZSBhbHJlYWR5IGVu
Y291bnRlcmVkIGFuIGVycm9yLgogICAgIGlmIChtX2Vycm9yQ29kZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaW50IGxlbmd0aCA9IGRhdGFMZW5ndGg7CisgICAgaW50IGxlbmd0aCA9IGJ1ZmZl
ci5zaXplKCk7CiAgICAgdW5zaWduZWQgcmVtYWluaW5nQnVmZmVyU3BhY2UgPSBtX3RvdGFsQnl0
ZXMgLSBtX2J5dGVzTG9hZGVkOwogICAgIGlmIChsZW5ndGggPiBzdGF0aWNfY2FzdDxsb25nIGxv
bmc+KHJlbWFpbmluZ0J1ZmZlclNwYWNlKSkgewogICAgICAgICAvLyBJZiB0aGUgYnVmZmVyIGhh
cyBoaXQgbWF4aW11bSBzaXplLCBpdCBjYW4ndCBiZSBncm93biBhbnkgbW9yZS4KQEAgLTE4MSw3
ICsxODEsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3RoKSB7Ci0gICAgICAgICAgICB1bnNpZ25l
ZCBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF0YUxl
bmd0aCk7CisgICAgICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBi
dWZmZXIuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKG5ld0xlbmd0aCA8IG1fdG90YWxCeXRlcykg
ewogICAgICAgICAgICAgICAgIGZhaWxlZChOb3RSZWFkYWJsZUVycm9yKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBp
ZiAobGVuZ3RoIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIG1lbWNweShzdGF0aWNfY2Fz
dDxjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpICsgbV9ieXRlc0xvYWRlZCwgZGF0YSwgbGVuZ3Ro
KTsKKyAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1f
Ynl0ZXNMb2FkZWQsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCk7CiAgICAgbV9ieXRlc0xvYWRlZCAr
PSBsZW5ndGg7CiAKICAgICBtX2lzUmF3RGF0YUNvbnZlcnRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCA1MzljMjMwNGE4MmU2M2FhZGZl
MmM1NjdjOThkMGI4YzY4N2E4ZTlmLi5iN2U1YjQwNTdmYjIwNmZmMzIzMTU1Y2MwZjE1MDJmY2Ey
MGQyNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAt
NzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNWM1YmIy
YWVhODM5OTE4YjA2OTc3NTg4MWNlM2EzNjlhNDI4ZTViOS4uM2M5NzhlM2Y0NDIxY2YzNWEyMDYx
ZGZjZTBkMWUwYWFlNTExMzQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTYxNiwxMCArNjE2LDEwIEBAIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJl
c3BvbnNlSW1wbChJbnN0cnVtZW50CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRo
cmVhZGFibGVMb2FkZXJSZXNwb25zZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoYXV0byog
bmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkp
Ci0gICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YSwg
ZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBuZXR3b3JrQWdlbnQtPmRp
ZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsICZidWZmZXIsIGJ1ZmZlci5zaXplKCksIGVuY29kZWRE
YXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVy
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VM
b2FkZXIqIHJlc291cmNlTG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGQyOTU3ODEwZDgzODJjOTM1MWQ1YTkz
ZjE0NGFlZDE0OTNiY2M2NTEuLjgyYWNjZWQyMGNmZDUxMzFiMjUwMmYwOTlhOWM0ZmEyZmRkNjE2
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKQEAgLTE5MywxMyArMTkzLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoUGFnZSYsIERvY3VtZW50TG9hZGVyKiwg
Q2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZShGcmFtZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlciYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoRnJhbWUqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIq
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVy
KiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAg
ICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVm
ZmVyJik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKIApAQCAtNDE0LDcgKzQxNCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlk
TG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9j
dW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVSZXNvdXJjZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9h
ZGVyUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXImLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1
bWVudExvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7
CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYpOwpAQCAtMTA4MiwxNyArMTA4MiwxNyBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVz
cG9uc2UoRG9jdW1lbgogICAgICAgICBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNl
SW1wbCgqYWdlbnRzLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIsIGlkZW50aWZpZXIpOwogfQog
ICAgIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0
YShGcmFtZSogZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFt
ZSogZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzKGZyYW1lKSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCphZ2Vu
dHMsIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAg
ICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCphZ2VudHMsIGlkZW50aWZpZXIsIGJ1ZmZlciwgZW5j
b2RlZERhdGFMZW5ndGgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBnbG9iYWxTY29w
ZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUs
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAg
ICBkaWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyhnbG9iYWxTY29wZSksIGlk
ZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVE
YXRhSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgYnVm
ZmVyLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VM
b2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcAppbmRleCAzOWIwMTFjZjA2ZjdmMzg1MzI0M2UwYTc2M2EzYjFkNDU0OTA0MTQ5Li4z
MjhlYmU3ZTY0MTE5NWU1YTQ2ODUwMjc1NTkxMGY3OGM0OGI1OGQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTkwLDEwICs5
MCwxMCBAQCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxl
bmd0aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKLXZvaWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhKTsKIH0KIAogdW5zaWdu
ZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVu
dCgpCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQnVmZmVyUmVzb3VyY2VE
YXRhKGNvbnN0IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEmIHIKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLU5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3Qq
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCitOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJl
c291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRh
KQpAQCAtMjMwLDE1ICsyMzAsMTUgQEAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2UKICAgICBpZiAo
IXNob3VsZEJ1ZmZlclJlc291cmNlRGF0YSgqcmVzb3VyY2VEYXRhKSkKICAgICAgICAgcmV0dXJu
IHJlc291cmNlRGF0YTsKIAotICAgIGlmIChyZXNvdXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRh
dGFMZW5ndGggPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQorICAgIGlmIChy
ZXNvdXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRhdGEuc2l6ZSgpID4gbV9tYXhpbXVtU2luZ2xl
UmVzb3VyY2VDb250ZW50U2l6ZSkKICAgICAgICAgbV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURh
dGEtPmV2aWN0Q29udGVudCgpOwogICAgIGlmIChyZXNvdXJjZURhdGEtPmlzQ29udGVudEV2aWN0
ZWQoKSkKICAgICAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKIAotICAgIGlmIChlbnN1cmVGcmVl
U3BhY2UoZGF0YUxlbmd0aCkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKSB7
CisgICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRhLnNpemUoKSkgJiYgIXJlc291cmNlRGF0YS0+
aXNDb250ZW50RXZpY3RlZCgpKSB7CiAgICAgICAgIG1fcmVxdWVzdElkc0RlcXVlLmFwcGVuZChy
ZXF1ZXN0SWQpOwotICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSwgZGF0YUxl
bmd0aCk7Ci0gICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YUxlbmd0aDsKKyAgICAgICAgcmVz
b3VyY2VEYXRhLT5hcHBlbmREYXRhKGRhdGEpOworICAgICAgICBtX2NvbnRlbnRTaXplICs9IGRh
dGEuc2l6ZSgpOwogICAgIH0KIAogICAgIHJldHVybiByZXNvdXJjZURhdGE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGRhYWU1ZmU0
YTMxZTMxNTkzNjM3OTA0MjNmNWZiZDMzNzBjNWNkMzkuLmM4Y2VkMTJhNjQwN2ZkY2Q1NzRlY2My
YTc4MTllZGU2NjM4MDNkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHByaXZh
dGU6CiAgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxl
bmd0aCgpIGNvbnN0OwotICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJik7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKIAog
ICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNv
dXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lk
IHNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
JiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxzZSk7Ci0gICAgUmVzb3VyY2VEYXRh
IGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOworICAgIFJlc291cmNlRGF0YSBj
b25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VT
aGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwCmluZGV4IDNjZWI0YjQ3ZjEwNjhhMGFmZWFmMDBmMTc5YzI4MDBjNDc2YmQ2YjEuLjc1
ZjY2ZmIyOTlkNTYwYTNjYzcyYjk4MWI2NGIwMTNlODIwYmI3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKQEAgLTEyNCwxNSArMTI0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVz
ZURldGVjdG9yKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKSBvdmVycmlkZQog
ICAgIHsKLSAgICAgICAgaWYgKCFkYXRhTGVuZ3RoKQorICAgICAgICBpZiAoYnVmZmVyLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YUxlbmd0aCA9PSAt
MSkKLSAgICAgICAgICAgIGRhdGFMZW5ndGggPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSkpOwotCi0gICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShkYXRhLCBkYXRhTGVuZ3RoKSk7CisgICAgICAgIHNpemVfdCBkYXRhTGVuZ3Ro
ID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZl
ci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CisgICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVu
ZChtX2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBkYXRhTGVuZ3RoKSk7CiAgICAgfQog
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3Zl
cnJpZGUKQEAgLTU0OSw5ICs1NDcsOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgICAg
ICAgICAgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCiAgICAgICAgICAg
ICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBwcmV2
aW91c1Jlc291cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+YmFzZTY0
RW5jb2RlZCgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5o
YXNCdWZmZXJlZERhdGEoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNCdWZmZXIg
PSBwcmV2aW91c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgcHJldmlv
dXNCdWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElk
LCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgIHByZXZp
b3VzUmVzb3VyY2VEYXRhLT5idWZmZXIoKS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihb
Jl0oYXV0byYmIGJ1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEt
Pm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgYnVmZmVyKTsKICAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTc3LDcgKzU3NCw3IEBAIHZv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIs
IG51bGxwdHIsIGNhY2hlZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpLCAwKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEsIGludCBleHBlY3RlZERhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkKIHsKICAgICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmllcnMuY29udGFpbnMoaWRlbnRp
ZmllcikpCiAgICAgICAgIHJldHVybjsKQEAgLTU4NSwxNiArNTgyLDE2IEBAIHZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5Ojpy
ZXF1ZXN0SWQoaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChkYXRhKSB7Ci0gICAg
ICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0
YSA9IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBkYXRh
LCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNl
RGF0YShyZXF1ZXN0SWQsICpkYXRhKTsKIAogICAgICAgICAvLyBGb3IgYSBzeW5jaHJvbm91cyBY
SFIsIGlmIHdlIGRpZG4ndCBhZGQgZGF0YSB0aGVuIHdlIGNhbiBhcHBseSBpdCBoZXJlIGFzIGJh
c2U2NCBlbmNvZGVkIGNvbnRlbnQuCiAgICAgICAgIC8vIE9mdGVuIHRoZSBkYXRhIGlzIHRleHQg
YW5kIHdlIHdvdWxkIGhhdmUgYSBkZWNvZGVyLCBidXQgZm9yIG5vbi10ZXh0IHdlIHdvbid0IGhh
dmUgYSBkZWNvZGVyLgogICAgICAgICAvLyBTeW5jIFhIUnMgbWF5IG5vdCBoYXZlIGEgY2FjaGVk
IHJlc291cmNlLCB3aGlsZSBub24tc3luYyBYSFJzIHVzdWFsbHkgdHJhbnNmZXIgZGF0YSBvdmVy
IG9uIGNvbXBsZXRpb24uCiAgICAgICAgIGlmIChtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5ICYm
IHJlc291cmNlRGF0YSAmJiAhcmVzb3VyY2VEYXRhLT5oYXNCdWZmZXJlZERhdGEoKSAmJiAhcmVz
b3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgpKQotICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRh
LT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhkYXRh
LCBkYXRhTGVuZ3RoKSwgdHJ1ZSk7CisgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJl
c291cmNlQ29udGVudChyZXF1ZXN0SWQsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGRhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPmRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCgpLCBkYXRhTGVuZ3RoLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRhdGFSZWNlaXZlZChy
ZXF1ZXN0SWQsIHRpbWVzdGFtcCgpLCBleHBlY3RlZERhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVu
Z3RoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmco
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJj
ZUxvYWRlciopCkBAIC0xMjcxLDcgKzEyNjgsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9ucwog
ICAgIGlmIChsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCgiVW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkg
YmVlbiBwcm9jZXNzZWQiX3MpOwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGRhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBpZiAoYmFzZTY0RW5j
b2RlZCkgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IGJhc2U2NERlY29kZShjb250ZW50KTsKICAg
ICAgICAgaWYgKCFidWZmZXIpCkBAIC0xMjk2LDkgKzEyOTMsOSBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRo
UmVzcG9ucwogICAgIH0KICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGRzKFdURk1vdmUo
ZXhwbGljaXRIZWFkZXJzKSk7CiAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgcmVzcG9uc2UubWltZVR5cGUoKSk7Ci0gICAgbG9hZGVy
LT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRhdGEucmVs
ZWFzZU5vbk51bGwoKV0oKSBtdXRhYmxlIHsKKyAgICBsb2FkZXItPmRpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZSwgW2xvYWRlciwgYnVmZmVyID0gZGF0YS5yZWxlYXNlTm9uTnVsbCgpXSgpIHsK
ICAgICAgICAgaWYgKGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICAgICAgbG9hZGVyLT5kaWRSZWNl
aXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCksIERhdGFQYXlsb2FkV2hv
bGVSZXNvdXJjZSk7CisgICAgICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwg
YnVmZmVyLT5zaXplKCksIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CiAgICAgICAgIGxvYWRl
ci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MoKSk7CiAgICAgfSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5oCmluZGV4IDZiY2Q4N2RkY2Q4YjA0NDEzMDhkMWQwMWVjYTZiMGU2ZGExNDEzZDQu
LjcyZjQyM2ZmNjEyNzdlZWY0YmQzNTYzMjhjNDZkM2JkOTEzMWZmNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
aApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgQ2FjaGVk
UmVzb3VyY2UqKTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdE9mVHlwZShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpMb2FkVHlwZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciopOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyKiwgaW50IGV4cGVjdGVkRGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogICAgIHZvaWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3Vt
ZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmNwcAppbmRleCA0MzMyZDY5MWJiZjgyNmE3Yzg3ZWE4M2EzMTdlOTYxMTVhMjA0OTkz
Li5hMDk4MWFkZDc5ODUzMmI5N2JhYTQwNDEyOGJhMzg4OTZkYWY2ODRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250
ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkK
ICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291
cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJE
YXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1
ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRG
aWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogfQogCiBzdGF0aWMgY29u
c3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXJDbGllbnQuaAppbmRleCAyMTVjMDRlYzk4OTVlOWYxZTZlMTQ3ZGE4MjA5MzAwOTg1MjM5
NjIzLi5mYTdhZDMwMzlhMjA1ZTkwNTcxMDhmM2M2ZjM5MjQxOWJjNDY0N2RjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3Rp
dHV0ZURhdGE7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJDbGllbnQgewpAQCAtNDEsNyArNDIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZm
ZXImKSA9IDA7CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9j
ayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRG
b3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDZiZjNhYzI5N2VjNmIyNjNhMDc4NjQwYmNm
M2FkNTc3OWRiMGZlZGIuLjVlNzdhNjk3YTg0ZWFlOWRhYThlYjEwMjk5MTBhNzA4YTEyNDg5ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNDgzLDggKzQ4
Myw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZygpCiAgICAgICAgIC8v
IElmIHRoaXMgaXMgYW4gZW1wdHkgZG9jdW1lbnQsIGl0IHdpbGwgbm90IGhhdmUgYWN0dWFsbHkg
YmVlbiBjcmVhdGVkIHlldC4gQ29tbWl0IGR1bW15IGRhdGEgc28gdGhhdAogICAgICAgICAvLyBE
b2N1bWVudFdyaXRlcjo6YmVnaW4oKSBnZXRzIGNhbGxlZCBhbmQgY3JlYXRlcyB0aGUgRG9jdW1l
bnQuCiAgICAgICAgIGlmICghbV9nb3RGaXJzdEJ5dGUpCi0gICAgICAgICAgICBjb21taXREYXRh
KDAsIDApOwotICAgICAgICAKKyAgICAgICAgICAgIGNvbW1pdERhdGEoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKSk7CisKICAgICAgICAgaWYgKCFmcmFtZUxvYWRlcigpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5maW5pc2hlZExvYWRpbmcodGhp
cyk7CkBAIC0xMTU3LDggKzExNTcsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFm
dGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGlmICghaXNTdG9wcGlu
ZygpICYmIG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmIGlzTG9hZGluZ01haW5SZXNvdXJj
ZSgpKSB7CiAgICAgICAgIGF1dG8gY29udGVudCA9IG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgp
OwogICAgICAgICBpZiAoY29udGVudCAmJiBjb250ZW50LT5zaXplKCkpIHsKLSAgICAgICAgICAg
IGNvbnRlbnQtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAg
ICAgICAgZGF0YVJlY2VpdmVkKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAg
ICAgICAgICBjb250ZW50LT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYg
YnVmZmVyKSB7CisgICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkp
CkBAIC0xMTcxLDcgKzExNzEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVy
Q29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIH0KIH0KIAotdm9pZCBEb2N1
bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQor
dm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdlIGFuZCBwYXJzaW5nIHRoZSBu
ZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRlc3Ryb3lzIHRoZSBkYXRhc291
cmNlCiAgICAgLy8gYnkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28gcmV0YWluIHRlbXBvcmFyaWx5
LgpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIGlmIChBcmNoaXZlRmFjdG9yeTo6
aXNBcmNoaXZlTUlNRVR5cGUocmVzcG9uc2UoKS5taW1lVHlwZSgpKSkKICAgICAgICAgcmV0dXJu
OwogI2VuZGlmCi0gICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmNvbW1pdHRlZExvYWQodGhpcywg
ZGF0YSwgbGVuZ3RoKTsKKyAgICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuY29tbWl0dGVkTG9hZCh0
aGlzLCBkYXRhKTsKIAogICAgIGlmIChpc011bHRpcGFydFJlcGxhY2luZ0xvYWQoKSkKICAgICAg
ICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCk7CkBA
IC0xMjE1LDcgKzEyMTUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkVXNlQWN0aXZlU2Vy
dmljZVdvcmtlckZyb21QYXJlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZQogfQogI2VuZGlmCiAK
LXZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNp
emVfdCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fZ290Rmlyc3RCeXRlKSB7CiAgICAgICAgIG1f
Z290Rmlyc3RCeXRlID0gdHJ1ZTsKQEAgLTEzMTMsMjQgKzEzMTMsMjQgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkK
ICNlbmRpZgogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNpbmcoKSk7Ci0g
ICAgbV93cml0ZXIuYWRkRGF0YShieXRlcywgbGVuZ3RoKTsKKyAgICBtX3dyaXRlci5hZGREYXRh
KGRhdGEpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBE
b2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwg
JnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKLSAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgbGVu
Z3RoKTsKKyAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIERv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIg
JiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChkYXRhLCBsZW5n
dGgpKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGlu
dWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSkKICAgICAg
ICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgQVNTRVJUKGxlbmd0
aCk7CisgICAgQVNTRVJUKGJ1ZmZlci5kYXRhKCkpOworICAgIEFTU0VSVChidWZmZXIuc2l6ZSgp
KTsKICAgICBBU1NFUlQoIW1fcmVzcG9uc2UuaXNOdWxsKCkpOwogCiAgICAgLy8gVGhlcmUgaXMg
YSBidWcgaW4gQ0ZOZXR3b3JrIHdoZXJlIGNhbGxiYWNrcyBjYW4gYmUgZGlzcGF0Y2hlZCBldmVu
IHdoZW4gbG9hZHMgYXJlIGRlZmVycmVkLgpAQCAtMTM0MCwxMiArMTM0MCwxMiBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkKICNlbmRpZgogCiAgICAgaWYgKG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VM
b2FkZXIpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hEaWRSZWNl
aXZlRGF0YSh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCBk
YXRhLCBsZW5ndGgsIC0xKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaXNw
YXRjaERpZFJlY2VpdmVEYXRhKHRoaXMsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3Vy
Y2VMb2FkZXIsICZidWZmZXIsIGJ1ZmZlci5zaXplKCksIC0xKTsKIAotICAgIG1fYXBwbGljYXRp
b25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgsIC0xLCBm
YWxzZSk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+bWFpblJlc291cmNlRGF0YVJlY2Vp
dmVkKGJ1ZmZlciwgLTEsIGZhbHNlKTsKIAogICAgIGlmICghaXNNdWx0aXBhcnRSZXBsYWNpbmdM
b2FkKCkpCi0gICAgICAgIGNvbW1pdExvYWQoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgY29tbWl0
TG9hZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXR1cEZvclJlcGxhY2Uo
KQpAQCAtMTYxNCw3ICsxNjE0LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVB
cmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUo
KSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YSht
X3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsK
KyAgICBjb21taXREYXRhKCptX3BhcnNlZEFyY2hpdmVEYXRhKTsKICAgICByZXR1cm4gdHJ1ZTsK
ICNlbmRpZgogfQpAQCAtMjI1Nyw4ICsyMjU3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5
YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAKICAgICBmcmFtZUxvYWRlcigpLT5z
ZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwotICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7
Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
cmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExvYWQobWFpblJlc291cmNlRGF0YSgp
LT5tYWtlQ29udGlndW91cygpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29u
TG9hZGluZygpCkBAIC0yNDEwLDkgKzI0MDksOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjplbnF1
ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChTZWN1cml0eVBvbGljeVZpb2xhdGlvbgog
fQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotdm9pZCBEb2N1bWVudExvYWRlcjo6
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IHNpemUpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBkYXRhUmVjZWl2ZWQoZGF0
YSwgc2l6ZSk7CisgICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CiB9CiAKIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRl
eCBiNDY5ODFkNzUwYjI1YzFmZDMwN2YxNmZkYTc0YjdlZTMwNmE0YzM5Li4yOGUyOGE2ODhhZTZi
NTdlMGYwZDE0YzRlN2EwYzI1NThjYjY3ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U1dDbGllbnRDb25uZWN0aW9uOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3Vy
Y2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7CiBjbGFzcyBVc2VyQ29udGVudFVS
TFBhdHRlcm47CkBAIC0zNzcsNyArMzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRUaW1p
bmcoKSB7IG1fbG9hZFRpbWluZyA9IHsgfTsgfQogCiAgICAgLy8gVGhlIFdlYktpdCBsYXllciBj
YWxscyB0aGlzIGZ1bmN0aW9uIHdoZW4gaXQncyByZWFkeSBmb3IgdGhlIGRhdGEgdG8gYWN0dWFs
bHkgYmUgYWRkZWQgdG8gdGhlIGRvY3VtZW50LgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29t
bWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgQXBw
bGljYXRpb25DYWNoZUhvc3QmIGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAgICAgQXBw
bGljYXRpb25DYWNoZUhvc3QqIGFwcGxpY2F0aW9uQ2FjaGVIb3N0VW5sZXNzQmVpbmdEZXN0cm95
ZWQoKSBjb25zdDsKQEAgLTQ3Nyw3ICs0NzgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21t
aXRJZlJlYWR5KCk7CiAgICAgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJik7Ci0gICAgdm9pZCBjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3QqLCBpbnQpOworICAg
IHZvaWQgY29tbWl0TG9hZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGNsZWFyTWFp
blJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHNldHVwRm9yUmVwbGFjZSgpOwpAQCAtNDkz
LDcgKzQ5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYWluUmVjZWl2ZWRFcnJvcihjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJp
ZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXZp
ZXdSZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIG92ZXJyaWRlOwpAQCAtNTAzLDEzICs1MDQsMTMgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1
aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZl
ZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQp
IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZv
ckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVy
KGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAjZW5k
aWYKIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAg
Ym9vbCBtYXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGI5YzQxMzUyNTY3NjI2NzIxOTA3YWYz
NjZkZmIxZGVjNzk0YzI0NzQuLjg2NGI2NWExZDExMzFmYjYzNzEyNWIxNzM5OTFlOWQzZTBhNmU3
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCkBAIC00MzcsMjAgKzQzNywyMCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudAog
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwog
fQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIGRpZFJlY2VpdmVE
YXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgZGlk
UmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+aWRlbnRpZmllcigpLCBidWZmZXIpOwogfQogCi12b2lk
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVChtX2NsaWVu
dCk7CiAKICAgICBpZiAobV9kZWxheUNhbGxiYWNrc0ZvckludGVncml0eUNoZWNrKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgZGF0YUxlbmd0
aCk7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZmFsc2UpOwogfQogCiB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2Fk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VUaW1pbmcmIHJlc291cmNl
VGltaW5nKQpAQCAtNDkzLDIwICs0OTMsMTQgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWYKIAog
ICAgICAgICBpZiAob3B0aW9ucygpLmZpbHRlcmluZ1BvbGljeSA9PSBSZXNwb25zZUZpbHRlcmlu
Z1BvbGljeTo6RGlzYWJsZSkgewogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNw
b25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7Ci0gICAgICAgICAgICBpZiAoYXV0byogYnVmZmVy
ID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewotICAgICAgICAgICAgICAgIGJ1ZmZl
ci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUo
KSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
YXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlciwgZmFsc2UpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlc3BvbnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJl
c3BvbnNlOjpUeXBlOjpEZWZhdWx0KTsKIAogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVSZXNwb25zZShpZGVudGlmaWVyLCBSZXNvdXJjZVJlc3BvbnNlOjpmaWx0ZXIocmVzcG9uc2Us
IG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNs
dWRlID8gUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6Tm8g
OiBSZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3JtRXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpZZXMpKTsK
LSAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZl
cigpKSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYg
c2VnbWVudCkgewotICAgICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEo
c2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5y
ZXNvdXJjZUJ1ZmZlcigpKQorICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0
YSgqYnVmZmVyLCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY2NywxMSArNjYxLDgg
QEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICB9CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNl
KGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGRhdGEt
PmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICBkaWRSZWNl
aXZlRGF0YShpZGVudGlmaWVyLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAg
ICAgICB9KTsKLSAgICB9CisgICAgaWYgKGRhdGEpCisgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlk
ZW50aWZpZXIsICpkYXRhKTsKIAogICAgIGNvbnN0IGF1dG8qIHRpbWluZyA9IHJlc3BvbnNlLmRl
cHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKICAgICBhdXRvIHJlc291cmNlVGlt
aW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21TeW5jaHJvbm91c0xvYWQocmVxdWVzdFVSTCwgbV9v
cHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWluZywgdGltaW5nID8gKnRpbWluZyA6IE5ldHdvcmtM
b2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCksIHJlc3BvbnNlLCBzZWN1cml0eU9yaWdpbigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApp
bmRleCBmMWY0MWVlOTFkNmNlOGExYzU4NjIzODE3YjM1OGY3NzQ2NTFlMGE0Li5jODZiYTdmNDUz
ODNiNmMyODYwMDMyZDNhZWJmYmEzZTA4NjA3NjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCkBAIC04NiwxNCArODYsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAg
ICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5
dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwot
ICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICAg
ICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNoZWRUaW1pbmdG
b3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSBvdmVy
cmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQoY29uc3QgUmVz
b3VyY2VUaW1pbmcmKTsKICAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hh
cmVkQnVmZmVyJik7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIpOwogICAgICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2lu
QWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmNwcAppbmRleCBiMDQ2ZWYwZGUyMDQ4ZWZkNDMxOTcwMjYyMmI5NmE3ZGYy
ZmVhZmE3Li40ZmY5MzgxODBmZGQyOGZjNzE1ZDA4ODgxNjA4ZmM2Mjg5NDkyZTlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCB2
b2lkIERvY3VtZW50V3JpdGVyOjpyZXBvcnREYXRhUmVjZWl2ZWQoKQogICAgIG1fZnJhbWUtPmRv
Y3VtZW50KCktPnJlc29sdmVTdHlsZShEb2N1bWVudDo6UmVzb2x2ZVN0eWxlVHlwZTo6UmVidWls
ZCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRXcml0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogYnl0
ZXMsIHNpemVfdCBsZW5ndGgpCit2b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIHRvIEFTU0VS
VCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQyNyBoYXMg
YmVlbiByZXNvbHZlZC4KICAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpOb3RT
dGFydGVkKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRh
KGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIEFTU0VSVChtX3BhcnNlcik7Ci0gICAgbV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0
aGlzLCBieXRlcywgbGVuZ3RoKTsKKyAgICBtX3BhcnNlci0+YXBwZW5kQnl0ZXMoKnRoaXMsIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRXcml0ZXI6Omluc2Vy
dERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYgbWFya3VwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuaAppbmRleCAwNzE3MmM5NzM5ZWI1NzM1YmM4MWY4ZGVmMmZiOWIy
ODVjMjU0ZDBiLi5jMGEzNGE2YjdlOWNmZTk2NDMwNDVhOTVlNzkzMjI1MjM2M2IyNjhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50UGFyc2VyOwog
Y2xhc3MgRnJhbWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNv
ZGVyOwogCiBjbGFzcyBEb2N1bWVudFdyaXRlciB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgYmVnaW4oKTsKICAgICBib29sIGJlZ2luKGNvbnN0IFVSTCYsIGJvb2wgZGlz
cGF0Y2hXaW5kb3dPYmplY3RBdmFpbGFibGUgPSB0cnVlLCBEb2N1bWVudCogb3duZXJEb2N1bWVu
dCA9IG51bGxwdHIpOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6
ZV90IGxlbmd0aCk7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAg
IHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBp
bnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRoZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCmluZGV4IDc1OGNiZTgwNjU0ZTg4ODk3YWNkOWVkNDExOTkwYzg2ODZjYWYzYmEu
LmQyM2M5NmI2YzUyODAzZmVjMmU0NTdiN2VjN2RiYzllYjM3OTk1ZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC04NzAsNyArODcwLDcgQEAgdm9pZCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiB7CiB9CiAKLXZv
aWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlcios
IGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1p
dHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAy
MjY5OWM5YzUxODMyYTVhYThjODlhYmFiMmZmYzdlMDk4NWJmYzAwLi4xMTZhMTdkMWY1YzllNjQ3
ZTFmMTQxYTEwMDg2YjA3OTgzOTNmM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2Fk
KERvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBj
b21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7
CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKIAogICAg
IFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29u
c3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBmZGM5N2Rj
NDYyYzg3NTI2YWExODhmNzk2OGQ2MGEwYzgzZDY4MGQ5Li5iYjUyOTFhNjdmZmZlN2ExMTZmOGMy
Y2ZiZjRmYWI5NGY4ODQ4MjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
QEAgLTE2ODcsNyArMTY4Nyw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFFbGVt
ZW50VVJMKFVSTCYgdXJsLCBOb2RlJiBpbml0aWF0b3JOb2RlKQogICAgIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgcmVx
dWVzdEZyb21EZWxlZ2F0ZShyZXF1ZXN0LCBpZGVudGlmaWVyLCBlcnJvcik7Ci0gICAgbm90aWZp
ZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgp
LCBpZGVudGlmaWVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKHVybCwgU3RyaW5nKCksIC0x
LCBTdHJpbmcoKSksIDAsIC0xLCAtMSwgZXJyb3IpOworICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwg
cmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygpLCAtMSwgU3RyaW5nKCkpLCBu
dWxscHRyLCAtMSwgLTEsIGVycm9yKTsKIAogICAgIHVybCA9IHJlcXVlc3QudXJsKCk7CiAKQEAg
LTIwODcsOCArMjA4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9h
ZCgpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUp
OwogCiAgICAgICAgIC8vIFNlbmQgcmVtYWluaW5nIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBtYWlu
IHJlc291cmNlLgotICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5S
ZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwKLSAgICAgICAgICAgIG51bGxwdHIs
IHN0YXRpY19jYXN0PGludD4obV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5leHBlY3RlZENv
bnRlbnRMZW5ndGgoKSksIDAsIG1haW5SZXNvdWNlRXJyb3IpOworICAgICAgICBub3RpZmllcigp
LnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1h
aW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9u
c2UoKSwgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50PihtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25z
ZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwgbWFpblJlc291Y2VFcnJvcik7CiAKICAg
ICAgICAgVmVjdG9yPFJlZjxGcmFtZT4+IHRhcmdldEZyYW1lczsKICAgICAgICAgdGFyZ2V0RnJh
bWVzLmFwcGVuZChtX2ZyYW1lKTsKQEAgLTIxMzYsNyArMjEzNSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2Ug
Z2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBk
byB0aGUgcmlnaHQgdGhpbmcuCiAgICAgICAgICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3Mg
Y29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJh
Y3RpY2UuCiAgICAgICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9j
YWwgZmlsZS4KLSAgICAgICAgICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVz
c2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9u
c2UsIDAsIHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkp
LCAwLCBlcnJvcik7CisgICAgICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJl
c3BvbnNlLCBudWxscHRyLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVu
dExlbmd0aCgpKSwgMCwgZXJyb3IpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFdo
eSBvbmx5IHRoaXMgZnJhbWUgYW5kIG5vdCBwYXJlbnQgZnJhbWVzPwpAQCAtMzE2Niw3ICszMTY1
LDggQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRM
aWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50
TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgZGF0YSA/IGRhdGEt
PmRhdGEoKSA6IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwLCAtMSwgZXJyb3IpOwor
CisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50
TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgZGF0YS5nZXQoKSwg
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIC0xLCBlcnJvcik7CiAgICAgcmV0dXJuIGlkZW50aWZp
ZXI7CiB9CiAKQEAgLTM2NDcsNyArMzY0Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRlZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyCiAK
ICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlID0gcmVzb3VyY2UucmVzcG9uc2UoKTsKICAg
ICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpNZW1vcnlDYWNo
ZSk7Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3Vt
ZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwgMCwgcmVz
b3VyY2UuZW5jb2RlZFNpemUoKSwgMCwgZXJyb3IpOworICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwg
bmV3UmVxdWVzdCwgcmVzcG9uc2UsIG51bGxwdHIsIHJlc291cmNlLmVuY29kZWRTaXplKCksIDAs
IGVycm9yKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6YXBwbHlVc2VyQWdlbnRJZk5lZWRlZChS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCmluZGV4IGVlOWYzZDBjOTg0ZDQ1NWNiYjkxYjQ2MGMxYmMxMjg5OGQxMjM2NTIu
LjM1MmE0YzRmYjUwNGY3Y2Q0ZDJlYzQwNmU2YmMyOTExYTU1ZmQwOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC03LDcgKzcsNyBAQAogICogYXJlIG1l
dDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKQEAgLTUwLDcg
KzUwLDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWZkZWYgX19PQkpDX18g
CisjaWZkZWYgX19PQkpDX18KICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogdHlw
ZWRlZiBpZCBSZW1vdGVBWE9iamVjdFJlZjsKICNlbHNlCkBAIC05OCw3ICs5OCw3IEBAIGNsYXNz
IFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3Mg
V2lkZ2V0OwogCkBAIC0yMTQsOSArMjE0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
cGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdHRl
ZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZm
ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRl
ciopID0gMDsKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygp
ID0gMDsKIApAQCAtMjcyLDcgKzI3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB1
c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgb3Zl
cnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQot
ICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENh
Y2hlZEZyYW1lKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRG
cm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSA9IDA7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKQEAgLTM4MSw3ICszODEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgQWxs
b3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2Vu
dE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBBbGxvd3NDb250ZW50SmF2YVNjcmlwdDo6WWVz
OyB9Ci0gICAgCisKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgdmlydHVhbCBi
b29sIHNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVo
YXZpb3IoKSB7IH0KQEAgLTM5MCw3ICszOTAsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFBERktJ
VF9QTFVHSU4pCiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZVBERlBsdWdpbihjb25zdCBTdHJp
bmcmLCBTdHJpbmdWaWV3KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCi0gICAgCisK
ICAgICB2aXJ0dWFsIGJvb2wgaXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmNwcAppbmRleCA1ZDEyMGUyNDdhYzI2MjcxMTYxZGUwZGM1MjMwMjRkYzhk
ZTM0ZDY5Li4xYTE3YTcwZmE1OGM3MjI4ZjYzODkzNTlkZDBkMzM5ZDBlMDVjZDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMzEsMTMg
KzIzMSwxMyBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzUwogICAgICAgICBtX2NsaWVudC0+ZGF0
YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBN
ZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVz
b3VyY2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7
CiAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlz
LCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhp
cywgYnVmZmVyKTsKIH0KIAogdm9pZCBNZWRpYVJlc291cmNlOjpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCmluZGV4IGZmNmMy
ODg3MTAwODhmNGIwNTRjZTQ3NjNkNWRhMGRkYzkyYzIwNjUuLjdiNTU3NzIwZWYwNTMzZmJhYTIy
NjU2NTM4ZWZkZDk2ZjYxNzlmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9N
ZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVz
b3VyY2VMb2FkZXIuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRpcmVj
dFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQo
Q2FjaGVkUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IDYwNDNhYzliZTI2N2VhNGZiYzcxZTExMThiOTA3
OTE1NWUzOTE1MDMuLjVjYWFkZjYyOWM3MGFlMDg2Yjc3YmQ3MmNkMjg2NzUzNmI4ZmE5N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmNwcApAQCAtMTQxLDMwICsxNDEsMTQgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AKICAg
ICB9KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0gICAgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVu
Z3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxv
YWRUeXBlKQotewotICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92
ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKLX0KLQotdm9p
ZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
IGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgUmVmPE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGlm
IChtX2NsaWVudCkgewotICAgICAgICBpZiAoYnVmZmVyKSB7Ci0gICAgICAgICAgICBidWZmZXIt
PmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgbV9j
bGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUo
KSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgZGF0YSwgbGVuZ3RoKTsKLSAgICB9CisgICAgaWYgKG1f
Y2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyKTsK
IAotICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0
aCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsK
KyAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxl
bmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
b2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmgKaW5kZXggYjUxNzRlZGM5NGI5OTIzOTAyMDVmMGZhZDQ1MmVhNWFjMzg3
ODkzOC4uMWVjN2Q2MWUzYTE3NWMyMmI1NTg3NThkMzdlZDBjNTViZTVmMTNiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKQEAg
LTM2LDEyICszNiwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcios
IGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
KSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgd2FudHNBbGxTdHJlYW1zKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KQEAgLTYyLDggKzYzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBj
YWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0
aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKIApAQCAtNzQsOCArNzQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0KICAgICB2b2lk
IG5vdGlmeURvbmUoKTsKIAogICAgIFdlYWtQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJD
bGllbnQ+IG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE5vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRO
b3RpZmllci5jcHAKaW5kZXggNjJiYjU2ZTM0ZTZmNDZkMjYyODM2Y2ZjYTQ2NWI0ZGIwZTMwODNj
Zi4uMDE5ZDE3NDgxZTQ0ODJhMDQ4YTI2NzM1NjAxODc0Nzk3ZDNlODg3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCkBAIC0zOSw2ICszOSw3
IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKICNp
ZiBVU0UoUVVJQ0tfTE9PSykKICNpbmNsdWRlICJRdWlja0xvb2suaCIKQEAgLTc4LDEyICs3OSwx
MiBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzbwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3Bv
bnNlKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIHIsIGxv
YWRlcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJl
c291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChQYWdlKiBwYWdlID0gbV9m
cmFtZS5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jlc3Mo
bG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGFMZW5ndGgpOworICAgICAgICBwYWdlLT5wcm9ncmVz
cygpLmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRpZmllcigpLCBidWZmZXIuc2l6ZSgp
KTsKIAotICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LCBsb2FkZXItPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LCBsb2FkZXItPmlkZW50aWZpZXIoKSwgJmJ1ZmZlciwgYnVmZmVyLnNpemUoKSwgZW5jb2RlZERh
dGFMZW5ndGgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRGaW5pc2hMb2Fk
KFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29y
a0xvYWRNZXRyaWNzKQpAQCAtMTUzLDEzICsxNTQsMTMgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
UmUKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3Bv
bnNlKG1fZnJhbWUsIGlkZW50aWZpZXIsIGxvYWRlciwgciwgcmVzb3VyY2VMb2FkZXIpOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1
bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIsIGludCBleHBlY3RlZERhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICAvLyBOb3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVyQ2xp
ZW50IG1heSBjYXVzZSB0aGUgZnJhbWUgdG8gYmUgZGVzdHJveWVkLgogICAgIFJlZjxGcmFtZT4g
cHJvdGVjdChtX2ZyYW1lKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNo
RGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhTGVuZ3RoKTsK
KyAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRM
ZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBleHBlY3RlZERhdGFMZW5ndGgpOwogCi0gICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSgmbV9mcmFtZSwgaWRlbnRpZmll
ciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoJm1fZnJhbWUsIGlkZW50aWZpZXIsIGJ1ZmZl
ciA/ICpidWZmZXIgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7
CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGlu
ZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJlc291
cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKQEAgLTE4MCw3ICsxODEsNyBAQCB2b2lkIFJlc291
cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIFJlc291cgogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRp
bmcoJm1fZnJhbWUsIGxvYWRlciwgaWRlbnRpZmllciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291
cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExv
YWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIFJlc291cmNlTG9hZE5vdGlm
aWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVy
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgU2hh
cmVkQnVmZmVyKiBidWZmZXIsIGludCBleHBlY3RlZERhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgLy8gSWYgdGhlIHJl
cXVlc3QgaXMgbnVsbCwgd2lsbFNlbmRSZXF1ZXN0IGNhbmNlbGxlZCB0aGUgbG9hZC4gV2Ugc2hv
dWxkCiAgICAgLy8gb25seSBkaXNwYXRjaCBkaWRGYWlsTG9hZGluZyBpbiB0aGlzIGNhc2UuCkBA
IC0xOTMsOCArMTk0LDggQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmlu
Z0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwKICAgICBpZiAoIXJlc3Bv
bnNlLmlzTnVsbCgpKQogICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXIs
IGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlmIChkYXRhTGVuZ3RoID4gMCkKLSAgICAg
ICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFM
ZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBpZiAoZXhwZWN0ZWREYXRhTGVuZ3RoID4g
MCkKKyAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50aWZpZXIsIGJ1
ZmZlciwgZXhwZWN0ZWREYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICBpZiAo
ZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmlj
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmll
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKaW5kZXgg
NmRhMTYwMzI1ZjQyZmVmNTQwYzZiZDUwYmIxODJlODY5ZGFkZTllMy4uYzRmNWIyZWJkZDgxMDhl
NzhiMjgyNWI5ZDZkNzEyOGQ3NGQ1NzRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE5vdGlmaWVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVzb3VyY2VM
b2FkTm90aWZpZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlc291cmNlTG9hZE5vdGlm
aWVyKTsKQEAgLTU1LDE4ICs1NiwxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50IGRhdGFMZW5ndGgs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkKFJlc291cmNlTG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJik7CiAgICAgdm9pZCBkaWRGYWlsVG9Mb2FkKFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVx
dWVzdChSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVu
dExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UqKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVy
KiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
b3VyY2VMb2FkZXIqID0gbnVsbHB0cik7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVEYXRh
KERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciosIGludCBleHBlY3RlZERhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmco
RG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkaW5nKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAKLSAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpOworICAgIHZvaWQgc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2Fk
ZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTaGFyZWRCdWZmZXIqLCBpbnQgZXhwZWN0ZWRE
YXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
IAogICAgIGJvb2wgaXNJbml0aWFsUmVxdWVzdElkZW50aWZpZXIoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggNmRlYmIyNTg4YTNlODJiMjFjNjFkN2U4ZjM2ZTRmNGJiYmEyNWU2MC4u
NjY0N2MyNzA4MTE4MGViY2VjMmI1Y2EyOWZkNjBiNzIzYWI2NDgzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogCiAgICAgICAgIGF1dG8gZGF0YVNpemUgPSBkZWNv
ZGVSZXN1bHQtPmRhdGEuc2l6ZSgpOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIGRhdGFSZXNw
b25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZSh1cmwsIGRlY29kZVJlc3Vs
dC52YWx1ZSgpKTsKLSAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGRhdGFSZXNwb25z
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBkYXRhU2l6
ZSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGVjb2RlUmVzdWx0LT5kYXRh
KSldKCkgbXV0YWJsZSB7CisgICAgICAgIHRoaXMtPmRpZFJlY2VpdmVSZXNwb25zZShkYXRhUmVz
cG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZGF0
YVNpemUsIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRlY29kZVJlc3VsdC0+
ZGF0YSkpXSgpIHsKICAgICAgICAgICAgIGlmICghdGhpcy0+cmVhY2hlZFRlcm1pbmFsU3RhdGUo
KSAmJiBkYXRhU2l6ZSAmJiBtX3JlcXVlc3QuaHR0cE1ldGhvZCgpICE9ICJIRUFEIikKLSAgICAg
ICAgICAgICAgICB0aGlzLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoZGF0YSksIGRhdGFTaXpl
LCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICAgICAgICAgIHRoaXMtPmRpZFJl
Y2VpdmVCdWZmZXIoZGF0YSwgZGF0YVNpemUsIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CiAK
ICAgICAgICAgICAgIGlmICghdGhpcy0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewogICAgICAg
ICAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7CkBAIC0zMjgsNyArMzI4
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNl
KCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVy
OjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9h
ZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjphZGRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewog
ICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTMzNiwxMCArMzM2LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ20KICAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERh
dGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKICAgICAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsK
IAotICAgIGlmIChidWZmZXIpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZCgqYnVmZmVy
KTsKLSAgICBlbHNlCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgp
OworICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZChidWZmZXIpOwogfQogCiBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKQEAg
LTUzOSw3ICs1MzYsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxldGlvbkhhbgogICAgICAgICBmcmFtZUxv
YWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBtX3Jlc3BvbnNlKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIC8vIFRoZSBm
b2xsb3dpbmcgYXNzZXJ0aW9ucyBhcmUgbm90IHF1aXRlIHZhbGlkIGhlcmUsIHNpbmNlIGEgc3Vi
Y2xhc3MKICAgICAvLyBtaWdodCBvdmVycmlkZSBkaWRSZWNlaXZlRGF0YSBpbiBhIHdheSB0aGF0
IGludmFsaWRhdGVzIHRoZW0uIFRoaXMKQEAgLTU0NywzMCArNTQ0LDIyIEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCwgbG9uZyBsCiAgICAgLy8gQVNTRVJUKGNvbiA9PSBjb25uZWN0aW9uKTsKICAgICAvLyBB
U1NFUlQoIW1fcmVhY2hlZFRlcm1pbmFsU3RhdGUpOwogCi0gICAgZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9h
ZFR5cGUpOworICAgIGRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwg
ZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAw
LCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwot
fQotCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0
IGRhdGErbGVuZ3RoICpPUiogYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgotICAgIEFTU0VSVCgh
YnVmZmVyIHx8ICghZGF0YSAmJiAhbGVuZ3RoKSk7Ci0KICAgICAvLyBQcm90ZWN0IHRoaXMgaW4g
dGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4g
ZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25l
IGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgogICAgIFJlZjxSZXNvdXJjZUxvYWRl
cj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhZGREYXRhT3JCdWZmZXIoZGF0YSwgbGVu
Z3RoLCBidWZmZXIuZ2V0KCksIGRhdGFQYXlsb2FkVHlwZSk7CisgICAgYWRkQnVmZmVyKGJ1ZmZl
ciwgZGF0YVBheWxvYWRUeXBlKTsKIAogICAgIC8vIEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJj
ZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywgdGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0
aGluZy4KICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3Jr
aW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQg
YmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5z
ZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYg
bV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0
YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29k
ZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVj
ZWl2ZURhdGEodGhpcywgYnVmZmVyLm1ha2VDb250aWd1b3VzKCksIHN0YXRpY19jYXN0PGludD4o
ZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAg
LTcyOSwxNCArNzE4LDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmCiAgICAgZGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2
b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlk
UmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRC
eXRlcyk7CisgICAgZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlQnVmZmVyKFdURk1v
dmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIGRp
ZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRl
cyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDkwNzVjYmMwYTMwNDBlYTE1MGE4NjI1Y2RhMDg5
MGIxZWUxMzhjNzIuLjEwOThlNGYyNzg4OWNkYTdiM2E5Y2ZkNGQ1NDZhZTJmZDlhN2M1NmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0xMDcsOCArMTA3LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogCkBAIC0xNjcsOCArMTY3LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXND
YW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxs
ZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90Kiwg
dW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0gICAgCiAgICAgdm9pZCBzZXRSZWZl
cnJlclBvbGljeShSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMucmVm
ZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGljeTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJlZmVy
cmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9CiAK
QEAgLTE5Miw3ICsxOTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2Vs
KGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxv
YWRUeXBlKTsKKyAgICB2b2lkIGFkZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBm
aW5pc2hOZXR3b3JrTG9hZCgpOwogCkBAIC0yMDIsOCArMjAwLDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
MzdkMGJiODIxYWJkODZhOWI1NjA2ZTEyN2VmYzk0MTJhNTFiYjFhOS4uOTcyZjJhZjIyNjAzZjQy
NGNkODc3NWY1OTEwMTBlMmQ3NjkzOGEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MTgsMzIgKzUxOCwxNSBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VQb2xpY3koKQogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5
bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xv
YWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewotICAgICAgICBpZiAocHJldmlld0xvYWRl
ci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoKSkKKyAgICAgICAgaWYgKHByZXZpZXdMb2Fk
ZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiAjZW5kaWYKIAotICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0
YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsK
LX0KLQotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKLSNpZiBVU0UoUVVJQ0tfTE9PSykK
LSAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7Ci0g
ICAgICAgIGlmIChwcmV2aWV3TG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlci5nZXQoKSkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgs
IGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17CiAgICAgQVNTRVJUKG1fcmVz
b3VyY2UpOwogCiAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUo
KSA+PSA0MDAgJiYgIW1fcmVzb3VyY2UtPnNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3Jz
KCkpCkBAIC01NTUsMTMgKzUzOCwxMyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAgLy8g
YW55dGhpbmcgaW5jbHVkaW5nIHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9i
amVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2LgogICAgIFJlZjxTdWJyZXNvdXJj
ZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIGJ1ZmZlci5jb3B5UmVmKCksIGVuY29k
ZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIFJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7
CiAKICAgICBpZiAoIW1fbG9hZGluZ011bHRpcGFydENvbnRlbnQpIHsKICAgICAgICAgaWYgKGF1
dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9y
ZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgp
OworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDgzMmM5ZjBlNzNkMzg0NjRhNzk1ZjQwMzg2MGY3OWMzNGU3M2JjN2YuLjNkYmQ1
MzM4YWZlNDliNDc4NTdkNTM0MDk3ODg3NTJlYWExYWVkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03Myw4ICs3Myw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2VuZERhdGEodW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0
aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwpAQCAtOTIsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIEV4cGVjdGVkPHZvaWQs
IFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1JlZGlyZWN0
aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJldmlv
dXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdS
ZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRD
b21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3Vy
Y2UuaAppbmRleCBjZjJkZTBjNjJkOTVmMzMyNWI0MmI0NmUyNDAzNzc0NDEwNzQyYTBkLi4zZDE5
Mjg2MmYyNzcyOWIyZjM4ZGI1NGJkODM2Nzk5NTI1YzAxOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAg
ICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19y
ZWZlcmVuY2VfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgp
IH0pOyB9Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkg
eyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgeyBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7IH0KICAgICB2b2lk
IGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIo
UmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YSht
X3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKaW5kZXggODRkNzliMGM5OWRmMTBkOTkzODBiODQ4MzE3
MzcxYmMxZTg1NzNiZi4uY2VmMGM4ZjFmMTdkMGY1NzY1OWEzNTQxYjU0ZjYzODk5MDY0YjFjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCkBA
IC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUmVzb3VyY2VUaW1pbmc7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFRocmVhZGFibGVMb2FkZXJDbGllbnQgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFRocmVhZGFibGVMb2FkZXJDbGllbnQpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKQEAgLTQ0LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRT
ZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBs
b25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCosIGludCAvKmRhdGFMZW5ndGgqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgLyogdXNlU3RyTGVuICovKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoVGltaW5nKGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlci5oCmluZGV4IDQyYWU2NDkwOWE1ZTBmZTQ0YzZhNWUwMDYwZDU4Yzk2NGVjNTYwNTEu
LmYzNmEyZDQwN2FmODgxNTkwNDI4NjZiODVlOWUwMTg2MWRhYWM3MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCkBA
IC02NiwxMCArNjYsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVzZVN0ckxl
bikKICAgICB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlRGF0YShidWZmZXIsIHVzZVN0ckxlbik7CiAgICAgfQogCiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGRm
Zjg5NzAxYzkzOWJjNzNjMzcwMzJhZDljNDJhZDIwNjMyNmFkNmUuLjdjMDM0OTQ1ZWUwM2E3NGY1
MzMzOWJiODFmZmEwZTA2YzY5YzcxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIzMSwxNCArMjMxLDEzIEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlTG9hZGVyCiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKLXZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCB1c2VTdHJMZW4pCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihkYXRhLCBk
YXRhTGVuZ3RoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBSZWYgeyAq
bV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3Jr
ZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJD
bGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29ya2VyQ2xpZW50V3JhcHBlciB9LCB3b3JrZXJSZXF1
ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlciA9IFJlZiB7
IGRhdGEgfSwgdXNlU3RyTGVuXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewog
ICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5p
c1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3Jh
cHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAg
ICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwg
dXNlU3RyTGVuKTsKICAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkK
LSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmll
ciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlcik7CiAgICAgfSwgbV90
YXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5oCmluZGV4IDcyM2I0NTZlYzhlOWUzMDZmYzE4Y2M4ZjM2ZGU2ZGNkOGFlMzA0NzAu
LjMzOWQ2ZjQ3MzEwYTFlZDI4OTAzNmFkMGE0MDRmMzhhN2EyNjg2MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtMTA1LDcgKzEwNSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQu
CiAgICAgICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAg
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92ZXJy
aWRlOwogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIGRpZEZpbmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNTE5NzhmNDEyMzg3NGRjNTY2MGVmZjQ3MDY1OTcw
N2Q0ZTVkODVhNy4uZWQ3NTY2NTI2YjJkN2VmYmYxYzUxNzAyMDk1YTg3OWJhZjU2OTQ0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJl
c291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIGxvbmcgbG9uZywgYm9vbCkK
K3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25z
dCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcsIGJvb2wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXgg
Yjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMxNzBjZGY3MjM2NzJhMC4uZDJhZWFlYzNlMTRjNjNi
Y2JmNjAxZTlhYWYwMjRjMWY5ZWM0NzZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTk1LDcgKzk1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgbWF5YmVMb2FkTWFpblJlc291cmNlKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFN1YnN0aXR1dGVEYXRhJik7CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2VG
b3JSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAg
IGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgbWFpblJlc291cmNlRGF0
YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9uY2UpOworICAgIHZvaWQgbWFpblJlc291cmNlRGF0
YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgYm9vbCBhbGxBdE9uY2UpOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNl
KCk7CiAgICAgdm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZS5jcHAKaW5kZXggMmJiM2ZlNzViOTk3N2U4MzMyMmFlMjU4MGY3MjEyZWU1YmYyMTYxMC4u
MjU2ZTg5YjIxMWIzOGIyZDIxZGNkNjY1NzgyNjllNjYwNzM2NzMyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZS5jcHAKQEAgLTUxLDcgKzUxLDEwIEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBw
bGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZv
aWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9w
YXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDogU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5
KCkpCisgICAgICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIFJl
ZlB0ciB7ICZkYXRhKCkgfSk7CisgICAgZWxzZQorICAgICAgICBsb2FkZXIuZGVsaXZlclJlc3Bv
bnNlQW5kRGF0YShyZXNwb25zZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5
cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYuLjU0ZmVlZDJjYTY0MTJi
NDUyMDk4NzBjNzczNDM2MDlkODUwOWI3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC05OSw5ICs5OSw5IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwKICAgICBtX2Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRl
KG1fcmVzb3VyY2UtPnVybCgpLCByZXNwb25zZSwgbV90eXBlKTsKIH0KIAotdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChk
YXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoYnVm
ZmVyKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmgKaW5kZXgg
MDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3ZWJlOWIwNjllMjMyZC4uMGIyOTYyODhmMzFhNDMy
NWQ0ODQ5YTQ0MmU4YWU2MDJjMTczMTkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIu
aApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKLSAg
ICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgcmVkaXJlY3RSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZp
bmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKaW5kZXggNTA0NjVjYzZjMDEzM2U1YTc3NDQ1Y2Y5NDczMzNmZTIwNjQw
ODYxZC4uZDM0YzhmYjY1MzI2YTg3NTNiMmE5YjRmY2ZiYzU3MDFhOGM4YTRjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsNyArNDY4LDcg
QEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1h
Z2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRl
cm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2Rh
dGEtPnNpemUoKSk7CkBAIC01NTUsMTggKzU1NSwxOCBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNo
ZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwot
ICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwotICAgIENhY2hlZFJlc291cmNlOjp1cGRh
dGVCdWZmZXIoZGF0YSk7CisgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoYnVmZmVyLm1ha2VDb250
aWd1b3VzKCkpOworICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoYnVmZmVyKTsKIH0K
IAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7Ci0gICAgdXBkYXRlQnVmZmVySW50ZXJu
YWwoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7Ci0gICAgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChk
YXRhKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhKTsKIH0KIAogdm9pZCBD
YWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGU4NDMwODcwYjQ4YWYzZGM5NWJiYTNjYWQx
YTY0ZTA2OGFlMTU1MTMuLmE1ZGM2M2YyM2RiZDQxYTI3MGVlNTZjMzJhNDQxNzc3ZDZhZGRiNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjgsNyAr
MTI4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRh
SWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAg
dm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJ
bWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgdXBkYXRlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBk
YXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9yKENh
Y2hlZFJlc291cmNlOjpTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAKQEAgLTE2OSw3ICsxNjksNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IElu
dFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7
CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKaW5kZXggNzFlMTYwODJmZmU2NTVkMTExZjE2OTkwZDEyMzA1MzViZWFjYmY5NS4uZDMz
NjExMzIxM2ZiZWJmZjRlOTFmZjY1ZjgzZmZlMjRkM2U4YTBjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCwxMiArNDgs
MTIgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9y
SWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0
YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxT
aGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVu
dGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsKICAgICBzaXpl
X3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKLSAgICBpZiAoIWRhdGEgfHwg
ZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKKyAgICBpZiAoZGF0YS5zaXplKCkg
PD0gcHJldmlvdXNEYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOworICAgIHJldHVy
biBkYXRhLmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICAgICAgcHJldmlvdXNE
YXRhU2l6ZSArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogCiAgICAgICAgIFNldEZvclNjb3Bl
PGJvb2w+IG5vdGlmeVNjb3BlKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnksIHRydWUpOwotICAg
ICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS5kYXRhKCks
IGluY3JlbWVudGFsRGF0YS5zaXplKCkpOworICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1Jl
Y2VpdmVkKGluY3JlbWVudGFsRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CiAgICAgfQogICAg
IHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKIApAQCAtODksMTEgKzg5LDExIEBAIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9O
b3RCdWZmZXJEYXRhKTsKLSAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGRhdGEsIGxl
bmd0aCk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAg
ICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGJ1ZmZlcik7CisgICAgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCkBAIC0xMTAsOSArMTEwLDkgQEAgdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdAogICAgICAgICBpZiAoZGF0YSkgewogICAgICAgICAgICAgaWYgKGRhdGEgIT0g
bV9kYXRhLmdldCgpKQogICAgICAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7Ci0gICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJ
bmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVt
ZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoKm1fZGF0YSkpIHsKICAg
ICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAg
ICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCks
IGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRz
RGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fZGF0YSA9IG51bGxw
dHI7CkBAIC0xMzAsMTUgKzEzMCwxNSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0CiAgICAgfQog
fQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVk
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7Ci0gICAgaWYgKCFsZW5ndGgpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
PENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCi0gICAgICAgIGMtPmRhdGFSZWNlaXZl
ZCgqdGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgYy0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBi
dWZmZXIpOwogfQogCiBzdGF0aWMgdm9pZCBpdGVyYXRlUmVkaXJlY3RzKENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiYmIGhhbmRsZSwgQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQmIGNsaWVudCwgVmVjdG9yPHN0ZDo6cGFpcjxSZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVz
cG9uc2U+PiYmIHJlZGlyZWN0c0luUmV2ZXJzZU9yZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MCw5ICsxNzAs
OSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQmIGMpCiAgICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICAg
ICAgbV9kYXRhLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgICAgICAg
ICAgICAgIG1fZGF0YS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1
ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQ2xpZW50KCpjbGllbnQpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIHNlZ21lbnQu
ZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQt
PmRhdGFSZWNlaXZlZCgqdGhpcywgYnVmZmVyKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmICghaGFzQ2xpZW50KCpjbGllbnQpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCBhNzg2NWY4
YWQxNzhhZWZiMzIyMGE1NmRjZmYxOTU5OTNjZjk1YWU0Li4zNmU0N2ExZGJhMjMxMjhkYzUzMDcz
YjcwYjVmM2Y4NTM4MDRhZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtMjgsNiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENhY2hlZFJlc291cmNlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VUaW1pbmc7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAogY2xhc3Mg
Q2FjaGVkUmF3UmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewpAQCAtNTIs
NyArNTMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50JikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTY2LDggKzY3LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKICAg
ICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNo
YXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKikgY29uc3Q7Ci0gICAgdm9pZCBub3RpZnlDbGllbnRzRGF0
YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAg
c3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgdm9pZCBub3RpZnlDbGll
bnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIAogI2lmIFVTRShR
VUlDS19MT09LKQogICAgIHZvaWQgcHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaAppbmRleCAyM2VhYjhkZjI5NThmZjhiNDlmMzU0
NWI1MDgzZmUyOTg5ZWYxMjIwLi5jZDY1MGEyZjMxMzZjZTliMjYyZmJkZmM4MjkyOGJmMjEwNzlm
YmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaApAQCAtMzEsNiArMzEsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZTsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBS
ZXNvdXJjZVRpbWluZzsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgpAQCAt
NDYsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHNob3VsZENh
Y2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVk
QnVmZmVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggOWRlMGEwNGNkNWVjNWYzZmFkMmZiMTZkN2Iz
MjJjODU4YTM4YTZiMi4uN2I5YzYxZjk2NjE3NTQ2YjY2YmNjM2M2M2VjYTBlODU3ZTI2MmVmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBA
IC0zNDEsNyArMzQxLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQordm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZm
ZXJEYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmgKaW5kZXggYzk4MmRkNjkzN2EwYmMyYmYzOGM0MjYxMjZmZmU2ZTc4Yzc5NjQ3OC4uNTM0ZTAx
MmNjNGZhNWRkMmJlMWZkNmVlZTVhYTZhZTRlNWZhZTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3Vy
Y2U6OlN0YXR1cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLmgKaW5kZXggOTZkODk4MmU5MzUwMzQ3Njk2ZmM5NjlkNTg1YWI3MDc1ZGUwMjBl
ZC4uY2EwMTkzNGQzMWJhNWQ1MDlmZWJlN2QyZjkxMjI0OWQyNzEyNmFiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTQ3LDggKzQ3
LDcgQEAgcHVibGljOgogICAgIH5MZWdhY3lQcmV2aWV3TG9hZGVyKCk7CiAKICAgICBib29sIGRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJv
b2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAg
Ym9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBib29sIGRpZEZp
bmlzaExvYWRpbmcoKTsKICAgICB2b2lkIGRpZEZhaWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IDQ4NzU2YTMzYjU4NzJi
NDRiMmYwYmEwODQyNDFmODZjZmFlYmNhYTAuLmEyNGI4YzU5ZDQ2MGFmZjVlMmZlZjgzMTkwYzIw
ODY1NzIzNjVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIubW0KQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFJlZjxMZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50PiBtYWtlQ2xpZW50KGNvbnN0IFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGMK
ICAgICByZXR1cm4gZW1wdHlDbGllbnQoKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0
ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBwZW5k
aW5nIGJ1ZmZlciB3aXRoIHNpemUgJWxkLiIsIGJ1ZmZlci5zaXplKCkpOwogICAgIG1fb3JpZ2lu
YWxEYXRhLmFwcGVuZChidWZmZXIpOwogICAgIG1fY29udmVydGVyLT51cGRhdGVNYWluUmVzb3Vy
Y2UoKTsKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIpOworICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0x
NjIsOCArMTYyLDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVy
RGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnMKICAgICBpZiAoIW1faGFzUHJv
Y2Vzc2VkUmVzcG9uc2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZGF0YUNvcHkgPSBk
YXRhLmNvcHkoKTsKLSAgICByZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3Zl
KGRhdGFDb3B5KSwgZGF0YUNvcHktPnNpemUoKSwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgcmVz
b3VyY2VMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoZGF0YSwgZGF0YS5zaXplKCksIERhdGFQYXls
b2FkQnl0ZXMpOwogfQogCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0
ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKQpAQCAtMjQzLDExICsyNDIs
NiBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUgogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJl
dmlld0xvYWRlciBjcmVhdGVkIHdpdGggcHJldmlldyBmaWxlIG5hbWUgXCIlc1wiLiIsIG1fY29u
dmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotYm9vbCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIGRpZFJlY2VpdmVCdWZmZXIoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgbGVuZ3RoKS5nZXQoKSk7Ci19Ci0KIGJvb2wgTGVnYWN5UHJldmlld0xv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogewogICAg
IHJldHVybiAhbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50U291cmNlLmNwcAppbmRleCA2MDI2MzFiYjdjZDEwODYwYjFhMzEyMTA0M2M5N2Q4ZWZl
NDQ3NjFkLi42N2FjNzdlMmJmNzYxMDQ1YzhjMThkNWM3YWRlYzdmNzMzOGFiNzEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0yMTAsMTMgKzIxMSwx
MyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaXNwYXRjaEVycm9yRXZlbnQoKQogICAgIGRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKLXZvaWQgRXZlbnRTb3Vy
Y2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lk
IEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Ym9vbCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBPUEVOKTsKICAgICBBU1NFUlQobV9yZXF1
ZXN0SW5GbGlnaHQpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oIW1faXNTdXNwZW5kZWRGb3JCYWNrRm9yd2FyZENhY2hlKTsKIAotICAgIGFwcGVuZChtX3Jl
Y2VpdmVCdWZmZXIsIG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbmd0aCkpOworICAgIGFwcGVu
ZChtX3JlY2VpdmVCdWZmZXIsIG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpKTsKICAgICBwYXJzZUV2ZW50U3RyZWFtKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuaAppbmRleCBkMDEyZDM3N2QxOTc2NzVmMGZlMTE0NWYxNzE5ZjE3ZmRkYmZlYTNi
Li5kNjYyYWUyODA2ZjRiMjQ4NjdiMDE2MDhlMDRkYmI0Zjk3ZGJhMDYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudFNvdXJjZS5oCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDg0YmMyODQ1YTY2YzE4ZDk1ZmIyNmVlMjBk
MmJmNjBiMzBiZTY3OTcuLmQwOWYxMDUyYTBmMzFlZTk3MDYxMTAxM2IzOTM1ZmI1MzA5NTUwOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMTM4LDcgKzEz
OCw3IEBAIFZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgp
CiAKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwogICAgIGlmIChoYXNPbmVTZWdt
ZW50KCkgJiYgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KG1fc2VnbWVu
dHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSAmJiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQt
Pmhhc09uZVJlZigpKQotICAgICAgICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4Y2hhbmdlKHN0ZDo6
Z2V0PFZlY3Rvcjx1aW50OF90Pj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURh
dGEpLCBWZWN0b3I8dWludDhfdD4oKSk7CisgICAgICAgIGNvbWJpbmVkRGF0YSA9IHN0ZDo6ZXhj
aGFuZ2Uoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+Pihjb25zdF9jYXN0PERhdGFTZWdtZW50Jj4o
bV9zZWdtZW50c1swXS5zZWdtZW50LmdldCgpKS5tX2ltbXV0YWJsZURhdGEpLCBWZWN0b3I8dWlu
dDhfdD4oKSk7CiAgICAgZWxzZQogICAgICAgICBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVu
dHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7CiAKQEAgLTI1MCw2ICsyNTAsMTMgQEAgdm9pZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFNwYW48Y29uc3QKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVudC0+
ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAordm9pZCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKGNvbnN0IEZ1bmN0aW9u
PHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik+JiBhcHBseSkgY29uc3QKK3sKKyAgICBhdXRvIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9OworICAgIGZvciAoYXV0byYgc2VnbWVudCA6IG1f
c2VnbWVudHMpCisgICAgICAgIGFwcGx5KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlZ21lbnQuc2Vn
bWVudC5jb3B5UmVmKCkpKTsKK30KKwogYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFy
dHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBp
ZiAocHJlZml4LmVtcHR5KCkpCkBAIC00MTUsNyArNDIyLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoKQogICAgIG1fY29udGlndW91cyA9IHRydWU7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQorU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCiB7CiAgICAgbV9z
aXplID0gc2VnbWVudC0+c2l6ZSgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92
ZShzZWdtZW50KSB9KTsKQEAgLTYwMyw3ICs2MTAsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI6OmVuc3VyZUJ1ZmZlcigpCiAgICAgICAgIG1fYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJE
YXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmIHNlZ21lbnQs
IHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXpl
KQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0
aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpz
aXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC02MTks
NyArNjI2LDcgQEAgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNv
bnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3JiBvdGhlciwgc2kKIAogUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAg
Y29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIGNvbnN0IFJl
Zjxjb25zdCBEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21l
bnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKICAgICAgICAgW3NpemUgPSBz
aXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaAppbmRleCBjMjdjOTI2OWZmZWYyNDlhYjVlOGFiYTI0ZDc2MmZjNDBjMWMyMzAwLi4zNDg0
YTZhNTNiODA0MDY0YmU1N2EyODNlZjQxOGE4YTYyZDU4OWE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMTc4LDEyICsxNzgsMTMgQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoY29u
c3QgRnVuY3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmKT4mKSBjb25zdDsKIAogICAgIHVz
aW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dh
cmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNp
emVfdCBiZWdpblBvc2l0aW9uOwotICAgICAgICBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQ7Cisg
ICAgICAgIGNvbnN0IFJlZjxjb25zdCBEYXRhU2VnbWVudD4gc2VnbWVudDsKICAgICB9OwogICAg
IHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnks
IDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQpAQCAtMjU5LDcgKzI2MCwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKICAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcigpKTsKICAgICAgICAgZWxzZSBpZiBj
b25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCi0gICAgICAgICAgICAmJiAoc3RkOjppc19z
YW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgJiYgKHN0
ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxjb25zdCBEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdz
KSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8c3RkOjpyZW1vdmVfY29uc3Rf
dDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxBcmdzPj4sIERhdGFTZWdtZW50PiAmJi4uLikpCiAg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXV0byBidWZm
ZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsKQEAgLTI4Niw4ICsyOTAsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdF
QkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlcihjb25zdCBEYXRh
U2VnbWVudCYgc2VnbWVudCkKKyAgICAgICAgOiBTaGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFT
ZWdtZW50PiB7IHNlZ21lbnQgfSkgeyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
OwpAQCAtMzU5LDcgKzM2NSw3IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldyB7
CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERh
dGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hh
cmVkQnVmZmVyRGF0YVZpZXcoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hh
cmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsgfQpA
QCAtMzcwLDcgKzM3Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8
TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25z
dCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8Y29uc3QgRGF0YVNl
Z21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDg4NjkxZGMyNTZkNmRkNmM0NWY0NmUwMTU0OTY3NDI0NWFhMzUzMzcuLmM5NThm
ODQ0ZGFjMTQzOTRlMjRkZWZlYWJhNzU0ZjlkOGE4MTI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlci5oCkBAIC01MSw5ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNw
b25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudCB1c2VzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCi0gICAgdmlydHVhbCB2b2lk
IGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHBsYXRmb3JtLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNlaXZlZChwbGF0Zm9ybSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250cm9s
Q2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZpbmlzaGVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IGVjMGE3YWNmNDczMjYxYzc0ZTdlZWZmYWRjOWNjYzNjM2U1N2YyMjguLjc3MDhhNThk
MmI1ODA4Yjk0MDAyZDIwNWU5OGEyN2JiMmNlNmYzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBA
QCB2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZv
aWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgdWludDhfdCosIGludCkKK3ZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJj
ZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hh
cmVkQnVmZmVyJikKIHsKICAgICBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShyZXNvdXJjZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIu
aAppbmRleCBjZGYxNDNmM2MzY2RlOTcxZmQ3OWRjZjczMjhiZmNkN2IzMjYwMmRjLi42MjY3YmUw
MGM1NGVlNjE3MDJmYjc3YjJhNWZiNTY3YjI3ZWI5ZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZ1bGZpbGxSZXF1
ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggZjkyMWYzZGEwZTY5YjMz
OTk3N2M5ZTNlNDk2NjdhMjhmNWU5NWNiZC4uNzI2NDcyNWM4ZTU2MjJkZjM4YjQ1YmNkOTlhYzc4
NzU1YjllYjg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbQpAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAg
ICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwpAQCAt
MTMwLDcgKzEzMCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOCiAgICAgbV9wYXJlbnQubG9h
ZEZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCosIGludCkKK3Zv
aWQgQ2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoJnJlc291cmNl
ID09IG1fcmVzb3VyY2UpOwogICAgIGlmIChhdXRvKiBkYXRhID0gcmVzb3VyY2UucmVzb3VyY2VC
dWZmZXIoKSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1
bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBm
aW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2Fk
RmluaXNoZWQoKTsgfQpAQCAtMjExLDkgKzIxMSw5IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwog
fQogCi12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K3ZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9idWZm
ZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlcik7
CiAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5k
ZXggOTMwMTkwOTk0NWI0YTIzZDY2NzgyZjM1MGI1NmU0NDc5ZjgwMjZmMi4uYjdiMDdmZjE0NTRk
NTYxYTMwMjEwOGFlMzIyOTFlOGY4MzQzN2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCiAgICAgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sp
PiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9h
ZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRp
bnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdD
bGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xp
ZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2Vi
U3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CkBAIC0xMTA3LDcgKzExMDcs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYQogICAgIC8vIHRoYXQgZmlyc3QgcGFja2FnZSBk
ZWxpdmVyeSB3b3VsZCBpbmNsdWRlIHRoZSB0aW1lIG9mIHNlbmRpbmcgb3V0IHRoZSByZXF1ZXN0
IGFuZCBnZXR0aW5nIHRoZSBkYXRhIGJhY2suIFNpbmNlIHdlIGNhbid0IGRpc3Rpbmd1aXNoIHRo
ZQogICAgIC8vIHNlbmRpbmcgdGltZSBmcm9tIHRoZSByZWNlaXZpbmcgdGltZSwgaXQgaXMgYmV0
dGVyIHRvIGlnbm9yZSBpdC4KICAgICBpZiAoIXN0ZDo6aXNuYW4obWVtYmVycy0+ZG93bmxvYWRT
dGFydFRpbWUpKSB7Ci0gICAgICAgIG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzICs9IGJ1
ZmZlci0+c2l6ZSgpOworICAgICAgICBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyArPSBk
YXRhLnNpemUoKTsKICAgICAgICAgZG91YmxlIHRpbWVTaW5jZVN0YXJ0ID0gKFdhbGxUaW1lOjpu
b3coKSAtIG1lbWJlcnMtPmRvd25sb2FkU3RhcnRUaW1lKS5zZWNvbmRzKCk7CiAgICAgICAgIEdT
VF9UUkFDRV9PQkpFQ1Qoc3JjLCAiUiV1OiBkb3dubG9hZGVkICUiIEdfR1VJTlQ2NF9GT1JNQVQg
IiBieXRlcyBpbiAlZiBzZWNvbmRzID1+ICUxLjBmIGJ5dGVzL3NlY29uZCIsIG1fcmVxdWVzdE51
bWJlciwgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMsIHRpbWVTaW5jZVN0YXJ0CiAgICAg
ICAgICAgICAsIHRpbWVTaW5jZVN0YXJ0ID8gbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMg
LyB0aW1lU2luY2VTdGFydCA6IDApOwpAQCAtMTExNSwyMCArMTExNSwxOSBAQCB2b2lkIENhY2hl
ZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgUmVmPEZyYQogICAgICAgICBtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSA9IFdhbGxU
aW1lOjpub3coKTsKICAgICB9CiAKLSAgICBidWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRv
JiBzZWdtZW50KSB7Ci0gICAgICAgIGludCBsZW5ndGggPSBzZWdtZW50LnNpemUoKTsKLSAgICAg
ICAgR1NUX0xPR19PQkpFQ1Qoc3JjLCAiUiV1OiBIYXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBtX3Jl
cXVlc3ROdW1iZXIsIGxlbmd0aCk7CisgICAgaW50IGxlbmd0aCA9IGRhdGEuc2l6ZSgpOworICAg
IEdTVF9MT0dfT0JKRUNUKHNyYywgIlIldTogSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgbV9yZXF1
ZXN0TnVtYmVyLCBsZW5ndGgpOwogCi0gICAgICAgIG1lbWJlcnMtPnJlYWRQb3NpdGlvbiArPSBs
ZW5ndGg7Ci0gICAgICAgIEFTU0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVh
ZFBvc2l0aW9uIDw9IG1lbWJlcnMtPnNpemUpOworICAgIG1lbWJlcnMtPnJlYWRQb3NpdGlvbiAr
PSBsZW5ndGg7CisgICAgQVNTRVJUKCFtZW1iZXJzLT5oYXZlU2l6ZSB8fCBtZW1iZXJzLT5yZWFk
UG9zaXRpb24gPD0gbWVtYmVycy0+c2l6ZSk7CiAKLSAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9t
ZXNzYWdlKEdTVF9FTEVNRU5UX0NBU1Qoc3JjKSwgZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQoR1NU
X09CSkVDVF9DQVNUKHNyYyksCi0gICAgICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0
LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVt
YmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUs
IG51bGxwdHIpKSk7CisgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKEdTVF9FTEVNRU5UX0NB
U1Qoc3JjKSwgZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQoR1NUX09CSkVDVF9DQVNUKHNyYyksCisg
ICAgICAgIGdzdF9zdHJ1Y3R1cmVfbmV3KCJ3ZWJraXQtbmV0d29yay1zdGF0aXN0aWNzIiwgInJl
YWQtcG9zaXRpb24iLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5yZWFkUG9zaXRpb24sICJzaXpl
IiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+c2l6ZSwgbnVsbHB0cikpKTsKKworICAgIGNoZWNr
VXBkYXRlQmxvY2tzaXplKGxlbmd0aCk7CisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RCdWZm
ZXJOZXdXcmFwcGVkRmFzdChmYXN0TWVtRHVwKGRhdGEuZGF0YSgpLCBsZW5ndGgpLCBsZW5ndGgp
OworICAgIGdzdF9hZGFwdGVyX3B1c2gobWVtYmVycy0+YWRhcHRlci5nZXQoKSwgYnVmZmVyKTsK
IAotICAgICAgICBjaGVja1VwZGF0ZUJsb2Nrc2l6ZShsZW5ndGgpOwotICAgICAgICBHc3RCdWZm
ZXIqIGJ1ZmZlciA9IGdzdEJ1ZmZlck5ld1dyYXBwZWRGYXN0KGZhc3RNZW1EdXAoc2VnbWVudC5k
YXRhKCksIGxlbmd0aCksIGxlbmd0aCk7Ci0gICAgICAgIGdzdF9hZGFwdGVyX3B1c2gobWVtYmVy
cy0+YWRhcHRlci5nZXQoKSwgYnVmZmVyKTsKLSAgICB9KTsKICAgICBzdG9wTG9hZGVySWZOZWVk
ZWQoc3JjLCBtZW1iZXJzKTsKICAgICBtZW1iZXJzLT5yZXNwb25zZUNvbmRpdGlvbi5ub3RpZnlP
bmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggYmE4ZmQ0ZmY0ZjFlNDFjOWFkNGZhNzRhNDJi
ZTRlMmJkMTFhYTg0My4uZGNhYzU5OTdhNjEzNWQyYWI3NTlhN2FkMmViYjA0MzUyZDUxNGE3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM2LDkgKzM2LDExIEBAIFJlc291cmNlSGFuZGxlQ2xpZW50
OjpSZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogUmVzb3VyY2VIYW5kbGVDbGll
bnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBSZXNvdXJjZUhh
bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
K3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3Ro
KTsKKyAgICBidWZmZXIuZm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1
ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlciwgZW5jb2RlZERh
dGFMZW5ndGgpOworICAgIH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggYzRmMDU0ODVmMjg3
MGIxMTZkYTdjNzYwZDNjMGZjZTk2ZWMyYjRhNS4uZTQ0MmM5NzM0YzExOTg0OTBhMWM2Y2FjNTc3
MjVmZDUxOTZiM2JiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNDQsMTMgKzQ0LDE0IEBAIE9CSkNfQ0xB
U1MgTlNDYWNoZWRVUkxSZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3JlZGVudGlhbDsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBQcm90ZWN0aW9u
U3BhY2U7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogZW51bSBDYWNoZVN0b3Jh
Z2VQb2xpY3kgewogICAgIFN0b3JhZ2VBbGxvd2VkLApAQCAtNjUsOSArNjYsOSBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25l
ZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRl
c1RvQmVTZW50Ki8pIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxl
bmd0aCovKSB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpOwotICAgIAorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCAvKmVuY29kZWREYXRh
TGVuZ3RoKi8pIHsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25v
dXNMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRjMDQyMTBjNWE1MTNhYzNmNTQ3MTQ2ZDlmODVjODJi
ZDg4MTM3NzYuLjMwYjRiYjBmZGFlZjdhZTJjYzc0YWM2MDlmN2IwMDk5N2U1YTZkY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25v
dXNMb2FkZXJDbGllbnQuY3BwCkBAIC03MSw5ICs3MSw5IEBAIHZvaWQgU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3Vy
Y2VSCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTeW5jaHJvbm91c0xvYWRl
ckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCit2b2lkIFN5
bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQogewot
ICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKaW5kZXggNjgzOGU5ZDhjZjQzNzk2ZDJm
Mzk0YmExZjU0ZjA5ZDBiNjdlOGFiZC4uYzRjYjcyZGM3YTY1NWZkMzY5NmEzMzNmZTA1Y2RlZDYy
OTc2YWZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5j
aHJvbm91c0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaApAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKwogY2xhc3MgU3luY2hyb25vdXNM
b2FkZXJNZXNzYWdlUXVldWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3luY2hyb25v
dXNMb2FkZXJNZXNzYWdlUXVldWU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN5bmNocm9u
b3VzTG9hZGVyTWVzc2FnZVF1ZXVlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN5
bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlKTsgfQpAQCAtNjYsNyArNjgsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2ln
bmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IC8qZW5j
b2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5l
cmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW0KaW5kZXggZmMyNzI1NDA4OTJiOGUyY2Q3N2RlOGY2ZDllNTRhOGM4
YjU5N2Y2MS4uMTk4MTRhMzY1YzlmNjYxYTIxYzIyOWFkYmQwNDYxMWMyMDk0N2U2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZl
ZChXZWJDb3JlTlNVCiAKICAgICAgICAgICAgIHNpemVfdCBieXRlc0Zyb21UaGlzVmlld1RvRGVs
aXZlciA9IHN0ZDo6bWluKGJ1ZmZlclZpZXcuc2l6ZSgpLCByYW5nZS5lbmQgLSBieXRlSW5kZXgg
KyAxKTsKICAgICAgICAgICAgIGJ5dGVJbmRleCArPSBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZl
cjsKLSAgICAgICAgICAgIFt0YXNrIHJlc291cmNlOm51bGxwdHIgcmVjZWl2ZWREYXRhOlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KGJ1ZmZlclZpZXcsIGJ5dGVzRnJvbVRoaXNWaWV3VG9EZWxpdmVyKS5j
cmVhdGVTaGFyZWRCdWZmZXIoKV07CisgICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRy
IHJlY2VpdmVkRGF0YTpTaGFyZWRCdWZmZXJEYXRhVmlldyhidWZmZXJWaWV3LCBieXRlc0Zyb21U
aGlzVmlld1RvRGVsaXZlcikuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpXTsK
ICAgICAgICAgfQogICAgICAgICBpZiAoYnl0ZUluZGV4ID49IHJhbmdlLmVuZCkgewogICAgICAg
ICAgICAgW3Rhc2sgcmVzb3VyY2VGaW5pc2hlZDpudWxscHRyIG1ldHJpY3M6TmV0d29ya0xvYWRN
ZXRyaWNzIHsgfV07CkBAIC0yMzgsNyArMjM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKKyAgICB2
b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCkBAIC0yNDYsNyArMjQ2LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcp
OwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEt
PmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFw
cGVuZChidWZmZXIpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dp
dGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCmlu
ZGV4IGY5MDk2ZWUyZTlmMjQyZmYwNGQ3MDVjMmFhMTA5M2E1NWU1NzM1ZGIuLmVhNGE5YmYyOTc4
MjllYmQwMjkxNDc2Y2JmOGE3ZTU0OTQ3MjEyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCkBA
IC0xNTgsNyArMTU4LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxT
ZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcg
bG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90
YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJilj
b21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihu
dWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVk
RGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YTsKKy0gKHZv
aWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVz
b3VyY2UgcmVjZWl2ZWREYXRhOihSZXRhaW5QdHI8TlNEYXRhPiYmKWRhdGE7CiAtICh2b2lkKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3Bv
bnNlIHJlcXVlc3Q6KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlv
bkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwogLSAo
dm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JillcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCA1ZTJlOGU4ZDlkNzY2NzJhMjQx
NGY3NmY1YzA4ZjI1OWUwMjlmNTA0Li4zYzhiZTA4YzI5MzRlNTRkYTNiNzQ5Y2E2ZGEzNGVkYTk2
ZGM5YjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC02MDgsNyArNjA4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3Vs
ZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lk
IGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxv
YWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKQEAgLTY1MiwxMyArNjUyLDEzIEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNv
dXJjCiAgICAgcmV0dXJuIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHNob3VsZENhY2hlUmVz
cG9uc2U6cmVzcG9uc2VdOwogfQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0Ns
aWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7
IG1fdGFza0xvY2sgfTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
W21fdGFzayByZXNvdXJjZTomcmVzb3VyY2UgcmVjZWl2ZWREYXRhOldURk1vdmUoYnVmZmVyKV07
CisgICAgW21fdGFzayByZXNvdXJjZTomcmVzb3VyY2UgcmVjZWl2ZWREYXRhOmJ1ZmZlci5jcmVh
dGVOU0RhdGEoKV07CiB9CiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50
OjpyZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKQEAgLTkzMSwxNSArOTMxLDE0IEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAg
cmV0dXJuIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJh
bmdlKS5pc0VtcHR5KCk7CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJilkYXRhCistICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4mJilkYXRhCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJj
ZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9
IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0
byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKLSAgICAg
ICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7
CisgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gW2RhdGEg
bGVuZ3RoXTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdh
dGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Np
b24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKLSAgICAg
ICAgICAgIFtkYXRhRGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2Vs
Zi5nZXQoKS5zZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1Nl
bGYuZ2V0KCkgZGlkUmVjZWl2ZURhdGE6bnNEYXRhLmdldCgpXTsKKyAgICAgICAgICAgIFtkYXRh
RGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2VsZi5nZXQoKS5zZXNz
aW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlk
UmVjZWl2ZURhdGE6ZGF0YS5nZXQoKV07CiAgICAgfV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApp
bmRleCBmMzIzYWYyNjQwMTZiNjYzOTMxMWFjMjMyNDZlYzVlZDgwYTM5NTQ1Li4zYmQyY2M3NDI4
NmVjNDY3ODY0MDI0OGM1ZTFjZmVjYzVhMDI2N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC0y
NDMsNyArMjQzLDcgQEAgYm9vbCBDdXJsQ2FjaGVNYW5hZ2VyOjpnZXRDYWNoZWRSZXNwb25zZShj
b25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYgcmUKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5k
bGUmIGpvYiwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEN1cmxDYWNo
ZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiBqb2IsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjU1LDExICsyNTUsMTEgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCB1aW50OF90KiBkYXRhLAogICAgICAgICBpZiAo
aXQtPnZhbHVlLT5nZXRKb2IoKSAhPSAmam9iKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGlmICghaXQtPnZhbHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLCBzaXplKSkKKyAgICAgICAg
aWYgKCFpdC0+dmFsdWUtPnNhdmVDYWNoZWREYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkp
CiAgICAgICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwpOwogCiAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUgKz0gc2l6ZTsKKyAgICAgICAgICAg
IG1fY3VycmVudFN0b3JhZ2VTaXplICs9IGRhdGEuc2l6ZSgpOwogICAgICAgICAgICAgbV9MUlVF
bnRyeUxpc3QucHJlcGVuZE9yTW92ZVRvRmlyc3QodXJsKTsKICAgICAgICAgICAgIG1ha2VSb29t
Rm9yTmV3RW50cnkoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKaW5kZXggYzllMjlkODA5NzBj
NDA0NmU3OTYxNjJiZDk4MzI5MTFiNmRlZTY4Yy4uYjY1Yjk2M2I2OGU2YTY4ZDk4MTkzYWFmNzNm
MTA4MDNkOTdmY2QyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGdldENhY2hlZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSYs
IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFu
ZGxlJiwgY29uc3QgdWludDhfdCosIHNpemVfdCk7IC8vIFNhdmUgZGF0YQorICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUmLCBjb25zdCBTaGFyZWRCdWZmZXImKTsgLy8gU2F2
ZSBkYXRhCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlJik7CiAgICAg
dm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggMzQ5NDQ1OTI1
NGFjOTNmYzE5Y2IxMjE1MGE2MWJjMmJjZWQwMmQ2ZS4uYWFmMGM4ZDk0MDcwNTVkNjhhMDU1ZmIz
NTA3OTY3ZGU0YzAwODZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEN1
cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwg
Q3VybFJlc3BvbnNlJiYgcgogfQogCiAKLXZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2
ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3ZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZl
QnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKG1fbGlzdGVuZXIpCi0gICAgICAgIG1fbGlzdGVuZXItPmRpZFJl
Y2VpdmVEYXRhT2ZMZW5ndGgoYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2xpc3RlbmVyLT5k
aWRSZWNlaXZlRGF0YU9mTGVuZ3RoKGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxEb3du
bG9hZDo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBOZXR3b3JrTG9hZE1l
dHJpY3MmJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRG93bmxvYWQuaAppbmRleCBjZGU0NDQ1Nzc1Zjc0NDIzMzA1MzBiNjViMTM1N2JhNmJmZDli
YjgxLi5hMTIwNzU4MzQ5M2Y3ODMzNzU2ZDNjNDk4N2NmNWM5NWRmYTk3OWM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCkBA
IC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFJlcXVlc3Q7
CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3Vy
bERvd25sb2FkTGlzdGVuZXIgewogcHVibGljOgpAQCAtNzIsNyArNzMsNyBAQCBwcml2YXRlOgog
ICAgIFJlZjxDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxv
bmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjdXJsRGlkUmVj
ZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoQ3Vy
bFJlcXVlc3QmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxE
aWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJv
ciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNw
cAppbmRleCAwOTBkMDM5YmE0NWRlMTAyOGVkZjc2ODRjNmQ3ZDJmMjk2ZTNhMzRkLi5kMWU1ODYy
NGFhZWUyZWNlODEyOWRkMzRlYTk4NjYyNmU2Y2RmMDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUu
Y3BwCkBAIC0xMTksMTIgKzExOSwxMiBAQCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpDdXJsTXVsdGlw
YXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmIGNsaWVudCwgY29ucwogCiB9CiAK
LXZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9zdGF0ZSA9
PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBk
b3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFw
cGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNz
Q29udGVudCgpKSB7IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCmluZGV4IDlhMWExYmJkMTkzOGEx
NGY2OWZjY2VlM2YwZjg5Yjk3YTRhMjE4NzQuLjVjMDhiY2M1ZWIzZTRiYmNjMDI5YjQ3Njc4Njhm
NDNlMmY5NWMzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQ7CiBjbGFz
cyBDdXJsUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEN1cmxNdWx0aXBh
cnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYsIGNvbnN0IFN0cmluZyYpOwogICAg
IH5DdXJsTXVsdGlwYXJ0SGFuZGxlKCkgeyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVs
dGlwYXJ0SGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCmluZGV4IGM4MTM4ODZhOGQ1YzVmYTZjMTJk
MTQxMzMxOTEwMWFmMjUwMmEyYWQuLmRmNzYzN2RlOWQ5ZmYyYjZiMTA4NTVkMGM1NzcxMjU1MzRi
MmE2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApAQCAtMzMsNyArMzMsNyBA
QCBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRs
ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9t
TXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KGNvbnN0
IFNoYXJlZEJ1ZmZlciYpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5DdXJsTXVsdGlwYXJ0SGFu
ZGxlQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBiYWNiMmI1NTBiMjg0MTMxZDFhYzIwYWE2NjM4
ODZmZTIyZmU3Zjk4Li5kMGVmMGU3MTE2MmI1MzYzYWQ0MjU0MTdkODVlYzcyMzhmM2Y2MmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCBzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2Vp
dmVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogCiAvLyBjYWxsZWQgd2l0aCBkYXRhIGFmdGVyIGFs
bCBoZWFkZXJzIGhhdmUgYmVlbiBwcm9jZXNzZWQgdmlhIGhlYWRlckNhbGxiYWNrCiAKLXNpemVf
dCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQorc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTQxMSw3ICs0MTEsNyBAQCBzaXplX3QgQ3VybFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIENVUkxfV1JJVEVGVU5DX1BBVVNFOwogICAgIH0KIAotICAgIGF1dG8gcmVj
ZWl2ZUJ5dGVzID0gYnVmZmVyLT5zaXplKCk7CisgICAgYXV0byByZWNlaXZlQnl0ZXMgPSBidWZm
ZXIuc2l6ZSgpOwogICAgIG1fdG90YWxSZWNlaXZlZFNpemUgKz0gcmVjZWl2ZUJ5dGVzOwogCiAg
ICAgd3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoYnVmZmVyKTsKQEAgLTQyMCw4ICs0
MjAsOCBAQCBzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgaWYgKG1fbXVsdGlwYXJ0SGFuZGxlKQog
ICAgICAgICAgICAgbV9tdWx0aXBhcnRIYW5kbGUtPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpXShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQmIGNsaWVudCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlQnVmZmVyKHJl
cXVlc3QsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICBjYWxsQ2xpZW50KFtidWZmZXIg
PSBSZWYgeyBidWZmZXIgfV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50
JiBjbGllbnQpIHsKKyAgICAgICAgICAgICAgICBjbGllbnQuY3VybERpZFJlY2VpdmVEYXRhKHJl
cXVlc3QsIGJ1ZmZlcik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0
NCwxNiArNDQ0LDE2IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXJGcm9tTXVs
dGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBoZWFkZXJzKQogICAgIGludm9rZURpZFJlY2Vp
dmVSZXNwb25zZShyZXNwb25zZSwgQWN0aW9uOjpOb25lKTsKIH0KIAotdm9pZCBDdXJsUmVxdWVz
dDo6ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFy
dChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNh
bmNlbGxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1
ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gcmVjZWl2ZUJ5dGVzID0gYnVmZmVyLnNpemUoKTsKIAog
ICAgIGlmIChyZWNlaXZlQnl0ZXMpIHsKLSAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0gV1RG
TW92ZShidWZmZXIpXShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQmIGNs
aWVudCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjbGllbnQuY3VybERpZFJlY2VpdmVCdWZmZXIo
cmVxdWVzdCwgV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0g
UmVmIHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVxdWVzdENsaWVudCYg
Y2xpZW50KSB7CisgICAgICAgICAgICBjbGllbnQuY3VybERpZFJlY2VpdmVEYXRhKHJlcXVlc3Qs
IGJ1ZmZlcik7CiAgICAgICAgIH0pOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggYTZmYjMxNTc2NmJhNWMy
ZjNlYTMyYjllZjUxZWIwMDNlOGNiODlkMC4uOTJiNzQ2OTdiYzMxNzVjZTBjZGFkZjE1MWZhMjU0
M2EwM2UxMTk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmgKQEAgLTEyMiw5ICsxMjIsOSBAQCBwcml2YXRlOgogICAgIENVUkwq
IHNldHVwVHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICBzaXplX3Qgd2lsbFNlbmREYXRhKGNoYXIq
LCBzaXplX3QsIHNpemVfdCk7CiAgICAgc2l6ZV90IGRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYp
OwotICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgc2l6ZV90IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4m
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YUZyb21NdWx0aXBhcnQoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2RlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNl
bFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5hbGl6ZVRyYW5zZmVyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dENsaWVudC5oCmluZGV4IDM0Nzk4MzJmNTc2ZDQxMjhhZmE1MWM4MTQyNGNjZmQ3NDFkZjZhZTcu
LjczMDMzZjBlZjRlYjRkZjIxYWI3NjQ2M2NjMzk4MTliMjg2Nzg0OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVu
dC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgQ3VybFJlc3Bv
bnNlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNs
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IEN1cmxSZXF1ZXN0Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVx
dWVzdCYsIEN1cmxSZXNwb25zZSYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNl
aXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29u
c3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkQ29tcGxldGUo
Q3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2Vy
dGlmaWNhdGVJbmZvJiYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
LmNwcAppbmRleCAzMDVkNGU1YzlmYzI3MDc3NTc4N2IwZjlhOTE5NzljMDg4ODlhOGE2Li4zODk3
ZTAxYzZkMDc2NmRhY2YzZTE5YjIzNzMzNmY1YjU1Y2U1MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0MiwxNiArMTQyLDE1IEBAIHZvaWQgQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJl
cXVlc3QsIEN1CiAgICAgfSk7CiB9CiAKLXZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6
OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERp
ZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChjYW5jZWxsZWRPckNsaWVu
dGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpOwotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRv
bigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUs
IFdURk1vdmUoY29udGlndW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBDdXJsQ2Fj
aGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyKTsK
KyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIGJ1ZmZlciwgYnVmZmVy
LnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRD
b21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCmluZGV4IGRhZjBhNTlhNGU1ODZkNzExNGFiYjRl
NWVmOWM1NGY2YThiZWZjNzAuLjAyNGJjNGU5YWUzMWRmMjVhOGY5YjcwY2JhMjgxZmFjZWFjOGNm
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCkBAIC0zOCw2ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZUludGVybmFsOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZSBmaW5hbCA6IHB1
YmxpYyBDdXJsUmVxdWVzdENsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUzLDcg
KzU0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3Qm
LCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxC
eXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgZmluYWw7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2
ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0Jiwg
TmV0d29ya0xvYWRNZXRyaWNzJiYpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJy
b3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxT
dHJlYW0uY3BwCmluZGV4IGMwNzA0ZjBjZGQ2NDQyMzczZjdiNzBiZmU2MTUzOWJmNWIzN2Q2MjUu
LjM2NjU4ZjkxZGM5ZDY3MjMwYjIzOWU0OTdjMDAwMGFjNjJhYWU5ODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKQEAgLTks
NyArOSw3IEBACiAgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKICAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAogICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkN1cmxTdHJlYW0uaCIKIAog
I2luY2x1ZGUgIkN1cmxTdHJlYW1TY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogCiAjaWYgVVNFKENVUkwpCkBAIC0x
MjksMTAgKzEzMCwxMCBAQCB2b2lkIEN1cmxTdHJlYW06OnRyeVRvUmVjZWl2ZSgpCiAgICAgaWYg
KCFtX2N1cmxIYW5kbGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVjZWl2ZUJ1ZmZl
ciA9IG1ha2VVbmlxdWVBcnJheTx1aW50OF90PihrUmVjZWl2ZUJ1ZmZlclNpemUpOworICAgIFZl
Y3Rvcjx1aW50OF90PiByZWNlaXZlQnVmZmVyKGtSZWNlaXZlQnVmZmVyU2l6ZSk7CiAgICAgc2l6
ZV90IGJ5dGVzUmVjZWl2ZWQgPSAwOwogCi0gICAgYXV0byBlcnJvckNvZGUgPSBtX2N1cmxIYW5k
bGUtPnJlY2VpdmUocmVjZWl2ZUJ1ZmZlci5nZXQoKSwga1JlY2VpdmVCdWZmZXJTaXplLCBieXRl
c1JlY2VpdmVkKTsKKyAgICBhdXRvIGVycm9yQ29kZSA9IG1fY3VybEhhbmRsZS0+cmVjZWl2ZShy
ZWNlaXZlQnVmZmVyLmRhdGEoKSwga1JlY2VpdmVCdWZmZXJTaXplLCBieXRlc1JlY2VpdmVkKTsK
ICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX09LKSB7CiAgICAgICAgIGlmIChlcnJvckNvZGUg
IT0gQ1VSTEVfQUdBSU4pCiAgICAgICAgICAgICBub3RpZnlGYWlsdXJlKGVycm9yQ29kZSk7CkBA
IC0xNDMsOCArMTQ0LDkgQEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUoKQogICAgIGlm
ICghYnl0ZXNSZWNlaXZlZCkKICAgICAgICAgZGVzdHJveUhhbmRsZSgpOwogCi0gICAgbV9zY2hl
ZHVsZXIuY2FsbENsaWVudE9uTWFpblRocmVhZChtX3N0cmVhbUlELCBbc3RyZWFtSUQgPSBtX3N0
cmVhbUlELCBidWZmZXIgPSBXVEZNb3ZlKHJlY2VpdmVCdWZmZXIpLCBsZW5ndGggPSBieXRlc1Jl
Y2VpdmVkXShDbGllbnQmIGNsaWVudCkgbXV0YWJsZSB7Ci0gICAgICAgIGNsaWVudC5kaWRSZWNl
aXZlRGF0YShzdHJlYW1JRCwgYnVmZmVyLmdldCgpLCBsZW5ndGgpOworICAgIHJlY2VpdmVCdWZm
ZXIucmVzaXplKGJ5dGVzUmVjZWl2ZWQpOworICAgIG1fc2NoZWR1bGVyLmNhbGxDbGllbnRPbk1h
aW5UaHJlYWQobV9zdHJlYW1JRCwgW3N0cmVhbUlEID0gbV9zdHJlYW1JRCwgYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZWNlaXZlQnVmZmVyKSldKENsaWVudCYgY2xpZW50
KSB7CisgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgYnVmZmVyKTsKICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsU3RyZWFtLmgKaW5kZXggNGY1OWIyMGU4ZGIyNzkwMzk5NGIzMzE1NGNlNjRiMDk5NGYzYTBi
YS4uZThhMzJjMjY0NjFiNDMwOGVhMjI3YzZkZjhjOTcyNDM5OTA1ZDBiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCkBAIC05LDcg
KzksNyBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCiAgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q3VybFN0cmVhbVNjaGVkdWxlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNvY2tldFN0
cmVhbUVycm9yOwogCiB1c2luZyBDdXJsU3RyZWFtSUQgPSB1aW50MTZfdDsKQEAgLTQ2LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW4o
Q3VybFN0cmVhbUlEKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShDdXJs
U3RyZWFtSUQsIHNpemVfdCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoQ3VybFN0cmVhbUlELCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoQ3VybFN0cmVhbUlELCBDVVJM
Y29kZSkgPSAwOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IGI4MDRm
ZGUwOTczYmJmYjI4MzMxY2Y3YzNhMWYyMGIwNDNlNzRmZTguLjM2NmIwNTljMDI4MDRiMTk5Yzg4
NmE5YzJjNjcyNzNmOTI0ZjJlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAtNTks
OSArNTksMTAgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1T
ZW5kSW50ZXJuYWwoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgYm9vbCBzZW5kUGVuZGlu
Z0RhdGEoKTsKIAorICAgIC8vIEN1cmxTdHJlYW06OkNsaWVudAogICAgIHZvaWQgZGlkT3BlbihD
dXJsU3RyZWFtSUQpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEoQ3VybFN0cmVhbUlELCBz
aXplX3QpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25z
dCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxT
dHJlYW1JRCwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKEN1
cmxTdHJlYW1JRCwgQ1VSTGNvZGUpIGZpbmFsOwogCiAgICAgYm9vbCBpc1N0cmVhbUludmFsaWRh
dGVkKCkgeyByZXR1cm4gbV9zdHJlYW1JRCA9PSBpbnZhbGlkQ3VybFN0cmVhbUlEOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCA0Yjk0OTFjMTE1NDNmMmI2MGYx
MmQzNmU5ZTZhMGNiYWFlMzRhNzJlLi5hOGY1N2E3MmQwZWFjY2E3NzU1YmU4NGZjYWExYzliZjEw
OTU4YzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAKIAogI2luY2x1ZGUgIkN1cmxTdHJlYW1TY2hlZHVsZXIuaCIKICNpbmNsdWRlICJE
ZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKQEAgLTEwNCwx
MiArMTA1LDEyIEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6ZGlkU2VuZERhdGEoQ3Vy
bFN0cmVhbUlELCBzaXplX3QgbGVuZ3RoKQogICAgIHNlbmRQZW5kaW5nRGF0YSgpOwogfQogCi12
b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwg
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbDo6ZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gT3BlbikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMsIGRhdGEsIGxlbmd0
aCk7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMsIGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6
ZGlkRmFpbChDdXJsU3RyZWFtSUQsIENVUkxjb2RlIGVycm9yQ29kZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQuaAppbmRleCAxZjRhMTkzMTMzMTJjNWRkNmE0OGFkNTMzOWRmZDJjM2I1ZGVj
MjU3Li4wZmU2NWEyOWU2MzYxNmRiNDJmN2M5ZWExZDE4NTIyMWMyMDA0MGMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5
UHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zMSwxMiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50IDogcHVibGljIFJlZkNvdW50
ZWQ8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkxl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKCkgeyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KaW5kZXggMzE1ZTA2NTE1MzBkY2RiMDI4
MDE2NTRiNzU3ZDgxNDczYzIwZmQzMC4uYWU3MTU1ZWNlZjM1ZDNlMTg4OGQ5MTY1NjQ1N2UzODEx
NTlkZjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpAQCAtMzAwLDcgKzMwMCw3IEBAIC0gKHZvaWQpY29u
bmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlRGF0YTooTlNE
YXRhICopZGF0YSBsCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk3OTMKICAgICAgICAgLy8gLTEgbWVhbnMgd2UgZG8gbm90IHByb3Zp
ZGUgYW55IGRhdGEgYWJvdXQgdHJhbnNmZXIgc2l6ZSB0byBpbnNwZWN0b3Igc28gaXQgd291bGQg
dXNlCiAgICAgICAgIC8vIENvbnRlbnQtTGVuZ3RoIGhlYWRlcnMgb3IgY29udGVudCBzaXplIHRv
IHNob3cgdHJhbnNmZXIgc2l6ZS4KLSAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNl
aXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgLTEp
OworICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgLTEpOwogICAgIH07CiAKICAgICBbc2Vs
ZiBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6V1RGTW92ZSh3b3JrKV07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAwOGQwNTdiYmI1ZjE3YzIwNDViZmY5MDZm
ZjVhZGE4NWYxMDQyOTMwLi5mN2YyNjZjZThkODE5MTA2MGM4NTdhMmY4YTZhZDlmZGViZDgxODI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTU0Niw4ICs1
NDYsOCBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KSk7IC8vIERvY3VtZW50TG9hZGVyIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+
aW5pdCgpLgogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCku
c2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBk
b2N1bWVudAotICAgICAgICBkYXRhKCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50
KSB7Ci0gICAgICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCku
YWRkRGF0YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICBkYXRhKCkt
PmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAg
ICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGJ1
ZmZlcik7CiAgICAgICAgIH0pOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KS0+d3JpdGVyKCkuZW5kKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA4MmEyYThjNGIxOGFjY2U3OThiMjdjMmM4ZDAwOTU4
OWZmNzVjYmE4Li40ZThhYjc4MWE0MDYxYWIxOGM1MDMzNzNiZGEzOGY2YzU1ZDhhMDI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBA
IC0xMTUsMTIgKzExNSwxMiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUgogICAgICAgICBtX2Vy
cm9yT2NjdXJyZWQgPSB0cnVlOwogfQogCi12b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIFdv
cmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGJvb2wpCiB7CiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBw
ZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGRhYjczZmM3YjFhOTNlZDRlM2ZlYjMx
ZDY3MDk4ZDk5YjUxNzZhMzkuLjdjYmFhOGU1NTEwYzhjNGZjYWYyZWI5MmM2ZjczYjNkMmExMmM2
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
aApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNXb3JrZXJGb250TG9hZFJl
cXVlc3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcAppbmRleCBiZjVhNDRmZTM0OGQyZmZjZTkxNmZiMTk0OTE1ZTY3YmZkYTlh
ZWMxLi5jZDI2ZWNkNmEzN2E3ZWQzOWZmNzFlZGRhMzVlOGVmYTkwYjM3YzRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0yMDAsNyArMjAw
LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQordm9p
ZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBib29sIHVzZVN0ckxlbikKIHsKICAgICBpZiAobV9mYWlsZWQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIxMiwxMyArMjEyLDExIEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICAgICAgbV9k
ZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQiX3Ms
ICJVVEYtOCIpOwogICAgIH0KIAotICAgIGlmICghbGVuKQorICAgIGlmIChidWZmZXIuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAg
bGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKIAotICAg
IG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKKyAgICBzaXpl
X3QgbGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CisgICAgbV9zY3JpcHQuYXBwZW5kKG1f
ZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGxlbikpOwogfQogCiB2b2lkIFdvcmtlclNj
cmlwdExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmlu
ZGV4IGVhYWJlMWVhNWQxM2IzM2Y5YzNjYzY2ZGQ0OTU1N2ViNjllMzdlZmMuLjBiYzNhMDI1YjM2
NzllMjU2MzA4NjI0ZWVlYmE4OWRjY2M0NWM4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CiAKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgdXNlU3RyTGVuKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGZiYTM2MzIyYjI5YTZkNWI3OTdiMzllZGMz
YzNkMTcxMjRiM2I1YmMuLmNlMzcwOTY4OWQ5ZjA5MjFlMDkwM2EwMzc3ZGIyNjhhNTQ1MGIyYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4
IDliMTEyYjlkYjJjZDg0ZDAzMmY1OWRhZmE4ZThlMzhlMDcwZTUzZjcuLmRjM2FlYThjYWQ5ZDA5
NmI0MmJjYTY1YjI2MTIzMmYxMzc0M2QxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcApAQCAtMTAzNCw3ICsxMDM0LDcgQEAgUmVmPFRleHRSZXNvdXJjZURlY29kZXI+IFhN
TEh0dHBSZXF1ZXN0OjpjcmVhdGVEZWNvZGVyKCkgY29uc3QKICAgICByZXR1cm4gVGV4dFJlc291
cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7CiB9CiAKLXZvaWQgWE1M
SHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4p
Cit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pCiB7CiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIHJl
dHVybjsKQEAgLTEwNTIsMTcgKzEwNTIsMTYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICBpZiAodXNlRGVjb2Rl
ciAmJiAhbV9kZWNvZGVyKQogICAgICAgICBtX2RlY29kZXIgPSBjcmVhdGVEZWNvZGVyKCk7CiAK
LSAgICBpZiAoIWxlbikKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKKyAgICBzaXplX3QgbGVuID0gdXNlU3RyTGVuID8g
c3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1
ZmZlci5zaXplKCk7CiAKICAgICBpZiAodXNlRGVjb2RlcikKLSAgICAgICAgbV9yZXNwb25zZUJ1
aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOworICAgICAgICBtX3Jl
c3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgbGVu
KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAg
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5kKGRhdGEsIGxlbik7CisgICAgICAgIG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIGlmICghbV9l
cnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAyZDEzYmVjMzk0NjQ0
OGI5YjRmOTI1ZDMyYmQ4NmJhMmQ4MDM3NzVhLi42YmYxOWY4MmJkMmZmNzY3MDdkYTQ1NzE0NzUw
N2U5OTFkMjQ2NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMTYyLDcg
KzE2Miw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudAogICAgIHZv
aWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SXNEb25lKGJv
b2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IDYxN2Y0NzY4OTU2NDJkZWMyMzI1NGI1NDBlZTgx
OTExYWM0YTJkZjYuLjdmNTEyYzZjMTFhOGU3MTA4Y2YwMDYyYjU4NGQyN2I1ODkwOGQxOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXll
clByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtOTYsMTAgKzk3LDEwIEBAIHZv
aWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywg
Ynl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVz
b3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQor
dm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNl
aXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7CisgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2
ZWQoKnRoaXMsIGRhdGEpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmFjY2Vzc0Nv
bnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4
IDViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJlNzE3MThhMTY3Mzc1ZTcuLjk1MTA2ZjY3MjI3M2I0
NWYwYTI0YTQ3YTFhMmJkZDE0MDllMGY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzUsNiArMzUsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC01Nyw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpOwogICAg
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50KHVpbnQ2NF90LCB1
aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAppbmRleCA3MWZkMDIyMjliYmIx
YzU3MzI2ZmRmY2ZlMjZjMTFmNzYxYWJjZjcyLi4wNTRiODkzZTExMTEwZGNmOWE3MDAyNTJmNGY3
OTViMDFhNTg3YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9p
ZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFp
bExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTU4NjA5MWVhMDA0MWI2ZjE1ODY5ZDQyYmJkYTcyNDMy
OTc2OTBlYy4uYmE4ZDA0OGY2NWRjMzM5ODRmMGNkNDc2MzVhYjkxMDE4NzliZDNiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12
b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCit2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikKIHsK
ICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuaAppbmRleCA1MDVhNGVmZTU3MWQ0ODllNTBhOTg4YmViODE4NWI3ZmVhYjNk
YjEwLi4wY2IzMTVmZDhmZjUzMTk5MTU3ZGU3OGY4NDUyZDcxYzRmNWUyOThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRp
ZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRh
KHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1Nl
bmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKaW5kZXggNGI5ZWU1NzRiOTJjN2Mz
NzE3YTRiYzI4MTlhNmJlM2ExOTA2NTcxNS4uZjQ3OWUwOTAyYjIxNzkyOTU1ZDM3NjgxNGIyMWM4
OWZmNTVkYjU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxs
ZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5
VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0
ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90
IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggOGMxMDRkODE2MGI3YWFmZDA5OTcxNWRh
NmQ0ZTZmN2M0NjM3ZmEwOC4uNjBiNjlhOTM2YmI3OGRmMjUxMDc0OWM3NTRmZTZhYTIyOTNmZTAy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAg
LTI1NCwxMSArMjU0LDEwIEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQu
Z2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRo
ZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgotICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwot
ICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBzaXpl
KTsKKyAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgYnVmZmVyLnNp
emUoKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuaAppbmRleCBlNmE3NjExNTk2MmI5NjU5ZTdiZmU3OGM2ZjRkYzZmNTMxMmIzY2JlLi4w
ZTRjMWFlNDkyM2MzMzdmNWNmOWIwYTQwOGI1YTg4MjI5ZjU5NjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lk
IGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmRE
YXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCmluZGV4IDM0OGNmZmI5
ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1NGQzOWUuLjhhMjg1ODI2MTEzZjlkOGVlNjYwZGI2
ODhiM2M1MzkzZmY5N2IyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2xpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDM2YWNjNjMxNDVmNDA1YjE5NTVkMzM1NDBkYWE3MDhmOWE2MjkzNDEuLmU2ZmQyYWM3MGVj
N2UwZTc1OTBhZGUyNzJlMTQyN2ZjZTk2ZGRlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg2MywyOSAr
ODYzLDI5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3Bv
bnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQogewogICAgIGlmICghbV9udW1CeXRlc1JlY2VpdmVkKQotICAgICAgICBMT0FERVJfUkVMRUFT
RV9MT0coImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAg
bV9udW1CeXRlc1JlY2VpdmVkICs9IGJ1ZmZlci0+c2l6ZSgpOworICAgICAgICBMT0FERVJfUkVM
RUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAg
IG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZmZXIuc2l6ZSgpOwogCiAgICAgQVNTRVJUKCFtX2Nh
Y2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
KSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWlu
ZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBj
b25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkg
LyA4OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXIt
PnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZm
ZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVy
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNl
dCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMg
Z2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KLSAgICB1bnNpZ25lZCBlbmNvZGVkRGF0
YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKKyAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxl
bmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGggOiBidWZmZXIuc2l6ZSgpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0g
ICAgICAgIG1fYnVmZmVyZWREYXRhLmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBtX2J1
ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVk
RGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdU
aW1lcklmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNzMsNyArMTI3Myw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKICAgICBtX2J1
ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNlbmRCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXpl
X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVk
RGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmlu
ZGV4IGNmMTBjZjBlNzFhMWJjNjU1NDBlODdkNmJhNGMxYjljODU2YzBhMWQuLjgxN2FlZjI2Yzgz
NmMzNGE3ZDQ0ZWU3Y2M5NWVkZDlhMjk4ZDZhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMTE1LDcgKzExNSw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsg
fQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkg
ZmluYWw7CkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZm
ZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0g
ICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBzaXpl
X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgc2VuZEJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKIAog
ICAgIHZvaWQgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRl
U2FuZGJveEV4dGVuc2lvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAKaW5kZXggYmMyYzMzN2U0ZWVlMDFhZjgzZTEzNjcyMzE3YTlhOWVhYmM3YzZmOC4uZjBl
ZmQwNGJiMmUxOGY2ZjNjYmMxNjNmYWYyM2RhMDQ2NmJlZTU0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFBpbmdM
b2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdv
dGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlzaCh7IH0sIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBQ
aW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCit2
b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAg
IFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggZTc4MDhk
OGU2NTU4MmY3OTM4ODgyOGQ1MTc1OGNiMTkzY2Y1NWZjNy4uYjIyNWM0N2I5NGFmYTBiNDRlZGMy
NjcwZGZjNThhZDdhZmM5MTQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwg
TmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2Vu
dCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdh
c0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVj
b25uZWN0VGFzay5jcHAKaW5kZXggMTdkNDc5MDdhM2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3NTFk
NmIwYi4uYWFhZTJiZmJkZjgzYTM5YWNlYzA2M2ZlYjI0NDYxNmRjODQ4ZWRhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTc5LDcg
Kzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb20KICAgICBjb21wbGV0aW9uSGFuZGxlcihQ
b2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggODU4MDhlMTIxYjY4Y2E4YjczZTI1MThk
MTkzYWIzOTU4MWVhZDFlNy4uOGM2YjBkZWVkNjZjNTEwMTliZTg5ODRlZDViODdlMGMxZDc5MGY4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFz
ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaApA
QCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2Vu
dCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25s
b2FkVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAKaW5kZXggMjVkNGUzN2Y5NDU0YmVlMzJmMDRk
OGNjOGM0NzFkNWQzZjdlZDgyYi4uOGM4ZGMzNmIxZTUzOTM4ZjgxZWI0YWJhYWZmMDE5MGYyYjU0
ZWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmgiCkBAIC0xNzMsNyArMTc0LDcgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyRG93bmxvYWRUYXNrOjpzdGFydCgpCiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3Rp
bmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwogfQogCi12b2lkIFNlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlckRvd25s
b2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRh
LCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9v
cCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKaW5kZXgg
YWI1OWVhZTUyNjY1MzA2MjEyYTI4ZTkzMjNhMmI4YjRmZmUwYzc4Zi4uYjg5YWIzZWJkNzYyZjY4
MTJhNWU5N2JmZjY5MGJhOTBmMDI1N2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckRvd25sb2FkVGFzay5oCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xh
c3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTY2LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29y
a2VyRG93bmxvYWRUYXNrKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50Jiwg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgRG93bmxv
YWRJRCk7CiAKICAgICAvLyBJUEMgTWVzc2FnZQotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBpbnQ2NF90
IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lk
IGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRU
YXNrLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KaW5kZXggMWQzYmZiN2Nj
MzEwOTc5OWNjODAwMWJiYTcxZDg5YzBmNmYyZDkyZi4uNTBkMmI0MmE3MWIwZWRhYjc5ZmJjZTlk
ZGI5ZjE5OTgyZGI1MzU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIAogbWVzc2FnZXMg
LT4gU2VydmljZVdvcmtlckRvd25sb2FkVGFzayBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRGYWls
KFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgp
CisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2goKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDRlNzkxOWIzZGRjMDJhZTE0ZDBlZDk2ODRiOGM2OGJi
NmYyOGE0MzQuLjRmNzhiOWRmNTRlNWU2Nzc4Nzg0MTM1YTI3YTAzZGJjNjI5YmZkNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAK
ICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vz
c2lvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgiCi0j
aW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6cHJvY2Vzc1Jlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgYm9vbCBuCiAgICAgICAgIG1fbG9hZGVyLnNldFJlc3BvbnNlKFdURk1vdmUocmVzcG9u
c2UpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgp
Cit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVybjsKQEAgLTQwMSw3ICs0MDEsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmxvYWRCb2R5RnJvbVByZWxvYWRlcigpCiAgICAgICAg
ICAgICBkaWRGaW5pc2hXaXRoTWV0cmljcyhtX3ByZWxvYWRlci0+bmV0d29ya0xvYWRNZXRyaWNz
KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGRpZFJlY2VpdmVE
YXRhKElQQzo6RGF0YVJlZmVyZW5jZSB7IGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkgfSwg
bGVuZ3RoKTsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoUmVmIHsgY29uc3RfY2FzdDxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJj4oKmNodW5rKSB9LCBsZW5ndGgpOwogICAgIH0pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBjMzQ1ODAyNjdm
YjMyNjllNmRjYmRjZWZjMzRkMDY4MmM2YTA4ODZjLi41MjI1ZTU0NTk5OTUxZDhmODFjNzBhZjgy
ZWJiYTI2ODllMzUwMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgK
QEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xh
c3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVy
Q29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTMsNyArOTQsNyBAQCBwcml2YXRl
OgogICAgIGVudW0gY2xhc3MgU2hvdWxkU2V0U291cmNlIDogYm9vbCB7IE5vLCBZZXMgfTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5JiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBk
aWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZv
aWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGaW5pc2hXaXRoTWV0cmljcyhjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KaW5kZXggMThlNjI5ZjBkMTQ2ZWQyZDQyOWRiMWJh
Mjg3MDFlODNmYjk2ZTYyZi4uN2RiNTNlOWJkMDM4MDQ1NDczYTI1YWYzN2Q0N2MxOTU3OTVlMjMy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2Fn
ZXMuaW4KQEAgLTI3LDcgKzI3LDcgQEAgbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckZldGNoVGFz
ayBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJy
b3IpCiAgICAgRGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSkKICAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSkKLSAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
ZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICBEaWRSZWNlaXZlRGF0YShJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBE
aWRSZWNlaXZlRm9ybURhdGEoSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSBkYXRhKQogICAgIERpZEZp
bmlzaCgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmNwcAppbmRleCA1ZDliZDMzMzM5MjExY2ExY2Q0NDdiODc5MmY1NDYxZWE4N2Vk
ZGY0Li5lNTY1NGNjMzEzOWI0OWQ2MWE5ODUxM2NkMDE2YmVjZjczOWJiY2Y4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAg
LTE3NSwxMCArMTc1LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiAgICAgICAgIGNhbGxi
YWNrKCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2Fs
bGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKFJlZlB0
ciB7ICZidWZmZXIgfSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDY3YWJjNTVjNjBmZjI0
ZTM5ZGQwNGVjYzUwMjFiNjA1ZWU4YmViYjEuLjVmODhhYzJhYThkZjk2MjhkNGM1OWRkZDA5NGYw
Y2VlMWQyMWE3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAg
ICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdh
aXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHko
Qm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFp
bExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJvb2wg
c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDdhMjYyMjE5
ZGU3OGIyMzVkMTI1YTkyYjZlMjM2ZDMzMjYyZjdhMjcuLmQ5ZDc0NzUyNTMyZjE4OWViMWJlMmMw
M2Q3ZTI5ZTg1OWU4OTZlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJlc291cmNlRXJyb3IgU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnByb2Nlc3NSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQog
ewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlmICghbV9yZXNwb25zZUVuY29kaW5n
LmlzRW1wdHkoKSkKQEAgLTE4Niw4ICsxODYsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4K
ICAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4
dC9qYXZhc2NyaXB0Il9zLCAiVVRGLTgiKTsKICAgICB9CiAKLSAgICBpZiAoYXV0byBzaXplID0g
YnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29k
ZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOworICAgIGlmICghYnVm
ZmVyLmlzRW1wdHkoKSkgeworICAgICAgICBidWZmZXIuZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8m
IHNlZ21lbnQpIHsKKyAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29k
ZShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKKyAgICAgICAgfSk7CisgICAgfQog
fQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDQ0ZmMwNjg1ZmEwZmVkYzg3NDIx
OTE2ZTkxM2E2NzRiMWMwZmRiZWEuLjdlODE4ZjM0MTNkYTI5Zjg2MWUxMDAzOTkxZThkNTM4OTIz
NDZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9p
ZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAK
aW5kZXggNDFkODIzNTAyNDc0N2I2ZmM0YTNhYzU0OGUxMzM0ZWQ2Y2I1ZWY3YS4uODE0ZWIzMjBk
NGU3NDhhMjlhZTA5MTM1YWZjMWRhNWYzNzUxNWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwg
UmUKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQg
U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1
bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAg
IEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
KSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWlu
ZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEw
ICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUo
KSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXIuc2l6ZSgpIDw9IG1heGlt
dW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFw
cGVuZChidWZmZXIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLnJlc2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5k
ZXggMWI4NDNkYjdlYzI3MGRiOWRhYjllOGEyNWYyYTQ4YThlY2FlMmE4YS4uOWFkY2E2MDVlNzI4
MGJiN2IzNGNlNzQ0ZDg3ODhiYmI0NDg5MjRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fz
a1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
LmgKaW5kZXggNDE2NjhhNWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVjYTkwN2VkYy4uMDc3MmFm
MWE4NmQyMjQxN2JmMTFmMTZiZDZiN2I1ODBmZTU3YTdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApA
QCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TTXV0YWJsZVVSTFJlcXVlc3Q7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgdHJh
bnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW0KaW5kZXggNDc3MWZkZTkyMGQ2Yjk4ZTgzZmMyOWRkM2FhZjk3YTBhNmQ5YTg4MC4uNjQ5
YjVjYTc4YzY4NzVlY2RlMGQzZDQzNmY5NTkwZGI1MTc5ZDBiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCkBAIC00NDMsMTIgKzQ0MywxMiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcgogICAgICAg
ICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmlj
cyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRh
dGEpCiB7Ci0gICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJl
Y2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7CisgICAgV1RGRW1pdFNpZ25wb3N0KG1f
dGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEuc2l6ZSgp
KTsKIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRh
KFdURk1vdmUoZGF0YSkpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSk7
CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVn
b3RpYXRlZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggODQ2NjllMjA5ZDc3YmY1MmEz
NmFmZTJhN2RhYjI1MmE2OTAwZGNmNy4uMTNmY2M3YmQ0OGE1NWEwOTM5MTI5MjZiYTQ0ODRjZjVl
MzU1MTMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJy
b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3luY2hyb25vdXNMb2FkZXJD
bGllbnQuaD4KICNpbmNsdWRlIDxwYWwvdGV4dC9UZXh0RW5jb2RpbmcuaD4KQEAgLTE3MiwxMyAr
MTczLDEzIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVSZXNwb25z
ZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJl
c3BvbnNlKCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVC
dWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVz
dCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIFJlZiBwcm90ZWN0ZWRUaGlz
IHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHN0YXRl
KCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFpc0Rvd25sb2FkKCkpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9p
ZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3
b3JrTG9hZE1ldHJpY3MmJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAppbmRleCA0
NWJlNWNlMTg0MzI1MjcxZDVjMDgwZGQzNGYxZWU0YTE2NjQyYTFmLi5lNTU4NjRhOTVmN2JjYmMw
ODVjNDY2MjhiZmYwNTg1NzM1NzMyODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKQEAgLTM2LDYgKzM2LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3VybFJlcXVlc3Q7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjgsNyArNjksNyBAQCBwcml2
YXRlOgogICAgIFJlZjxXZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpO
ZXdSZXF1ZXN0KTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVz
dCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAg
ICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJD
b3JlOjpDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0YShXZWJDb3Jl
OjpDdXJsUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY3VybERpZENvbXBsZXRlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRo
RXJyb3IoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyYmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDE3ZjA4YzI4ZWExMjViNTUwOTkz
ZWVkMjRkNTk2M2I4NTEwYTExNDEuLjU3YjE0NmU1OGU3YTlkYTcwMjZjOWRlZTUyMDM5NTUxYWRh
YjcxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNl
IElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCA5Y2RlZDk2OTM1MTVj
YmRiOTI1ZjU5NTRhMTZmNGJhZjA2N2EzMTYyLi42YzE5YmM5YmFiNjQxMDMzMzAwNzNiNDFjNWFl
MWQ4ZWQwMWMzYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTE4NSw5
ICsxODUsOSBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgogICAgIEFTU0VSVCghaXNNYWluUnVu
TG9vcCgpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3BhcnNlVHJhY2tzTG9jayB9OwotICAg
IEFTU0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1cyk7Ci0gICAgQVNTRVJUKG1fZHVyYXRpb24uaXNJ
bnZhbGlkKCkpOwotICAgIEFTU0VSVChtX3RyYWNrUmVhZGVycy5pc0VtcHR5KCkpOworICAgIEFT
U0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1cyB8fCAobV9pbml0ICYmIGVycm9yQ29kZSkpOworICAg
IEFTU0VSVChtX2R1cmF0aW9uLmlzSW52YWxpZCgpIHx8IChtX2luaXQgJiYgZXJyb3JDb2RlKSk7
CisgICAgQVNTRVJUKG1fdHJhY2tSZWFkZXJzLmlzRW1wdHkoKSB8fCAobV9pbml0ICYmIGVycm9y
Q29kZSkpOwogCiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAg
ICBpZiAoZXJyb3JDb2RlKQpAQCAtMjIxLDYgKzIyMSw3IEBAIHZvaWQgTWVkaWFGb3JtYXRSZWFk
ZXI6OmRpZFBhcnNlVHJhY2tzKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0
aW9uCiAgICAgfQogCiAgICAgbV9wYXJzZVRyYWNrc0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAg
ICBtX2luaXQgPSB0cnVlOwogfQogCiB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQcm92aWRl
TWVkaWFEYXRhKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJ
RCwgY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9N
ZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKaW5kZXggMzdlNGFk
NDI3NmIxMmFkNTE0M2RjMjI4Y2RlOTQ3NjM4N2U1Yzg4OC4uNjUwOTNlOWU0NmI0MGI1YTM5NzZm
ZGVmMjllNjEzYzY0NTFmMzE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKQEAgLTg3
LDYgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmPE1lZGlhVHJhY2tSZWFkZXI+PiBt
X3RyYWNrUmVhZGVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fcGFyc2VUcmFja3NMb2NrKTsKICAg
ICBSZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lk
ZW50aWZpZXI7CisgICAgYm9vbCBtX2luaXQgeyBmYWxzZSB9OwogfTsKIAogY29uc3RleHByIE1l
ZGlhRm9ybWF0UmVhZGVyOjpXcmFwcGVyQ2xhc3MgTWVkaWFGb3JtYXRSZWFkZXI6OndyYXBwZXJD
bGFzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmlu
ZGV4IGUxMjY0Y2UyMWJhNTdmMmE0Mjc0OGUzM2ExZGFkODhhMGUyNThiYzIuLmQ3NjdmYzA2YjM2
ZjE1NmZmMzFjMzgzZTY0M2Q0MzQ0YzIxN2FhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgYXV0byBXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIAotYXV0byBX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKK2F1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xODcsMTEgKzE4NywxMSBA
QCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAg
aWYgKGlzU3luYygpKSB7Ci0gICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybiBF
eGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxl
ci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGJ1ZmZlci5nZXQoKSksIG1fd2Vi
UGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVt
ZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9y
ZXNvdXJjZUxvYWRlcklELCBidWZmZXIpLCBtX3dlYlBhZ2VJRCk7CiAgICAgcmV0dXJuIEV4Y2Vw
dGlvblR5cGU6Ok5vbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suaAppbmRleCBmNmZmNDZlZWE1ZjI5MGI3YjdlM2ZlNTkyMWRmOWYxOTRiYWNkMTE3Li5j
MzIzMDY5YjFjYzAzMWYwMjViMjJjODU5YTM1NDE4OGZkZDIzNzI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoK
ICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBl
cmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRS
ZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
RXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3Bw
CmluZGV4IGI1MTNhMjY4MDhlYWExOGUzN2Y0ZmRmMDRhMjNkMjk2MGIyNzNiMmMuLjkyMzRiNWM2
NTNmOTFlYmE5MTBmYmRmOWJlMWUyMmEwMmMxMWM2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQ
cm94eS5jcHAKQEAgLTcyLDIwICs3MiwxNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94
eTo6ZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZQogICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6
OkRhdGFTZW50KG1faWQsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KSwgMCk7CiB9CiAK
LXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3Zv
aWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
Ci0gICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGxlbmd0aCk7
CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYnVmZmVy
KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBz
aGFyZWRNZW1vcnlQdHIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkp
OwotICAgIG1lbWNweShzaGFyZWRNZW1vcnlQdHIsIGRhdGEsIGxlbmd0aCk7Ci0KICAgICBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUo
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAvLyBUYWtl
IG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFuZCBtYXJrIGl0IGFzIG1lZGlhLXJlbGF0ZWQg
bWVtb3J5LgogICAgIGhhbmRsZS50YWtlT3duZXJzaGlwT2ZNZW1vcnkoTWVtb3J5TGVkZ2VyOjpN
ZWRpYSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsg
V1RGTW92ZShoYW5kbGUpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoKSB9KSwgMCk7Cisg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
cjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZSho
YW5kbGUpLCBidWZmZXIuc2l6ZSgpIH0pLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291
cmNlUHJveHk6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VQcm94eS5oCmluZGV4IDQ3ZWE4NjY3MWIxM2QxMzk1YzNkYWQ5YmRhNzlhYmY2MTZj
YmExNzkuLjk0OTQ2NDUyMmMyNjNlNmE1ZTgwNzNmNzRlOWQyNDM0YmFhOTM5MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlUHJveHkuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5h
bDsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZv
aWQgZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9u
ZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVk
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZp
bmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNz
Q29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGxvYWRGYWlsZWQoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGQ3MWFlNWUwYTlhZjNkOWVlM2E1MWQ4ZmNmNTBmZTUzNTliMzkwYjcuLjc0
OTE5MGQxOWIwZmExY2UwYjUxMWU4NDIwNzI1NjAwNjkxMTg2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViRnJh
bWUuaCIKQEAgLTIwMCwxNiArMjAxLDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAg
bV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdURk1vdmUocG9saWN5
RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZvciAnJXMnIiwgZGF0YS5zaXplKCksIG1f
Y29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJv
Y2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3Bv
bnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJj
ZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAg
ICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVy
KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92
ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnRl
cmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCksIGVu
Y29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRl
cikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlkUmVj
ZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjE4LDcgKzIxOCw4IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSwgaW50NjRfdCBlCiAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRS
ZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSIpOwogICAgIG1fbnVtQnl0ZXNSZWNl
aXZlZCArPSBkYXRhLnNpemUoKTsKIAotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEo
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRC
eXRlcyk7CisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpID8gUmVmIHsgKmRhdGEuYnVm
ZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRS
ZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsK
IH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtMzA2LDcgKzMwNyw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFy
ZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2Vz
cykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29y
ZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBXRUJSRVNPVVJD
RUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiIpOwogCi0gICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3Jh
cEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBm
cm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7CkBAIC0zMjMsNyArMzI0LDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGUmIGhhbmQKIAogICAgIC8vIE9ubHkgc2VuZCBkYXRhIHRvIHRoZSBkaWRSZWNlaXZl
RGF0YSBjYWxsYmFjayBpZiBpdCBleGlzdHMuCiAgICAgaWYgKHVuc2lnbmVkIGJ1ZmZlclNpemUg
PSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVy
KGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVz
b3VyY2UpOworICAgICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogCiAg
ICAgaWYgKCFtX2NvcmVMb2FkZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IGEyMmU2
MmYyOGI1ZmE0Y2ZjOTFhYTVlNWNlODJjYTI3YWUyNmFkNTMuLmFjNTQyMmZjMDY3MTBiZDBlMDg3
ZTBmNDQwOWVkOTQwMTdjMGNmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogCiBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVy
Q29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODAsNyArODEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2
NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9h
ZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsU2Vydmlj
ZVdvcmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5tZXNzYWdlcy5pbgppbmRleCAwMmExNGY1OWEzMDQ3NDRjMmQxODNlYTc5ZTk5ZWJhZWI0Y2Zi
YmEyLi5kYWEyNGQyN2M3MWE4M2NmN2MwZjE2OGRhMjZhNDliNDg3NjkyNjBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNv
dXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RC
b2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlk
U2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQp
CiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlk
UmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJD
b3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNoUmVzb3Vy
Y2VMb2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MpCiAg
ICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAg
IERpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmlu
ZGV4IDhkMmM1ZjNlMjVjYTFhMjM3OGU1ZTMwMDVkNzU0OTJiZWFmMGIxZWEuLjJiN2U0ZDJjMjBm
ZGQxOTk4ODI3MmRhOGJmY2M1YTYxODZjNmQzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTY1LDYgKzY1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVsZW1lbnQ7CiBzdHJ1
Y3QgUGx1Z2luSW5mbzsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdURiB7
CkBAIC0xNzYsMTEgKzE3NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZh
U2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIGZpbmFsOwog
ICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBV
UkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1
cykgZmluYWwgeyB9CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
c3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsK
LSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1
aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
ZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlE
KSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wg
d2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZp
bmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
Ynl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2
ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBtYW51
YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1E
aWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICBib29sIGhhbmRsZU1vdXNlRXZl
bnQoY29uc3QgV2ViTW91c2VFdmVudCYpIGZpbmFsOwpAQCAtMzYyLDcgKzM2Myw3IEBAIHByaXZh
dGU6CiAKICAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0
IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNv
cmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAg
ICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGU1ZmEwNzEwOWE5MzE4NDUzOWZiMWUyNDcwYTNmOTM4
NmQ0MzE1NTguLmZhNmNlNmY2OWZjMDJmNzAxZjg4NTEzODg0NzVkZWYzZjI0MzE0Y2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpA
QCAtOTQsNiArOTQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxBbmltYXRvci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5n
cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2hl
ZWxFdmVudFRlc3RNb25pdG9yLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQ
SS5oPgpAQCAtMTE5MSw3ICsxMTkyLDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVh
bUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3QKICAgICB9
CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJl
Y2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBjb3VudCkKK3ZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2Fk
ZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fcGRmUGx1Z2luKQog
ICAgICAgICByZXR1cm47CkBAIC0xMjAwLDcgKzEyMDEsNyBAQCB2b2lkIFBERlBsdWdpbjo6UERG
UGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0
cmVhbQogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVxdWVzdC0+
YWRkRGF0YShkYXRhLCBjb3VudCk7CisgICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVy
Q2xpZW50OjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0
IFJlc291cmNlRXJyb3ImKQpAQCAtMTcxOCwxNSArMTcxOSwxNSBAQCB2b2lkIFBERlBsdWdpbjo6
c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1
aW50MzJfdAogICAgICAgICBtX2lzUG9zdFNjcmlwdCA9IHRydWU7CiB9CiAKLXZvaWQgUERGUGx1
Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURh
dGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IEFTU0VSVF9VTlVTRUQoc3RyZWFtSUQsIHN0cmVhbUlEID09IHBkZkRvY3VtZW50UmVxdWVzdElE
KTsKIAogICAgIGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9wdENGKENGRGF0YUNy
ZWF0ZU11dGFibGUoMCwgMCkpOwogCi0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdldCgp
LCBieXRlcywgbGVuZ3RoKTsKLSAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gbGVuZ3RoOworICAgIENG
RGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1ZmZlci5zaXplKCk7CiB9CiAKIHZvaWQgUERG
UGx1Z2luOjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKQpAQCAtMTc2
MywxNCArMTc2NCwxNCBAQCB2b2lkIFBERlBsdWdpbjo6ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1
aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAgICAgIENGRGF0YUluY3JlYXNlTGVuZ3RoKG1fZGF0
YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVudExlbmd0aCk7CiB9CiAKLXZvaWQgUERGUGx1
Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50
IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9k
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAgIGVuc3VyZURh
dGFCdWZmZXJMZW5ndGgobV9zdHJlYW1lZEJ5dGVzICsgbGVuZ3RoKTsKLSAgICBtZW1jcHkoQ0ZE
YXRhR2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdldCgpKSArIG1fc3RyZWFtZWRCeXRlcywgYnl0
ZXMsIGxlbmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKKyAgICBlbnN1cmVE
YXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyArIGJ1ZmZlci5zaXplKCkpOworICAgIG1l
bWNweShDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihtX2RhdGEuZ2V0KCkpICsgbV9zdHJlYW1lZEJ5
dGVzLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX3N0cmVhbWVkQnl0ZXMg
Kz0gYnVmZmVyLnNpemUoKTsKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCiAgICAg
Ly8gS2VlcCBvdXIgcmFuZ2VzLWxvb2t1cC10YWJsZSBjb21wYWN0IGJ5IGNvbnRpbnVvdXNseSB1
cGRhdGluZyBpdHMgZmlyc3QgcmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKaW5kZXggMWQ4NDQ4MDVmNGMxMGU5M2ZlZGNhYmRlZWMyMWRkMzVkZGY4ODIwMi4u
ZTRkNjJmNGJlYTliZmMyZmE4MGVmNGQ2ZTkwYzVjY2YwNjc5NGY2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTU0LDEyICs1NCwxMyBAQCBjbGFzcyBB
ZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNz
IEZsb2F0U2l6ZTsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXpl
OwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjAsNyArMTYxLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAg
ICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCi0g
ICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVh
bSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNo
TG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgPSAwOwpAQCAtMTczLDcgKzE3NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAg
Ly8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBk
YXRhLgotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAK
ICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBsb2Fk
aW5nLgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApp
bmRleCA1MzRkYTUyZDQ3ZDYyODUwZTIwNWZmOWU5OWMzMGIzN2QzYmNiYTEyLi4wMzQ0ZjRiZTIz
YTQzNzY3MTk3Nzg5OTk3ZDc2MzdhMjAzMWI3ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZh
dGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQKICAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAK
QEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUgogICAgIG1fcGx1Z2lu
Vmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCByZXNw
b25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1l
VHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQg
UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3
OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+
c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9w
bHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnVm
ZmVyKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZEZhaWwoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgCkBAIC0zNzQsNyAr
Mzc0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIG1fcGx1Z2luLT5tYW51YWxTdHJl
YW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlm
aWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3Rl
ZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6
bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRp
YWxpemUuCiAgICAgaWYgKCFtX3BsdWdpbikKQEAgLTM4MiwxMSArMzgyLDExIEBAIHZvaWQgUGx1
Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJU
KG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVz
cG9uc2UpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ5dGVzLCBsZW5ndGgp
OworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEo
Ynl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRh
KGJ1ZmZlcik7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZpbmlzaExvYWRp
bmcoKQpAQCAtMTE3MSw5ICsxMTcxLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51
YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBpZiAobV9tYW51YWxT
dHJlYW1EYXRhKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLnRh
a2UoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQot
ICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0
YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YS50YWtlKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIp
IHsKKyAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShidWZmZXIpOworICAgICAg
ICB9KTsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJl
YW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKaW5kZXggZjY2MzEyYTgwYWNkMWUwMzUzMTBkZmFhM2E1ZjNhMTdiNzJhYWU1
NS4uMjU2MTVjYjMwZjIyNjQ2MzkyNDQ0ODhmMmJkN2M0MTIyNzkwNzliOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNzMsNyArNzMsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVkKCkgY29uc3QgeyByZXR1cm4gIW1f
cGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCk7IH0KIAogICAgIHZvaWQgbWFu
dWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Jik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0
ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWFudWFsTG9hZERpZEZpbmlzaExv
YWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRl
eCBlZTQwZmI5NTg1ZTc5ZDg2YjNjZmQyZjU3OWVkNDZlNjFiOWVjNjNlLi4zMTQ4MmViM2IzNjhk
NzhhNjFhN2VjMWQyNGM1OTgxMGJjOTFlZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgog
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTgwLDE0ICs4MCwxNCBAQCB2b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPgogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKICAgICAgICAgICAgIG1fcmVz
cG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOwotICAgICAgICBzdGQ6OmdldDxTaGFy
ZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5h
cHBlbmQoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX2lzRG93
bmxvYWQpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0
PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6
RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXpl
KCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEg
eyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBt
X2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19j
YXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAog
dm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFB
bmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1EYXRhKQpAQCAtMTM2LDE1ICsxMzYsMTUgQEAg
dm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFB
bmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKQordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlm
ICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pc0Rvd25sb2Fk
KQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBkYXRhLCBzaXplIH0sIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0
YSB7IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRj
aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgZGF0YSwgc2l6
ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7Cisg
ICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIgLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIu
c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNoQmxvYkxvYWRpbmcoKQpAQCAtMjI4LDcgKzIyOCw3
IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UoKQogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRG
aW5pc2goKTsKICAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVy
KSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOworICAgICAgICBkaWRS
ZWNlaXZlRGF0YShidWZmZXIuY29weSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgaWYg
KG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJl
ZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmgKaW5kZXggZTk4N2UxOWFjOGI3Mzg4NzFhYWQ4MmI0YjM4NTYyOTY4YTJiNmM5Yy4uMDk0MDBk
ZjBjZTcyNWYzOWE4YjExZDkzNWUxNDU0ZTM5OWY1YTI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikgZmluYWw7CiAgICAg
dm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2
b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtNjAsOCArNjAsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgY29udmVydEZldGNoVG9Eb3dubG9hZCgpIGZpbmFsOwogCiAgICAgdm9pZCBjbGVhbnVwKCk7
Ci0gICAgCi0gICAgdm9pZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRGaW5pc2hCbG9iTG9hZGluZygpOwogCiAgICAg
c3RydWN0IEJsb2JMb2FkZXIgZmluYWwgOiBXZWJDb3JlOjpGZXRjaExvYWRlckNsaWVudCB7CkBA
IC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQg
QVBJCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKSBmaW5hbCB7IH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBjbGllbnQtPmRpZFJlY2VpdmVC
bG9iQ2h1bmsoZGF0YSwgc2l6ZSk7IH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpIGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZl
QmxvYkNodW5rKGRhdGEpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBjbGllbnQtPmRpZEZhaWwoZXJyb3IpOyB9CiAg
ICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsgY2xpZW50LT5kaWRGaW5pc2hCbG9iTG9h
ZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDE0YTA4M2Nh
MjA3YTkwNjNjZjgwYjFlN2U5NjcwYTQ4N2NmNGQzOTkuLmVkNGY1ZGU5ZDVlNTYxOGQ0MzI0NTUw
ODJmNWRhMTg4YWJmOWJmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAt
MTE1MiwxMCArMTE1MiwxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNl
TXVsdGlwYXJ0Q29udGVudCgpCiAgICAgd2ViUGFnZS0+ZGlkUmVwbGFjZU11bHRpcGFydENvbnRl
bnQobV9mcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExv
YWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmICghbV9wbHVn
aW5WaWV3KQotICAgICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICAg
ICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEpOwogCiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlz
IGEgc3RhbmQtYWxvbmUgbWVkaWEgZG9jdW1lbnQsIG5vdyBpcyB0aGUgcmlnaHQgdGltZSB0byBj
YW5jZWwgdGhlIFdlYktpdCBsb2FkLgogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJl
IHNoYXJlZCBhY3Jvc3MgYWxsIHBvcnRzLiA8aHR0cDovL3dlYmtpdC5vcmcvYi80ODc2Mj4uCkBA
IC0xMTc3LDcgKzExNzcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRM
b2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3ID0gdHJ1ZTsKICAg
ICB9Ci0gICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVu
Z3RoKTsKKyAgICBtX3BsdWdpblZpZXctPm1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShkYXRhKTsK
IH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGJiNTI5ZDNh
ZWM0ZTJjNzVmMWE3ZGU5MWIxMGI1NTgyZDQ1MjJiNDIuLjFkMzBiYzM5MzgzYWZmZjJjYTljMjg3
NTNkZDJkN2VjMmIyNjQ5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNTIs
NyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVu
dCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsK
IAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0
IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpE
b2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAg
IHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAg
ICAgCiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCBhMjA1ZTAwMWNhNzE1ODIwOTEzYTgx
YWU0YTgzNjUzMGY5YTBmNjQ4Li43MmUzNTU0YzhlMGFhNjkwYTZlYzU3ODAxNzZmMTllMGI4ZDcw
ZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ5
LDcgKzQ5LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVu
dChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKIAogV2ViUHJldmlld0xvYWRlckNs
aWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGRjMTY3ZTVi
N2JjM2IwM2VmMzkzMWVhYjM1NmM3ODI3OTI5NTI5ZS4uNjQ5YmM4MzE5YzI3ODZmMDFkNjE3YzEx
MTk5ZGIwYzZjMDc3ZmE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDk0MmVkYzYyM2E0ZTY1M2JiMTg4YWVlMDUwNjQ0YTNmNGEwMzJlODkuLmY4
OWZmNzJhMGQzMWJlYzExZWY4MDI5N2VmYmE5MmMyYTdiYzY2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03MDU3LDEyICs3MDU3LDEyIEBA
IHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJVUkxTY2hl
bWVIYW5kbGVySWRlbnRpZmllciBoYW5kCiAgICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVSZXNw
b25zZSh0YXNrSWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVybFNj
aGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5k
bGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVu
dGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2U6OnVy
bFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBo
YW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJ
ZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEpCiB7CiAgICAgYXV0
byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldCho
YW5kbGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhhbmRsZXIpOwogCi0gICAgaGFuZGxlci0+
dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLnNpemUoKSwgZGF0YS5kYXRh
KCkpOworICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0
YS5idWZmZXIoKSA/ICpkYXRhLmJ1ZmZlcigpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS5nZXQo
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYlVSTFNj
aGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE5
NGI1YjlkN2ZlMzJmMjRhODZkYWFhZDQ0ODQyYjBjZGQwYWViMmYuLjQ4ODY2NzA3YzQ2MTNkOWE3
Y2QzNTIxNWRmY2E5MjNjNjk3OWJlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTE4NCw2ICsxODQsNyBAQCBuYW1lc3BhY2UgSVBDIHsKIGNsYXNz
IENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7Citj
bGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xODk2
LDcgKzE4OTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXJsU2NoZW1lVGFza1dpbGxQZXJmb3Jt
UmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFz
a0RpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lk
IHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgdXJsU2NoZW1lVGFz
a0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYpOworICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNj
aGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
dGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpOwogICAgIHZvaWQg
dXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc2V0SXNUYWtpbmdTbmFwc2hvdHNG
b3JBcHBsaWNhdGlvblN1c3BlbnNpb24oYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBiMjcyMjk0NzFlYWU4
NmVlNTk4MTk4M2RkNTdiNWU3YTgyOTFjZDRiLi5iZGE1ZjUwYWRkMjNhOTY3NDBlODlkNzMzZDc5
YzE4N2YwNTJiZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTU2NCw3ICs1NjQsNyBAQCBHZW5lcmF0ZVN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kVHlwZQogICAgIFVSTFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdlYktp
dDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2Vk
UmVxdWVzdCkgLT4gKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBhY3R1YWxSZXF1ZXN0KSBBc3lu
YwogICAgIFVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcHJvcG9zZWRSZXF1ZXN0KQog
ICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlKQotICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYlVSTFNj
aGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSBkYXRhKQorICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVy
Q29weSBkYXRhKQogICAgIFVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJLaXQ6OldlYlVSTFNj
aGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
ZXJyb3IpCiAKICAgICBTZXRJc1N1c3BlbmRlZChib29sIHN1c3BlbmRlZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5k
bGVyUHJveHkuY3BwCmluZGV4IDZkOGQwY2YyNzg0ZWQzMDU2NjI1YzdmNmU4NDZhOTNhNzExY2Jh
Y2QuLjYxNmVkYTA4ZjBiOGZjYWIyZDU3ZmM0NzUzMjkxMDdiODE1Y2QyM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5LmNwcApAQCAtOTYsMTMgKzk2LDEzIEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlCiAgICAgdGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBX
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIHNpemVfdCBzaXplLCBjb25zdCB1
aW50OF90KiBkYXRhKQordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNl
aXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvKiB0YXNrID0gbV90YXNrcy5n
ZXQodGFza0lkZW50aWZpZXIpOwogICAgIGlmICghdGFzaykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgdGFzay0+ZGlkUmVjZWl2ZURhdGEoc2l6ZSwgZGF0YSk7CisgICAgdGFzay0+ZGlkUmVjZWl2
ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlk
Q29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKaW5kZXgg
NThiZWNjMTdiNWQ4NTk4NzQ5ODg0ZDMwMjUxNjg5Y2NjYzE3NjkzZi4uYWIyMGJkNTczYWE0YWZj
MTU4MDU5MGYyNzA0NjYzMDA2ODc3NDBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKQEAgLTM1
LDYgKzM1LDcgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01OSw3ICs2MCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgdGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIHRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7Ci0gICAgdm9pZCB0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpOworICAgIHZvaWQg
dGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB0YXNrRGlkQ29tcGxldGUoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7CiAgICAgdm9pZCB0YXNrRGlkU3RvcExvYWRpbmcoV2ViVVJMU2NoZW1lVGFza1Byb3h5
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZVRhc2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCmluZGV4IDM2MDZiYmRjNjUyMTVkZGNhOTI2MTNhODEw
N2RhYjFiMTFlY2I2NTYuLjllNzJkODRjOTdkZjZkMjk3MTRhODNjNTFhYzE3NzYzZTVmYjY1M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZVRhc2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
VVJMU2NoZW1lVGFza1Byb3h5LmNwcApAQCAtMTQwLDIxICsxNDAsMjEgQEAgdm9pZCBXZWJVUkxT
Y2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRp
ZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQordm9pZCBXZWJV
UkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIWhhc0xvYWRlcigpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAobV93YWl0aW5nRm9yQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgV0VCVVJM
U0NIRU1FVEFTS1BST1hZX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogUmVjZWl2ZWQgZGF0
YSBkdXJpbmcgcmVzcG9uc2UgcHJvY2Vzc2luZywgcXVldWluZyBpdC4iKTsKLSAgICAgICAgcXVl
dWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YVZlY3RvciA9
IFZlY3RvciB7IGRhdGEsIHNpemUgfV0gewotICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0
YVZlY3Rvci5zaXplKCksIGRhdGFWZWN0b3IuZGF0YSgpKTsKKyAgICAgICAgcXVldWVUYXNrKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YSA9IFJlZiB7IGRhdGEgfV0g
eworICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiAgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwotICAg
IG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgc2l6ZSwgMCwgRGF0YVBheWxvYWRU
eXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRh
KGRhdGEsIDAsIERhdGFQYXlsb2FkVHlwZTo6RGF0YVBheWxvYWRCeXRlcyk7CiAgICAgcHJvY2Vz
c05leHRQZW5kaW5nVGFzaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCmluZGV4IDc1NTA4Nzk0MTgy
MGZlZWZjNWQwMTI3MTU4YzA2NGNlMjU4YTA4MzUuLmVkOTFmMzhlM2FkZDEzYmUxOWNiMjE3N2Vk
NDQ4ZmRkMmZhNzk1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRl
cjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRp
ZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoc2l6ZV90
LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKaW5kZXggYTI1NTYw
YTEwYzI4ODJlMWFiZDE3ODQ1Njk0ODZlYTEzZWQ4OTZkNC4uMzI4OWMyMzYyOWEwZGMzMWZjMGMx
OTllZGYxMzI5N2JlZDYxYTE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVl
c3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIApAQCAtNzMsNyArNzQsNyBAQCBwcml2YXRl
OgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5nTG9hZENvbXBsZXRl
KHsgfSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRp
ZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcnJvcikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKGVycm9yKTsgfQogICAgIGJvb2wg
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5h
bCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCA5NTlkNzQ4YjU2YmUxMDc2YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRl
Li44ZGY5OTNmMmQ3NzViNmM5M2QyZThmMDk5MGY3MmY4NWY2MThlNThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTQ4LDEwICs0OCwxMiBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENh
Y2hlZEZyYW1lOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEhpc3RvcnlJ
dGVtOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIGNsYXNzIFdlYkZy
YW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50LCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+IHsKQEAgLTE1MSw3ICsxNTMs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmlu
YWwgeyB9CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogCi0g
ICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWlu
dDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9p
ZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKICAgICB2
b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhp
c3RvcnlSZWRpcmVjdExpbmtzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmlu
ZGV4IDQzZTYzZjQ1NjM0NWVjZjFjOTI0ZTViNzcyYTZmNTQxNzNhOTE0MmIuLjg3YTVkNjU3Zjdi
NzMzZDA3YzVkYjYwMWY2OTgxZjkwNDk3NzEzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCkBAIC05OTIsMTAgKzk5Miw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJl
cGxhY2VNdWx0aXBhcnRDb250ZW50KCkKICNlbmRpZgogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMo
W1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxl
bmd0aCBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICBbZGF0YVNvdXJjZShsb2FkZXIpIF9yZWNlaXZl
ZERhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBbZGF0YVNvdXJjZShsb2FkZXIpIF9yZWNlaXZlZERh
dGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyKQpA
QCAtMjAxMiw3ICsyMDExLDcgQEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJD
bGllbnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG8KICAgICAgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRoOwogICAgICAgICBSZXRhaW5QdHI8TlNGaWxlSGFu
ZGxlPiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKKyAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBkYXRhQXJyYXkgPSBidWZm
ZXIuY3JlYXRlTlNEYXRhQXJyYXkoKTsKICAgICAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGlu
IGRhdGFBcnJheS5nZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCmluZGV4IDBlMDViMThkNjk2Mzk4MjhkNDMzYzQ2ZDc5MjFjZjcwZGU3ZGY5ZDEuLjJh
ODc3MGRmODBiYjlmNzBjMTBiYjkxZjk1MjBkMWUxOWM4NTlkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtOTc3LDcgKzk3Nyw3IEBAIC0gKHZv
aWQpX2NvbW1pdERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICBhdXRvKiBkb2N1bWVudCA9IF9wcml2
YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCk7CiAgICAgZG9jdW1lbnQtPnNldFNob3VsZENyZWF0
ZVJlbmRlcmVycyhfcHJpdmF0ZS0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKTsKIAotICAgIF9wcml2
YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERhdGEoKGNv
bnN0IHVpbnQ4X3QqKVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgX3ByaXZhdGUt
PmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+Y29tbWl0RGF0YShXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCBmYjI1ODNmZTk3MjY0YzczZWViMjNlYmI0ZDM5OTBiM2I4NGEw
N2YzLi4xMjcwZTU3ZGQ5NWIwZDAwMDNiNWU1Njc3ZDQ3NDJhMTI1NTJkODUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC02NDEsOSArNjQxLDkgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkK
K3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIGxvYWRlci0+Y29tbWl0
RGF0YShkYXRhLCBsZW5ndGgpOworICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhKTsKIAogICAg
IC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50LCBub3cg
aXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2VsIHRoZSBXZWJLaXQgbG9hZC4KICAgICAvLyBGSVhN
RTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIGFsbCBwb3J0cy4gPGh0dHA6Ly93
ZWJraXQub3JnL2IvNDg3NjI+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMDk1YjI1
MzVhNjg3NTQ3YmQ3ODg0NmY5MDc2YWU2YzdkMDE2Mjk0OC4uNzkyNmZkMzY3MTgwOWU4Mzg0N2E0
ODAzMWE4YjkwYzYzOGZhZjdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMTIs
NyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IFN0cmlu
ZygpKSBvdmVycmlkZTsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgY29tbWl0
dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448061</attachid>
            <date>2021-12-28 19:03:27 -0800</date>
            <delta_ts>2022-01-01 16:43:15 -0800</delta_ts>
            <desc>Patch for EWS testing (combined patch)</desc>
            <filename>bug-232424-20211229140322.patch</filename>
            <type>text/plain</type>
            <size>283571</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3MDk2ZjA2YzcyZmVh
MmZjMWUwMzk0MDIyMzg5MWVlZGJmZGM4MC4uMTQ2YTY2NjBjMmUwN2UxYzkzMzNlMjczZjZhNGFl
ZThhOGQ4MTJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwNSBAQAorMjAyMS0xMi0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1
ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBtb2RpZnkgYWxsIGRpZFJlY2VpdmVEYXRhIGFuZCBy
ZWxhdGVkIG1ldGhvZHMgc28gdGhhdCB0aGV5IG5vIGxvbmdlcgorICAgICAgICB1c2UgdWludDhf
dCovaW50IGFuZCBpbnN0ZWFkIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIFdlIGRvIHRoZSBz
YW1lIGZvciBhbnkgaW50ZXJtZWRpYXJpZXMgdXNlZCBieSB0aGUgdmFyaW91cyBkaWRSZWNlaXZl
RGF0YQorICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgIFRoaXMgd2lsbCBmYWNpbGl0
YXRlIG1vdmluZyBuZXR3b3JraW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVQorICAg
ICAgICBwcm9jZXNzIGFuZCBhbGxvd3MgdG8gcmVtb3ZlIHNldmVyYWwgbWVtb3J5IGFsbG9jYXRp
b25zIGFuZCBjb3BpZXMgYXQgdGhlCisgICAgICAgIHByb2Nlc3MgYm91bmRhcmllcy4KKyAgICAg
ICAgV2UgY2FuIG5vdyBjb25zaWRlciB0cmFuc2ZlciB0aGUgdW5kZXJseWluZyBTaGFyZWRNZW1v
cnkgY3JlYXRlZCBpbgorICAgICAgICB0aGUgbmV0d29yayBwcm9jZXNzIGFsbCB0aGUgd2F5IHRv
IHRoZSBHUFUgcHJvY2Vzcy4KKworICAgICAgICBGbHktYnkgZml4OiBjaGFuZ2UgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciB0eXBlIHRvIFNoYXJlZEJ1ZmZlciB3aGVuIGFwcHJvcHJpYXRlLgorCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4gQ292ZXJlZCBieSBhbGwg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keU93bmVyOjpibG9iQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YSk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Up
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRl
bnRGaWx0ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjphZGRE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGRC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVy
Q2xpZW50V3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAg
ICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwYWdl
L0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjp0YWtlRGF0YSk6IFVwZGF0ZSBkdWUgdG8gRGF0YVNlZ21lbnRWZWN0b3JFbnRyeTo6
c2VnbWVudCBiZWluZyBjb25zdAorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlciBjb25zdCk6IEFkZCBjb252ZW5pZW5j
ZSBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0
YVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNo
YXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6IE1h
a2UgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeTo6c2VnbWVudCBjb25zdC4KKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZUNsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJ
ZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93
bmxvYWQ6OmN1cmxEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5k
bGU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6
OmN1cmxEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFN0cmVhbTo6dHJ5VG9S
ZWNlaXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxD
dXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAo
LVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlv
bjpkaWRSZWNlaXZlRGF0YTpsZW5ndGhSZWNlaXZlZDpdKToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2Vk
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0
dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTItMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkgaXMgc3RpbGwgZGFuZ2Vy
b3VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ3
MjQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODY5NTcyMzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1pbGFyIHRvIGJ1ZyAyMjgxNjE7IGhvd2V2
ZXIgd2Ugb25seSB0YWtlIHRoZSBjb250ZW50IG9mIHRoZSBEYXRhU2VnbWVudAorICAgICAgICBp
ZiBpdHMgcmVmY291bnQgaXMgMS4KKyAgICAgICAgRGF0YVNlZ21lbnRzIGNhbiBiZSBzaGFyZWQg
YWNyb3NzIG11bHRpcGxlIFNoYXJlZEJ1ZmZlciBhbmQgc28gd2UgY2FuJ3QKKyAgICAgICAgYXNz
dW1lIHRoYXQgd2hlbiB0aGUgU2hhcmVkQnVmZmVyIHJlZmNvdW50IGlzIDEgdGhhdCBpdCBpcyBz
YWZlIHRvIHVzZQorICAgICAgICB0aGUgRGF0YVNlZ21lbnQuCisgICAgICAgIFRoaXMgdXNlIG9m
IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEgd2lsbCBuZWVkIHRvIGJlIHJldmlzaXRlZCB3aGVu
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgdXNlZCBhY3Jvc3MgZGlmZmVyZW50IHRocmVhZHMg
YXMgdGhlIG9wZXJhdGlvbiBpc24ndAorICAgICAgICB0aHJlYWQtc2FmZS4KKworICAgICAgICBB
UEkgdGVzdHMgYWRkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorCisy
MDIxLTEyLTIzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
U2NhbGFibGVJbWFnZURlY29kZXIgc2hvdWxkIGJlIHVzaW5nIFNoYXJlZEJ1ZmZlciBpbnN0ZWFk
IG9mIERhdGFTZWdtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU4NTQyMDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEYXRhU2VnbWVudCBzaG91
bGQgYmUgYSBTaGFyZWRCdWZmZXIncyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBub3QKKyAg
ICAgICAgYmUgdXNlZCBvdXRzaWRlIFNoYXJlZEJ1ZmZlcidzIGNvZGUuCisgICAgICAgIEhpc3Rv
cmljYWxseSwgdXNpbmcgdGhlIGlubmVyIERhdGFTZWdtZW50IHdhcyByZXF1aXJlZCBhcyBpdCB3
YXMgdGhyZWFkCisgICAgICAgIHNhZmUgd2hpbGUgU2hhcmVkQnVmZmVyIHdhc24ndDogVGhpcyBp
cyBubyBsb25nZXIgdGhlIGNhc2UuCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhbmQgRGF0YVNlZ21l
bnQgYXJlIHNlbWFudGljYWxseSB2ZXJ5IHNpbWlsYXIsIHNvIHRoaXMgaXMKKyAgICAgICAgbW9z
dGx5IGEgZmluZC9yZXBsYWNlIGNoYW5nZS4KKyAgICAgICAgRmxhdHRlbmluZyB0aGUgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciBpcyBzdGlsbCByZXF1aXJlZCBhcyBtb3N0IGRlY29kZXJzCisgICAg
ICAgIHJlcXVpcmUgcmVhZGluZyB0aGUgcmF3IGJ5dGVzLgorCisgICAgICAgIE5vIGNoYW5nZSBp
biBvYnNlcnZhYmxlIGJlaGF2aW91ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6
c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6SW1hZ2VCYWNr
aW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklG
SW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZJRkltYWdlUmVhZGVyOjpwYXJz
ZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1l
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnJlYWRVaW50MTYpOgorICAg
ICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnJlYWRVaW50MzIpOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6
OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VSZWFkZXI6OmRlY29k
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFRzIwMDBJbWFnZURlY29kZXI6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZVJlYWRlcjo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKworMjAy
MS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIG1h
a2UgU2hhcmVkQnVmZmVyOjpjb3B5KCkgcmV0dXJuIGEgY29udGlndW91cyBTaGFyZWRCdWZmZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDYyMgor
ICAgICAgICByZGFyOi8vcHJvYmxlbS84NjgyOTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIG1ha2UgU2hhcmVkQnVmZmVyOjpjb3B5KCkgcmV0dXJu
IGEgY29udGlndW91cyBTaGFyZWRCdWZmZXIKKworICAgICAgICBBUEkgdGVzdHMgYWRkZWQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisKIDIwMjEtMTItMjYgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2Ex
MXldIFRlc3QgYWNjZXNzaWJpbGl0eS9hcmlhLWluaGVyaXRzLXByZXNlbnRhdGlvbmFsLmh0bWwg
aXMgZmFpbGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNlMjdlMTRjNjlmZDI0NGFlN2IyNDQ1
ZTNlNDk4N2M2ZjcxYmIyODMuLjFhYTk0MTY0OTU1YWQxMDdjMTZjMzNjMWNmZjY2ZGM4YTM3Mzg2
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA1IEBACisyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNs
aWVudCBhbmQgcmVsYXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAg
ICAgIHJkYXI6Ly84NDc0NDY4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vy
dmljZVdvcmtlckRvd25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2Fk
VGFzay5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OmxvYWRCb2R5RnJvbVByZWxvYWRlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29y
a0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6
OmN1cmxEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0
UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OmRpZFBhcnNl
VHJhY2tzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9y
bWF0UmVhZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2lu
U3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlQmxvYkNodW5rKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2Fk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNr
RGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJv
eHkuaDoKKwogMjAyMS0xMi0yNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVwbGFjZSBXZWJLaXQvQ29jb2FDb2xvci5oIHdpdGggV2ViQ29yZS9Db2xvckNvY29h
LmgsIG5vdCBjb25mdXNpbmcgYXQgYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDU3NjgxYjIx
YTczNDM5ZTkwYmYyMWJhMjQ0OTU4MjU5N2UwMTk5ODIuLmU2ODNiZmQ1MmI4NWU4ZTUwMzUyNzcw
N2NhNGRjYjc5MjViYjY2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMjEtMTItMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAg
ICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0
b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Q
aW5nSGFuZGxlLmg6CisKIDIwMjEtMTItMTQgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggZWY5NDlkZTYwNjg5NmNhOTkzZWRmOGYzNGQ5YzFiMzBhNWI2
NTRhYi4uOGUxZjEzNmU1ZGFkZmZjMTA0ZGRhYjI0NDVjNWFkZmQzYjk2N2Y2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEyLTI4ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudCBhbmQgcmVsYXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0
CisgICAgICAgIHJkYXI6Ly84NDc0NDY4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG9hZGVyQ2xpZW50KToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfY29tbWl0RGF0YTpd
KToKKwogMjAyMS0xMi0yMiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggV2ViS2l0IEJ1aWxkIGlzc3VlcyB3aGVuIHVzaW5nIHN5c3RlbSBjb250ZW50
IHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAwYjc4ZjVjZTEwYTkyYzVmODk3
YWI4MTY5MDFlOTU5MWI4NjkxYzM4Li40NjAwOWRjODVhMzUzYzNlZDJmOGY5MzYxOTBmN2QwNDM4
OGRjZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMTItMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBI
YXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3Jz
IHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29t
bWl0dGVkTG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaDoKKwogMjAyMS0xMi0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYSBVSSBkZWxlZ2F0ZSBtZXRob2QgdG8gZGVj
aWRlIGhvdyB0byBoYW5kbGUgZGV0ZWN0ZWQgbW9kYWwgY29udGFpbmVycwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBjMjMx
ZjIwN2RhMjVjZDJhMTU4NjBkMjhkYjNjZTE3ZTg1NzU3N2Q1Li5lNjEzYWE1MDlmNzRjMGRlMGU2
ZDM4MzUxOGU1MjZmNzNhYTU4ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMzIwLDEzICszMjAsMTMgQEAgdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Us
IGNvbnN0IFN0cmluZyYgY28KICAgICB9CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFw
cGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQordm9pZCBGZXRjaEJvZHlD
b25zdW1lcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICht
X3NvdXJjZSkgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGRhdGEsIHNpemUpKTsKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoYnVmZmVyLnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fYnVmZmVy
LmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyKTsKIH0KIAog
dm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5oCmluZGV4IDg3MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAzNzc3MmIu
LmQ0NjUxYjIzZGE3MWNmOGY0YzhjOTk2NzFkMjI3ZWI1YWM4ZDJhN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQgRmV0Y2hCb2R5Q29uc3VtZXIoVHlwZSB0eXBl
KSA6IG1fdHlwZSh0eXBlKSB7IH0KIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAog
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KICAgICBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlPd25lci5jcHAKaW5kZXggYTYzMzEwOGI1NDc3ODM5M2ZjNTQ3NTAwMzJhOWEyZTg2YWRlN2Zj
Yy4uNTM2NjgxNTViZGViYzFhZWYzOWY0ZDk5ZmI5ZGFkYzFlYmVmN2EwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTI5OCwxMSAr
Mjk4LDEwIEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkKICAgICBm
aW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpibG9iQ2h1bmso
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEZldGNoQm9keU93bmVyOjpi
bG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKGRhdGEp
OwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKLSAgICBpZiAoIW1fcmVhZGFi
bGVTdHJlYW1Tb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXpl
KSkpCisgICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpKSkKICAgICAgICAgc3RvcCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKaW5kZXggNWNhN2UzOTZjNDIyNzAx
OTM1NmIwODA2ZTRlZWRiZTk1ZTkyOGY0Yi4uODFmZDA2ZWNkZDZmYzM4YzllODU5ODdjZWJkZmMx
NmRkODZmM2M5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZldGNoTG9hZGVyLmgiCiAjaW5j
bHVkZSAiRmV0Y2hMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAw
LDcgKzEwMSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICAvLyBCbG9iIGxvYWRpbmcg
cm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAg
ICB2b2lkIGJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGJsb2JMb2Fk
aW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0ZhaWxlZCgpOwogICAgIHZvaWQg
ZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMyw3ICsxMTQsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3duZXIu
YmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGJ1ZmZlcik7
IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAg
ICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWwgeyBvd25lci5ibG9iTG9hZGluZ1N1Y2NlZWRl
ZCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAK
aW5kZXggMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OC4uNGI0NWJmZDg3
NTA0MDZmNmU3ZGE3MThmOTk4MTY5NDcxYTVlODQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTE0OCwxMyArMTQ4LDEzIEBAIHZvaWQgRmV0
Y2hMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzCiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNl
KTsKIH0KIAotdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
dmFsdWUsIGludCBzaXplKQordm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAgICAgaWYgKCFtX2NvbnN1bWVyKSB7Ci0g
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBzaXplKTsKKyAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBtX2NvbnN1bWVyLT5hcHBlbmQodmFsdWUsIHNpemUpOworICAgIG1fY29uc3VtZXItPmFwcGVu
ZChidWZmZXIpOwogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291
cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuaAppbmRleCA0NjEyZDBlMGUzYTdlZmUzMDYwMzk2YjBkNzVhMmZhM2JjNGVkZGFkLi41
ZWVhZWY4MmQxZGYzZWZjZWQyMTQwMDNkZjUxODg4NzAzNmY5NzdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBBUEkuCiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGJvb2wgdXNlU3RyTGVuKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyQ2xpZW50LmgKaW5kZXggZmVkM2U1ZWFlNzFhNTdjOTUyYWExNzFhZGNjYmRk
OWJkMDQ1ZTc4OS4uMTA5ZTA4ZWNmN2E0N2U3YzAzN2UzMmRjYWFjYWI4NmM4MWMxOGQzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaApA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU3VjY2VlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHAKaW5kZXggMGU3YjAwNWU4OWEzZDE3NDBiMWNmOWFkZmY4YjRmMmYyZmM0
M2M5OS4uZGNhMGUyMzgyZTMyZmMwMzcyODg3ZmQ0ODUyMTRhMTczMDFiMWJlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0zNjIsMTIg
KzM2MiwxMiBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdQogICAgICAgICByZXNwb25zZUNhbGxi
YWNrKG1fcmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBGZXRj
aFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNl
IHx8IG1fY29uc3VtZURhdGFDYWxsYmFjayk7CiAKICAgICBpZiAobV9jb25zdW1lRGF0YUNhbGxi
YWNrKSB7Ci0gICAgICAgIFNwYW4gY2h1bmsgeyBkYXRhLCBzaXplIH07CisgICAgICAgIFNwYW4g
Y2h1bmsgeyBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpIH07CiAgICAgICAgIG1fY29uc3Vt
ZURhdGFDYWxsYmFjaygmY2h1bmspOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzc1LDcg
KzM3NSw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgYXV0byYgc291cmNlID0gKm1f
cmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZTsKIAogICAgIGlmICghc291cmNlLmlzUHVs
bGluZygpKSB7Ci0gICAgICAgIG1fcmVzcG9uc2UuYm9keSgpLmNvbnN1bWVyKCkuYXBwZW5kKGRh
dGEsIHNpemUpOworICAgICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChi
dWZmZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zODMsNyArMzgzLDcgQEAgdm9p
ZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGlmICghc291cmNlLmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRh
LCBzaXplKSkpIHsKKyAgICBpZiAoIXNvdXJjZS5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpKSkgewogICAgICAgICBzdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC00NjcsNyArNDY3LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25z
ZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4KIAogdm9pZCBGZXRjaFJl
c3BvbnNlOjpjb25zdW1lQ2h1bmsoUmVmPEpTQzo6VWludDhBcnJheT4mJiBjaHVuaykKIHsKLSAg
ICBib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPmJ5dGVMZW5n
dGgoKSk7CisgICAgYm9keSgpLmNvbnN1bWVyKCkuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBGZXRjaFJl
c3BvbnNlOjpjb25zdW1lQm9keUFzU3RyZWFtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggNmIwNTA1ZDg4YjEzMmUyOGNiOTU0YWI5YTBlN2Vm
ZTgxM2Y3MDJhZi4uZjk5MjQ5YzM5ZjlkMGIyZmM4N2EyZjljNDZkNzkzOTI4ODgxNGJmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTE0Myw3
ICsxNDMsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5hbDsKICAg
ICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwot
ICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFs
OworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwogCiAgICAgICAgIEZldGNoUmVzcG9uc2UmIG1fcmVzcG9uc2U7CiAgICAgICAgIE5vdGlmaWNh
dGlvbkNhbGxiYWNrIG1fcmVzcG9uc2VDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCAy
N2E2ZDcwMzM0Y2EzMjA2YTk0ZTkxOTk0MzM2MzdjNGEzMDUyZTdkLi5hNjQxZjgxMDdiNGZkMTc5
MTFmZGI5MmJiMzBmNDVlMmU4MmI1MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0xNzcsMTAg
KzE3NywxMCBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogCiAvLyBNQVJLOiAtIENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVT
RUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBtX2RhdGEuYXBwZW5k
KGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9p
ZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCBjZTAwOWQ0
ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlLi4wZDNiZGI3NDlkN2EzMzY4YjNjYTY4
YzIxNzMxNjA1OTE1NDlkMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBw
cml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAg
ICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVycmlkZXMuCi0gICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBT
aGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICAvLyBNb2RlbFBs
YXllckNsaWVudCBvdmVycmlkZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggZDUxNzNmYmY4YjQwMzQxYzVjZjhkOGE0
ZjU1ZWVhYzhmZjgzOGEzOS4uZmVlOTg4NDIyMWJiNDNlOGNjMDYyZWFiY2QwYTk5ZWM1NGMwMzQ2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCBiN2Y3NWVkYTNiMjMzYjE5YjIwZWQ3MDQyODk0
OWJiMzM1ODk4ZTgxLi43Mzg1MmQ0YzBhZjAzODQ3NWYxNWI2NTQ5ZGM2ODliZjg1NTFiMjBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxv
YWRlci5oIgpAQCAtMTYzLDE2ICsxNjQsMTUgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXIKICAg
ICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIEZpbGVSZWFkZXJM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
KQordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgYm9vbCkKIHsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgQVNTRVJUKGRhdGFM
ZW5ndGggPiAwKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSk7CiAKICAgICAvLyBCYWlsIG91
dCBpZiB3ZSBhbHJlYWR5IGVuY291bnRlcmVkIGFuIGVycm9yLgogICAgIGlmIChtX2Vycm9yQ29k
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGxlbmd0aCA9IGRhdGFMZW5ndGg7CisgICAg
aW50IGxlbmd0aCA9IGJ1ZmZlci5zaXplKCk7CiAgICAgdW5zaWduZWQgcmVtYWluaW5nQnVmZmVy
U3BhY2UgPSBtX3RvdGFsQnl0ZXMgLSBtX2J5dGVzTG9hZGVkOwogICAgIGlmIChsZW5ndGggPiBz
dGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlbWFpbmluZ0J1ZmZlclNwYWNlKSkgewogICAgICAgICAv
LyBJZiB0aGUgYnVmZmVyIGhhcyBoaXQgbWF4aW11bSBzaXplLCBpdCBjYW4ndCBiZSBncm93biBh
bnkgbW9yZS4KQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3RoKSB7Ci0g
ICAgICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZGF0YUxlbmd0aCk7CisgICAgICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGgg
PSBtX3RvdGFsQnl0ZXMgKyBidWZmZXIuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKG5ld0xlbmd0
aCA8IG1fdG90YWxCeXRlcykgewogICAgICAgICAgICAgICAgIGZhaWxlZChOb3RSZWFkYWJsZUVy
cm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBG
aWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkKICAgICBpZiAobGVuZ3RoIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpICsgbV9ieXRlc0xv
YWRlZCwgZGF0YSwgbGVuZ3RoKTsKKyAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3
RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCk7CiAg
ICAgbV9ieXRlc0xvYWRlZCArPSBsZW5ndGg7CiAKICAgICBtX2lzUmF3RGF0YUNvbnZlcnRlZCA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCA1
MzljMjMwNGE4MmU2M2FhZGZlMmM1NjdjOThkMGI4YzY4N2E4ZTlmLi5iN2U1YjQwNTdmYjIwNmZm
MzIzMTU1Y2MwZjE1MDJmY2EyMGQyNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXJMb2FkZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKaW5kZXggNWM1YmIyYWVhODM5OTE4YjA2OTc3NTg4MWNlM2EzNjlhNDI4ZTViOS4uM2M5
NzhlM2Y0NDIxY2YzNWEyMDYxZGZjZTBkMWUwYWFlNTExMzQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTYx
NiwxMCArNjE2LDEwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
VGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50CiAgICAgICAgIG5ldHdvcmtB
Z2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShpZGVudGlmaWVyLCBkb2N1
bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkTmV0d29ya0FnZW50KCkpCi0gICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZURhdGEo
aWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAg
ICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsICZidWZmZXIsIGJ1ZmZl
ci5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBEb2N1
bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2Fk
TWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGQyOTU3
ODEwZDgzODJjOTM1MWQ1YTkzZjE0NGFlZDE0OTNiY2M2NTEuLjgyYWNjZWQyMGNmZDUxMzFiMjUw
MmYwOTlhOWM0ZmEyZmRkNjE2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTE5MywxMyArMTkzLDEzIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoUGFnZSYs
IERvY3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZShGcmFtZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIq
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlciYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllcik7Ci0gICAg
c3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExv
YWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFt
ZSosIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAKICAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVx
dWVzdCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
RGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRp
bmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtNDE0LDcgKzQxNCw3IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIHZvaWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXImLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwotICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0
YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29u
c3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYs
IFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhS
U3luY2hyb25vdXNseUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwpAQCAtMTA4MiwxNyArMTA4
MiwxNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVU
aHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoRG9jdW1lbgogICAgICAgICBkaWRSZWNlaXZlVGhyZWFk
YWJsZUxvYWRlclJlc3BvbnNlSW1wbCgqYWdlbnRzLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIs
IGlkZW50aWZpZXIpOwogfQogICAgIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSogZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlRGF0YShGcmFtZSogZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChh
dXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKGZyYW1lKSkKLSAgICAgICAgZGlkUmVj
ZWl2ZURhdGFJbXBsKCphZ2VudHMsIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCphZ2VudHMsIGlkZW50
aWZpZXIsIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiBnbG9iYWxTY29wZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYgZ2xvYmFsU2NvcGUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFModm9pZCgpKTsKLSAgICBkaWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0FnZW50
cyhnbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgp
OworICAgIGRpZFJlY2VpdmVEYXRhSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNjb3Bl
KSwgaWRlbnRpZmllciwgYnVmZmVyLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJj
ZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCAzOWIwMTFjZjA2ZjdmMzg1MzI0M2UwYTc2
M2EzYjFkNDU0OTA0MTQ5Li4zMjhlYmU3ZTY0MTE5NWU1YTQ2ODUwMjc1NTkxMGY3OGM0OGI1OGQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHAKQEAgLTkwLDEwICs5MCwxMCBAQCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5z
aXplKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBw
ZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIG1fZGF0YUJ1
ZmZlci5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChk
YXRhKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
ZGVjb2RlRGF0YVRvQ29udGVudCgpCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIGJvb2wgc2hv
dWxkQnVmZmVyUmVzb3VyY2VEYXRhKGNvbnN0IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGEmIHIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNl
RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgpCitOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBSZXNvdXJjZURhdGEq
IHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAg
IGlmICghcmVzb3VyY2VEYXRhKQpAQCAtMjMwLDE1ICsyMzAsMTUgQEAgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRk
UmVzb3VyY2UKICAgICBpZiAoIXNob3VsZEJ1ZmZlclJlc291cmNlRGF0YSgqcmVzb3VyY2VEYXRh
KSkKICAgICAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKIAotICAgIGlmIChyZXNvdXJjZURhdGEt
PmRhdGFMZW5ndGgoKSArIGRhdGFMZW5ndGggPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRl
bnRTaXplKQorICAgIGlmIChyZXNvdXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRhdGEuc2l6ZSgp
ID4gbV9tYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSkKICAgICAgICAgbV9jb250ZW50
U2l6ZSAtPSByZXNvdXJjZURhdGEtPmV2aWN0Q29udGVudCgpOwogICAgIGlmIChyZXNvdXJjZURh
dGEtPmlzQ29udGVudEV2aWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKIAot
ICAgIGlmIChlbnN1cmVGcmVlU3BhY2UoZGF0YUxlbmd0aCkgJiYgIXJlc291cmNlRGF0YS0+aXND
b250ZW50RXZpY3RlZCgpKSB7CisgICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRhLnNpemUoKSkg
JiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKSB7CiAgICAgICAgIG1fcmVxdWVz
dElkc0RlcXVlLmFwcGVuZChyZXF1ZXN0SWQpOwotICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVu
ZERhdGEoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YUxl
bmd0aDsKKyAgICAgICAgcmVzb3VyY2VEYXRhLT5hcHBlbmREYXRhKGRhdGEpOworICAgICAgICBt
X2NvbnRlbnRTaXplICs9IGRhdGEuc2l6ZSgpOwogICAgIH0KIAogICAgIHJldHVybiByZXNvdXJj
ZURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5oCmluZGV4IGRhYWU1ZmU0YTMxZTMxNTkzNjM3OTA0MjNmNWZiZDMzNzBjNWNkMzkuLmM4Y2Vk
MTJhNjQwN2ZkY2Q1NzRlY2MyYTc4MTllZGU2NjM4MDNkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0xMDgsNyArMTA4LDcgQEAg
cHVibGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAg
ICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwotICAgICAgICB2b2lkIGFwcGVuZERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGFw
cGVuZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURh
dGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEsNyAr
MTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5zcGVj
dG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkKTsKICAgICB2b2lkIHNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxzZSk7
Ci0gICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwor
ICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVE
YXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hl
ZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwogICAg
IHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDNjZWI0YjQ3ZjEwNjhhMGFmZWFmMDBmMTc5
YzI4MDBjNDc2YmQ2YjEuLjc1ZjY2ZmIyOTlkNTYwYTNjYzcyYjk4MWI2NGIwMTNlODIwYmI3MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEyNCwxNSArMTI0LDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9z
LCB0ZXh0RW5jb2RpbmcsIHVzZURldGVjdG9yKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZQorICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNl
U3RyTGVuKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKCFkYXRhTGVuZ3RoKQorICAgICAg
ICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBp
ZiAoZGF0YUxlbmd0aCA9PSAtMSkKLSAgICAgICAgICAgIGRhdGFMZW5ndGggPSBzdHJsZW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSkpOwotCi0gICAgICAgIG1fcmVzcG9uc2VU
ZXh0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBkYXRhTGVuZ3RoKSk7CisgICAgICAg
IHNpemVfdCBkYXRhTGVuZ3RoID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CisgICAgICAgIG1f
cmVzcG9uc2VUZXh0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBkYXRh
TGVuZ3RoKSk7CiAgICAgfQogCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllcikgb3ZlcnJpZGUKQEAgLTU0OSw5ICs1NDcsOCBAQCB2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaQogICAgICAgICAgICAgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNDb250
ZW50KCkpCiAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRl
bnQocmVxdWVzdElkLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jl
c291cmNlRGF0YS0+YmFzZTY0RW5jb2RlZCgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZp
b3VzUmVzb3VyY2VEYXRhLT5oYXNCdWZmZXJlZERhdGEoKSkgewotICAgICAgICAgICAgICAgIGF1
dG8gcHJldmlvdXNCdWZmZXIgPSBwcmV2aW91c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7Ci0gICAg
ICAgICAgICAgICAgcHJldmlvdXNCdWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdt
ZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNv
dXJjZURhdGEocmVxdWVzdElkLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAg
ICAgICAgICAgICAgIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5idWZmZXIoKS0+Zm9yRWFjaFNlZ21l
bnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgeworICAgICAgICAgICAgICAgICAg
ICBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgYnVmZmVy
KTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAt
NTc3LDcgKzU3NCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpCiAgICAgICAgIGRpZFJlY2Vp
dmVEYXRhKGlkZW50aWZpZXIsIG51bGxwdHIsIGNhY2hlZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgp
LCAwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGludCBleHBlY3RlZERhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmll
cnMuY29udGFpbnMoaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKQEAgLTU4NSwxNiArNTgy
LDE2IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRl
bnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAogICAg
IGlmIChkYXRhKSB7Ci0gICAgICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEg
Y29uc3QqIHJlc291cmNlRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURh
dGEocmVxdWVzdElkLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRh
LT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsICpkYXRhKTsKIAogICAgICAgICAvLyBG
b3IgYSBzeW5jaHJvbm91cyBYSFIsIGlmIHdlIGRpZG4ndCBhZGQgZGF0YSB0aGVuIHdlIGNhbiBh
cHBseSBpdCBoZXJlIGFzIGJhc2U2NCBlbmNvZGVkIGNvbnRlbnQuCiAgICAgICAgIC8vIE9mdGVu
IHRoZSBkYXRhIGlzIHRleHQgYW5kIHdlIHdvdWxkIGhhdmUgYSBkZWNvZGVyLCBidXQgZm9yIG5v
bi10ZXh0IHdlIHdvbid0IGhhdmUgYSBkZWNvZGVyLgogICAgICAgICAvLyBTeW5jIFhIUnMgbWF5
IG5vdCBoYXZlIGEgY2FjaGVkIHJlc291cmNlLCB3aGlsZSBub24tc3luYyBYSFJzIHVzdWFsbHkg
dHJhbnNmZXIgZGF0YSBvdmVyIG9uIGNvbXBsZXRpb24uCiAgICAgICAgIGlmIChtX2xvYWRpbmdY
SFJTeW5jaHJvbm91c2x5ICYmIHJlc291cmNlRGF0YSAmJiAhcmVzb3VyY2VEYXRhLT5oYXNCdWZm
ZXJlZERhdGEoKSAmJiAhcmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgpKQotICAgICAgICAg
ICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBiYXNlNjRF
bmNvZGVUb1N0cmluZyhkYXRhLCBkYXRhTGVuZ3RoKSwgdHJ1ZSk7CisgICAgICAgICAgICBtX3Jl
c291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChyZXF1ZXN0SWQsIGJhc2U2NEVuY29kZVRv
U3RyaW5nKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSwgdHJ1ZSk7CiAgICAgfQogCi0gICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPmRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCgp
LCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPmRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCgpLCBleHBlY3RlZERhdGFMZW5n
dGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRlciopCkBAIC0xMjcxLDcgKzEyNjgsNyBAQCBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJl
cXVlc3RXaXRoUmVzcG9ucwogICAgIGlmIChsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkp
CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiVW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVz
dCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQiX3MpOwogCi0gICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsK
ICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IGJhc2U2NERl
Y29kZShjb250ZW50KTsKICAgICAgICAgaWYgKCFidWZmZXIpCkBAIC0xMjk2LDkgKzEyOTMsOSBA
QCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Omlu
dGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9ucwogICAgIH0KICAgICByZXNwb25zZS5zZXRIVFRQSGVh
ZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJzKSk7CiAgICAgcmVzcG9uc2Uuc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgcmVzcG9uc2UubWltZVR5
cGUoKSk7Ci0gICAgbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIs
IGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0oKSBtdXRhYmxlIHsKKyAgICBsb2FkZXIt
PmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW2xvYWRlciwgYnVmZmVyID0gZGF0YS5yZWxl
YXNlTm9uTnVsbCgpXSgpIHsKICAgICAgICAgaWYgKGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICAg
ICAgbG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXpl
KCksIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgICAgICBsb2FkZXItPmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlciwgYnVmZmVyLT5zaXplKCksIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJj
ZSk7CiAgICAgICAgIGxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3Mo
KSk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDZiY2Q4N2RkY2Q4YjA0NDEzMDhkMWQw
MWVjYTZiMGU2ZGExNDEzZDQuLjcyZjQyM2ZmNjEyNzdlZWY0YmQzNTYzMjhjNDZkM2JkOTEzMWZm
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdE9m
VHlwZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VS
ZXF1ZXN0JiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpMb2FkVHlwZSk7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciopOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVy
KiwgaW50IGV4cGVjdGVkRGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExv
YWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAg
dm9pZCBkaWRGYWlsTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkTG9hZFJlc291cmNlRnJv
bU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA0MzMyZDY5MWJiZjgyNmE3Yzg3ZWE4
M2EzMTdlOTYxMTVhMjA0OTkzLi5hMDk4MWFkZDc5ODUzMmI5N2JhYTQwNDEyOGJhMzg4OTZkYWY2
ODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyAr
MjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7
CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSBy
ZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRU
aHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCkp
OwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRleCAyMTVjMDRlYzk4OTVlOWYxZTZl
MTQ3ZGE4MjA5MzAwOTg1MjM5NjIzLi5mYTdhZDMwMzlhMjA1ZTkwNTcxMDhmM2M2ZjM5MjQxOWJj
NDY0N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgK
QEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJDbGllbnQg
ewpAQCAtNDEsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGlu
dCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNv
bnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYm
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNl
bE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29u
dGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDZiZjNhYzI5
N2VjNmIyNjNhMDc4NjQwYmNmM2FkNTc3OWRiMGZlZGIuLjVlNzdhNjk3YTg0ZWFlOWRhYThlYjEw
Mjk5MTBhNzA4YTEyNDg5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcApAQCAtNDgzLDggKzQ4Myw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9h
ZGluZygpCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYW4gZW1wdHkgZG9jdW1lbnQsIGl0IHdpbGwg
bm90IGhhdmUgYWN0dWFsbHkgYmVlbiBjcmVhdGVkIHlldC4gQ29tbWl0IGR1bW15IGRhdGEgc28g
dGhhdAogICAgICAgICAvLyBEb2N1bWVudFdyaXRlcjo6YmVnaW4oKSBnZXRzIGNhbGxlZCBhbmQg
Y3JlYXRlcyB0aGUgRG9jdW1lbnQuCiAgICAgICAgIGlmICghbV9nb3RGaXJzdEJ5dGUpCi0gICAg
ICAgICAgICBjb21taXREYXRhKDAsIDApOwotICAgICAgICAKKyAgICAgICAgICAgIGNvbW1pdERh
dGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CisKICAgICAgICAgaWYgKCFmcmFtZUxvYWRlcigp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5m
aW5pc2hlZExvYWRpbmcodGhpcyk7CkBAIC0xMTU3LDggKzExNTcsOCBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQog
ICAgIGlmICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmIGlz
TG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIGF1dG8gY29udGVudCA9IG1fc3Vic3Rp
dHV0ZURhdGEuY29udGVudCgpOwogICAgICAgICBpZiAoY29udGVudCAmJiBjb250ZW50LT5zaXpl
KCkpIHsKLSAgICAgICAgICAgIGNvbnRlbnQtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdt
ZW50KSB7Ci0gICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVkKHNlZ21lbnQuZGF0YSgpLCBzZWdt
ZW50LnNpemUoKSk7CisgICAgICAgICAgICBjb250ZW50LT5mb3JFYWNoU2VnbWVudEFzU2hhcmVk
QnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVk
KGJ1ZmZlcik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNMb2Fk
aW5nTWFpblJlc291cmNlKCkpCkBAIC0xMTcxLDcgKzExNzEsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAg
IH0KIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdl
IGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRl
c3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28g
cmV0YWluIHRlbXBvcmFyaWx5LgpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6Y29tbWl0TG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIGlm
IChBcmNoaXZlRmFjdG9yeTo6aXNBcmNoaXZlTUlNRVR5cGUocmVzcG9uc2UoKS5taW1lVHlwZSgp
KSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmNv
bW1pdHRlZExvYWQodGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICBmcmFtZUxvYWRlci0+Y2xpZW50
KCkuY29tbWl0dGVkTG9hZCh0aGlzLCBkYXRhKTsKIAogICAgIGlmIChpc011bHRpcGFydFJlcGxh
Y2luZ0xvYWQoKSkKICAgICAgICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmRpZFJlcGxhY2VNdWx0
aXBhcnRDb250ZW50KCk7CkBAIC0xMjE1LDcgKzEyMTUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
c2hvdWxkVXNlQWN0aXZlU2VydmljZVdvcmtlckZyb21QYXJlbnQoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZQogfQogI2VuZGlmCiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3Qg
dWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21t
aXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fZ290Rmlyc3RC
eXRlKSB7CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1ZTsKQEAgLTEzMTMsMjQgKzEzMTMs
MjQgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRl
cywgc2l6ZV90IGxlbmd0aCkKICNlbmRpZgogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50
KCktPnBhcnNpbmcoKSk7Ci0gICAgbV93cml0ZXIuYWRkRGF0YShieXRlcywgbGVuZ3RoKTsKKyAg
ICBtX3dyaXRlci5hZGREYXRhKGRhdGEpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKLSAgICBkYXRh
UmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKTsKKyAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKIH0KIAot
dm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGlm
IChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFS
ZWNlaXZlZChkYXRhLCBsZW5ndGgpKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29u
dGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBBU1NFUlQoZGF0YSk7
Ci0gICAgQVNTRVJUKGxlbmd0aCk7CisgICAgQVNTRVJUKGJ1ZmZlci5kYXRhKCkpOworICAgIEFT
U0VSVChidWZmZXIuc2l6ZSgpKTsKICAgICBBU1NFUlQoIW1fcmVzcG9uc2UuaXNOdWxsKCkpOwog
CiAgICAgLy8gVGhlcmUgaXMgYSBidWcgaW4gQ0ZOZXR3b3JrIHdoZXJlIGNhbGxiYWNrcyBjYW4g
YmUgZGlzcGF0Y2hlZCBldmVuIHdoZW4gbG9hZHMgYXJlIGRlZmVycmVkLgpAQCAtMTM0MCwxMiAr
MTM0MCwxMiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkKICNlbmRpZgogCiAgICAgaWYgKG1faWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVy
KCkuZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YSh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91
dFJlc291cmNlTG9hZGVyLCBkYXRhLCBsZW5ndGgsIC0xKTsKKyAgICAgICAgZnJhbWVMb2FkZXIo
KS0+bm90aWZpZXIoKS5kaXNwYXRjaERpZFJlY2VpdmVEYXRhKHRoaXMsIG1faWRlbnRpZmllckZv
ckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsICZidWZmZXIsIGJ1ZmZlci5zaXplKCksIC0xKTsK
IAotICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChk
YXRhLCBsZW5ndGgsIC0xLCBmYWxzZSk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+bWFp
blJlc291cmNlRGF0YVJlY2VpdmVkKGJ1ZmZlciwgLTEsIGZhbHNlKTsKIAogICAgIGlmICghaXNN
dWx0aXBhcnRSZXBsYWNpbmdMb2FkKCkpCi0gICAgICAgIGNvbW1pdExvYWQoZGF0YSwgbGVuZ3Ro
KTsKKyAgICAgICAgY29tbWl0TG9hZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVy
OjpzZXR1cEZvclJlcGxhY2UoKQpAQCAtMTYxNCw3ICsxNjE0LDcgQEAgYm9vbCBEb2N1bWVudExv
YWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWlu
UmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7
Ci0gICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJj
ZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKCptX3BhcnNlZEFyY2hpdmVEYXRhKTsK
ICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMjI1Nyw4ICsyMjU3LDcgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAKICAg
ICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZh
bHNlOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBt
YWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExvYWQo
bWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKTsKIH0KIAogdm9pZCBEb2N1bWVu
dExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCkBAIC0yNDEwLDkgKzI0MDksOSBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChTZWN1cml0
eVBvbGljeVZpb2xhdGlvbgogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotdm9p
ZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IHNpemUpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAg
ICBkYXRhUmVjZWl2ZWQoZGF0YSwgc2l6ZSk7CisgICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CiB9
CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50
RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAppbmRleCBiNDY5ODFkNzUwYjI1YzFmZDMwN2YxNmZkYTc0YjdlZTMwNmE0
YzM5Li4yOGUyOGE2ODhhZTZiNTdlMGYwZDE0YzRlN2EwYzI1NThjYjY3ZTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBQcmV2
aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOworY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7CiBj
bGFzcyBVc2VyQ29udGVudFVSTFBhdHRlcm47CkBAIC0zNzcsNyArMzc4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzZXRUaW1pbmcoKSB7IG1fbG9hZFRpbWluZyA9IHsgfTsgfQogCiAgICAgLy8g
VGhlIFdlYktpdCBsYXllciBjYWxscyB0aGlzIGZ1bmN0aW9uIHdoZW4gaXQncyByZWFkeSBmb3Ig
dGhlIGRhdGEgdG8gYWN0dWFsbHkgYmUgYWRkZWQgdG8gdGhlIGRvY3VtZW50LgotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxl
bmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3QmIGFwcGxpY2F0aW9uQ2FjaGVIb3N0
KCkgY29uc3Q7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3QqIGFwcGxpY2F0aW9uQ2FjaGVIb3N0
VW5sZXNzQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKQEAgLTQ3Nyw3ICs0NzgsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBjb21taXRJZlJlYWR5KCk7CiAgICAgdm9pZCBzZXRNYWluRG9jdW1lbnRF
cnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBjb21taXRMb2FkKGNvbnN0IHVp
bnQ4X3QqLCBpbnQpOworICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCBTaGFyZWRCdWZmZXImKTsK
ICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHNldHVwRm9y
UmVwbGFjZSgpOwpAQCAtNDkzLDcgKzQ5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYWluUmVj
ZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
YXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwpAQCAtNTAzLDEzICs1MDQsMTMgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAvLyBDb250ZW50Rmls
dGVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29u
dGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgY29udGVudEZpbHRl
ckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2FuY2Vs
TWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZp
bmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVE
YXRhJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOwogCiAgICAgYm9vbCBtYXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGI5YzQx
MzUyNTY3NjI2NzIxOTA3YWYzNjZkZmIxZGVjNzk0YzI0NzQuLjg2NGI2NWExZDExMzFmYjYzNzEy
NWIxNzM5OTFlOWQzZTBhNmU3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00MzcsMjAgKzQzNywyMCBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudAogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRp
ZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2Up
OwotICAgIGRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0
YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+aWRlbnRpZmllcigpLCBi
dWZmZXIpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIEFTU0VSVChtX2NsaWVudCk7CiAKICAgICBpZiAobV9kZWxheUNhbGxiYWNrc0ZvckludGVn
cml0eUNoZWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGJ1ZmZl
ciwgZmFsc2UpOwogfQogCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZmluaXNoZWRU
aW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3Vy
Y2VUaW1pbmcmIHJlc291cmNlVGltaW5nKQpAQCAtNDkzLDIwICs0OTMsMTQgQEAgdm9pZCBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIGlkZW50aWYKIAogICAgICAgICBpZiAob3B0aW9ucygpLmZpbHRlcmluZ1BvbGljeSA9
PSBSZXNwb25zZUZpbHRlcmluZ1BvbGljeTo6RGlzYWJsZSkgewogICAgICAgICAgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7Ci0gICAgICAgICAg
ICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewotICAg
ICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21lbnQuZGF0
YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZm
ZXIoKSkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlciwg
ZmFsc2UpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlc3BvbnNlLnR5
cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpEZWZhdWx0KTsKIAogICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCBSZXNvdXJjZVJlc3BvbnNl
OjpmaWx0ZXIocmVzcG9uc2UsIG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRjaE9wdGlvbnM6
OkNyZWRlbnRpYWxzOjpJbmNsdWRlID8gUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFs
bEhlYWRlcnNDaGVjazo6Tm8gOiBSZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3JtRXhwb3NlQWxsSGVh
ZGVyc0NoZWNrOjpZZXMpKTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291
cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZURhdGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvKiBidWZm
ZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQorICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YSgqYnVmZmVyLCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTY2NywxMSArNjYxLDggQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICB9CiAgICAg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlmIChkYXRh
KSB7Ci0gICAgICAgIGRhdGEtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0g
ICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBzZWdtZW50LmRhdGEoKSwgc2Vn
bWVudC5zaXplKCkpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgaWYgKGRhdGEpCisgICAgICAg
IGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsICpkYXRhKTsKIAogICAgIGNvbnN0IGF1dG8qIHRp
bWluZyA9IHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKICAg
ICBhdXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21TeW5jaHJvbm91c0xv
YWQocmVxdWVzdFVSTCwgbV9vcHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWluZywgdGltaW5nID8g
KnRpbWluZyA6IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCksIHJlc3BvbnNlLCBz
ZWN1cml0eU9yaWdpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuaAppbmRleCBmMWY0MWVlOTFkNmNlOGExYzU4NjIzODE3YjM1OGY3NzQ2
NTFlMGE0Li5jODZiYTdmNDUzODNiNmMyODYwMDMyZDNhZWJmYmEzZTA4NjA3NjkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCkBAIC04
NiwxNCArODYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudAogICAgICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJlc291cmNlJiwgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICAg
ICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgICAgIHZv
aWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VUaW1pbmcmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRpbWluZ0Zvcldv
cmtlckxvYWQoY29uc3QgUmVzb3VyY2VUaW1pbmcmKTsKICAgICAgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgpOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwogICAgICAgICB2b2lkIGRpZEZhaWwoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZv
aWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAppbmRleCBiMDQ2ZWYwZGUyMDQ4ZWZk
NDMxOTcwMjYyMmI5NmE3ZGYyZmVhZmE3Li40ZmY5MzgxODBmZGQyOGZjNzE1ZDA4ODgxNjA4ZmM2
Mjg5NDkyZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKQEAg
LTI2NCw3ICsyNjQsNyBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjpyZXBvcnREYXRhUmVjZWl2ZWQo
KQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnJlc29sdmVTdHlsZShEb2N1bWVudDo6UmVzb2x2
ZVN0eWxlVHlwZTo6UmVidWlsZCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRXcml0ZXI6OmFkZERhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCit2b2lkIERvY3VtZW50V3JpdGVy
OjphZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGSVhNRTogQ2hh
bmdlIHRoZXNlIHRvIEFTU0VSVCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MDQyNyBoYXMgYmVlbiByZXNvbHZlZC4KICAgICBSRUxFQVNFX0FTU0VSVChtX3N0
YXRlICE9IFN0YXRlOjpOb3RTdGFydGVkKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIERvY3Vt
ZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChtX3BhcnNlcik7Ci0gICAgbV9wYXJz
ZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBieXRlcywgbGVuZ3RoKTsKKyAgICBtX3BhcnNlci0+YXBw
ZW5kQnl0ZXMoKnRoaXMsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgRG9j
dW1lbnRXcml0ZXI6Omluc2VydERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYgbWFya3Vw
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAppbmRleCAwNzE3MmM5NzM5ZWI1
NzM1YmM4MWY4ZGVmMmZiOWIyODVjMjU0ZDBiLi5jMGEzNGE2YjdlOWNmZTk2NDMwNDVhOTVlNzkz
MjI1MjM2M2IyNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRX
cml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaApAQCAt
MzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IERvY3VtZW50UGFyc2VyOwogY2xhc3MgRnJhbWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBEb2N1bWVudFdyaXRlciB7CkBAIC00Nyw3
ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYmVnaW4oKTsKICAgICBib29sIGJlZ2luKGNv
bnN0IFVSTCYsIGJvb2wgZGlzcGF0Y2hXaW5kb3dPYmplY3RBdmFpbGFibGUgPSB0cnVlLCBEb2N1
bWVudCogb3duZXJEb2N1bWVudCA9IG51bGxwdHIpOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCB1
aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHkoY29uc3QgU3Ry
aW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRoZSBwYXJzZXIg
ZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDc1OGNiZTgwNjU0ZTg4ODk3YWNkOWVk
NDExOTkwYzg2ODZjYWYzYmEuLmQyM2M5NmI2YzUyODAzZmVjMmU0NTdiN2VjN2RiYzllYjM3OTk1
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC04NzAsNyArODcw
LDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29u
dGVudCgpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9h
ZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBTaGFyZWRC
dWZmZXImKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlG
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCAyMjY5OWM5YzUxODMyYTVhYThjODlhYmFiMmZmYzdlMDk4NWJmYzAw
Li4xMTZhMTdkMWY1YzllNjQ3ZTFmMTQxYTEwMDg2YjA3OTgzOTNmM2VhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExOSw3ICsxMTks
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogCi0gICAg
dm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkg
ZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hh
cmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2Fk
ZXIqKSBmaW5hbDsKIAogICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAppbmRleCBmZGM5N2RjNDYyYzg3NTI2YWExODhmNzk2OGQ2MGEwYzgzZDY4MGQ5Li5iYjUy
OTFhNjdmZmZlN2ExMTZmOGMyY2ZiZjRmYWI5NGY4ODQ4MjUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKQEAgLTE2ODcsNyArMTY4Nyw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6
OndpbGxMb2FkTWVkaWFFbGVtZW50VVJMKFVSTCYgdXJsLCBOb2RlJiBpbml0aWF0b3JOb2RlKQog
ICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgIFJlc291cmNlRXJy
b3IgZXJyb3I7CiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZShyZXF1ZXN0LCBpZGVudGlmaWVyLCBl
cnJvcik7Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2Rv
Y3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNl
KHVybCwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSksIDAsIC0xLCAtMSwgZXJyb3IpOworICAgIG5v
dGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5n
ZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygp
LCAtMSwgU3RyaW5nKCkpLCBudWxscHRyLCAtMSwgLTEsIGVycm9yKTsKIAogICAgIHVybCA9IHJl
cXVlc3QudXJsKCk7CiAKQEAgLTIwODcsOCArMjA4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNv
bW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUodGl0bGUpOwogCiAgICAgICAgIC8vIFNlbmQgcmVtYWluaW5nIG5vdGlmaWNh
dGlvbnMgZm9yIHRoZSBtYWluIHJlc291cmNlLgotICAgICAgICBub3RpZmllcigpLnNlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJj
ZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwKLSAg
ICAgICAgICAgIG51bGxwdHIsIHN0YXRpY19jYXN0PGludD4obV9kb2N1bWVudExvYWRlci0+cmVz
cG9uc2UoKS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSksIDAsIG1haW5SZXNvdWNlRXJyb3IpOwor
ICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1l
bnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJlcXVl
c3QsIFJlc291cmNlUmVzcG9uc2UoKSwgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50PihtX2RvY3Vt
ZW50TG9hZGVyLT5yZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwgbWFpblJl
c291Y2VFcnJvcik7CiAKICAgICAgICAgVmVjdG9yPFJlZjxGcmFtZT4+IHRhcmdldEZyYW1lczsK
ICAgICAgICAgdGFyZ2V0RnJhbWVzLmFwcGVuZChtX2ZyYW1lKTsKQEAgLTIxMzYsNyArMjEzNSw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAg
ICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMs
IHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAgICAgICAgICAvLyBIb3dl
dmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3
b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1
ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KLSAgICAgICAgICAgIG5vdGlmaWVyKCkuc2VuZFJl
bWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmll
ciwgcmVxdWVzdCwgcmVzcG9uc2UsIDAsIHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBlcnJvcik7CisgICAgICAgICAgICBub3RpZmllcigpLnNl
bmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50
aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNlLCBudWxscHRyLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3Bv
bnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwgZXJyb3IpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gRklYTUU6IFdoeSBvbmx5IHRoaXMgZnJhbWUgYW5kIG5vdCBwYXJlbnQgZnJhbWVz
PwpAQCAtMzE2Niw3ICszMTY1LDggQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9h
ZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAg
ICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDog
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVN
ZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNw
b25zZSwgZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwLCAtMSwgZXJyb3IpOworCisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVN
ZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNw
b25zZSwgZGF0YS5nZXQoKSwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIC0xLCBlcnJvcik7CiAg
ICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKQEAgLTM2NDcsNyArMzY0Nyw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgUmVzb3VyCiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlID0gcmVzb3Vy
Y2UucmVzcG9uc2UoKTsKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6
U291cmNlOjpNZW1vcnlDYWNoZSk7Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdh
dGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0
LCByZXNwb25zZSwgMCwgcmVzb3VyY2UuZW5jb2RlZFNpemUoKSwgMCwgZXJyb3IpOworICAgIG5v
dGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5n
ZXQoKSwgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsIG51bGxwdHIsIHJlc291cmNl
LmVuY29kZWRTaXplKCksIDAsIGVycm9yKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6YXBwbHlV
c2VyQWdlbnRJZk5lZWRlZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGVlOWYzZDBjOTg0ZDQ1NWNiYjkxYjQ2
MGMxYmMxMjg5OGQxMjM2NTIuLjM1MmE0YzRmYjUwNGY3Y2Q0ZDJlYzQwNmU2YmMyOTExYTU1ZmQw
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC03LDcg
KzcsNyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLiAKQEAgLTUwLDcgKzUwLDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0jaWZkZWYgX19PQkpDX18gCisjaWZkZWYgX19PQkpDX18KICNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgogdHlwZWRlZiBpZCBSZW1vdGVBWE9iamVjdFJlZjsKICNlbHNlCkBAIC05
OCw3ICs5OCw3IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0
aXR1dGVEYXRhOwogY2xhc3MgV2lkZ2V0OwogCkBAIC0yMTQsOSArMjE0LDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwogCi0gICAgdmly
dHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90Kiwg
aW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9h
ZGluZyhEb2N1bWVudExvYWRlciopID0gMDsKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVHbG9iYWxIaXN0b3J5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0
b3J5UmVkaXJlY3RMaW5rcygpID0gMDsKIApAQCAtMjcyLDcgKzI3Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QgPSAwOwogCiAgICAg
dmlydHVhbCBTdHJpbmcgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdCB7IHJl
dHVybiBTdHJpbmcoKTsgfQotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURh
dGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0cmFu
c2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSA9IDA7CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTM4MSw3ICszODEsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogICAgIHZpcnR1YWwgQWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFT
Y3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBBbGxvd3NDb250
ZW50SmF2YVNjcmlwdDo6WWVzOyB9Ci0gICAgCisKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJ
TlMpCiAgICAgdmlydHVhbCBib29sIHNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90
ZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIG5vdGlm
eVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKSB7IH0KQEAgLTM5MCw3ICszOTAsNyBAQCBwdWJsaWM6
CiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZVBE
RlBsdWdpbihjb25zdCBTdHJpbmcmLCBTdHJpbmdWaWV3KSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCi0gICAgCisKICAgICB2aXJ0dWFsIGJvb2wgaXNQYXJlbnRQcm9jZXNzQUZ1bGxX
ZWJCcm93c2VyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCA1ZDEyMGUyNDdhYzI2Mjcx
MTYxZGUwZGM1MjMwMjRkYzhkZTM0ZDY5Li4xYTE3YTcwZmE1OGM3MjI4ZjYzODkzNTlkZDBkMzM5
ZDBlMDVjZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC0yMzEsMTMgKzIzMSwxMyBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFTZW50
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzUwogICAg
ICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVT
ZW50KTsKIH0KIAotdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwg
JnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+
ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jbGllbnQt
PmRhdGFSZWNlaXZlZCgqdGhpcywgYnVmZmVyKTsKIH0KIAogdm9pZCBNZWRpYVJlc291cmNlOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxv
YWRlci5oCmluZGV4IGZmNmMyODg3MTAwODhmNGIwNTRjZTQ3NjNkNWRhMGRkYzkyYzIwNjUuLjdi
NTU3NzIwZWYwNTMzZmJhYTIyNjU2NTM4ZWZkZDk2ZjYxNzlmYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3Bv
bnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVu
c2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IDYwNDNhYzliZTI2
N2VhNGZiYzcxZTExMThiOTA3OTE1NWUzOTE1MDMuLjVjYWFkZjYyOWM3MGFlMDg2Yjc3YmQ3MmNk
Mjg2NzUzNmI4ZmE5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcApAQCAtMTQxLDMwICsxNDEsMTQgQEAgdm9pZCBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3AKICAgICB9KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9h
ZFR5cGUpCi17Ci0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxw
dHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
bnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxv
YWRUeXBlKTsKLX0KLQotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCiB7CiAgICAgUmVmPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKIAotICAgIGlmIChtX2NsaWVudCkgewotICAgICAgICBpZiAoYnVmZmVyKSB7Ci0g
ICAgICAgICAgICBidWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0g
ICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIHNlZ21lbnQuZGF0
YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgZGF0YSwgbGVuZ3RoKTsK
LSAgICB9CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEodGhpcywgYnVmZmVyKTsKIAotICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwg
ZGF0YVBheWxvYWRUeXBlKTsKKyAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoYnVm
ZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAogdm9pZCBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKaW5kZXggYjUxNzRlZGM5NGI5OTIzOTAy
MDVmMGZhZDQ1MmVhNWFjMzg3ODkzOC4uMWVjN2Q2MWUzYTE3NWMyMmI1NTg3NThkMzdlZDBjNTVi
ZTVmMTNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmgKQEAgLTM2LDEyICszNiwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
KiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhf
dCosIGludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNl
RXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgd2FudHNBbGxTdHJlYW1z
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTYyLDggKzYzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKIApAQCAtNzQsOCArNzQsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSk7Ci0KICAgICB2b2lkIG5vdGlmeURvbmUoKTsKIAogICAgIFdlYWtQdHI8TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQ+IG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKaW5kZXggNjJiYjU2ZTM0ZTZmNDZkMjYyODM2
Y2ZjYTQ2NWI0ZGIwZTMwODNjZi4uMDE5ZDE3NDgxZTQ0ODJhMDQ4YTI2NzM1NjAxODc0Nzk3ZDNl
ODg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
Y3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByb2dy
ZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICNpbmNsdWRlICJRdWlja0xvb2su
aCIKQEAgLTc4LDEyICs3OSwxMiBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzbwogICAgIGRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5p
ZGVudGlmaWVyKCksIHIsIGxvYWRlcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6
OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNl
TG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlm
IChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPnByb2dyZXNzKCku
aW5jcmVtZW50UHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGFMZW5ndGgpOworICAg
ICAgICBwYWdlLT5wcm9ncmVzcygpLmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRpZmll
cigpLCBidWZmZXIuc2l6ZSgpKTsKIAotICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0
aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgJmJ1ZmZlciwgYnVmZmVy
LnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5vdGlm
aWVyOjpkaWRGaW5pc2hMb2FkKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtMTUzLDEzICsxNTQsMTMgQEAgdm9p
ZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgUmUKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUsIGlkZW50aWZpZXIsIGxvYWRlciwgciwgcmVz
b3VyY2VMb2FkZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERp
ZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hE
aWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIsIGludCBleHBlY3Rl
ZERhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICAvLyBOb3RpZnlpbmcg
dGhlIEZyYW1lTG9hZGVyQ2xpZW50IG1heSBjYXVzZSB0aGUgZnJhbWUgdG8gYmUgZGVzdHJveWVk
LgogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigp
LmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlm
aWVyLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNo
RGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBleHBlY3RlZERhdGFM
ZW5ndGgpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSgm
bV9mcmFtZSwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgp
OworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoJm1fZnJhbWUs
IGlkZW50aWZpZXIsIGJ1ZmZlciA/ICpidWZmZXIgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3Bh
dGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3Jr
TG9hZE1ldHJpY3MsIFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKQEAgLTE4MCw3ICsx
ODEsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZhaWxMb2FkaW5n
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cgogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJhbWUsIGxvYWRlciwgaWRlbnRpZmllciwgZXJyb3Ip
OwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVN
ZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lk
IFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1
bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIsIGludCBleHBlY3RlZERhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
CiAgICAgLy8gSWYgdGhlIHJlcXVlc3QgaXMgbnVsbCwgd2lsbFNlbmRSZXF1ZXN0IGNhbmNlbGxl
ZCB0aGUgbG9hZC4gV2Ugc2hvdWxkCiAgICAgLy8gb25seSBkaXNwYXRjaCBkaWRGYWlsTG9hZGlu
ZyBpbiB0aGlzIGNhc2UuCkBAIC0xOTMsOCArMTk0LDggQEAgdm9pZCBSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwKICAgICBpZiAoIXJlc3BvbnNlLmlzTnVsbCgpKQogICAgICAgICBkaXNwYXRjaERpZFJlY2Vp
dmVSZXNwb25zZShsb2FkZXIsIGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlmIChkYXRh
TGVuZ3RoID4gMCkKLSAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50
aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBpZiAoZXhw
ZWN0ZWREYXRhTGVuZ3RoID4gMCkKKyAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2Fk
ZXIsIGlkZW50aWZpZXIsIGJ1ZmZlciwgZXhwZWN0ZWREYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiAKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAgTmV0d29ya0xvYWRN
ZXRyaWNzIGVtcHR5TWV0cmljczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWROb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmgKaW5kZXggNmRhMTYwMzI1ZjQyZmVmNTQwYzZiZDUwYmIxODJlODY5ZGFkZTll
My4uYzRmNWIyZWJkZDgxMDhlNzhiMjgyNWI5ZDZkNzEyOGQ3NGQ1NzRhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAg
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgUmVzb3VyY2VMb2FkTm90aWZpZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlc291cmNlTG9hZE5vdGlmaWVyKTsKQEAgLTU1LDE4ICs1NiwxOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCB1aW50OF90
KiwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKFJlc291cmNlTG9hZGVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRGYWlsVG9Mb2FkKFJlc291
cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBhc3NpZ25JZGVu
dGlmaWVyVG9Jbml0aWFsUmVxdWVzdChSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxT
ZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwg
Y29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3Bv
bnNlKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqID0gbnVsbHB0cik7Ci0gICAgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIq
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciosIGludCBleHBl
Y3RlZERhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaXNwYXRj
aERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgdm9p
ZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICB2b2lkIHNlbmRSZW1haW5p
bmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVz
c2FnZXMoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTaGFyZWRCdWZm
ZXIqLCBpbnQgZXhwZWN0ZWREYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKIAogICAgIGJvb2wgaXNJbml0aWFsUmVxdWVzdElkZW50aWZpZXIo
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNmRlYmIyNTg4YTNlODJiMjFjNjFkN2U4
ZjM2ZTRmNGJiYmEyNWU2MC4uNjY0N2MyNzA4MTE4MGViY2VjMmI1Y2EyOWZkNjBiNzIzYWI2NDgz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yOTksOSAr
Mjk5LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogCiAgICAgICAgIGF1
dG8gZGF0YVNpemUgPSBkZWNvZGVSZXN1bHQtPmRhdGEuc2l6ZSgpOwogICAgICAgICBSZXNvdXJj
ZVJlc3BvbnNlIGRhdGFSZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25z
ZSh1cmwsIGRlY29kZVJlc3VsdC52YWx1ZSgpKTsKLSAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKGRhdGFSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBkYXRhU2l6ZSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGVjb2RlUmVzdWx0LT5kYXRhKSldKCkgbXV0YWJsZSB7CisgICAgICAgIHRoaXMtPmRpZFJlY2Vp
dmVSZXNwb25zZShkYXRhUmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgZGF0YVNpemUsIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGRlY29kZVJlc3VsdC0+ZGF0YSkpXSgpIHsKICAgICAgICAgICAgIGlmICghdGhpcy0+cmVh
Y2hlZFRlcm1pbmFsU3RhdGUoKSAmJiBkYXRhU2l6ZSAmJiBtX3JlcXVlc3QuaHR0cE1ldGhvZCgp
ICE9ICJIRUFEIikKLSAgICAgICAgICAgICAgICB0aGlzLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1v
dmUoZGF0YSksIGRhdGFTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICAg
ICAgICAgIHRoaXMtPmRpZFJlY2VpdmVCdWZmZXIoZGF0YSwgZGF0YVNpemUsIERhdGFQYXlsb2Fk
V2hvbGVSZXNvdXJjZSk7CiAKICAgICAgICAgICAgIGlmICghdGhpcy0+cmVhY2hlZFRlcm1pbmFs
U3RhdGUoKSkgewogICAgICAgICAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJp
Y3M7CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRv
U3Vic3RpdHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12
b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXls
b2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjphZGRCdWZmZXIo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0
YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9
PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsK
QEAgLTMzNiwxMCArMzM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ20KICAgICBpZiAoZGF0
YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKICAgICAgICAgbV9yZXNv
dXJjZURhdGEucmVzZXQoKTsKIAotICAgIGlmIChidWZmZXIpCi0gICAgICAgIG1fcmVzb3VyY2VE
YXRhLmFwcGVuZCgqYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLmFw
cGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZChidWZmZXIpOwog
fQogCiBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3Vy
Y2VEYXRhKCkgY29uc3QKQEAgLTUzOSw3ICs1MzYsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxldGlvbkhh
bgogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVSZXNwb25zZSh0
aGlzLCBtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBl
KQogewogICAgIC8vIFRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhcmUgbm90IHF1aXRlIHZhbGlk
IGhlcmUsIHNpbmNlIGEgc3ViY2xhc3MKICAgICAvLyBtaWdodCBvdmVycmlkZSBkaWRSZWNlaXZl
RGF0YSBpbiBhIHdheSB0aGF0IGludmFsaWRhdGVzIHRoZW0uIFRoaXMKQEAgLTU0NywzMCArNTQ0
LDIyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsCiAgICAgLy8gQVNTRVJUKGNvbiA9PSBjb25u
ZWN0aW9uKTsKICAgICAvLyBBU1NFUlQoIW1fcmVhY2hlZFRlcm1pbmFsU3RhdGUpOwogCi0gICAg
ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRh
TGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIGRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBl
bmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXls
b2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBk
YXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0gICAgLy8gVGhpcyBtZXRo
b2Qgc2hvdWxkIG9ubHkgZ2V0IGRhdGErbGVuZ3RoICpPUiogYSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyLgotICAgIEFTU0VSVCghYnVmZmVyIHx8ICghZGF0YSAmJiAhbGVuZ3RoKSk7Ci0KICAgICAv
LyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9u
YWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkg
ZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgogICAg
IFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhZGREYXRh
T3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIuZ2V0KCksIGRhdGFQYXlsb2FkVHlwZSk7Cisg
ICAgYWRkQnVmZmVyKGJ1ZmZlciwgZGF0YVBheWxvYWRUeXBlKTsKIAogICAgIC8vIEZJWE1FOiBJ
ZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywgdGhpcyBjb2RlIHdv
bid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29t
cHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3Rp
Y2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAg
ICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6
OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZp
ZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0
aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCkt
Pm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyLm1ha2VDb250aWd1b3VzKCks
IHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKQEAgLTcyOSwxNCArNzE4LDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25z
ZSYmCiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRS
ZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkQnl0ZXMpOworICAgIGRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDkwNzVjYmMwYTMw
NDBlYTE1MGE4NjI1Y2RhMDg5MGIxZWUxMzhjNzIuLjEwOThlNGYyNzg4OWNkYTdiM2E5Y2ZkNGQ1
NDZhZTJmZDlhN2M1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBA
IC0xMDcsOCArMTA3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxi
YWNrKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5
dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjcsOCArMTY3LDYgQEAgcHJvdGVjdGVk
OgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2NhbmNlbGxhdGlv
blN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0gICAg
CiAgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGlj
eSkgeyBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGljeTsgfQogICAgIFJl
ZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnJl
ZmVycmVyUG9saWN5OyB9CiAKQEAgLTE5Miw3ICsxOTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBh
ZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGFkZEJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRh
VVJMKCk7CiAgICAgdm9pZCBmaW5pc2hOZXR3b3JrTG9hZCgpOwogCkBAIC0yMDIsOCArMjAwLDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJj
ZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxl
KiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
c291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tlZChSZXNv
dXJjZUhhbmRsZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggMzdkMGJiODIxYWJkODZhOWI1NjA2ZTEyN2VmYzk0MTJhNTFiYjFh
OS4uOTcyZjJhZjIyNjAzZjQyNGNkODc3NWY1OTEwMTBlMmQ3NjkzOGEwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MTgsMzIgKzUxOCwxNSBA
QCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VQb2xpY3koKQogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkK
K3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAg
aWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewotICAgICAg
ICBpZiAocHJldmlld0xvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoKSkKKyAgICAg
ICAgaWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5tYWtlQ29udGlndW91
cygpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAotICAgIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwg
ZGF0YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKLSNp
ZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3
TG9hZGVyLmdldCgpKSB7Ci0gICAgICAgIGlmIChwcmV2aWV3TG9hZGVyLT5kaWRSZWNlaXZlQnVm
ZmVyKGJ1ZmZlci5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0K
LSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17
CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCiAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc3BvbnNl
KCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAgJiYgIW1fcmVzb3VyY2UtPnNob3VsZElnbm9yZUhU
VFBTdGF0dXNDb2RlRXJyb3JzKCkpCkBAIC01NTUsMTMgKzUzOCwxMyBAQCB2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgsCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHJlbW92aW5nIHRoZSBsYXN0IHJl
ZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2Lgog
ICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIGJ1ZmZl
ci5jb3B5UmVmKCksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgs
IGRhdGFQYXlsb2FkVHlwZSk7CiAKICAgICBpZiAoIW1fbG9hZGluZ011bHRpcGFydENvbnRlbnQp
IHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgp
KQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVy
LT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDgzMmM5ZjBlNzNkMzg0NjRhNzk1ZjQwMzg2MGY3
OWMzNGU3M2JjN2YuLjNkYmQ1MzM4YWZlNDliNDc4NTdkNTM0MDk3ODg3NTJlYWExYWVkNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03Myw4ICs3Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTEsNyBAQCBwcml2YXRlOgog
ICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3Ry
aW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9p
ZCBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCBjZjJkZTBjNjJkOTVmMzMyNWI0MmI0NmUyNDAz
Nzc0NDEwNzQyYTBkLi4zZDE5Mjg2MmYyNzcyOWIyZjM4ZGI1NGJkODM2Nzk5NTI1YzAxOWQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zOCw3ICsz
OCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlOyB9CiAgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihS
ZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2
b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgeyBtX2RhdGEuYXBwZW5kKGJ1
ZmZlcik7IH0KICAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCiAgICAgdmly
dHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZl
clJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKaW5kZXggODRkNzliMGM5
OWRmMTBkOTkzODBiODQ4MzE3MzcxYmMxZTg1NzNiZi4uY2VmMGM4ZjFmMTdkMGY1NzY1OWEzNTQx
YjU0ZjYzODk5MDY0YjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlckNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUmVzb3Vy
Y2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFRocmVhZGFibGVMb2FkZXJD
bGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZGFibGVMb2FkZXJDbGllbnQp
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ1LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQq
LywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQogCiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCosIGludCAvKmRhdGFMZW5ndGgqLykgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgLyogdXNlU3Ry
TGVuICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoVGltaW5nKGNvbnN0IFJl
c291cmNlVGltaW5nJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCmluZGV4IDQyYWU2NDkwOWE1ZTBmZTQ0YzZhNWUw
MDYwZDU4Yzk2NGVjNTYwNTEuLmYzNmEyZDQwN2FmODgxNTkwNDI4NjZiODVlOWUwMTg2MWRhYWM3
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVy
Q2xpZW50V3JhcHBlci5oCkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgogICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAg
fQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBib29sIHVzZVN0ckxlbikKICAgICB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIHVzZVN0ckxlbik7CiAgICAg
fQogCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuY3BwCmluZGV4IGRmZjg5NzAxYzkzOWJjNzNjMzcwMzJhZDljNDJhZDIwNjMyNmFkNmUu
LjdjMDM0OTQ1ZWUwM2E3NGY1MzMzOWJiODFmZmEwZTA2YzY5YzcxNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIzMSwxNCAr
MjMxLDEzIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyCiAgICAgfSwgbV90YXNrTW9kZSk7CiB9
CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIFdvcmtl
clRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCB1c2VTdHJMZW4pCiB7Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcihkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVu
dFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdvcmtlclJlcXVlc3RJ
ZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29ya2VyQ2xpZW50V3Jh
cHBlciB9LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZp
ZXIsIGJ1ZmZlciA9IFJlZiB7IGRhdGEgfSwgdXNlU3RyTGVuXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNj
b3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7CisgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlciwgdXNlU3RyTGVuKTsKICAgICAgICAgaWYgKGlzPFdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3Jr
ZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAg
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1
ZmZlcik7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDcyM2I0NTZlYzhlOWUzMDZmYzE4Y2M4
ZjM2ZGU2ZGNkOGFlMzA0NzAuLjMzOWQ2ZjQ3MzEwYTFlZDI4OTAzNmFkMGE0MDRmMzhhN2EyNjg2
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIu
aApAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBv
biB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9u
ZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkg
b3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9v
bCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaFRpbWluZyhjb25zdCBS
ZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNTE5NzhmNDEyMzg3
NGRjNTY2MGVmZjQ3MDY1OTcwN2Q0ZTVkODVhNy4uZWQ3NTY2NTI2YjJkN2VmYmYxYzUxNzAyMDk1
YTg3OWJhZjU2OTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqLCBpbnQs
IGxvbmcgbG9uZywgYm9vbCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5SZXNvdXJj
ZURhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcsIGJvb2wpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmgKaW5kZXggYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMxNzBjZGY3MjM2NzJh
MC4uZDJhZWFlYzNlMTRjNjNiY2JmNjAxZTlhYWYwMjRjMWY5ZWM0NzZkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgK
QEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWF5YmVMb2FkTWFpblJlc291cmNl
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVEYXRhJik7CiAgICAgdm9pZCBtYXli
ZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdWJz
dGl0dXRlRGF0YSYpOwogICAgIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZv
aWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9uY2UpOworICAgIHZv
aWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9uY2UpOwogICAgIHZvaWQgZmluaXNoZWRM
b2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAgdm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291cmNl
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggMmJiM2ZlNzViOTk3N2U4MzMyMmFlMjU4
MGY3MjEyZWU1YmYyMTYxMC4uMjU2ZTg5YjIxMWIzOGIyZDIxZGNkNjY1NzgyNjllNjYwNzM2NzMy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDEwIEBAIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3Vy
Y2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJl
c291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERh
dGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygp
IDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAg
aWYgKG1fcGF0aC5pc0VtcHR5KCkpCisgICAgICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmRE
YXRhKHJlc3BvbnNlKCksIFJlZlB0ciB7ICZkYXRhKCkgfSk7CisgICAgZWxzZQorICAgICAgICBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5
MjYuLjU0ZmVlZDJjYTY0MTJiNDUyMDk4NzBjNzczNDM2MDlkODUwOWI3NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05OSw5ICs5OSw5IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6Y3JlYXRlKG1fcmVzb3VyY2UtPnVybCgpLCByZXNwb25zZSwgbV90eXBlKTsK
IH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJl
c291cmNlLT5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVl
c3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyLmgKaW5kZXggMDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3ZWJlOWIwNjllMjMy
ZC4uMGIyOTYyODhmMzFhNDMyNWQ0ODQ5YTQ0MmU4YWU2MDJjMTczMTkyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAgLy8g
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAg
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggNTA0NjVjYzZjMDEzM2U1YTc3
NDQ1Y2Y5NDczMzNmZTIwNjQwODYxZC4uZDM0YzhmYjY1MzI2YTg3NTNiMmE5YjRmY2ZiYzU3MDFh
OGM4YTRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CkBAIC00NjgsNyArNDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2Uo
KQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdl
Ojp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
KQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBz
ZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBAIC01NTUsMTggKzU1NSwxOCBAQCBFbmNv
ZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJ
bWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwotICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwotICAgIENh
Y2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoZGF0YSk7CisgICAgdXBkYXRlQnVmZmVySW50ZXJu
YWwoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpOworICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIoYnVmZmVyKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7Ci0gICAg
dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7
Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICB1cGRh
dGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShk
YXRhKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGU4NDMwODcw
YjQ4YWYzZGM5NWJiYTNjYWQxYTY0ZTA2OGFlMTU1MTMuLmE1ZGM2M2YyM2RiZDQxYTI3MGVlNTZj
MzJhNDQxNzc3ZDZhZGRiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVk
RGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZv
aWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
ICAgICB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAK
QEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25z
dCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFs
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVy
Q29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggNzFlMTYwODJmZmU2NTVkMTExZjE2OTkwZDEy
MzA1MzViZWFjYmY5NS4uZDMzNjExMzIxM2ZiZWJmZjRlOTFmZjY1ZjgzZmZlMjRkM2U4YTBjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCkBAIC00OCwxMiArNDgsMTIgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291
cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NF
UlQoaXNNYWluT3JNZWRpYU9ySWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dAorc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6
OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkg
Y29uc3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsK
LSAgICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKKyAg
ICBpZiAoZGF0YS5zaXplKCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFM
ZW5ndGgpOworICAgIHJldHVybiBkYXRhLmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7
CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
ICAgICAgICAgcHJldmlvdXNEYXRhU2l6ZSArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogCiAg
ICAgICAgIFNldEZvclNjb3BlPGJvb2w+IG5vdGlmeVNjb3BlKG1faW5JbmNyZW1lbnRhbERhdGFO
b3RpZnksIHRydWUpOwotICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3Jl
bWVudGFsRGF0YS5kYXRhKCksIGluY3JlbWVudGFsRGF0YS5zaXplKCkpOworICAgICAgICBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS5jcmVhdGVTaGFyZWRCdWZm
ZXIoKSk7CiAgICAgfQogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKIApAQCAt
ODksMTEgKzg5LDExIEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKLSAgICBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGRhdGEsIGxlbmd0aCk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEo
ZGF0YSwgbGVuZ3RoKTsKKyAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGJ1ZmZlcik7
CisgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBDYWNo
ZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCkBAIC0xMTAsOSArMTEw
LDkgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdAogICAgICAgICBpZiAoZGF0YSkgewogICAgICAg
ICAgICAgaWYgKGRhdGEgIT0gbV9kYXRhLmdldCgpKQogICAgICAgICAgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoKm1fZGF0YSkpIHsKICAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXpl
KCkpOwotICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVt
ZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+Y3JlYXRl
U2hhcmVkQnVmZmVyKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CkBAIC0xMzAsMTUgKzEzMCwxNSBAQCB2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0CiAgICAgfQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGll
bnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
K3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFsZW5ndGgpCisgICAgaWYgKGJ1
ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIENhY2hlZFJl
c291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7
CiAgICAgd2hpbGUgKENhY2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCi0gICAg
ICAgIGMtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgYy0+ZGF0
YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOwogfQogCiBzdGF0aWMgdm9pZCBpdGVyYXRlUmVkaXJl
Y3RzKENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiYmIGhhbmRsZSwgQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQmIGNsaWVudCwgVmVjdG9yPHN0ZDo6cGFpcjxSZXNvdXJjZVJl
cXVlc3QsIFJlc291cmNlUmVzcG9uc2U+PiYmIHJlZGlyZWN0c0luUmV2ZXJzZU9yZGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTE3MCw5ICsxNzAsOSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGMpCiAgICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgq
Y2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAobV9kYXRh
KSB7Ci0gICAgICAgICAgICAgICAgbV9kYXRhLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2Vn
bWVudCkgeworICAgICAgICAgICAgICAgIG1fZGF0YS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1
ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQ2xp
ZW50KCpjbGllbnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LT5kYXRhUmVjZWl2
ZWQoKnRoaXMsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgYnVmZmVyKTsKICAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghaGFzQ2xpZW50KCpj
bGllbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaAppbmRleCBhNzg2NWY4YWQxNzhhZWZiMzIyMGE1NmRjZmYxOTU5OTNjZjk1YWU0Li4zNmU0
N2ExZGJhMjMxMjhkYzUzMDczYjcwYjVmM2Y4NTM4MDRhZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtMjgsNiArMjgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlQ2xpZW50OwogY2xhc3Mg
UmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJE
YXRhVmlldzsKIAogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2UgewpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQg
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7CiAgICAgdm9pZCB1cGRh
dGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwotICAgIHZvaWQg
dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwor
ICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVz
Q29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTY2LDggKzY3
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3Vy
Y2UoKSBvdmVycmlkZTsKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9CiAKLSAg
ICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRh
bERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKikgY29uc3Q7Ci0gICAgdm9p
ZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2Fs
Y3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7Cisg
ICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwogICAgIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgcHJldmlld1Jlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaAppbmRleCAyM2Vh
YjhkZjI5NThmZjhiNDlmMzU0NWI1MDgzZmUyOTg5ZWYxMjIwLi5jZDY1MGEyZjMxMzZjZTliMjYy
ZmJkZmM4MjkyOGJmMjEwNzlmYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaApAQCAtMzEsNiArMzEsNyBAQCBjbGFz
cyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGll
bnQgewogcHVibGljOgpAQCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmly
dHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiAvKiBkYXRhICovLCBpbnQgLyog
bGVuZ3RoICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShy
ZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2Fk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggOWRlMGEwNGNk
NWVjNWYzZmFkMmZiMTZkN2IzMjJjODU4YTM4YTZiMi4uN2I5YzYxZjk2NjE3NTQ2YjY2YmNjM2M2
M2VjYTBlODU3ZTI2MmVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKQogICAgIEFTU0VSVChk
YXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7
CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVu
c2lnbmVkKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggYzk4MmRkNjkzN2EwYmMyYmYzOGM0MjYxMjZmZmU2
ZTc4Yzc5NjQ3OC4uNTM0ZTAxMmNjNGZhNWRkMmJlMWZkNmVlZTVhYTZhZTRlNWZhZTIwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMyw3
ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2Rl
ciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5kZXggOTZkODk4MmU5MzUwMzQ3Njk2ZmM5
NjlkNTg1YWI3MDc1ZGUwMjBlZC4uY2EwMTkzNGQzMWJhNWQ1MDlmZWJlN2QyZjkxMjI0OWQyNzEy
NmFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLmgKQEAgLTQ3LDggKzQ3LDcgQEAgcHVibGljOgogICAgIH5MZWdhY3lQcmV2aWV3TG9hZGVy
KCk7CiAKICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7Ci0gICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CisgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
KTsKICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIGRpZEZhaWwoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmlu
ZGV4IDQ4NzU2YTMzYjU4NzJiNDRiMmYwYmEwODQyNDFmODZjZmFlYmNhYTAuLmEyNGI4YzU5ZDQ2
MGFmZjVlMmZlZjgzMTkwYzIwODY1NzIzNjVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGlj
IFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtYWtlQ2xpZW50KGNvbnN0IFJlc291cmNl
TG9hZGVyJiBsb2FkZXIsIGMKICAgICByZXR1cm4gZW1wdHlDbGllbnQoKTsKIH0KIAotYm9vbCBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fZmluaXNoZWRMb2Fk
aW5nRGF0YUludG9Db252ZXJ0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcxLDcgKzcx
LDcgQEAgYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBMT0coTmV0d29yaywgIkxlZ2FjeVBy
ZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRoIHNpemUgJWxkLiIsIGJ1ZmZlci5zaXpl
KCkpOwogICAgIG1fb3JpZ2luYWxEYXRhLmFwcGVuZChidWZmZXIpOwogICAgIG1fY29udmVydGVy
LT51cGRhdGVNYWluUmVzb3VyY2UoKTsKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZlcihi
dWZmZXIpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xNjIsOCArMTYyLDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVy
OjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnMK
ICAgICBpZiAoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gZGF0YUNvcHkgPSBkYXRhLmNvcHkoKTsKLSAgICByZXNvdXJjZUxvYWRlci0+ZGlkUmVj
ZWl2ZUJ1ZmZlcihXVEZNb3ZlKGRhdGFDb3B5KSwgZGF0YUNvcHktPnNpemUoKSwgRGF0YVBheWxv
YWRCeXRlcyk7CisgICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoZGF0YSwgZGF0
YS5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXIm
KQpAQCAtMjQzLDExICsyNDIsNiBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3
TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUgogICAgIExPRyhO
ZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBjcmVhdGVkIHdpdGggcHJldmlldyBmaWxlIG5h
bWUgXCIlc1wiLiIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKS51dGY4KCkuZGF0YSgp
KTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIGRpZFJlY2VpdmVC
dWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKS5nZXQoKSk7Ci19Ci0KIGJv
b2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKQogewogICAgIHJldHVybiAhbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2Fk
aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCA2MDI2MzFiYjdjZDEwODYw
YjFhMzEyMTA0M2M5N2Q4ZWZlNDQ3NjFkLi42N2FjNzdlMmJmNzYxMDQ1YzhjMThkNWM3YWRlYzdm
NzMzOGFiNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtNDIsNiArNDIs
NyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CkBAIC0yMTAsMTMgKzIxMSwxMyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaXNwYXRjaEVycm9yRXZl
bnQoKQogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9
CiAKLXZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgpCit2b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBPUEVOKTsK
ICAgICBBU1NFUlQobV9yZXF1ZXN0SW5GbGlnaHQpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oIW1faXNTdXNwZW5kZWRGb3JCYWNrRm9yd2FyZENhY2hlKTsK
IAotICAgIGFwcGVuZChtX3JlY2VpdmVCdWZmZXIsIG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxl
bmd0aCkpOworICAgIGFwcGVuZChtX3JlY2VpdmVCdWZmZXIsIG1fZGVjb2Rlci0+ZGVjb2RlKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKTsKICAgICBwYXJzZUV2ZW50U3RyZWFtKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCBkMDEyZDM3N2QxOTc2NzVmMGZlMTE0
NWYxNzE5ZjE3ZmRkYmZlYTNiLi5kNjYyYWUyODA2ZjRiMjQ4NjdiMDE2MDhlMDRkYmI0Zjk3ZGJh
MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC04NCw3ICs4NCw3IEBAIHByaXZh
dGU6CiAKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wp
IGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQzOTYxNTY4
ODRiNGI3OWUzZTU1ZDU2OTFkNzE4Yzg4NzVmZjlmZjcuLmQwOWYxMDUyYTBmMzFlZTk3MDYxMTAx
M2IzOTM1ZmI1MzA5NTUwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcApAQCAtMTM3LDggKzEzNyw4IEBAIFZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjp0YWtlRGF0YSgpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gY29tYmluZWREYXRhOwotICAgIGlmIChoYXNPbmVTZWdtZW50KCkgJiYgc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9p
bW11dGFibGVEYXRhKSkKLSAgICAgICAgY29tYmluZWREYXRhID0gc3RkOjpleGNoYW5nZShzdGQ6
OmdldDxWZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVE
YXRhKSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOworICAgIGlmIChoYXNPbmVTZWdtZW50KCkgJiYgc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNbMF0uc2VnbWVu
dC0+bV9pbW11dGFibGVEYXRhKSAmJiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmhhc09uZVJlZigp
KQorICAgICAgICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4Y2hhbmdlKHN0ZDo6Z2V0PFZlY3Rvcjx1
aW50OF90Pj4oY29uc3RfY2FzdDxEYXRhU2VnbWVudCY+KG1fc2VnbWVudHNbMF0uc2VnbWVudC5n
ZXQoKSkubV9pbW11dGFibGVEYXRhKSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOwogICAgIGVsc2UKICAg
ICAgICAgY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3Np
emUpOwogCkBAIC0yMzEsNiArMjMxLDggQEAgdm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
bGVhcigpCiAKIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjb3B5KCkgY29uc3QKIHsKKyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICByZXR1
cm4gbV9zZWdtZW50cy5zaXplKCkgPyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBd
LnNlZ21lbnQuY29weVJlZigpKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKTsKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3Nl
Z21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwpAQCAtMjQ4
LDYgKzI1MCwxMyBAQCB2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdAogICAgICAgICBhcHBseShTcGFu
IHsgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpIH0pOwog
fQogCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50QXNTaGFyZWRC
dWZmZXIoY29uc3QgRnVuY3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmKT4mIGFwcGx5KSBj
b25zdAoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH07CisgICAgZm9y
IChhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykKKyAgICAgICAgYXBwbHkoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VnbWVudC5zZWdtZW50LmNvcHlSZWYoKSkpOworfQorCiBib29sIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJl
Zml4KSBjb25zdAogewogICAgIGlmIChwcmVmaXguZW1wdHkoKSkKQEAgLTQxMyw3ICs0MjIsNyBA
QCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpCiAgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsK
IH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21l
bnQpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYg
c2VnbWVudCkKIHsKICAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CiAgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOwpAQCAtNjAxLDcgKzYxMCw3IEBAIHZv
aWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKCkKICAgICAgICAgbV9idWZmZXIg
PSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0
YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBz
aXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkK
K1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8Y29uc3QgRGF0
YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkK
ICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAg
ICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0
aGluU2VnbWVudCkKQEAgLTYxNyw3ICs2MjYsNyBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hh
cmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaQog
CiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3Nl
Z21lbnQ7CisgICAgY29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdt
ZW50OwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlk
ZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9
LAogICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGMyN2M5MjY5ZmZlZjI0OWFiNWU4YWJhMjRk
NzYyZmM0MGMxYzIzMDAuLjM0ODRhNmE1M2I4MDQwNjRiZTU3YTI4M2VmNDE4YThhNjJkNTg5YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xNzgsMTIgKzE3OCwx
MyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNv
bnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21l
bnRBc1NoYXJlZEJ1ZmZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYp
PiYpIGNvbnN0OwogCiAgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVu
dDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3Rv
ckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247Ci0gICAgICAgIFJlZjxEYXRh
U2VnbWVudD4gc2VnbWVudDsKKyAgICAgICAgY29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBz
ZWdtZW50OwogICAgIH07CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0
YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0
ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CkBAIC0y
NTksNyArMjYwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4u
KEFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKCkp
OwogICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKLSAgICAg
ICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikp
CisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPGNvbnN0IERhdGFTZWdt
ZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIGlmIGNvbnN0
ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVf
djxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PEFyZ3M+PiwgRGF0
YVNlZ21lbnQ+ICYmLi4uKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwpAQCAtMjg2LDggKzI5MCwxMCBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAgU2hh
cmVkQnVmZmVyKGNvbnN0IERhdGFTZWdtZW50JiBzZWdtZW50KQorICAgICAgICA6IFNoYXJlZEJ1
ZmZlcihSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IHsgc2VnbWVudCB9KSB7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2Vn
bWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxj
b25zdCBEYXRhU2VnbWVudD4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCk7CkBAIC0zNTksNyArMzY1LDcgQEAgaW5saW5lIFZlY3Rvcjx1
aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAKIGNsYXNzIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRC
dWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNl
Z21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8Y29uc3QgRGF0YVNlZ21l
bnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsK
ICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRp
b25XaXRoaW5TZWdtZW50OyB9CkBAIC0zNzAsNyArMzc2LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlm
CiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNv
bnN0IFJlZjxjb25zdCBEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0
b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9y
ZS5oCmluZGV4IGRlMzNmMWFmNDEyZGMwOGIyYjk2MWExOTQ5NDVjOWNjOTBhYTY2MjUuLmE0NzUw
NzRhMTA4YTFiNTg3YjNiNmE4Yjk4ODA1OWRhZGU0N2U1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtMjMzLDYg
KzIzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBQYWNrZWRDb2xvcjo6QVJHQiB7IHJl
c3VsdCB9LnZhbHVlOwogICAgIH0KIAorICAgIC8vIG1fcGl4ZWxzIHR5cGUgc2hvdWxkIGJlIGlk
ZW50aWNhbCB0byB0aGUgb25lIHNldCBpbiBJbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAogICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CiAg
ICAgdWludDMyX3QqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXpl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCA4ODY5MWRjMjU2ZDZkZDZjNDVmNDZl
MDE1NDk2NzQyNDVhYTM1MzM3Li5jOTU4Zjg0NGRhYzE0Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhhODEy
OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNTEsOSArNTEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmly
dHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNp
Z25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBy
ZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyLgotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVj
ZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBTaGFyZWRCdWZmZXImKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJD
b3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBlYzBhN2FjZjQ3MzI2MWM3NGU3ZWVmZmFk
YzljY2MzYzNlNTdmMjI4Li43NzA4YTU4ZDJiNTgwOGI5NDAwMmQyMDVlOThhMjdiYjJjZTZmMzI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
OjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
Cit2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgZnVsZmlsbFJlcXVl
c3RXaXRoUmVzb3VyY2UocmVzb3VyY2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9X
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKaW5kZXggY2RmMTQzZjNjM2NkZTk3MWZkNzlkY2Y3
MzI4YmZjZDdiMzI2MDJkYy4uNjI2N2JlMDBjNTRlZTYxNzAyZmI3N2IyYTVmYjU2N2IyN2ViOWZl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVp
bnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tCmluZGV4IGY5MjFmM2RhMGU2OWIzMzk5NzdjOWUzZTQ5NjY3YTI4ZjVlOTVjYmQuLjcyNjQ3
MjVjOGU1NjIyZGYzOGI0NWJjZDk5YWM3ODc1NWI5ZWI4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTYxLDcgKzYxLDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lk
IGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UmKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIENhY2hlZFJlc291
cmNlTWVkaWFMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgTgogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIENhY2hlZFJl
c291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
CiB7CiAgICAgQVNTRVJUKCZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBpZiAoYXV0byog
ZGF0YSA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25n
IGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVy
cm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAg
IHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KQEAgLTIxMSw5ICsyMTEsOSBA
QCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBt
X3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewotICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAg
IG1fYnVmZmVyLmFwcGVuZChidWZmZXIpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDkzMDE5MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZl
NDQ3OWY4MDI2ZjIuLmI3YjA3ZmYxNDU0ZDU2MWEzMDIxMDhhZTMyMjkxZThmODM0MzdiZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3
MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmly
dHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
aG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJv
bENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21w
bGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lk
IENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBD
YWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMu
Z2V0KCkpOwpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmEKICAg
ICAvLyB0aGF0IGZpcnN0IHBhY2thZ2UgZGVsaXZlcnkgd291bGQgaW5jbHVkZSB0aGUgdGltZSBv
ZiBzZW5kaW5nIG91dCB0aGUgcmVxdWVzdCBhbmQgZ2V0dGluZyB0aGUgZGF0YSBiYWNrLiBTaW5j
ZSB3ZSBjYW4ndCBkaXN0aW5ndWlzaCB0aGUKICAgICAvLyBzZW5kaW5nIHRpbWUgZnJvbSB0aGUg
cmVjZWl2aW5nIHRpbWUsIGl0IGlzIGJldHRlciB0byBpZ25vcmUgaXQuCiAgICAgaWYgKCFzdGQ6
OmlzbmFuKG1lbWJlcnMtPmRvd25sb2FkU3RhcnRUaW1lKSkgewotICAgICAgICBtZW1iZXJzLT50
b3RhbERvd25sb2FkZWRCeXRlcyArPSBidWZmZXItPnNpemUoKTsKKyAgICAgICAgbWVtYmVycy0+
dG90YWxEb3dubG9hZGVkQnl0ZXMgKz0gZGF0YS5zaXplKCk7CiAgICAgICAgIGRvdWJsZSB0aW1l
U2luY2VTdGFydCA9IChXYWxsVGltZTo6bm93KCkgLSBtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGlt
ZSkuc2Vjb25kcygpOwogICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgIlIldTogZG93bmxv
YWRlZCAlIiBHX0dVSU5UNjRfRk9STUFUICIgYnl0ZXMgaW4gJWYgc2Vjb25kcyA9fiAlMS4wZiBi
eXRlcy9zZWNvbmQiLCBtX3JlcXVlc3ROdW1iZXIsIG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5
dGVzLCB0aW1lU2luY2VTdGFydAogICAgICAgICAgICAgLCB0aW1lU2luY2VTdGFydCA/IG1lbWJl
cnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzIC8gdGltZVNpbmNlU3RhcnQgOiAwKTsKQEAgLTExMTUs
MjAgKzExMTUsMTkgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmEKICAgICAgICAgbWVtYmVycy0+
ZG93bmxvYWRTdGFydFRpbWUgPSBXYWxsVGltZTo6bm93KCk7CiAgICAgfQogCi0gICAgYnVmZmVy
LT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICBpbnQgbGVuZ3Ro
ID0gc2VnbWVudC5zaXplKCk7Ci0gICAgICAgIEdTVF9MT0dfT0JKRUNUKHNyYywgIlIldTogSGF2
ZSAlZCBieXRlcyBvZiBkYXRhIiwgbV9yZXF1ZXN0TnVtYmVyLCBsZW5ndGgpOworICAgIGludCBs
ZW5ndGggPSBkYXRhLnNpemUoKTsKKyAgICBHU1RfTE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUg
JWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51bWJlciwgbGVuZ3RoKTsKIAotICAgICAgICBt
ZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVuZ3RoOwotICAgICAgICBBU1NFUlQoIW1lbWJlcnMt
PmhhdmVTaXplIHx8IG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA8PSBtZW1iZXJzLT5zaXplKTsKKyAg
ICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVuZ3RoOworICAgIEFTU0VSVCghbWVtYmVycy0+
aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBvc2l0aW9uIDw9IG1lbWJlcnMtPnNpemUpOwogCi0g
ICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdz
dF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAotICAgICAgICAgICAg
Z3N0X3N0cnVjdHVyZV9uZXcoIndlYmtpdC1uZXR3b3JrLXN0YXRpc3RpY3MiLCAicmVhZC1wb3Np
dGlvbiIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnJlYWRQb3NpdGlvbiwgInNpemUiLCBHX1RZ
UEVfVUlOVDY0LCBtZW1iZXJzLT5zaXplLCBudWxscHRyKSkpOworICAgIGdzdF9lbGVtZW50X3Bv
c3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50
KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAorICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0
LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVt
YmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUs
IG51bGxwdHIpKSk7CisKKyAgICBjaGVja1VwZGF0ZUJsb2Nrc2l6ZShsZW5ndGgpOworICAgIEdz
dEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVmZmVyTmV3V3JhcHBlZEZhc3QoZmFzdE1lbUR1cChkYXRh
LmRhdGEoKSwgbGVuZ3RoKSwgbGVuZ3RoKTsKKyAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMt
PmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7CiAKLSAgICAgICAgY2hlY2tVcGRhdGVCbG9ja3NpemUo
bGVuZ3RoKTsKLSAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RCdWZmZXJOZXdXcmFwcGVk
RmFzdChmYXN0TWVtRHVwKHNlZ21lbnQuZGF0YSgpLCBsZW5ndGgpLCBsZW5ndGgpOwotICAgICAg
ICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7Ci0gICAg
fSk7CiAgICAgc3RvcExvYWRlcklmTmVlZGVkKHNyYywgbWVtYmVycyk7CiAgICAgbWVtYmVycy0+
cmVzcG9uc2VDb25kaXRpb24ubm90aWZ5T25lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIu
aAppbmRleCA5YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVjMjIxMjY1OGY4YzRmNjhhLi5iMjg5NmFl
MzBhMWI4Y2MzZGYxMmEwNzQxMmNmNTAyMjE3ZmM2ODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmgKQEAgLTc2LDkgKzc2LDggQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbmNvZGVkRGF0
YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
LSAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICBtX2RhdGEg
PSBjb250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CisgICAgICAgIG1f
ZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0
YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAg
ICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNv
ZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CkBAIC0xOTQsNyArMTkzLDcgQEAgcHVibGljOgogICAg
IHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxjb25zdCBTaGFyZWRC
dWZmZXI+IG1fZGF0YTsKICAgICBWZWN0b3I8U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSwgMT4g
bV9mcmFtZUJ1ZmZlckNhY2hlIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKICAgICBtdXRh
YmxlIExvY2sgbV9sb2NrOwogICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VS
ZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9B
VklGSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDI2Zjg4NjQ5NmU1YTVhMTRlMjhhZmIxYWZhOWJmYzMw
MTc3ZjUxY2YuLmQ2OGMwYTM1ZmMxZjRhYjYwMTdiZDM5ZWU0MzkxMDI2ODM1ZmM4MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRklt
YWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgQVZJRkltYWdlUmVh
ZGVyOjpBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYgZGVjb2RlcikK
IAogQVZJRkltYWdlUmVhZGVyOjp+QVZJRkltYWdlUmVhZGVyKCkgPSBkZWZhdWx0OwogCi1ib29s
IEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1h
Z2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGF2aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVj
b2Rlci5nZXQoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykK
ICAgICAgICAgcmV0dXJuIGFsbERhdGFSZWNlaXZlZCA/IG1fZGVjb2Rlci0+c2V0RmFpbGVkKCkg
OiBmYWxzZTsKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVh
ZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXQKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVf
dCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKQordm9pZCBBVklGSW1hZ2VS
ZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2Rl
ckZyYW1lJiBidWZmZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAobV9k
ZWNvZGVyLT5mYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVy
LmgKaW5kZXggNDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdiYWE4NjBjZmNjYjViYTRiMy4uODVhY2Ix
N2NiY2ZjNTg4NWQ2YWM1NTI1YzdiNWM5ZWZmYzU4YzY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJl
YWRlci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVm
UHRyPEFWSUZJbWFnZURlY29kZXI+JiYpOwogICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAg
IGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCBkZWNvZGVGcmFtZShzaXplX3Qg
aW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYpOworICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6
ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgU2hhcmVkQnVmZmVy
Jik7CiAgICAgc2l6ZV90IGltYWdlQ291bnQoKSBjb25zdDsKICAgICBkb3VibGUgcmVwZXRpdGlv
bkNvdW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKaW5kZXggYmQ0MzBlOGE4YmVh
MmM4MTZiMmM1MjJiZjViYTc4ODQ2YzM4ZTBmZi4uYzMxNDEzNDc5ZDQzMjUxYjI3OGVkZDY3YTQ0
MTkxNmYwODAyMTlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAg
Y2xhc3MgQk1QSW1hZ2VSZWFkZXIgewogcHVibGljOgogICAgIC8vIFJlYWQgYSB2YWx1ZSBmcm9t
IHxkYXRhW29mZnNldF18LCBjb252ZXJ0aW5nIGZyb20gbGl0dGxlIHRvIG5hdGl2ZQogICAgIC8v
IGVuZGlhbm5lc3MuCi0gICAgc3RhdGljIGlubGluZSB1aW50MTZfdCByZWFkVWludDE2KGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQor
ICAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcmVhZFVpbnQxNihjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAg
ICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0
aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCisgICAgc3RhdGljIGlubGluZSB1aW50
MzJfdCByZWFkVWludDMyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgaW50IG9mZnNldCkKICAg
ICB7CiAgICAgICAgIHVpbnQzMl90IHJlc3VsdDsKICAgICAgICAgbWVtY3B5KCZyZXN1bHQsICZk
YXRhLmRhdGEoKVtvZmZzZXRdLCA0KTsKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIEJN
UEltYWdlUmVhZGVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVyKiBwYXJlbnQsIHNpemVfdCBkZWNvZGVk
QW5kSGVhZGVyT2Zmc2V0LCBzaXplX3QgaW1nRGF0YU9mZnNldCwgYm9vbCB1c2VzQW5kTWFzayk7
CiAKICAgICB2b2lkIHNldEJ1ZmZlcihTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBidWZmZXIp
IHsgbV9idWZmZXIgPSBidWZmZXI7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lk
IHNldERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAK
ICAgICAvLyBEb2VzIHRoZSBhY3R1YWwgZGVjb2RpbmcuIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwg
ZGVjb2Rpbmcgb25seQogICAgIC8vIHByb2dyZXNzZXMgYXMgZmFyIGFzIG5lY2Vzc2FyeSB0byBn
ZXQgdGhlIGltYWdlIHNpemUuIFJldHVybnMKQEAgLTI3Miw3ICsyNzIsNyBAQCBwcml2YXRlOgog
ICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIG1fYnVmZmVyOwogCiAgICAgLy8gVGhlIGZp
bGUgdG8gZGVjb2RlLgotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAog
ICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwgcmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3Zl
IGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3QgbV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVh
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VSZWFkZXIuaAppbmRleCAxMDgyZmRmMGRmZjIzOTFlNTY1MzBhNDFmODdiYTQzOTgyMzI3NTM1
Li5kNmJmZmMxMmIxZTFlNDZkNDNkMDQ3ZWRkYzJhZDk0YjVjODU1M2YzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VSZWFkZXIuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0g
ICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJ
WE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNv
cmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApA
QCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxH
SUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5n
RnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CiAgICAgYm9vbCBtX3BhcnNlQ29tcGxldGVkOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwCmluZGV4IGY0MjNjY2M5Y2UxMjdlZjdhZTc2YzkxMjgyNGFiZTg3NzNm
YjcyZDEuLjQzNTAzNThmM2JlZWI5ZjI0NTg2M2NlN2UwMGFlODI3NTBkZTc0Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9ieXRlc1RvU2tpcCA9IHN0ZDo6bWF4KG51bUJ5dGVzIC0gYnl0ZXNUb1NraXAsIHN0
YXRpY19jYXN0PGxvbmc+KDApKTsKICAgICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAg
ICBib29sIGRlY29kZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgb25seVNpemUpCiAg
ICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBvbmx5U2l6ZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIw
MDBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCmluZGV4IDIwNDczZjBlZWViYjU2
YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5MDc0NDIuLjkzM2EwMTNmMjFjNDdlOWNiNzk5ZWI3MmFiYjdl
MzhjZmFiMWE2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rl
ci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEpQRUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNv
ZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgfQogCiAgICAgc3Ry
dWN0IFJlYWRlciB7Ci0gICAgICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
JiBkYXRhOworICAgICAgICBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGE7CiAgICAgICAgIHNpemVf
dCBvZmZzZXQ7CiAgICAgfSByZWFkZXIgPSB7ICptX2RhdGEsIDAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmNwcAppbmRleCAyNzA5YjdjNjhiZjUzMGQxOTVkNzY2NmEzZDZhY2U1MDAxM2Ji
ZTM0Li40MDQ5NjNhNDc5YzA1ZmMwYzZkNWMzMGViN2JlYzc4MTU2OWFiOWQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICAgICAg
bV9yZWFkT2Zmc2V0ID0gMDsKICAgICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWdu
ZWQgaGFsdEF0RnJhbWUpCisgICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSkKICAgICB7CiAgICAgICAgIG1f
ZGVjb2RpbmdTaXplT25seSA9IHNpemVPbmx5OwogICAgICAgICBQTkdJbWFnZURlY29kZXIqIGRl
Y29kZXIgPSBzdGF0aWNfY2FzdDxQTkdJbWFnZURlY29kZXIqPihwbmdfZ2V0X3Byb2dyZXNzaXZl
X3B0cihtX3BuZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggYjFiZWM1
NWU3OGM0MzQ4MDFjMjU0YWNlMGRmNTk5MzFhMzZiNzRiZC4uNzcyZTgzMjY2ZTIzMGViNmRmZjdk
YzFlZjdkYjU1MjM5NjNiZmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBA
IC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZy
YW1lSW5kZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgY2FuIGJlIGV4ZWN1
dGVkIGJvdGggaW4gdGhlIG1haW4gdGhyZWFkICh3aGVuIG5vdCB1c2luZyBhc3luYyBkZWNvZGlu
Zykgb3IgaW4gdGhlIGRlY29kaW5nIHRocmVhZC4KICAgICAvLyBXaGVuIGV4ZWN1dGVkIGluIHRo
ZSBkZWNvZGluZyB0aHJlYWQsIGEgY2FsbCB0byBzZXREYXRhKCkgZnJvbSB0aGUgbWFpbiB0aHJl
YWQgbWF5IGNoYW5nZSB0aGUgZGF0YQogICAgIC8vIHRoZSBXZWJQRGVtdXhlciBpcyB1c2luZywg
bGVhdmluZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUsIHNvIHdlIG5lZWQgdG8gcHJvdGVj
dCB0aGUgZGF0YS4KLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKKyAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVy
PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CiAgICAgV2ViUERhdGEgaW5wdXREYXRhID0geyBwcm90
ZWN0ZWREYXRhLT5kYXRhKCksIHByb3RlY3RlZERhdGEtPnNpemUoKSB9OwogICAgIFdlYlBEZW11
eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVtdXhlciogZGVtdXhlciA9IFdlYlBEZW11
eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4
IGJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQyYmU0ZTJiZDExYWE4NDMuLmRjYWM1OTk3YTYxMzVk
MmFiNzU5YTdhZDJlYmIwNDM1MmQ1MTRhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw5ICsz
NiwxMSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRl
ZmF1bHQ7CiAKIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9
IGRlZmF1bHQ7CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojpk
aWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJl
Y2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgYnVmZmVyLmZvckVhY2hTZWdtZW50
QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURh
dGEoaGFuZGxlLCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB9KTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5oCmluZGV4IGM0ZjA1NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUu
LmU0NDJjOTczNGMxMTk4NDkwYTFjNmNhYzU3NzI1ZmQ1MTk2YjNiYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgK
QEAgLTQ0LDEzICs0NCwxNCBAQCBPQkpDX0NMQVNTIE5TQ2FjaGVkVVJMUmVzcG9uc2U7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENy
ZWRlbnRpYWw7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgTmV0d29ya0xv
YWRNZXRyaWNzOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dl
ZCwKQEAgLTY1LDkgKzY2LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRE
YXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVu
c2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFy
ZWRCdWZmZXImLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworCiAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxv
Y2tlZChSZXNvdXJjZUhhbmRsZSopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YzA0
MjEwYzVhNTEzYWMzZjU0NzE0NmQ5Zjg1YzgyYmQ4ODEzNzc2Li4zMGI0YmIwZmRhZWY3YWUyY2M3
NGFjNjA5ZjdiMDA5OTdlNWE2ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcApAQCAtNzEsOSAr
NzEsOSBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgLypl
bmNvZGVkRGF0YUxlbmd0aCovKQordm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50
IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKIHsKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0
aCk7CisgICAgbV9kYXRhLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0K
IAogdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVu
dC5oCmluZGV4IDY4MzhlOWQ4Y2Y0Mzc5NmQyZjM5NGJhMWY1NGYwOWQwYjY3ZThhYmQuLmM0Y2I3
MmRjN2E2NTVmZDM2OTZhMzMzZmUwNWNkZWQ2Mjk3NmFmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgK
QEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRC
dWZmZXI7CisKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlPiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZT4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZSk7
IH0KQEAgLTY2LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5
bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgq
Lykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFNoYXJlZEJ1ZmZlciYsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFD
RV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IGZjMjcy
NTQwODkyYjhlMmNkNzdkZThmNmQ5ZTU0YThjOGI1OTdmNjEuLjE5ODE0YTM2NWM5ZjY2MWEyMWMy
MjlhZGJkMDQ2MTFjMjA5NDdlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAg
LTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25z
ZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogCiAgICAgICAgICAgICBz
aXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIgPSBzdGQ6Om1pbihidWZmZXJWaWV3LnNp
emUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUluZGV4ICsgMSk7CiAgICAgICAgICAgICBieXRlSW5kZXgg
Kz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXI7Ci0gICAgICAgICAgICBbdGFzayByZXNvdXJj
ZTpudWxscHRyIHJlY2VpdmVkRGF0YTpTaGFyZWRCdWZmZXJEYXRhVmlldyhidWZmZXJWaWV3LCBi
eXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcikuY3JlYXRlU2hhcmVkQnVmZmVyKCldOworICAgICAg
ICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZERhdGE6U2hhcmVkQnVmZmVyRGF0
YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIpLmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVJ
bmRleCA+PSByYW5nZS5lbmQpIHsKICAgICAgICAgICAgIFt0YXNrIHJlc291cmNlRmluaXNoZWQ6
bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwpAQCAtMjM4LDcgKzIzOCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZpbmFsCiAgICAgewogICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpA
QCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVy
YXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgbV9nZW5l
cmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCBmOTA5NmVlMmU5ZjI0MmZmMDRkNzA1YzJh
YTEwOTNhNTVlNTczNWRiLi5lYTRhOWJmMjk3ODI5ZWJkMDI5MTQ3NmNiZjhhN2U1NDk0NzIxMjZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQ
T1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQp
cmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0Jl
U2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVz
b3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
cmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9u
c2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hv
dWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJl
c3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKWRhdGE7CistICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRy
PE5TRGF0YT4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0g
KHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjoo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
bW0KaW5kZXggNWUyZThlOGQ5ZDc2NjcyYTI0MTRmNzZmNWMwOGYyNTllMDI5ZjUwNC4uM2M4YmUw
OGMyOTM0ZTU0ZGEzYjc0OWNhNmRhMzRlZGE5NmRjOWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lv
bi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRh
dGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWdu
ZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02NTIsMTMgKzY1
MiwxMyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6c2hvdWxkQ2Fj
aGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwogICAgIHJldHVybiBbbV90YXNrIHJlc291
cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KIAotdm9pZCBX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rh
c2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJl
Y2VpdmVkRGF0YTpXVEZNb3ZlKGJ1ZmZlcildOworICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291
cmNlIHJlY2VpdmVkRGF0YTpidWZmZXIuY3JlYXRlTlNEYXRhKCldOwogfQogCiB2b2lkIFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05MzEsMTUgKzkzMSwxNCBAQCAt
IChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENh
Y2hlUmVzcG9uc2U6KGNvbnN0IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lk
KXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YToo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YQorLSAodm9pZClyZXNv
dXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJldGFp
blB0cjxOU0RhdGE+JiYpZGF0YQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNv
dXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVs
ZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBX
VEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5
dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOworICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNv
dW50T2ZCeXRlc1JlY2VpdmVkICs9IFtkYXRhIGxlbmd0aF07CiAgICAgICAgIGlkPE5TVVJMU2Vz
c2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxl
Z2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2Rh
dGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRh
c2s6ZGlkUmVjZWl2ZURhdGE6KV0pCi0gICAgICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Np
b246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNV
UkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2VpdmVEYXRhOm5zRGF0
YS5nZXQoKV07CisgICAgICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0
YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2VpdmVEYXRhOmRhdGEuZ2V0KCldOwogICAg
IH1dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXggZjMyM2FmMjY0MDE2YjY2MzkzMTFhYzIz
MjQ2ZWM1ZWQ4MGEzOTU0NS4uM2JkMmNjNzQyODZlYzQ2Nzg2NDAyNDhjNWUxY2ZlY2M1YTAyNjdi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIGJvb2wgQ3VybENhY2hl
TWFuYWdlcjo6Z2V0Q2FjaGVkUmVzcG9uc2UoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlUmVz
cG9uc2UmIHJlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEN1cmxDYWNoZU1hbmFnZXI6
OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiBqb2IsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQordm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSYgam9iLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKG1f
ZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI1NSwxMSArMjU1LDExIEBAIHZvaWQgQ3Vy
bENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUmIGpvYiwgY29uc3Qg
dWludDhfdCogZGF0YSwKICAgICAgICAgaWYgKGl0LT52YWx1ZS0+Z2V0Sm9iKCkgIT0gJmpvYikK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIWl0LT52YWx1ZS0+c2F2ZUNhY2hl
ZERhdGEoZGF0YSwgc2l6ZSkpCisgICAgICAgIGlmICghaXQtPnZhbHVlLT5zYXZlQ2FjaGVkRGF0
YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKQogICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hl
RW50cnkodXJsKTsKIAogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fY3VycmVudFN0b3Jh
Z2VTaXplICs9IHNpemU7CisgICAgICAgICAgICBtX2N1cnJlbnRTdG9yYWdlU2l6ZSArPSBkYXRh
LnNpemUoKTsKICAgICAgICAgICAgIG1fTFJVRW50cnlMaXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0
KHVybCk7CiAgICAgICAgICAgICBtYWtlUm9vbUZvck5ld0VudHJ5KCk7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
TWFuYWdlci5oCmluZGV4IGM5ZTI5ZDgwOTcwYzQwNDZlNzk2MTYyYmQ5ODMyOTExYjZkZWU2OGMu
LmI2NWI5NjNiNjhlNmE2OGQ5ODE5M2FhZjczZjEwODAzZDk3ZmNkMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIu
aApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRDYWNoZWRSZXNwb25zZShj
b25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmLCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
OyAvLyBTYXZlIGRhdGEKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJik7IC8vIFNhdmUgZGF0YQogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhSZXNvdXJjZUhhbmRsZSYpOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuY3BwCmluZGV4IDM0OTQ0NTkyNTRhYzkzZmMxOWNiMTIxNTBhNjFiYzJiY2VkMDJk
NmUuLmFhZjBjOGQ5NDA3MDU1ZDY4YTA1NWZiMzUwNzk2N2RlNGMwMDg2ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3Bw
CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVz
cG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwb25zZSYmIHIKIH0KIAogCi12b2lk
IEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERp
ZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQg
Q3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2xpc3RlbmVy
KQotICAgICAgICBtX2xpc3RlbmVyLT5kaWRSZWNlaXZlRGF0YU9mTGVuZ3RoKGJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICAgICAgbV9saXN0ZW5lci0+ZGlkUmVjZWl2ZURhdGFPZkxlbmd0aChidWZmZXIu
c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVx
dWVzdCYgcmVxdWVzdCwgTmV0d29ya0xvYWRNZXRyaWNzJiYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKaW5kZXggY2RlNDQ0NTc3
NWY3NDQyMzMwNTMwYjY1YjEzNTdiYTZiZmQ5YmI4MS4uYTEyMDc1ODM0OTNmNzgzMzc1NmQzYzQ5
ODdjZjVjOTVkZmE5NzljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxEb3dubG9hZExpc3RlbmVyIHsKIHB1YmxpYzoK
QEAgLTcyLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1
cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1
cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJy
aWRlIHsgfQogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1
cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1
cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgY3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3
b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJv
cihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggMDkwZDAzOWJhNDVkZTEwMjhlZGY3
Njg0YzZkN2QyZjI5NmUzYTM0ZC4uZDFlNTg2MjRhYWVlMmVjZTgxMjlkZDM0ZWE5ODY2MjZlNmNk
ZjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5LDEyICsxMTksMTIgQEAgQ3Vy
bE11bHRpcGFydEhhbmRsZTo6Q3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxl
Q2xpZW50JiBjbGllbnQsIGNvbnMKIAogfQogCi12b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQg
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJu
OyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAot
ICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuaAppbmRleCA5YTFhMWJiZDE5MzhhMTRmNjlmY2NlZTNmMGY4OWI5N2E0YTIxODc0Li41
YzA4YmNjNWViM2U0YmJjYzAyOWI0NzY3ODY4ZjQzZTJmOTVjMzQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJs
TXVsdGlwYXJ0SGFuZGxlQ2xpZW50OwogY2xhc3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRp
cGFydEhhbmRsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3
IEBAIHB1YmxpYzoKICAgICBDdXJsTXVsdGlwYXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVD
bGllbnQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZSgpIHsgfQog
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lk
IGRpZENvbXBsZXRlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQu
aAppbmRleCBjODEzODg2YThkNWM1ZmE2YzEyZDE0MTMzMTkxMDFhZjI1MDJhMmFkLi5kZjc2Mzdk
ZTlkOWZmMmI2YjEwODU1ZDBjNTc3MTI1NTM0YjJhNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5n
PiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAKIHByb3Rl
Y3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXgg
YmFjYjJiNTUwYjI4NDEzMWQxYWMyMGFhNjYzODg2ZmUyMmZlN2Y5OC4uZDBlZjBlNzExNjJiNTM2
M2FkNDI1NDE3ZDg1ZWM3MjM4ZjNmNjJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAg
c2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAog
Ly8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2Vk
IHZpYSBoZWFkZXJDYWxsYmFjawogCi1zaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRh
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVz
dDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00MTEsNyAr
NDExLDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBDVVJMX1dSSVRFRlVOQ19Q
QVVTRTsKICAgICB9CiAKLSAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci0+c2l6ZSgpOwor
ICAgIGF1dG8gcmVjZWl2ZUJ5dGVzID0gYnVmZmVyLnNpemUoKTsKICAgICBtX3RvdGFsUmVjZWl2
ZWRTaXplICs9IHJlY2VpdmVCeXRlczsKIAogICAgIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKGJ1ZmZlcik7CkBAIC00MjAsOCArNDIwLDggQEAgc2l6ZV90IEN1cmxSZXF1ZXN0Ojpk
aWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAg
ICAgIGlmIChtX211bHRpcGFydEhhbmRsZSkKICAgICAgICAgICAgIG1fbXVsdGlwYXJ0SGFuZGxl
LT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNh
bGxDbGllbnQoW2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3Qs
IEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNs
aWVudC5jdXJsRGlkUmVjZWl2ZUJ1ZmZlcihyZXF1ZXN0LCBXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0gUmVmIHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0
JiByZXF1ZXN0LCBDdXJsUmVxdWVzdENsaWVudCYgY2xpZW50KSB7CisgICAgICAgICAgICAgICAg
Y2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0LCBidWZmZXIpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00NDQsMTYgKzQ0NCwxNiBAQCB2b2lkIEN1cmxSZXF1
ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aGVhZGVycykKICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIEFjdGlvbjo6
Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFy
dChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byByZWNlaXZlQnl0ZXMgPSBidWZmZXItPnNpemUoKTsKKyAgICBhdXRvIHJlY2Vp
dmVCeXRlcyA9IGJ1ZmZlci5zaXplKCk7CiAKICAgICBpZiAocmVjZWl2ZUJ5dGVzKSB7Ci0gICAg
ICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJl
cXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICAgICAg
Y2xpZW50LmN1cmxEaWRSZWNlaXZlQnVmZmVyKHJlcXVlc3QsIFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFJlZiB7IGJ1ZmZlciB9XShDdXJsUmVxdWVzdCYg
cmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQmIGNsaWVudCkgeworICAgICAgICAgICAgY2xpZW50
LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0LCBidWZmZXIpOwogICAgICAgICB9KTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5oCmluZGV4IGE2ZmIzMTU3NjZiYTVjMmYzZWEzMmI5ZWY1MWViMDAzZThjYjg5ZDAuLjky
Yjc0Njk3YmMzMTc1Y2UwY2RhZGYxNTFmYTI1NDNhMDNlMTE5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC0xMjIsOSAr
MTIyLDkgQEAgcHJpdmF0ZToKICAgICBDVVJMKiBzZXR1cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAg
ICAgc2l6ZV90IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6ZV90LCBzaXplX3QpOwogICAgIHNpemVf
dCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKLSAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVs
dGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHZv
aWQgZmluYWxpemVUcmFuc2ZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAppbmRleCAzNDc5ODMyZjU3NmQ0
MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2YWU3Li43MzAzM2YwZWY0ZWI0ZGYyMWFiNzY0NjNjYzM5
ODE5YjI4Njc4NDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBD
dXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxSZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmlj
czsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6
CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2Vu
ZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1
cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRS
ZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRy
aWNzJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJl
cXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSA9IDA7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggMzA1ZDRlNWM5ZmMyNzA3NzU3
ODdiMGY5YTkxOTc5YzA4ODg5YThhNi4uMzg5N2UwMWM2ZDA3NjZkYWNmM2UxOWIyMzczMzZmNWI1
NWNlNTI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIs
MTYgKzE0MiwxNSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVj
ZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lk
IEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVx
dWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAg
ICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwg
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCkt
PmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVj
ZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlcik7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZm
ZXIoJm1faGFuZGxlLCBidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3Jr
TG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApp
bmRleCBkYWYwYTU5YTRlNTg2ZDcxMTRhYmI0ZTVlZjljNTRmNmE4YmVmYzcwLi4wMjRiYzRlOWFl
MzFkZjI1YThmOWI3MGNiYTI4MWZhY2VhYzhjZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBS
ZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwogY2xhc3MgUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgQ3VybFJlcXVlc3RDbGllbnQgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2Vu
dCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9p
ZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIGZp
bmFsOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURh
dGEoQ3VybFJlcXVlc3QmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGN1
cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBmaW5hbDsK
ICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJv
ciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcAppbmRleCBjMDcwNGYwY2RkNjQ0
MjM3M2Y3YjcwYmZlNjE1MzliZjViMzdkNjI1Li4zNjY1OGY5MWRjOWQ2NzIzMGIyMzllNDk3YzAw
MDBhYzYyYWFlOTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxTdHJlYW0uY3BwCkBAIC05LDcgKzksNyBAQAogICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCiAgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJDdXJsU3RyZWFtLmgiCiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVy
LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJy
b3IuaCIKIAogI2lmIFVTRShDVVJMKQpAQCAtMTI5LDEwICsxMzAsMTAgQEAgdm9pZCBDdXJsU3Ry
ZWFtOjp0cnlUb1JlY2VpdmUoKQogICAgIGlmICghbV9jdXJsSGFuZGxlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIHJlY2VpdmVCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4o
a1JlY2VpdmVCdWZmZXJTaXplKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmVjZWl2ZUJ1ZmZlcihr
UmVjZWl2ZUJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBieXRlc1JlY2VpdmVkID0gMDsKIAotICAg
IGF1dG8gZXJyb3JDb2RlID0gbV9jdXJsSGFuZGxlLT5yZWNlaXZlKHJlY2VpdmVCdWZmZXIuZ2V0
KCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNlaXZlZCk7CisgICAgYXV0byBlcnJvckNv
ZGUgPSBtX2N1cmxIYW5kbGUtPnJlY2VpdmUocmVjZWl2ZUJ1ZmZlci5kYXRhKCksIGtSZWNlaXZl
QnVmZmVyU2l6ZSwgYnl0ZXNSZWNlaXZlZCk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9P
SykgewogICAgICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX0FHQUlOKQogICAgICAgICAgICAg
bm90aWZ5RmFpbHVyZShlcnJvckNvZGUpOwpAQCAtMTQzLDggKzE0NCw5IEBAIHZvaWQgQ3VybFN0
cmVhbTo6dHJ5VG9SZWNlaXZlKCkKICAgICBpZiAoIWJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIGRl
c3Ryb3lIYW5kbGUoKTsKIAotICAgIG1fc2NoZWR1bGVyLmNhbGxDbGllbnRPbk1haW5UaHJlYWQo
bV9zdHJlYW1JRCwgW3N0cmVhbUlEID0gbV9zdHJlYW1JRCwgYnVmZmVyID0gV1RGTW92ZShyZWNl
aXZlQnVmZmVyKSwgbGVuZ3RoID0gYnl0ZXNSZWNlaXZlZF0oQ2xpZW50JiBjbGllbnQpIG11dGFi
bGUgewotICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlci5nZXQo
KSwgbGVuZ3RoKTsKKyAgICByZWNlaXZlQnVmZmVyLnJlc2l6ZShieXRlc1JlY2VpdmVkKTsKKyAg
ICBtX3NjaGVkdWxlci5jYWxsQ2xpZW50T25NYWluVGhyZWFkKG1fc3RyZWFtSUQsIFtzdHJlYW1J
RCA9IG1fc3RyZWFtSUQsIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVj
ZWl2ZUJ1ZmZlcikpXShDbGllbnQmIGNsaWVudCkgeworICAgICAgICBjbGllbnQuZGlkUmVjZWl2
ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlcik7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCmluZGV4IDRmNTliMjBlOGRi
Mjc5MDM5OTRiMzMxNTRjZTY0YjA5OTRmM2EwYmEuLmU4YTMyYzI2NDYxYjQzMDhlYTIyN2M2ZGY4
Yzk3MjQzOTkwNWQwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxTdHJlYW0uaApAQCAtOSw3ICs5LDcgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwogICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCiAgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCkBAIC0zMyw2ICszMyw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxTdHJlYW1TY2hlZHVsZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvcjsKIAogdXNpbmcgQ3VybFN0cmVh
bUlEID0gdWludDE2X3Q7CkBAIC00Niw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKEN1cmxTdHJlYW1JRCkgPSAwOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoQ3VybFN0cmVhbUlELCBzaXplX3QpID0gMDsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhf
dCosIHNpemVfdCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3Vy
bFN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwgQ1VSTGNvZGUpID0gMDsKICAgICB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0
cmVhbUhhbmRsZUltcGwuaAppbmRleCBiODA0ZmRlMDk3M2JiZmIyODMzMWNmN2MzYTFmMjBiMDQz
ZTc0ZmU4Li4zNjZiMDU5YzAyODA0YjE5OWM4ODZhOWMyYzY3MjczZjkyNGYyZWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTU5LDkgKzU5LDEwIEBAIHByaXZhdGU6CiAgICAgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOwogICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7CiAKKyAgICAvLyBDdXJsU3RyZWFt
OjpDbGllbnQKICAgICB2b2lkIGRpZE9wZW4oQ3VybFN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lk
IGRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChDdXJsU3RyZWFtSUQsIENVUkxjb2RlKSBmaW5hbDsK
IAogICAgIGJvb2wgaXNTdHJlYW1JbnZhbGlkYXRlZCgpIHsgcmV0dXJuIG1fc3RyZWFtSUQgPT0g
aW52YWxpZEN1cmxTdHJlYW1JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5j
cHAKaW5kZXggNGI5NDkxYzExNTQzZjJiNjBmMTJkMzZlOWU2YTBjYmFhZTM0YTcyZS4uYThmNTdh
NzJkMGVhY2NhNzc1NWJlODRmY2FhMWM5YmYxMDk1OGMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNsdWRlICJDdXJsU3Ry
ZWFtU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIK
ICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyLmgiCkBAIC0xMDQsMTIgKzEwNSwxMiBAQCB2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90IGxlbmd0aCkKICAg
ICBzZW5kUGVuZGluZ0RhdGEoKTsKIH0KIAotdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpk
aWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxT
dHJlYW1JRCwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmIChtX3N0YXRlICE9
IE9wZW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRT
dHJlYW1EYXRhKCp0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVT
b2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2
b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZEZhaWwoQ3VybFN0cmVhbUlELCBDVVJMY29k
ZSBlcnJvckNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMWY0YTE5MzEz
MzEyYzVkZDZhNDhhZDUzMzlkZmQyYzNiNWRlYzI1Ny4uMGZlNjVhMjllNjM2MTZkYjQyZjdjOWVh
MWQxODUyMjFjMjAwNDBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzEs
MTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xv
YWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBk
ZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
Lm1tCmluZGV4IDMxNWUwNjUxNTMwZGNkYjAyODAxNjU0Yjc1N2Q4MTQ3M2MyMGZkMzAuLmFlNzE1
NWVjZWYzNWQzZTE4ODhkOTE2NTY0NTdlMzgxMTU5ZGY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAg
LTMwMCw3ICszMDAsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNv
bm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbAogICAgICAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzkzCiAgICAgICAg
IC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFueSBkYXRhIGFib3V0IHRyYW5zZmVyIHNp
emUgdG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQogICAgICAgICAvLyBDb250ZW50LUxlbmd0
aCBoZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93IHRyYW5zZmVyIHNpemUuCi0gICAgICAg
IG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKKyAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgp
LT5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSksIC0xKTsKICAgICB9OwogCiAgICAgW3NlbGYgY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOldU
Rk1vdmUod29yayldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5k
ZXggMDhkMDU3YmJiNWYxN2MyMDQ1YmZmOTA2ZmY1YWRhODVmMTA0MjkzMC4uZjdmMjY2Y2U4ZDgx
OTEwNjBjODU3YTJmOGE2YWQ5ZmRlYmQ4MTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCkBAIC01NDYsOCArNTQ2LDggQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZH
SW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICBBU1NFUlQo
bG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91bGQg
aGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9hZGVyLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7
CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdpbihV
UkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgZGF0YSgpLT5mb3JF
YWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgbG9hZGVyLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoc2VnbWVudC5kYXRhKCksIHNlZ21l
bnQuc2l6ZSgpKTsKKyAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVy
KFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRM
b2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShidWZmZXIpOwogICAgICAgICB9KTsKICAgICAgICAg
bG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmVuZCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggODJh
MmE4YzRiMThhY2NlNzk4YjI3YzJjOGQwMDk1ODlmZjc1Y2JhOC4uNGU4YWI3ODFhNDA2MWFiMThj
NTAzMzczYmRhMzhmNmM1NWQ4YTAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMTE1LDEyICsxMTUsMTIgQEAgdm9pZCBXb3Jr
ZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IFIKICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKIH0KIAotdm9p
ZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sKQogewogICAgIGlmIChtX2Vy
cm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lkIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApp
bmRleCBkYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5OGQ5OWI1MTc2YTM5Li43Y2JhYThlNTUx
MGM4YzRmY2FmMmViOTJjNmY3M2IzZDJhMTJjNjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzV29ya2VyRm9udExvYWRSZXF1ZXN0KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggYmY1YTQ0ZmUz
NDhkMmZmY2U5MTZmYjE5NDkxNWU2N2JmZGE5YWVjMS4uY2QyNmVjZDZhMzdhN2VkMzlmZjcxZWRk
YTM1ZThlZmE5MGIzN2M0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
CiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9u
c2UpOwogfQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbikKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pCiB7CiAg
ICAgaWYgKG1fZmFpbGVkKQogICAgICAgICByZXR1cm47CkBAIC0yMTIsMTMgKzIxMiwxMSBAQCB2
b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbikKICAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6
OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0Il9zLCAiVVRGLTgiKTsKICAgICB9CiAKLSAgICBpZiAo
IWxlbikKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIGlmIChsZW4gPT0gLTEpCi0gICAgICAgIGxlbiA9IHN0cmxlbihyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKLSAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5k
ZWNvZGUoZGF0YSwgbGVuKSk7CisgICAgc2l6ZV90IGxlbiA9IHVzZVN0ckxlbiA/IHN0cmxlbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0YSgpKSkgOiBidWZmZXIuc2l6
ZSgpOworICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0YSgp
LCBsZW4pKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmco
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBlYWFiZTFlYTVkMTNiMzNmOWMzY2M2NmRk
NDk1NTdlYjY5ZTM3ZWZjLi4wYmMzYTAyNWIzNjc5ZTI1NjMwODYyNGVlZWJhODlkY2NjNDVjODJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAgLTc5
LDcgKzc5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKCkgY29u
c3QgeyByZXR1cm4gbV9lcnJvcjsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImLCBib29sIHVzZVN0ckxlbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRl
eCBmYmEzNjMyMmIyOWE2ZDViNzk3YjM5ZWRjM2MzZDE3MTI0YjNiNWJjLi5jZTM3MDk2ODlkOWYw
OTIxZTA5MDNhMDM3N2RiMjY4YTU0NTBiMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlZGly
ZWN0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9y
bURhdGE+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA5YjExMmI5ZGIyY2Q4NGQwMzJmNTlkYWZhOGU4
ZTM4ZTA3MGU1M2Y3Li5kYzNhZWE4Y2FkOWQwOTZiNDJiY2E2NWIyNjEyMzJmMTM3NDNkMWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTEwMzQsNyArMTAzNCw3IEBA
IFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlRGVjb2Rlcigp
IGNvbnN0CiAgICAgcmV0dXJuIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFp
biIsICJVVEYtOCIpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKQogewog
ICAgIGlmIChtX2Vycm9yKQogICAgICAgICByZXR1cm47CkBAIC0xMDUyLDE3ICsxMDUyLDE2IEBA
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW4pCiAgICAgaWYgKHVzZURlY29kZXIgJiYgIW1fZGVjb2RlcikKICAgICAgICAgbV9k
ZWNvZGVyID0gY3JlYXRlRGVjb2RlcigpOwogCi0gICAgaWYgKCFsZW4pCisgICAgaWYgKGJ1ZmZl
ci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChsZW4gPT0gLTEpCi0gICAg
ICAgIGxlbiA9IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7Cisg
ICAgc2l6ZV90IGxlbiA9IHVzZVN0ckxlbiA/IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihidWZmZXIuZGF0YSgpKSkgOiBidWZmZXIuc2l6ZSgpOwogCiAgICAgaWYgKHVzZURl
Y29kZXIpCi0gICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29k
ZShkYXRhLCBsZW4pKTsKKyAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rl
ci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBC
dWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVu
ZChkYXRhLCBsZW4pOworICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5hcHBlbmQoYnVm
ZmVyKTsKICAgICB9CiAKICAgICBpZiAoIW1fZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmgKaW5kZXggMmQxM2JlYzM5NDY0NDhiOWI0ZjkyNWQzMmJkODZiYTJkODAzNzc1YS4u
NmJmMTlmODJiZDJmZjc2NzA3ZGE0NTcxNDc1MDdlOTkxZDI0NjVkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTE2Miw3ICsxNjIsNyBAQCBwcml2YXRlOgogICAgIC8vIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKICAgICB2b2lkIG5vdGlmeUlzRG9uZShib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAppbmRleCA2
MTdmNDc2ODk1NjQyZGVjMjMyNTRiNTQwZWU4MTkxMWFjNGEyZGY2Li43ZjUxMmM2YzExYThlNzEw
OGNmMDA2MmI1ODRkMjdiNTg5MDhkMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNl
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKQEAgLTk2LDEwICs5NywxMCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFT
ZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZQogICAgICAg
ICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50
KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0
YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwor
ICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhKTsKIH0KIAogdm9pZCBS
ZW1vdGVNZWRpYVJlc291cmNlOjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuaAppbmRleCA1YjdhN2UyYTc0MjQ0MzJkODZjYjI4YTFiZTcx
NzE4YTE2NzM3NWU3Li45NTEwNmY2NzIyNzNiNDVmMGEyNGE0N2ExYTJiZGQxNDA5ZTBmNDM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5l
dHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTcsNyArNTgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNob3VsZENv
bnRpbnVlUG9saWN5Q2hlY2spPiYmKTsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAg
ICAgdm9pZCBkYXRhU2VudCh1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRh
dGFSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGFjY2Vz
c0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBsb2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lk
IGxvYWRGaW5pc2hlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3du
bG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmgKaW5kZXggNzFmZDAyMjI5YmJiMWM1NzMyNmZkZmNmZTI2YzExZjc2MWFiY2Y3Mi4u
MDU0Yjg5M2UxMTExMGRjZjlhNzAwMjUyZjRmNzk1YjAxYTU4N2I5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2Fk
LmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNl
ckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVk
aXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk1ODYw
OTFlYTAwNDFiNmYxNTg2OWQ0MmJiZGE3MjQzMjk3NjkwZWMuLmJhOGQwNDhmNjVkYzMzOTg0ZjBj
ZDQ3NjM1YWI5MTAxODc5YmQzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEyMCw3
ICsxMjAsNyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXI6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KQordm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQ09SU19DSEVDS0VSX1JFTEVBU0VfTE9H
KCJkaWRSZWNlaXZlRGF0YSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggNTA1YTRlZmU1
NzFkNDg5ZTUwYTk4OGJlYjgxODViN2ZlYWIzZGIxMC4uMGNiMzE1ZmQ4ZmY1MzE5OTE1N2RlNzhm
ODQ1MmQ3MWM0ZjVlMjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC0zNyw2ICszNyw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgU2VjdXJp
dHlPcmlnaW47CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3Rp
YXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdv
dGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWlu
dDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2Nr
ZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oCmluZGV4IDRiOWVlNTc0YjkyYzdjMzcxN2E0YmMyODE5YTZiZTNhMTkwNjU3MTUuLmY0
NzllMDkwMmIyMTc5Mjk1NWQzNzY4MTRiMjFjODlmZjU1ZGI1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApAQCAtNDMsNyArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90
YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQo
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmlu
ZGV4IDhjMTA0ZDgxNjBiN2FhZmQwOTk3MTVkYTZkNGU2ZjdjNDYzN2ZhMDguLjYwYjY5YTkzNmJi
NzhkZjI1MTA3NDljNzU0ZmU2YWEyMjkzZmUwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNTQsMTEgKzI1NCwxMCBAQCB2b2lkIE5ldHdv
cmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlLCBOZWdvdGlhdAogICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZShXVEZN
b3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5l
dHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdGhl
IGVuY29kZWQgZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVjb2RlZCBkYXRhIGxlbmd0aC4KLSAgICBh
dXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsKLSAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZl
QnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgc2l6ZSk7CisgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVj
ZWl2ZUJ1ZmZlcihidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIE5ldHdvcmtMb2Fk
OjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKaW5kZXggZTZhNzYxMTU5NjJiOTY1
OWU3YmZlNzhjNmY0ZGM2ZjUzMTJiM2NiZS4uMGU0YzFhZTQ5MjNjMzM3ZjVjZjliMGE0MDhiNWE4
ODIyOWY1OTY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
aApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVn
b3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBO
ZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwg
dWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Js
b2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDbGllbnQuaAppbmRleCAzNDhjZmZiOWU4ZTI1ZWU4M2JiYjM5YTAyY2QzY2Y2ZDI4NTRk
MzllLi44YTI4NTgyNjExM2Y5ZDhlZTY2MGRiNjg4YjNjNTM5M2ZmOTdiMmUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCkBAIC01MSw3
ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2Vu
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVj
dFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAzNmFjYzYzMTQ1ZjQwNWIxOTU1ZDMzNTQw
ZGFhNzA4ZjlhNjI5MzQxLi5lNmZkMmFjNzBlYzdlMGU3NTkwYWRlMjcyZTE0MjdmY2U5NmRkZTUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC04NjMsMjkgKzg2MywyOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c2VuZERpZFJlY2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0Nv
bnRleAogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNl
aXZlZCkKLSAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFy
dGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpOwotICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZmZXIt
PnNpemUoKTsKKyAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogU3Rh
cnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gYnVmZmVy
LnNpemUoKTsKIAogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKICAg
ICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9y
eSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRy
aWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZl
clNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVy
U2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5n
ZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZl
ci5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiAgICAgaWYgKGlzQ3Jvc3NP
cmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IEF0IGxlYXN0
IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNvdXJjZSBoYW5k
bGUuCi0gICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7
CisgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLnNpemUoKTsKIAog
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQo
YnVmZmVyLmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERhdGFMZW5n
dGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgICAgICByZXR1
cm47CkBAIC0xMjczLDcgKzEyNzMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVm
ZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9
IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFp
c1N5bmNocm9ub3VzKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBjZjEwY2YwZTcxYTFiYzY1NTQwZTg3ZDZi
YTRjMWI5Yzg1NmMwYTFkLi44MTdhZWYyNmM4MzZjMzRhN2Q0NGVlN2NjOTVlZGQ5YTI5OGQ2YTRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxv
d2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5h
bDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkQmxv
Y2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGZpbmFsOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgIHZv
aWQgYnVmZmVyaW5nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc2VuZEJ1ZmZlcihXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2
b2lkIHNlbmRCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIHNp
emVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2b2lkIGNvbnN1bWVTYW5kYm94RXh0ZW5z
aW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IGJjMmMzMzdlNGVlZTAxYWY4
M2UxMzY3MjMxN2E5YTllYWJjN2M2ZjguLmYwZWZkMDRiYjJlMThmNmYzY2JjMTYzZmFmMjNkYTA0
NjZiZWU1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBA
IC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVQKICAgICBkaWRGaW5pc2go
eyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBQSU5HX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZl
RGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oCmluZGV4IGU3ODA4ZDhlNjU1ODJmNzkzODg4MjhkNTE3NThjYjE5M2Nm
NTVmYzcuLmIyMjVjNDdiOTRhZmEwYjQ0ZWRjMjY3MGRmYzU4YWQ3YWZjOTE0MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZv
aWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2Vu
ZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IDE3ZDQ3OTA3
YTNmNmVlNTJiZTY1MDFkMWRhYjBjYTYwNzUxZDZiMGIuLmFhYWUyYmZiZGY4M2EzOWFjZWMwNjNm
ZWIyNDQ2MTZkYzg0OGVkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNl
Q29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQogCi12
b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUHJlY29ubmVj
dFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0
VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCmlu
ZGV4IDg1ODA4ZTEyMWI2OGNhOGI3M2UyNTE4ZDE5M2FiMzk1ODFlYWQxZTcuLjhjNmIwZGVlZDY2
YzUxMDE5YmU4OTg0ZWQ1Yjg3ZTBjMWQ3OTBmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgd2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3Bw
CmluZGV4IDI1ZDRlMzdmOTQ1NGJlZTMyZjA0ZDhjYzhjNDcxZDVkM2Y3ZWQ4MmIuLjhjOGRjMzZi
MWU1MzkzOGY4MWViNGFiYWFmZjAxOTBmMmI1NGVkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJE
b3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2Vi
RXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgpAQCAtMTcz
LDcgKzE3NCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6c3RhcnQoKQogICAg
IGRvd25sb2FkUHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX3BlbmRpbmdEb3dubG9hZExvY2F0
aW9uKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpCit2b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRU
YXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckRvd25sb2FkVGFzay5oCmluZGV4IGFiNTllYWU1MjY2NTMwNjIxMmEyOGU5MzIzYTJi
OGI0ZmZlMGM3OGYuLmI4OWFiM2ViZDc2MmY2ODEyYTVlOTdiZmY2OTBiYTkwZjAyNTdmY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaApAQCAtMzcsNiArMzcs
NyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3Mg
U2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Niw3ICs2Nyw3
IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckRvd25sb2FkVGFzayhOZXR3b3JrU2Vzc2lv
biYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTV1NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIERvd25sb2FkSUQpOwogCiAgICAgLy8gSVBDIE1lc3NhZ2UK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5JiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwogICAg
IHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNr
Lm1lc3NhZ2VzLmluCmluZGV4IDFkM2JmYjdjYzMxMDk3OTljYzgwMDFiYmE3MWQ4OWMwZjZmMmQ5
MmYuLjUwZDJiNDJhNzFiMGVkYWI3OWZiY2U5ZGRiOWYxOTk4MmRiNTM1OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluCkBA
IC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2sg
Tm90UmVmQ291bnRlZCB7CiAgICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
KQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRh
LCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hh
cmVkQnVmZmVyQ29weSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZFJl
Y2VpdmVGb3JtRGF0YShJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgRGlkRmluaXNo
KCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA0ZTc5
MTliM2RkYzAyYWUxNGQwZWQ5Njg0YjhjNjhiYjZmMjhhNDM0Li40Zjc4YjlkZjU0ZTVlNjc3ODc4
NDEzNWEyN2EwM2RiYzYyOWJmZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKQEAg
LTIyNSw3ICsyMjUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnByb2Nlc3NSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvb2wgbgogICAgICAgICBtX2xvYWRl
ci5zZXRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
LCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1faXNEb25lKQogICAgICAgICByZXR1
cm47CkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2Fk
Qm9keUZyb21QcmVsb2FkZXIoKQogICAgICAgICAgICAgZGlkRmluaXNoV2l0aE1ldHJpY3MobV9w
cmVsb2FkZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBkaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UgeyBjaHVu
ay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpIH0sIGxlbmd0aCk7CisgICAgICAgIGRpZFJlY2VpdmVE
YXRhKFJlZiB7IGNvbnN0X2Nhc3Q8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciY+KCpj
aHVuaykgfSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmgKaW5kZXggYzM0NTgwMjY3ZmIzMjY5ZTZkY2JkY2VmYzM0ZDA2ODJjNmEwODg2
Yy4uNTIyNWU1NDU5OTk1MWQ4ZjgxYzcwYWY4MmViYmEyNjg5ZTM1MDA2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJl
ZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTkzLDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFNob3VsZFNldFNv
dXJjZSA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYsIGludDY0X3QgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlk
RmluaXNoV2l0aE1ldHJpY3MoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCmlu
ZGV4IDE4ZTYyOWYwZDE0NmVkMmQ0MjlkYjFiYTI4NzAxZTgzZmI5NmU2MmYuLjdkYjUzZTliZDAz
ODA0NTQ3M2EyNWFmMzdkNDdjMTk1Nzk1ZTIzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3IEBAIG1lc3Nh
Z2VzIC0+IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgTm90UmVmQ291bnRlZCB7CiAgICAgRGlkRmFp
bChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAgRGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2goKQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggNWQ5YmQzMzMz
OTIxMWNhMWNkNDQ3Yjg3OTJmNTQ2MWVhODdlZGRmNC4uZTU2NTRjYzMxMzliNDlkNjFhOTg1MTNj
ZDAxNmJlY2Y3MzliYmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lk
IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFj
ayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgICAgICBtX2JvZHlDYWxsYmFjayhSZWZQdHIgeyAmYnVmZmVyIH0sIHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRN
ZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuaAppbmRleCA2N2FiYzU1YzYwZmYyNGUzOWRkMDRlY2M1MDIxYjYwNWVlOGJlYmIxLi41
Zjg4YWMyYWE4ZGY5NjI4ZDRjNTlkZGQwOTRmMGNlZTFkMjFhN2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtMzYsNiArMzYs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTU0LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFj
ayYmKTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47Cisg
ICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8Y29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsg
fQpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQg
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmNwcAppbmRleCA3YTI2MjIxOWRlNzhiMjM1ZDEyNWE5MmI2ZTIzNmQzMzI2MmY3
YTI3Li5kOWQ3NDc1MjUzMmYxODllYjFiZTJjMDNkN2UyOWU4NTllODk2ZTc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE3Nyw3
ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9yIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpw
cm9jZXNzUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwbwogICAgIHJldHVybiB7IH07CiB9CiAK
LXZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikgewogICAg
ICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCkBAIC0xODYsOCArMTg2LDEx
IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvamF2YXNjcmlwdCJfcywgIlVURi04Iik7CiAg
ICAgfQogCi0gICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3Nj
cmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHNpemUpKTsKKyAgICBpZiAoIWJ1ZmZlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgYnVm
ZmVyLmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgICAgICBtX3Nj
cmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6
ZSgpKSk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
aAppbmRleCA0NGZjMDY4NWZhMGZlZGM4NzQyMTkxNmU5MTNhNjc0YjFjMGZkYmVhLi43ZTgxOGYz
NDEzZGEyOWY4NjFlMTAwMzk5MWU4ZDUzODkyMzQ2ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVk
aXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZh
aWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IDQxZDgyMzUwMjQ3NDdiNmZjNGEzYWM1
NDhlMTMzNGVkNmNiNWVmN2EuLjgxNGViMzIwZDRlNzQ4YTI5YWUwOTEzNWFmYzFkYTVmMzc1MTVl
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEyMCwxNSArMTIw
LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9s
aWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKQordm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeSk7CiAKICAg
ICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9y
eSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90
IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVt
Q2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBl
bmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6
ZSgpICsgYnVmZmVyLnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IDFiODQzZGI3ZWMyNzBkYjlkYWI5ZThhMjVm
MmE0OGE4ZWNhZTJhOGEuLjlhZGNhNjA1ZTcyODBiYjdiMzRjZTc0NGQ4Nzg4YmJiNDQ4OTI0ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IDQxNjY4YTViMWNkNzM4Njk2N2I4
ZmQ5NzNlOTY3MzJlY2E5MDdlZGMuLjA3NzJhZjFhODZkMjI0MTdiZjExZjE2YmQ2YjdiNTgwZmU1
N2E3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBO
U011dGFibGVVUkxSZXF1ZXN0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZWdpc3Ry
YWJsZURvbWFpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRM
Uyhjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxv
YWQoRG93bmxvYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDQ3NzFmZGU5MjBkNmI5OGU4
M2ZjMjlkZDNhYWY5N2EwYTZkOWE4ODAuLjY0OWI1Y2E3OGM2ODc1ZWNkZTBkM2Q0MzZmOTU5MGRi
NTE3OWQwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNDQzLDEyICs0NDMsMTIgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXIKICAgICAgICAgbV9jbGllbnQtPmRpZENvbXBsZXRlV2l0aEVy
cm9yKGVycm9yLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIFdURkVtaXRTaWducG9zdCht
X3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZlZCAlemQgYnl0ZXMiLCBkYXRhLT5zaXpl
KCkpOworICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJyZWNl
aXZlZCAlemQgYnl0ZXMiLCBkYXRhLnNpemUoKSk7CiAKICAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgbV9j
bGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEpOwogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0Nv
Y29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFdlYktpdDo6UmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwu
Y3BwCmluZGV4IDg0NjY5ZTIwOWQ3N2JmNTJhMzZhZmUyYTdkYWIyNTJhNjkwMGRjZjcuLjEzZmNj
N2JkNDhhNTVhMDkzOTEyOTI2YmE0NDg0Y2Y1ZTM1NTEzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TYW1l
U2l0ZUluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8cGFsL3RleHQv
VGV4dEVuY29kaW5nLmg+CkBAIC0xNzIsMTMgKzE3MywxMyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a0N1cmw6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxS
ZXNwbwogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCi12b2lkIE5ldHdvcmtE
YXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpj
dXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgaWYgKHN0YXRlKCkg
PT0gU3RhdGU6OkNhbmNlbGluZyB8fCBzdGF0ZSgpID09IFN0YXRlOjpDb21wbGV0ZWQgfHwgKCFt
X2NsaWVudCAmJiAhaXNEb3dubG9hZCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERp
ZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYgbmV0d29ya0xvYWRN
ZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggNDViZTVjZTE4NDMyNTI3MWQ1YzA4MGRkMzRmMWVl
NGExNjY0MmExZi4uZTU1ODY0YTk1ZjdiY2JjMDg1YzQ2NjI4YmZmMDU4NTczNTczMjg2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0Rh
dGFUYXNrQ3VybC5oCkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEN1cmxSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTY4LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29yZTo6Q3VybFJl
cXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZXF1
ZXN0U3RhdHVzID0gUmVxdWVzdFN0YXR1czo6TmV3UmVxdWVzdCk7CiAgICAgdm9pZCBjdXJsRGlk
U2VuZERhdGEoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2ln
bmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6Q3VybFJlc3BvbnNlJiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjdXJsRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShXZWJD
b3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Jiwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mJikgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aAppbmRleCAxN2YwOGMyOGVhMTI1YjU1MDk5M2VlZDI0ZDU5NjNiODUxMGExMTQxLi41N2IxNDZl
NThlN2E5ZGE3MDI2YzlkZWU1MjAzOTU1MWFkYWI3MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJl
YWRlci5jcHAKaW5kZXggOWNkZWQ5NjkzNTE1Y2JkYjkyNWY1OTU0YTE2ZjRiYWYwNjdhMzE2Mi4u
NmMxOWJjOWJhYjY0MTAzMzMwMDczYjQxYzVhZTFkOGVkMDFjM2I3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFGb3JtYXRSZWFkZXIuY3BwCkBAIC0xODUsOSArMTg1LDkgQEAgdm9pZCBNZWRpYUZvcm1hdFJl
YWRlcjo6ZGlkUGFyc2VUcmFja3MoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6
YXRpb24KICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAKICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9wYXJzZVRyYWNrc0xvY2sgfTsKLSAgICBBU1NFUlQoIW1fcGFyc2VUcmFja3NTdGF0dXMp
OwotICAgIEFTU0VSVChtX2R1cmF0aW9uLmlzSW52YWxpZCgpKTsKLSAgICBBU1NFUlQobV90cmFj
a1JlYWRlcnMuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fcGFyc2VUcmFja3NTdGF0dXMgfHwg
KG1faW5pdCAmJiBlcnJvckNvZGUpKTsKKyAgICBBU1NFUlQobV9kdXJhdGlvbi5pc0ludmFsaWQo
KSB8fCAobV9pbml0ICYmIGVycm9yQ29kZSkpOworICAgIEFTU0VSVChtX3RyYWNrUmVhZGVycy5p
c0VtcHR5KCkgfHwgKG1faW5pdCAmJiBlcnJvckNvZGUpKTsKIAogICAgIEFMV0FZU19MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAgaWYgKGVycm9yQ29kZSkKQEAgLTIyMSw2ICsy
MjEsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgogICAgIH0KIAogICAgIG1fcGFyc2VUcmFj
a3NDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAgbV9pbml0ID0gdHJ1ZTsKIH0KIAogdm9pZCBN
ZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJvdmlkZU1lZGlhRGF0YShSZWY8TWVkaWFTYW1wbGU+JiYg
bWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRS
ZWFkZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRp
YUZvcm1hdFJlYWRlci5oCmluZGV4IDM3ZTRhZDQyNzZiMTJhZDUxNDNkYzIyOGNkZTk0NzYzODdl
NWM4ODguLjY1MDkzZTllNDZiNDBiNWEzOTc2ZmRlZjI5ZTYxM2M2NDUxZjMxNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1h
dFJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYUZvcm1hdFJlYWRlci5oCkBAIC04Nyw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgVmVj
dG9yPFJlZjxNZWRpYVRyYWNrUmVhZGVyPj4gbV90cmFja1JlYWRlcnMgV1RGX0dVQVJERURfQllf
TE9DSyhtX3BhcnNlVHJhY2tzTG9jayk7CiAgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dn
ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworICAgIGJvb2wgbV9pbml0IHsg
ZmFsc2UgfTsKIH07CiAKIGNvbnN0ZXhwciBNZWRpYUZvcm1hdFJlYWRlcjo6V3JhcHBlckNsYXNz
IE1lZGlhRm9ybWF0UmVhZGVyOjp3cmFwcGVyQ2xhc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBlMTI2NGNlMjFiYTU3ZjJhNDI3NDhlMzNh
MWRhZDg4YTBlMjU4YmMyLi5kNzY3ZmMwNmIzNmYxNTZmZjMxYzM4M2U2NDNkNDM0NGMyMTdhYWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAt
MTY4LDcgKzE2OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgcmV0dXJuIEV4Y2Vw
dGlvblR5cGU6Ok5vbmU7CiB9CiAKLWF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURh
dGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBl
CithdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIApAQCAtMTg3LDExICsxODcsMTEgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRS
ZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEUKICAg
ICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBtX3N5
bmNEYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3N5bmNEYXRhLmFwcGVu
ZChidWZmZXIpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRS
ZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxv
YWRlcklELCBidWZmZXIuZ2V0KCkpLCBtX3dlYlBhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hl
bWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgYnVmZmVyKSwgbV93
ZWJQYWdlSUQpOwogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggZjZmZjQ2ZWVhNWYyOTBi
N2I3ZTNmZTU5MjFkZjlmMTk0YmFjZDExNy4uYzMyMzA2OWIxY2MwMzFmMDI1YjIyYzg1OWEzNTQx
ODhmZGQyMzcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uVHlwZSB3aWxsUGVyZm9y
bVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsICBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4m
Jik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgRXhjZXB0
aW9uVHlwZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOwotICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRDb21w
bGV0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHN0b3AoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAppbmRleCBiNTEzYTI2ODA4ZWFhMThlMzdmNGZk
ZjA0YTIzZDI5NjBiMjczYjJjLi45MjM0YjVjNjUzZjkxZWJhOTEwZmJkZjliZTFlMjJhMDJjMTFj
Njc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCkBAIC03MiwyMCArNzIsMTcgQEAg
dm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFTZW50KFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIHVuc2lnbmUKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRhU2VudChtX2lkLCBieXRlc1NlbnQsIHRv
dGFsQnl0ZXNUb0JlU2VudCksIDApOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94
eTo6ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6
ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hh
cmVkTWVtb3J5OjphbGxvY2F0ZShsZW5ndGgpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hh
cmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGJ1ZmZlcik7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2hhcmVkTWVtb3J5UHRyID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKTsKLSAgICBtZW1jcHkoc2hhcmVkTWVtb3J5UHRy
LCBkYXRhLCBsZW5ndGgpOwotCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAg
IHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7CiAgICAgLy8gVGFrZSBvd25lcnNoaXAgb2Ygc2hhcmVkIG1lbW9yeSBh
bmQgbWFyayBpdCBhcyBtZWRpYS1yZWxhdGVkIG1lbW9yeS4KICAgICBoYW5kbGUudGFrZU93bmVy
c2hpcE9mTWVtb3J5KE1lbW9yeUxlZGdlcjo6TWVkaWEpOwotICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNlaXZlZChtX2lk
LCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KGxlbmd0aCkgfSksIDApOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyLnNpemUoKSB9KSwgMCk7
CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjphY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaAppbmRleCA0N2VhODY2
NzFiMTNkMTM5NWMzZGFkOWJkYTc5YWJmNjE2Y2JhMTc5Li45NDk0NjQ1MjJjMjYzZTZhNWU4MDcz
Zjc0ZTlkMjQzNGJhYTkzOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKQEAgLTQ3LDcg
KzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3Bv
bnNlKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2b2lkIGRhdGFTZW50KFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBm
aW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGxvYWRGaW5p
c2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBkNzFhZTVlMGE5YWYzZDll
ZTNhNTFkOGZjZjUwZmU1MzU5YjM5MGI3Li43NDkxOTBkMTliMGZhMWNlMGI1MTFlODQyMDcyNTYw
MDY5MTE4NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
Q29weS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldl
YkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC0yMDAsMTYgKzIwMSwxNSBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIExPRyhOZXR3b3JrLCAi
KFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBzaXplICVs
dSBmb3IgJyVzJyIsIGRhdGEuc2l6ZSgpLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxh
dGluMSgpLmRhdGEoKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdO
ZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50
aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1f
aW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZp
ZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRl
ZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhd
KCkgbXV0YWJsZSB7CisgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVM
b2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAgICAgICAgZGlkUmVjZWl2
ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSwgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTIxOCw3ICsyMTgsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgICAgICBXRUJSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5n
IGRhdGEiKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS5zaXplKCk7CiAKLSAgICBt
X2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIGF1dG8gYnVmZmVyID0gZGF0
YS5idWZmZXIoKSA/IFJlZiB7ICpkYXRhLmJ1ZmZlcigpIH0gOiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
b2FkTWV0cmljcykKQEAgLTMwNiw3ICszMDcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZAog
ICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGlu
MSgpLmRhdGEoKSk7CiAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2Vp
dmVSZXNvdXJjZToiKTsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgaWYg
KCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBm
cm9tIFNoYXJlYWJsZVJlc291cmNlIHNlbnQgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzLiIpOwpA
QCAtMzIzLDcgKzMyNCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNv
dXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAKICAgICAvLyBPbmx5
IHNlbmQgZGF0YSB0byB0aGUgZGlkUmVjZWl2ZURhdGEgY2FsbGJhY2sgaWYgaXQgZXhpc3RzLgog
ICAgIGlmICh1bnNpZ25lZCBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1f
Y29yZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgYnVm
ZmVyU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgbV9jb3JlTG9hZGVy
LT5kaWRSZWNlaXZlRGF0YShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgYnVmZmVyU2l6ZSwgRGF0
YVBheWxvYWRXaG9sZVJlc291cmNlKTsKIAogICAgIGlmICghbV9jb3JlTG9hZGVyKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuaAppbmRleCBhMjJlNjJmMjhiNWZhNGNmYzkxYWE1ZTVjZTgyY2EyN2Fl
MjZhZDUzLi5hYzU0MjJmYzA2NzEwYmQwZTA4N2UwZjQ0MDllZDk0MDE3YzBjZjE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBGb3JtRGF0YVJl
ZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTgwLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkU2VuZERh
dGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRp
ZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsK
ICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZvaWQgZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KaW5kZXggMDJhMTRmNTlh
MzA0NzQ0YzJkMTgzZWE3OWU5OWViYWViNGNmYmJhMi4uZGFhMjRkMjdjNzFhODNjZjdjMGYxNjhk
YTI2YTQ5YjQ4NzY5MjYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcg
KzI0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIFdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSByZWRpcmVjdFJlc3BvbnNlKQogICAgIERpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwg
dWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KQogICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZFJl
Y2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKQogICAgIERpZEZpbmlzaFJlc291cmNlTG9hZChXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKQogICAgIERpZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKICAgICBEaWRGYWlsU2VydmljZVdvcmtlckxvYWQoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA4ZDJjNWYzZTI1Y2ExYTIzNzhlNWUzMDA1
ZDc1NDkyYmVhZjBiMWVhLi4yYjdlNGQyYzIwZmRkMTk5ODgyNzJkYThiZmNjNWE2MTg2YzZkM2Vl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5oCkBAIC02NSw2ICs2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFYT2JqZWN0
Q2FjaGU7CiBjbGFzcyBFbGVtZW50Owogc3RydWN0IFBsdWdpbkluZm87CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTc2LDExICsxNzcsMTEgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNv
bnN0IFN0cmluZyYgcmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVz
dCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJl
c3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsgfQogICAgIHZvaWQgc3RyZWFt
RGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0
YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZp
bmFsOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmlu
aXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRG
YWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgdm9p
ZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwg
dWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBX
VEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKKyAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIGZp
bmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgZmlu
YWw7CiAgICAgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBmaW5h
bDsKQEAgLTM2Miw3ICszNjMsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgICAgICB2b2lkIGRp
ZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhX
ZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBlNWZh
MDcxMDlhOTMxODQ1MzlmYjFlMjQ3MGEzZjkzODZkNDMxNTU4Li5mYTZjZTZmNjlmYzAyZjcwMWY4
ODUxMzg4NDc1ZGVmM2YyNDMxNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTk0LDYgKzk0LDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvU2Nyb2xsQW5pbWF0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5oPgogI2ltcG9y
dCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KQEAgLTExOTEsNyArMTE5Miw3IEBAIHZv
aWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNw
b25zZShOZXRzY2FwZVBsdWdJblN0CiAgICAgfQogfQogCi12b2lkIFBERlBsdWdpbjo6UERGUGx1
Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgY291bnQpCit2b2lkIFBE
RlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgaWYgKCFtX3BkZlBsdWdpbikKICAgICAgICAgcmV0dXJuOwpAQCAtMTIwMCw3ICsx
MjAxLDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlk
UmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW0KICAgICBpZiAoIXJlcXVlc3QpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHJlcXVlc3QtPmFkZERhdGEoZGF0YSwgY291bnQpOworICAgIHJl
cXVlc3QtPmFkZERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBQREZQ
bHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJikKQEAgLTE3MTgsMTUg
KzE3MTksMTUgQEAgdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiwgdWludDMyX3QKICAgICAgICAgbV9pc1Bvc3RTY3Jp
cHQgPSB0cnVlOwogfQogCi12b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQ
REZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbUlELCBzdHJl
YW1JRCA9PSBwZGZEb2N1bWVudFJlcXVlc3RJRCk7CiAKICAgICBpZiAoIW1fZGF0YSkKICAgICAg
ICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAgIENG
RGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnl0ZXMsIGxlbmd0aCk7Ci0gICAgbV9zdHJl
YW1lZEJ5dGVzICs9IGxlbmd0aDsKKyAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCks
IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fc3RyZWFtZWRCeXRlcyArPSBi
dWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkRmluaXNoTG9hZGlu
Zyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTE3NjMsMTQgKzE3NjQsMTQgQEAgdm9pZCBQREZQbHVn
aW46OmVuc3VyZURhdGFCdWZmZXJMZW5ndGgodWludDY0X3QgdGFyZ2V0TGVuZ3RoKQogICAgICAg
ICBDRkRhdGFJbmNyZWFzZUxlbmd0aChtX2RhdGEuZ2V0KCksIHRhcmdldExlbmd0aCAtIGN1cnJl
bnRMZW5ndGgpOwogfQogCi12b2lkIFBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6bWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIG1fZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0
YWJsZSgwLCAwKSk7CiAKLSAgICBlbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRl
cyArIGxlbmd0aCk7Ci0gICAgbWVtY3B5KENGRGF0YUdldE11dGFibGVCeXRlUHRyKG1fZGF0YS5n
ZXQoKSkgKyBtX3N0cmVhbWVkQnl0ZXMsIGJ5dGVzLCBsZW5ndGgpOwotICAgIG1fc3RyZWFtZWRC
eXRlcyArPSBsZW5ndGg7CisgICAgZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aChtX3N0cmVhbWVkQnl0
ZXMgKyBidWZmZXIuc2l6ZSgpKTsKKyAgICBtZW1jcHkoQ0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIo
bV9kYXRhLmdldCgpKSArIG1fc3RyZWFtZWRCeXRlcywgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1ZmZlci5zaXplKCk7CiAKICNpZiBIQVZF
KElOQ1JFTUVOVEFMX1BERl9BUElTKQogICAgIC8vIEtlZXAgb3VyIHJhbmdlcy1sb29rdXAtdGFi
bGUgY29tcGFjdCBieSBjb250aW51b3VzbHkgdXBkYXRpbmcgaXRzIGZpcnN0IHJhbmdlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDFkODQ0ODA1ZjRjMTBl
OTNmZWRjYWJkZWVjMjFkZDM1ZGRmODgyMDIuLmU0ZDYyZjRiZWE5YmZjMmZhODBlZjRkNmU5MGM1
Y2NmMDY3OTRmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5o
CkBAIC01NCwxMiArNTQsMTMgQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRWxlbWVu
dDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW50UG9pbnQ7CiBj
bGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNjcm9sbGJhcjsKLWNsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMTYwLDcgKzE2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBh
IHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5n
dGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qg
c3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpID0gMDsKIAogICAgIC8vIFRl
bGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gaGFzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAg
dmlydHVhbCB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpID0g
MDsKQEAgLTE3Myw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgdGhl
IG1hbnVhbCBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFs
U3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhh
dCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgbWFudWFs
U3RyZWFtRGlkRmluaXNoTG9hZGluZygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNTM0ZGE1MmQ0N2Q2Mjg1MGUyMDVmZjll
OTljMzBiMzdkM2JjYmExMi4uMDM0NGY0YmUyM2E0Mzc2NzE5Nzc4OTk5N2Q3NjM3YTIwMzFiN2Vh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIC8vIE5ldHNjYXBlUGx1Z2luU3Ry
ZWFtTG9hZGVyQ2xpZW50CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1
aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogCkBAIC0yMzUsOSArMjM1LDkgQEAgdm9pZCBQbHVn
aW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IFIKICAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UobV9zdHJlYW1JRCwgcmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1v
ZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dl
c3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2
ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywg
aW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewot
ICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKG1fc3RyZWFt
SUQsIGJ5dGVzLCBsZW5ndGgpOworICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURp
ZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6
U3RyZWFtOjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpIApAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFu
dWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKICAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNl
VVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBl
LCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAotdm9pZCBQbHVn
aW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGlu
dCBsZW5ndGgpCit2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVs
bCBoZXJlIGlmIGl0IGZhaWxlZCB0byBpbml0aWFsaXplLgogICAgIGlmICghbV9wbHVnaW4pCkBA
IC0zODIsMTEgKzM4MiwxMSBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0lu
aXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVh
bFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgbV9tYW51YWxTdHJl
YW1EYXRhLmFwcGVuZChieXRlcywgbGVuZ3RoKTsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRh
LmFwcGVuZChidWZmZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wbHVnaW4t
Pm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGJ5dGVzLCBsZW5ndGgpOworICAgIG1fcGx1Z2lu
LT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShidWZmZXIpOwogfQogCiB2b2lkIFBsdWdpblZp
ZXc6Om1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCkKQEAgLTExNzEsOSArMTE3MSw5IEBAIHZv
aWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKIAogICAgIC8vIERlbGl2ZXIg
dGhlIGRhdGEuCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAgICBhdXRvIGJ1
ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCk7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0
byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKLSAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkp
OworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEudGFrZSgpLT5mb3JFYWNoU2VnbWVudEFzU2hh
cmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAgICBtYW51YWxMb2FkRGlk
UmVjZWl2ZURhdGEoYnVmZmVyKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgaWYgKG1fbWFu
dWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGY2NjMxMmE4MGFj
ZDFlMDM1MzEwZGZhYTNhNWYzYTE3YjcyYWFlNTUuLjI1NjE1Y2IzMGYyMjY0NjM5MjQ0NDg4ZjJi
ZDdjNDEyMjc5MDc5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNCZWluZ0Rl
c3Ryb3llZCgpIGNvbnN0IHsgcmV0dXJuICFtX3BsdWdpbiB8fCBtX3BsdWdpbi0+aXNCZWluZ0Rl
c3Ryb3llZCgpOyB9CiAKICAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgbWFudWFsTG9hZERpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIG1h
bnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAg
ICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBtYW51YWxMb2Fk
RGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZWU0MGZiOTU4NWU3OWQ4NmIzY2ZkMmY1Nzll
ZDQ2ZTYxYjllYzYzZS4uMzE0ODJlYjNiMzY4ZDc4YTYxYTdlYzFkMjRjNTk4MTBiYzkxZWQ4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTcyLDcgKzcyLDcg
QEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNl
LCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVu
dGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1
cm47CkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICBpZiAo
bV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7CiAgICAgICAg
IGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3Bv
bnNlRGF0YSkpCiAgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIoKTsKLSAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURh
dGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZm
ZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAobV9pc0Rvd25sb2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRh
IHsgYnVmZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwg
bV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0
aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAg
ICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxp
bnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJl
Y2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9
LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJiBmb3Jt
RGF0YSkKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mCiAgICAg
fSk7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2
ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1faXNEb3dubG9hZCkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsg
ZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRp
Zmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0
X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
RGlkUmVjZWl2ZURhdGEgeyB7IGRhdGEsIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6
ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyICwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIp
OwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZpbmlzaEJs
b2JMb2FkaW5nKCkKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICAgICAgaWYgKG1f
ZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKGNvbnN0
IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZlRGF0YSgq
YnVmZmVyLmdldCgpKTsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmNvcHkoKS0+bWFr
ZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRp
ZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGU5ODdlMTlhYzhiNzM4ODcxYWFk
ODJiNGIzODU2Mjk2OGEyYjZjOWMuLjA5NDAwZGYwY2U3MjVmMzlhOGIxMWQ5MzVlMTQ1NGUzOTlm
NWEyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTUwLDcgKzUw
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVj
dGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8V2ViQ29y
ZTo6Rm9ybURhdGE+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2goKSBmaW5hbDsKQEAgLTYw
LDggKzYwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnZlcnRGZXRjaFRvRG93bmxvYWQoKSBm
aW5hbDsKIAogICAgIHZvaWQgY2xlYW51cCgpOwotICAgIAotICAgIHZvaWQgZGlkUmVjZWl2ZUJs
b2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOworCisgICAgdm9pZCBkaWRSZWNl
aXZlQmxvYkNodW5rKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlk
RmluaXNoQmxvYkxvYWRpbmcoKTsKIAogICAgIHN0cnVjdCBCbG9iTG9hZGVyIGZpbmFsIDogV2Vi
Q29yZTo6RmV0Y2hMb2FkZXJDbGllbnQgewpAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyB9Ci0gICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
IGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRh
KSBmaW5hbCB7IGNsaWVudC0+ZGlkUmVjZWl2ZUJsb2JDaHVuayhkYXRhKTsgfQogICAgICAgICB2
b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsg
Y2xpZW50LT5kaWRGYWlsKGVycm9yKTsgfQogICAgICAgICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5h
bCB7IGNsaWVudC0+ZGlkRmluaXNoQmxvYkxvYWRpbmcoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCAxNGEwODNjYTIwN2E5MDYzY2Y4MGIxZTdlOTY3MGE0ODdjZjRk
Mzk5Li5lZDRmNWRlOWQ1ZTU2MThkNDMyNDU1MDgyZjVkYTE4OGFiZjliZjRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExNTIsMTAgKzExNTIsMTAgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogICAgIHdlYlBh
Z2UtPmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KG1fZnJhbWUpOwogfQogCi12b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBpZiAoIW1fcGx1Z2luVmlldykKLSAgICAgICAgbG9hZGVyLT5jb21t
aXREYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhKTsK
IAogICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50
LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2VsIHRoZSBXZWJLaXQgbG9hZC4KICAgICAv
LyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIGFsbCBwb3J0cy4gPGh0
dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+LgpAQCAtMTE3Nyw3ICsxMTc3LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCB1aW50OF90KgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2hhc1NlbnRSZXNw
b25zZVRvUGx1Z2luVmlldyA9IHRydWU7CiAgICAgfQotICAgIG1fcGx1Z2luVmlldy0+bWFudWFs
TG9hZERpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tYW51
YWxMb2FkRGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAppbmRleCBiYjUyOWQzYWVjNGUyYzc1ZjFhN2RlOTFiMTBiNTU4MmQ0NTIy
YjQyLi4xZDMwYmMzOTM4M2FmZmYyY2E5YzI4NzUzZGQyZDdlYzJiMjY0OTFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTUyLDcgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlcGxh
Y2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAKLSAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2
b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciopIGZpbmFsOwogICAgIAogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlz
dG9yeSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAK
aW5kZXggYTIwNWUwMDFjYTcxNTgyMDkxM2E4MWFlNGE4MzY1MzBmOWEwZjY0OC4uNzJlMzU1NGM4
ZTBhYTY5MGE2ZWM1NzgwMTc2ZjE5ZTBiOGQ3MGQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYlByZXZpZXdMb2FkZXJD
bGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29u
c3QgU3RyCiAKIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQcmV2
aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdl
KG1fcGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oCmluZGV4IDBkYzE2N2U1YjdiYzNiMDNlZjM5MzFlYWIzNTZjNzgyNzkyOTUy
OWUuLjY0OWJjODMxOWMyNzg2ZjAxZDYxN2MxMTE5OWRiMGM2YzA3N2ZhNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQYXNz
d29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5NDJlZGM2MjNhNGU2NTNi
YjE4OGFlZTA1MDY0NGEzZjRhMDMyZTg5Li5mODlmZjcyYTBkMzFiZWMxMWVmODAyOTdlZmJhOTJj
MmE3YmM2NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNzA1NywxMiArNzA1NywxMiBAQCB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tE
aWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZAogICAg
IGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodGFza0lkZW50aWZpZXIsIHJlc3BvbnNl
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJM
U2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhKQordm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2Vi
VVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5JiBkYXRhKQogewogICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VS
TFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOwogICAgIEFTU0VS
VChoYW5kbGVyKTsKIAotICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRp
ZmllciwgZGF0YS5zaXplKCksIGRhdGEuZGF0YSgpKTsKKyAgICBoYW5kbGVyLT50YXNrRGlkUmVj
ZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuYnVmZmVyKCkgPyAqZGF0YS5idWZmZXIoKSA6
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnVybFNj
aGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVy
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhOTRiNWI5ZDdmZTMyZjI0YTg2ZGFhYWQ0NDg0MmIw
Y2RkMGFlYjJmLi40ODg2NjcwN2M0NjEzZDlhN2NkMzUyMTVkZmNhOTIzYzY5NzliZWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xODQsNiArMTg0
LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsK
IGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTg5Niw3ICsxODk3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHVybFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdlYlVSTFNjaGVtZUhhbmRs
ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViVVJM
U2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmll
ciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVI
YW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJ
ZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHVybFNjaGVt
ZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJV
UkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAg
ICB2b2lkIHNldElzVGFraW5nU25hcHNob3RzRm9yQXBwbGljYXRpb25TdXNwZW5zaW9uKGJvb2wp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KaW5kZXggYjI3MjI5NDcxZWFlODZlZTU5ODE5ODNkZDU3YjVlN2E4MjkxY2Q0Yi4u
YmRhNWY1MGFkZDIzYTk2NzQwZTg5ZDczM2Q3OWMxODdmMDUyYmUxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01
NjQsNyArNTY0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBVUkxTY2hlbWVUYXNr
V2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlm
aWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
dGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBwcm9wb3NlZFJlcXVlc3QpIC0+IChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgYWN0dWFsUmVxdWVzdCkgQXN5bmMKICAgICBVUkxTY2hlbWVUYXNrRGlkUGVyZm9y
bVJlZGlyZWN0aW9uKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxl
cklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkKICAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKLSAgICBVUkxTY2hlbWVUYXNrRGlk
UmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVy
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlm
aWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBVUkxTY2hlbWVU
YXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBo
YW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJ
ZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkKICAgICBVUkxTY2hlbWVUYXNr
RGlkQ29tcGxldGUoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVy
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogCiAgICAgU2V0SXNTdXNwZW5kZWQo
Ym9vbCBzdXNwZW5kZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcAppbmRleCA2ZDhkMGNmMjc4
NGVkMzA1NjYyNWM3ZjZlODQ2YTkzYTcxMWNiYWNkLi42MTZlZGEwOGYwYjhmY2FiMmQ1N2ZjNDc1
MzI5MTA3YjgxNWNkMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKQEAgLTk2LDEzICs5
NiwxMyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZQogICAgIHRhc2stPmRpZFJlY2VpdmVSZXNw
b25zZShyZXNwb25zZSk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNr
RGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVu
dGlmaWVyLCBzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkKK3ZvaWQgV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7
CiAgICAgYXV0byogdGFzayA9IG1fdGFza3MuZ2V0KHRhc2tJZGVudGlmaWVyKTsKICAgICBpZiAo
IXRhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIHRhc2stPmRpZFJlY2VpdmVEYXRhKHNpemUs
IGRhdGEpOworICAgIHRhc2stPmRpZFJlY2VpdmVEYXRhKGRhdGEpOwogfQogCiB2b2lkIFdlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZENvbXBsZXRlKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eS5oCmluZGV4IDU4YmVjYzE3YjVkODU5ODc0OTg4NGQzMDI1MTY4
OWNjY2MxNzY5M2YuLmFiMjBiZDU3M2FhNGFmYzE1ODA1OTBmMjcwNDY2MzAwNjg3NzQwZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhh
bmRsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eS5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNTksNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRhc2tEaWRQZXJm
b3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9p
ZCB0YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgdGFza0RpZFJl
Y2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgc2l6ZV90LCBjb25z
dCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lkIHRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwog
ICAgIHZvaWQgdGFza0RpZENvbXBsZXRlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgdGFza0RpZFN0b3BM
b2FkaW5nKFdlYlVSTFNjaGVtZVRhc2tQcm94eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAppbmRl
eCAzNjA2YmJkYzY1MjE1ZGRjYTkyNjEzYTgxMDdkYWIxYjExZWNiNjU2Li45ZTcyZDg0Yzk3ZGY2
ZDI5NzE0YTgzYzUxYWMxNzc2M2U1ZmI2NTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKQEAgLTE0
MCwyMSArMTQwLDIxIEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgfSk7CiB9CiAKLXZv
aWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShzaXplX3Qgc2l6ZSwgY29u
c3QgdWludDhfdCogZGF0YSkKK3ZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZl
RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKCFoYXNM
b2FkZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbXBsZXRp
b25IYW5kbGVyKSB7CiAgICAgICAgIFdFQlVSTFNDSEVNRVRBU0tQUk9YWV9SRUxFQVNFX0xPRygi
ZGlkUmVjZWl2ZURhdGE6IFJlY2VpdmVkIGRhdGEgZHVyaW5nIHJlc3BvbnNlIHByb2Nlc3Npbmcs
IHF1ZXVpbmcgaXQuIik7Ci0gICAgICAgIHF1ZXVlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGRhdGFWZWN0b3IgPSBWZWN0b3IgeyBkYXRhLCBzaXplIH1dIHsKLSAg
ICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGFWZWN0b3Iuc2l6ZSgpLCBkYXRhVmVjdG9yLmRh
dGEoKSk7CisgICAgICAgIHF1ZXVlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGRhdGEgPSBSZWYgeyBkYXRhIH1dIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRh
KGRhdGEpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJlZiBw
cm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKLSAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRh
KGRhdGEsIHNpemUsIDAsIERhdGFQYXlsb2FkVHlwZTo6RGF0YVBheWxvYWRCeXRlcyk7CisgICAg
bV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShkYXRhLCAwLCBEYXRhUGF5bG9hZFR5cGU6OkRh
dGFQYXlsb2FkQnl0ZXMpOwogICAgIHByb2Nlc3NOZXh0UGVuZGluZ1Rhc2soKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFz
a1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVU
YXNrUHJveHkuaAppbmRleCA3NTUwODc5NDE4MjBmZWVmYzVkMDEyNzE1OGMwNjRjZTI1OGEwODM1
Li5lZDkxZjM4ZTNhZGQxM2JlMTljYjIxNzdlZDQ0OGZkZDJmYTc5NTQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJv
eHkuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDcgKzU2
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKHNpemVfdCwgY29uc3QgdWludDhfdCogZGF0YSk7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICB2
b2lkIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIFdl
YkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNv
cmVTdXBwb3J0L1BpbmdIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBv
cnQvUGluZ0hhbmRsZS5oCmluZGV4IGEyNTU2MGExMGMyODgyZTFhYmQxNzg0NTY5NDg2ZWExM2Vk
ODk2ZDQuLjMyODljMjM2MjlhMGRjMzFmYzBjMTk5ZWRmMTMyOTdiZWQ2MWExOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAKQEAgLTczLDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKICAgICAgICAgcGluZ0xvYWRDb21wbGV0ZSh7IH0sIHJlc3BvbnNlKTsKICAgICB9Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBs
ZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29t
cGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgcGluZ0xv
YWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgcGluZ0xvYWRD
b21wbGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmluYWwgeyByZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOTU5ZDc0OGI1NmJl
MTA3NmJkOTc3OTkyMmNkMzU2ZDIxYTY4MTc0ZS4uOGRmOTkzZjJkNzc1YjZjOTNkMmU4ZjA5OTBm
NzJmODVmNjE4ZTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC00OCwxMCArNDgs
MTIgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDYWNoZWRGcmFtZTsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hh
cmVkQnVmZmVyOwogfQogCiBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkZyYW1lTG9h
ZGVyQ2xpZW50PiB7CkBAIC0xNTEsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxS
ZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkUmVwbGFjZU11
bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQg
Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmlu
YWw7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA0M2U2M2Y0NTYzNDVlY2YxYzkyNGU1Yjc3
MmE2ZjU0MTczYTkxNDJiLi44N2E1ZDY1N2Y3YjczM2QwN2M1ZGI2MDFmNjk4MWY5MDQ5NzcxMzkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtOTkyLDEwICs5OTIsOSBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiAjZW5k
aWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpCiB7
Ci0gICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVz
Tm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAg
W2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOm5zRGF0YS5nZXQoKV07CisgICAgW2Rh
dGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCld
OwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKQEAgLTIwMTIsNyArMjAxMSw3IEBAIFJlZlB0cjxX
ZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9maWxlUGF0aDsK
ICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4gbV9maWxlSGFuZGxlOwogCi0gICAgICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGF1dG8gZGF0YUFycmF5ID0gYnVmZmVyLmNyZWF0ZU5TRGF0YUFycmF5KCk7CiAgICAg
ICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBkYXRhQXJyYXkuZ2V0KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCAwZTA1YjE4ZDY5NjM5ODI4
ZDQzM2M0NmQ3OTIxY2Y3MGRlN2RmOWQxLi4yYTg3NzBkZjgwYmI5ZjcwYzEwYmI5MWY5NTIwZDFl
MTljODU5ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KQEAgLTk3Nyw3ICs5NzcsNyBAQCAtICh2b2lkKV9jb21taXREYXRhOihOU0RhdGEgKilkYXRh
CiAgICAgYXV0byogZG9jdW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpOwog
ICAgIGRvY3VtZW50LT5zZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoX3ByaXZhdGUtPnNob3VsZENy
ZWF0ZVJlbmRlcmVycyk7CiAKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5jb21taXREYXRhKChjb25zdCB1aW50OF90KilbZGF0YSBieXRlc10sIFtk
YXRhIGxlbmd0aF0pOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCktPmNvbW1pdERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSkp
OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZmIyNTgzZmU5
NzI2NGM3M2VlYjIzZWJiNGQzOTkwYjNiODRhMDdmMy4uMTI3MGU1N2RkOTViMGQwMDAzYjVlNTY3
N2Q0NzQyYTEyNTUyZDg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNjQx
LDkgKzY0MSw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGxlKERv
Y3VtZW50TG9hZGVyKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
b21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKLSAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBsb2Fk
ZXItPmNvbW1pdERhdGEoZGF0YSk7CiAKICAgICAvLyBJZiB0aGUgZG9jdW1lbnQgaXMgYSBzdGFu
ZC1hbG9uZSBtZWRpYSBkb2N1bWVudCwgbm93IGlzIHRoZSByaWdodCB0aW1lIHRvIGNhbmNlbCB0
aGUgV2ViS2l0IGxvYWQuCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgYmUgc2hhcmVk
IGFjcm9zcyBhbGwgcG9ydHMuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzQ4NzYyPi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDA5NWIyNTM1YTY4NzU0N2JkNzg4NDZmOTA3NmFlNmM3ZDAx
NjI5NDguLjc5MjZmZDM2NzE4MDllODM4NDdhNDgwMzFhOGI5MGM2MzhmYWY3ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmcoKSkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNv
bW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGZp
bmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwogCiAgICAg
dm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZTBl
NjIwNDZhNjQ3NmExZjI1MmRlOTllNGY0NzEwMDdiZGI5NGE1Li44YTU5NjkyODhiYWRiNmNhMTY2
NDk2MDdlZTM5NDdhOTg1MThiOWMwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMTItMjggIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBTaGFyZWRCdWZmZXI6OnRha2VEYXRh
KCkgaXMgc3RpbGwgZGFuZ2Vyb3VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzQ3MjQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODY5NTcyMzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVF9GKToKKworMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIG1ha2UgU2hhcmVkQnVmZmVyOjpjb3B5KCkgcmV0dXJuIGEgY29u
dGlndW91cyBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNDYyMgorICAgICAgICByZGFyOi8vcHJvYmxlbS84NjgyOTUyNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUX0YpOgorCiAyMDIxLTEyLTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVthMTF5XSBTdG9wIHNldHRpbmcgbWFuYWdl
cy1kZXNjZW5kYW50cyBvbiB3ZWIgcHJvY2VzcyByb290IG9iamVjdCB3aXRoIEFUU1BJCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmlu
ZGV4IGYxMmI5ZjA4MzYwNTU4OTRjZDY1YTgyM2Q1ZmY2ZTM0Yjk4YWQ1OTguLjAxYjZjZTQ2MWNj
ZDM2NjY0NjUzN2E0Njc4NjAyOThkZjU1ODA0ZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAg
c3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVm
ZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogewogICAgIC8vIGV4cGVjdGVkIGlzIG51bGwgdGVybWlu
YXRlZCwgYnVmZmVyIGlzIG5vdC4KICAgICBzaXplX3QgbGVuZ3RoID0gc3RybGVuKGV4cGVjdGVk
KTsKLSAgICBFWFBFQ1RfRVEobGVuZ3RoLCBidWZmZXJMZW5ndGgpOworICAgIEFTU0VSVF9FUShs
ZW5ndGgsIGJ1ZmZlckxlbmd0aCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkKICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlcltpXSwgZXhwZWN0ZWRbaV0pOwogfQpAQCAt
MzAzLDYgKzMwMywyNyBAQCBURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQp
CiAgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCitURVNUX0YoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlclRlc3QsIGNvcHlJc0NvbnRpZ3VvdXMpCit7CisgICAgRVhQRUNUX1RSVUUoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKS0+Y29weSgpLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLT5jb3B5KCktPmlzQ29udGlndW91
cygpKTsKKyAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1w
bGUgdGVzdC4iOworICAgIEVYUEVDVF9UUlVFKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRl
eHQsIHN0cmxlbihzaW1wbGVUZXh0KSktPmNvcHkoKS0+aXNDb250aWd1b3VzKCkpOworICAgIEVY
UEVDVF9GQUxTRShGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3Ry
bGVuKHNpbXBsZVRleHQpKS0+Y29weSgpLT5pc0NvbnRpZ3VvdXMoKSk7Cit9CisKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgZXh0cmFjdERhdGEpCit7CisgICAgY29uc3QgY2hh
ciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKKyAgICBhdXRv
IG9yaWdpbmFsID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKKyAgICBhdXRvIGNvcHkgPSBvcmlnaW5hbC0+Y29weSgpOworICAgIGF1dG8gdmVj
dG9yID0gY29weS0+ZXh0cmFjdERhdGEoKTsKKyAgICBFWFBFQ1RfVFJVRShjb3B5LT5pc0VtcHR5
KCkpOworICAgIEVYUEVDVF9GQUxTRShvcmlnaW5hbC0+aXNFbXB0eSgpKTsKKyAgICBBU1NFUlRf
VFJVRShvcmlnaW5hbC0+aGFzT25lU2VnbWVudCgpKTsKKyAgICBFWFBFQ1RfR1Qob3JpZ2luYWwt
PmJlZ2luKCktPnNlZ21lbnQtPnNpemUoKSwgMHUpOworfQorCiAjaWYgRU5BQkxFKE1IVE1MKQog
Ly8gU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgdW5pdC10ZXN0cyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc2l6ZV90IE4gPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448464</attachid>
            <date>2022-01-05 20:04:09 -0800</date>
            <delta_ts>2022-01-06 05:25:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232424-20220106150404.patch</filename>
            <type>text/plain</type>
            <size>266678</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmVmZDZkNDY3NWVlYTcx
ODdlN2YzMzA4YjFkN2JiNzY3OWNlZjZhOS4uYjk3OGFiMmFmN2FiNzYxOTk2ZjEzZDc0NjI0NDE1
ODFiMGM5NWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyNiBAQAorMjAyMS0xMi0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1
ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBtb2RpZnkgYWxsIGRpZFJlY2VpdmVEYXRhIGFuZCBy
ZWxhdGVkIG1ldGhvZHMgc28gdGhhdCB0aGV5IG5vIGxvbmdlcgorICAgICAgICB1c2UgdWludDhf
dCovaW50IGFuZCBpbnN0ZWFkIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIFdlIGRvIHRoZSBz
YW1lIGZvciBhbnkgaW50ZXJtZWRpYXJpZXMgdXNlZCBieSB0aGUgdmFyaW91cyBkaWRSZWNlaXZl
RGF0YQorICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgIFRoaXMgd2lsbCBmYWNpbGl0
YXRlIG1vdmluZyBuZXR3b3JraW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVQorICAg
ICAgICBwcm9jZXNzIGFuZCBhbGxvd3MgdG8gcmVtb3ZlIHNldmVyYWwgbWVtb3J5IGFsbG9jYXRp
b25zIGFuZCBjb3BpZXMgYXQgdGhlCisgICAgICAgIHByb2Nlc3MgYm91bmRhcmllcy4KKyAgICAg
ICAgV2UgY2FuIG5vdyBjb25zaWRlciB0cmFuc2ZlciB0aGUgdW5kZXJseWluZyBTaGFyZWRNZW1v
cnkgY3JlYXRlZCBpbgorICAgICAgICB0aGUgbmV0d29yayBwcm9jZXNzIGFsbCB0aGUgd2F5IHRv
IHRoZSBHUFUgcHJvY2Vzcy4KKworICAgICAgICBGbHktYnkgZml4OiBjaGFuZ2UgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciB0eXBlIHRvIFNoYXJlZEJ1ZmZlciB3aGVuIGFwcHJvcHJpYXRlLgorCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4gQ292ZXJlZCBieSBhbGwg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keU93bmVyOjpibG9iQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YSk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Up
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRl
bnRGaWx0ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjphZGRE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGRC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVy
Q2xpZW50V3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAg
ICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwYWdl
L0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjp0YWtlRGF0YSk6IFVwZGF0ZSBkdWUgdG8gRGF0YVNlZ21lbnRWZWN0b3JFbnRyeTo6
c2VnbWVudCBiZWluZyBjb25zdAorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlciBjb25zdCk6IEFkZCBjb252ZW5pZW5j
ZSBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0
YVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNo
YXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6IE1h
a2UgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeTo6c2VnbWVudCBjb25zdC4KKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZUNsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJ
ZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93
bmxvYWQ6OmN1cmxEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5k
bGU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6
OmN1cmxEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFN0cmVhbTo6dHJ5VG9S
ZWNlaXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxD
dXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAo
LVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlv
bjpkaWRSZWNlaXZlRGF0YTpsZW5ndGhSZWNlaXZlZDpdKToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2Vk
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0
dHBSZXF1ZXN0Lmg6CisKIDIwMjItMDEtMDUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgTW9kYWwgY29udGFpbmVyIG9ic2VydmVyIHNob3VsZCBkZXRl
Y3QgYW5kIHN1cHByZXNzIGVsZW1lbnRzIHRoYXQgcHJldmVudCB1c2VyIGludGVyYWN0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGUwN2U3ZTYwODExMDUyNDYyM2VlNTBhYTNiN2IyOGY0YWIyYzIxNTQuLjZjYWFi
OTUzNmRjNzliODMwNjRhY2I4ZjQzZjUzNDYzYmU3YjJhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTA1IEBACisyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBuZXR3b3Jr
aW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNlbmRCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNv
bm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxv
YWRUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmxvYWRCb2R5
RnJvbVByZWxvYWRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmg6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKiBTaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlUHJv
eHk6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNj
aGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaDoKKwogMjAyMi0wMS0wNSAgUGVy
IEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTigy
ODc1NTYpOiBEb21haW4gbmFtZSBub3Qgc2hvd24gaW4gQWN0aXZpdHkgTW9uaXRvcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZwppbmRleCA1NzY4MWIyMWE3MzQzOWU5MGJmMjFiYTI0NDk1ODI1OTdlMDE5OTgy
Li5lNjgzYmZkNTJiODVlOGU1MDM1Mjc3MDdjYTRkY2I3OTI1YmI2NjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBh
bmQgcmVsYXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJk
YXI6Ly84NDc0NDY4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oOgorCiAyMDIxLTEyLTE0ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFNoYXJlZEJ1
ZmZlciBjbGFzc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDlmNDNlMmRiNjY1
NzdiNjVlN2FjMTIwMGQ4NzU2NDBhNmUyNDJiOTkuLjNlYTY1YTVkYjk4NjZiY2FkYTYyMDI4YzMx
MDFlYzZkNzg3NDcxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAyMS0xMi0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2lu
ZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29t
bWl0dGVkTG9hZCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmll
d0xvYWRlckNsaWVudCk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAg
KC1bV2ViRnJhbWUgX2NvbW1pdERhdGE6XSk6CisKIDIwMjItMDEtMDUgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBtb3JlIFNESyBjaGVja3Mg
dG8gbGlua2VkT25PckFmdGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAwYjc4
ZjVjZTEwYTkyYzVmODk3YWI4MTY5MDFlOTU5MWI4NjkxYzM4Li40NjAwOWRjODVhMzUzYzNlZDJm
OGY5MzYxOTBmN2QwNDM4OGRjZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjEtMTItMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5l
dHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAyMS0xMi0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYSBVSSBkZWxlZ2F0
ZSBtZXRob2QgdG8gZGVjaWRlIGhvdyB0byBoYW5kbGUgZGV0ZWN0ZWQgbW9kYWwgY29udGFpbmVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcAppbmRleCAyYjVkMTA0NjJiN2E5NDU4YTBhODkyNTc4MjhjNDFiZDkxODhmNWRlLi5mZTZm
NjJiYjc2ZTEyZThkNDhmMWY3OTA1ZjNkZDMzZWZkMjY5YTMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMzc4LDEzICsz
NzgsMTMgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICB9CiB9CiAKLXZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQor
dm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmIChtX3NvdXJjZSkgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKKyAgICAgICAgbV9zb3VyY2UtPmVucXVl
dWUoYnVmZmVyLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQo
YnVmZmVyKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDc5ODA1ZDRhYTU2NGJhMGNmNWFlMTNhMTI0
NDkzZDA2MDMxYWRiYjEuLmNiZWQwZjAzM2Q5MTNjZDFjYmJiYmEwMWI4Mjc0MmUzODQ2MTYzYWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgRmV0Y2hCb2R5Q29uc3VtZXIgY2xv
bmUoKTsKIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsK
KyAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KICAgICBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5k
ZXggNTM1NDBjZmRjNDYwYjQwZjNjYWEyNzY0ZDkzYTExZDQ4NmRmY2EwYS4uMzIxNWJjMTdjMzgx
NDQxOGI3OTc5ZWM2MjIwZDU0YmEzMzUzZWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTI5OCwxMSArMjk4LDEwIEBAIHZvaWQg
RmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkKICAgICBmaW5pc2hCbG9iTG9hZGlu
ZygpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpibG9iQ2h1bmsoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEZldGNoQm9keU93bmVyOjpibG9iQ2h1bmsoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKGRhdGEpOwogICAgIEFTU0VSVCht
X3JlYWRhYmxlU3RyZWFtU291cmNlKTsKLSAgICBpZiAoIW1fcmVhZGFibGVTdHJlYW1Tb3VyY2Ut
PmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpCisgICAgaWYgKCFt
X3JlYWRhYmxlU3RyZWFtU291cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZl
cigpKSkKICAgICAgICAgc3RvcCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmgKaW5kZXggMzFjZjEyYWE3NDk2OGE0NDA4NWMzMjM1Y2NjNTIy
NWQ5OWUxMTg5Yi4uOTM0MzljMWExODFjMjUxZDcwMzA3ZTMxN2IxZWM4YmY1NDM4N2YxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgIkZldGNoTG9hZGVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2Fk
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAwLDcgKzEwMSw3IEBAIHBy
b3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICAvLyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2
b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVu
ayhjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7
CiAgICAgdm9pZCBibG9iTG9hZGluZ0ZhaWxlZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRp
bmcoKTsKQEAgLTExMyw3ICsxMTQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9h
ZGVyQ2xpZW50IEFQSQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEs
IHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGJ1ZmZlcik7IH0KICAgICAgICAgdm9p
ZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRT
dWNjZWVkKCkgZmluYWwgeyBvd25lci5ibG9iTG9hZGluZ1N1Y2NlZWRlZCgpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggMDNmODliNjFj
YTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OC4uNGI0NWJmZDg3NTA0MDZmNmU3ZGE3MThm
OTk4MTY5NDcxYTVlODQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlci5jcHAKQEAgLTE0OCwxMyArMTQ4LDEzIEBAIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
CiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBG
ZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogdmFsdWUsIGludCBzaXpl
KQordm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGJvb2wpCiB7CiAgICAgaWYgKCFtX2NvbnN1bWVyKSB7Ci0gICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBzaXplKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGEoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2NvbnN1bWVyLT5h
cHBlbmQodmFsdWUsIHNpemUpOworICAgIG1fY29uc3VtZXItPmFwcGVuZChidWZmZXIpOwogfQog
CiB2b2lkIEZldGNoTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA0
NjEyZDBlMGUzYTdlZmUzMDYwMzk2YjBkNzVhMmZhM2JjNGVkZGFkLi41ZWVhZWY4MmQxZGYzZWZj
ZWQyMTQwMDNkZjUxODg4NzAzNmY5NzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Ly8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBBUEkuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgdXNlU3Ry
TGVuKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xp
ZW50LmgKaW5kZXggZmVkM2U1ZWFlNzFhNTdjOTUyYWExNzFhZGNjYmRkOWJkMDQ1ZTc4OS4uMTA5
ZTA4ZWNmN2E0N2U3YzAzN2UzMmRjYWFjYWI4NmM4MWMxOGQzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaApAQCAtNDEsNyArNDEsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90Kiwgc2l6ZV90KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2Vl
ZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAK
aW5kZXggYzI1YWIzZWI4M2RjNWFjMGEzYjE3MDI0MGY4MjFhYTA4NGExZDBlYS4uNDI2MjdlMWJl
MDY0ZGZlMWM5MTQ0Yjc0NDQwZTI4NzM1NTYzNWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0zNTgsMTIgKzM1OCwxMiBAQCB2b2lk
IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNvdQogICAgICAgICByZXNwb25zZUNhbGxiYWNrKG1fcmVzcG9uc2Up
OwogfQogCi12b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBBU1NFUlQobV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlIHx8IG1fY29uc3VtZURh
dGFDYWxsYmFjayk7CiAKICAgICBpZiAobV9jb25zdW1lRGF0YUNhbGxiYWNrKSB7Ci0gICAgICAg
IFNwYW4gY2h1bmsgeyBkYXRhLCBzaXplIH07CisgICAgICAgIFNwYW4gY2h1bmsgeyBidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpIH07CiAgICAgICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygm
Y2h1bmspOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQg
RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgYXV0byYgc291cmNlID0gKm1fcmVzcG9uc2UubV9yZWFk
YWJsZVN0cmVhbVNvdXJjZTsKIAogICAgIGlmICghc291cmNlLmlzUHVsbGluZygpKSB7Ci0gICAg
ICAgIG1fcmVzcG9uc2UuYm9keSgpLmNvbnN1bWVyKCkuYXBwZW5kKGRhdGEsIHNpemUpOworICAg
ICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChidWZmZXIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNl
OjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICgh
c291cmNlLmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpIHsKKyAg
ICBpZiAoIXNvdXJjZS5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSkgewog
ICAgICAgICBzdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NjMsNyArNDYzLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1
aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1l
Q2h1bmsoUmVmPEpTQzo6VWludDhBcnJheT4mJiBjaHVuaykKIHsKLSAgICBib2R5KCkuY29uc3Vt
ZXIoKS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPmJ5dGVMZW5ndGgoKSk7CisgICAgYm9k
eSgpLmNvbnN1bWVyKCkuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNodW5rLT5kYXRhKCks
IGNodW5rLT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1l
Qm9keUFzU3RyZWFtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmgKaW5kZXggM2NjOWQxYmVmNjRkMzE0ODc4NzE5NTA4MDQ1YmRhNDgxZDQ3ZTYwZC4uMjc0
NjgwN2NhOGJiYjE4M2IwMzQxMWE5OTQ5YzJmNGQ1ZDU0N2FiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2
YXRlOgogICAgICAgICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOworICAgICAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogCiAgICAgICAgIEZl
dGNoUmVzcG9uc2UmIG1fcmVzcG9uc2U7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIG1f
cmVzcG9uc2VDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCAyN2E2ZDcwMzM0Y2EzMjA2
YTk0ZTkxOTk0MzM2MzdjNGEzMDUyZTdkLi5hNjQxZjgxMDdiNGZkMTc5MTFmZGI5MmJiMzBmNDVl
MmU4MmI1MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0xNzcsMTAgKzE3NywxMCBAQCBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYgcwogCiAvLyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
CiAKLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZy
ZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5n
dGgpOworICAgIG1fZGF0YS5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBIVE1MTW9kZWxFbGVt
ZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCBjZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3
YjA2MzJiZDFlNmU4NTgwM2JlLi4wZDNiZGI3NDlkN2EzMzY4YjNjYTY4YzIxNzMxNjA1OTE1NDlk
MWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICAvLyBDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudCBvdmVycmlkZXMuCi0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CisgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICAvLyBNb2RlbFBsYXllckNsaWVudCBvdmVy
cmlkZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1TaW5rLmgKaW5kZXggZDUxNzNmYmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEz
OS4uZmVlOTg4NDIyMWJiNDNlOGNjMDYyZWFiY2QwYTk5ZWM1NGMwMzQ2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAt
MzUsNyArMzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsK
IGNsYXNzIFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJl
YW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmNwcAppbmRleCA3NGVmNWY0YjhiNDdhNzJhNTU5MDg3ZmFmYTcxNzU2ODhlOGQ1NjQ5Li43
Y2E3MjUwYzRjNzliNTllMzQ4OTRjNjk1NDhmM2YwNzRkOGM3YWQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMTY4
LDE2ICsxNjksMTUgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXIKICAgICAgICAgbV9jbGllbnQt
PmRpZFN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBGaWxlUmVh
ZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9v
bCkKIHsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgQVNTRVJUKGRhdGFMZW5ndGggPiAwKTsKKyAg
ICBBU1NFUlQoYnVmZmVyLnNpemUoKSk7CiAKICAgICAvLyBCYWlsIG91dCBpZiB3ZSBhbHJlYWR5
IGVuY291bnRlcmVkIGFuIGVycm9yLgogICAgIGlmIChtX2Vycm9yQ29kZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaW50IGxlbmd0aCA9IGRhdGFMZW5ndGg7CisgICAgaW50IGxlbmd0aCA9IGJ1
ZmZlci5zaXplKCk7CiAgICAgdW5zaWduZWQgcmVtYWluaW5nQnVmZmVyU3BhY2UgPSBtX3RvdGFs
Qnl0ZXMgLSBtX2J5dGVzTG9hZGVkOwogICAgIGlmIChsZW5ndGggPiBzdGF0aWNfY2FzdDxsb25n
IGxvbmc+KHJlbWFpbmluZ0J1ZmZlclNwYWNlKSkgewogICAgICAgICAvLyBJZiB0aGUgYnVmZmVy
IGhhcyBoaXQgbWF4aW11bSBzaXplLCBpdCBjYW4ndCBiZSBncm93biBhbnkgbW9yZS4KQEAgLTE4
Niw3ICsxODYsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3RoKSB7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF0
YUxlbmd0aCk7CisgICAgICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMg
KyBidWZmZXIuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKG5ld0xlbmd0aCA8IG1fdG90YWxCeXRl
cykgewogICAgICAgICAgICAgICAgIGZhaWxlZChOb3RSZWFkYWJsZUVycm9yKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAg
ICBpZiAobGVuZ3RoIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIG1lbWNweShzdGF0aWNf
Y2FzdDxjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpICsgbV9ieXRlc0xvYWRlZCwgZGF0YSwgbGVu
Z3RoKTsKKyAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSAr
IG1fYnl0ZXNMb2FkZWQsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCk7CiAgICAgbV9ieXRlc0xvYWRl
ZCArPSBsZW5ndGg7CiAKICAgICBtX2lzUmF3RGF0YUNvbnZlcnRlZCA9IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCBkYmFlOWUzMzUwOTBhOGI5
NmRmYjc2ZWI2ZTE1MTEyNTk4OGU2MGVmLi43NTgxYjMxNzBjNDFkNDIxOGY2MTFkYjkyMDFhOWU3
MzI0OTI3OGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApA
QCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNWM1
YmIyYWVhODM5OTE4YjA2OTc3NTg4MWNlM2EzNjlhNDI4ZTViOS4uM2M5NzhlM2Y0NDIxY2YzNWEy
MDYxZGZjZTBkMWUwYWFlNTExMzQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTYxNiwxMCArNjE2LDEwIEBA
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRl
clJlc3BvbnNlSW1wbChJbnN0cnVtZW50CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2
ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVM
b2FkZXIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURh
dGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoYXV0
byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50
KCkpCi0gICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0
YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBuZXR3b3JrQWdlbnQt
PmRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsICZidWZmZXIsIGJ1ZmZlci5zaXplKCksIGVuY29k
ZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZp
bmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3Vy
Y2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGQyOTU3ODEwZDgzODJjOTM1MWQ1
YTkzZjE0NGFlZDE0OTNiY2M2NTEuLjgyYWNjZWQyMGNmZDUxMzFiMjUwMmYwOTlhOWM0ZmEyZmRk
NjE2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgKQEAgLTE5MywxMyArMTkzLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoUGFnZSYsIERvY3VtZW50TG9hZGVy
KiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VS
ZXNwb25zZShGcmFtZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlciYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZURhdGEoRnJhbWUqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRp
YyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2Fk
ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9h
ZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAK
ICAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVk
QnVmZmVyJik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKIApAQCAtNDE0LDcgKzQxNCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQg
ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
RG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxl
TG9hZGVyUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXImLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVy
JiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBE
b2N1bWVudExvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVy
Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwpAQCAtMTA4MiwxNyArMTA4MiwxNyBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVy
UmVzcG9uc2UoRG9jdW1lbgogICAgICAgICBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3Bv
bnNlSW1wbCgqYWdlbnRzLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIsIGlkZW50aWZpZXIpOwog
fQogICAgIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
RGF0YShGcmFtZSogZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShG
cmFtZSogZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEZBU1Rf
UkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChhdXRvKiBhZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzKGZyYW1lKSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCph
Z2VudHMsIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCphZ2VudHMsIGlkZW50aWZpZXIsIGJ1ZmZlciwg
ZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBnbG9iYWxT
Y29wZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgZ2xvYmFsU2Nv
cGUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsK
LSAgICBkaWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyhnbG9iYWxTY29wZSks
IGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgpOworICAgIGRpZFJlY2Vp
dmVEYXRhSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwg
YnVmZmVyLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRlciogcmVzb3Vy
Y2VMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcAppbmRleCAzOWIwMTFjZjA2ZjdmMzg1MzI0M2UwYTc2M2EzYjFkNDU0OTA0MTQ5
Li4zMjhlYmU3ZTY0MTE5NWU1YTQ2ODUwMjc1NTkxMGY3OGM0OGI1OGQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTkwLDEw
ICs5MCwxMCBAQCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0
YUxlbmd0aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKLXZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7
CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0
YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhKTsKIH0KIAogdW5z
aWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29u
dGVudCgpCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQnVmZmVyUmVzb3Vy
Y2VEYXRhKGNvbnN0IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEmIHIKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLU5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29u
c3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCitO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9
IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VE
YXRhKQpAQCAtMjMwLDE1ICsyMzAsMTUgQEAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2UKICAgICBp
ZiAoIXNob3VsZEJ1ZmZlclJlc291cmNlRGF0YSgqcmVzb3VyY2VEYXRhKSkKICAgICAgICAgcmV0
dXJuIHJlc291cmNlRGF0YTsKIAotICAgIGlmIChyZXNvdXJjZURhdGEtPmRhdGFMZW5ndGgoKSAr
IGRhdGFMZW5ndGggPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQorICAgIGlm
IChyZXNvdXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRhdGEuc2l6ZSgpID4gbV9tYXhpbXVtU2lu
Z2xlUmVzb3VyY2VDb250ZW50U2l6ZSkKICAgICAgICAgbV9jb250ZW50U2l6ZSAtPSByZXNvdXJj
ZURhdGEtPmV2aWN0Q29udGVudCgpOwogICAgIGlmIChyZXNvdXJjZURhdGEtPmlzQ29udGVudEV2
aWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKIAotICAgIGlmIChlbnN1cmVG
cmVlU3BhY2UoZGF0YUxlbmd0aCkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgp
KSB7CisgICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRhLnNpemUoKSkgJiYgIXJlc291cmNlRGF0
YS0+aXNDb250ZW50RXZpY3RlZCgpKSB7CiAgICAgICAgIG1fcmVxdWVzdElkc0RlcXVlLmFwcGVu
ZChyZXF1ZXN0SWQpOwotICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSwgZGF0
YUxlbmd0aCk7Ci0gICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YUxlbmd0aDsKKyAgICAgICAg
cmVzb3VyY2VEYXRhLT5hcHBlbmREYXRhKGRhdGEpOworICAgICAgICBtX2NvbnRlbnRTaXplICs9
IGRhdGEuc2l6ZSgpOwogICAgIH0KIAogICAgIHJldHVybiByZXNvdXJjZURhdGE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGRhYWU1
ZmU0YTMxZTMxNTkzNjM3OTA0MjNmNWZiZDMzNzBjNWNkMzkuLmM4Y2VkMTJhNjQwN2ZkY2Q1NzRl
Y2MyYTc4MTllZGU2NjM4MDNkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHBy
aXZhdGU6CiAgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0
YUxlbmd0aCgpIGNvbnN0OwotICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsK
IAogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpS
ZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2
b2lkIHNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3Ry
aW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxzZSk7Ci0gICAgUmVzb3VyY2VE
YXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOworICAgIFJlc291cmNlRGF0
YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3Vy
Y2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCmluZGV4IDNjZWI0YjQ3ZjEwNjhhMGFmZWFmMDBmMTc5YzI4MDBjNDc2YmQ2YjEu
Ljc1ZjY2ZmIyOTlkNTYwYTNjYzcyYjk4MWI2NGIwMTNlODIwYmI3MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKQEAgLTEyNCwxNSArMTI0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9kZWNvZGVyID0g
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCB0ZXh0RW5jb2Rpbmcs
IHVzZURldGVjdG9yKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKSBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgaWYgKCFkYXRhTGVuZ3RoKQorICAgICAgICBpZiAoYnVmZmVyLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YUxlbmd0aCA9
PSAtMSkKLSAgICAgICAgICAgIGRhdGFMZW5ndGggPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSkpOwotCi0gICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZChtX2Rl
Y29kZXItPmRlY29kZShkYXRhLCBkYXRhTGVuZ3RoKSk7CisgICAgICAgIHNpemVfdCBkYXRhTGVu
Z3RoID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1
ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CisgICAgICAgIG1fcmVzcG9uc2VUZXh0LmFw
cGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBkYXRhTGVuZ3RoKSk7CiAgICAg
fQogCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikg
b3ZlcnJpZGUKQEAgLTU0OSw5ICs1NDcsOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaQogICAg
ICAgICAgICAgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCiAgICAgICAg
ICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBw
cmV2aW91c1Jlc291cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+YmFz
ZTY0RW5jb2RlZCgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRh
LT5oYXNCdWZmZXJlZERhdGEoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNCdWZm
ZXIgPSBwcmV2aW91c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgcHJl
dmlvdXNCdWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVz
dElkLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgIHBy
ZXZpb3VzUmVzb3VyY2VEYXRhLT5idWZmZXIoKS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZl
cihbJl0oYXV0byYmIGJ1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0Rh
dGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgYnVmZmVyKTsKICAgICAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTc3LDcgKzU3NCw3IEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIGlkZW50aWZpCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZp
ZXIsIG51bGxwdHIsIGNhY2hlZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpLCAwKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJl
Y2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGludCBleHBlY3RlZERhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkKIHsKICAgICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmllcnMuY29udGFpbnMoaWRl
bnRpZmllcikpCiAgICAgICAgIHJldHVybjsKQEAgLTU4NSwxNiArNTgyLDE2IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5
OjpyZXF1ZXN0SWQoaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChkYXRhKSB7Ci0g
ICAgICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNl
RGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBk
YXRhLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291
cmNlRGF0YShyZXF1ZXN0SWQsICpkYXRhKTsKIAogICAgICAgICAvLyBGb3IgYSBzeW5jaHJvbm91
cyBYSFIsIGlmIHdlIGRpZG4ndCBhZGQgZGF0YSB0aGVuIHdlIGNhbiBhcHBseSBpdCBoZXJlIGFz
IGJhc2U2NCBlbmNvZGVkIGNvbnRlbnQuCiAgICAgICAgIC8vIE9mdGVuIHRoZSBkYXRhIGlzIHRl
eHQgYW5kIHdlIHdvdWxkIGhhdmUgYSBkZWNvZGVyLCBidXQgZm9yIG5vbi10ZXh0IHdlIHdvbid0
IGhhdmUgYSBkZWNvZGVyLgogICAgICAgICAvLyBTeW5jIFhIUnMgbWF5IG5vdCBoYXZlIGEgY2Fj
aGVkIHJlc291cmNlLCB3aGlsZSBub24tc3luYyBYSFJzIHVzdWFsbHkgdHJhbnNmZXIgZGF0YSBv
dmVyIG9uIGNvbXBsZXRpb24uCiAgICAgICAgIGlmIChtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5
ICYmIHJlc291cmNlRGF0YSAmJiAhcmVzb3VyY2VEYXRhLT5oYXNCdWZmZXJlZERhdGEoKSAmJiAh
cmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgpKQotICAgICAgICAgICAgbV9yZXNvdXJjZXNE
YXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhk
YXRhLCBkYXRhTGVuZ3RoKSwgdHJ1ZSk7CisgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNl
dFJlc291cmNlQ29udGVudChyZXF1ZXN0SWQsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPmRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCgpLCBkYXRhTGVuZ3RoLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRhdGFSZWNlaXZl
ZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCgpLCBleHBlY3RlZERhdGFMZW5ndGgsIGVuY29kZWREYXRh
TGVuZ3RoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNv
dXJjZUxvYWRlciopCkBAIC0xMjcxLDcgKzEyNjgsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9u
cwogICAgIGlmIChsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZCgiVW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVh
ZHkgYmVlbiBwcm9jZXNzZWQiX3MpOwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGRhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBpZiAoYmFzZTY0
RW5jb2RlZCkgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IGJhc2U2NERlY29kZShjb250ZW50KTsK
ICAgICAgICAgaWYgKCFidWZmZXIpCkBAIC0xMjk2LDkgKzEyOTMsOSBAQCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RX
aXRoUmVzcG9ucwogICAgIH0KICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGRzKFdURk1v
dmUoZXhwbGljaXRIZWFkZXJzKSk7CiAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgcmVzcG9uc2UubWltZVR5cGUoKSk7Ci0gICAgbG9h
ZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRhdGEu
cmVsZWFzZU5vbk51bGwoKV0oKSBtdXRhYmxlIHsKKyAgICBsb2FkZXItPmRpZFJlY2VpdmVSZXNw
b25zZShyZXNwb25zZSwgW2xvYWRlciwgYnVmZmVyID0gZGF0YS5yZWxlYXNlTm9uTnVsbCgpXSgp
IHsKICAgICAgICAgaWYgKGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICAgICAgbG9hZGVyLT5kaWRS
ZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCksIERhdGFQYXlsb2Fk
V2hvbGVSZXNvdXJjZSk7CisgICAgICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZl
ciwgYnVmZmVyLT5zaXplKCksIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CiAgICAgICAgIGxv
YWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MoKSk7CiAgICAgfSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5oCmluZGV4IDZiY2Q4N2RkY2Q4YjA0NDEzMDhkMWQwMWVjYTZiMGU2ZGExNDEz
ZDQuLjcyZjQyM2ZmNjEyNzdlZWY0YmQzNTYzMjhjNDZkM2JkOTEzMWZmNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdE9mVHlwZShSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpMb2FkVHlwZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciopOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyKiwgaW50IGV4cGVjdGVk
RGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgdm9pZCBkaWRGYWlsTG9h
ZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERv
Y3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250
ZW50RmlsdGVyLmNwcAppbmRleCA0MzMyZDY5MWJiZjgyNmE3Yzg3ZWE4M2EzMTdlOTYxMTVhMjA0
OTkzLi5hMDk4MWFkZDc5ODUzMmI5N2JhYTQwNDEyOGJhMzg4OTZkYWY2ODRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBD
b250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJl
c291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZm
ZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJj
ZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRl
bnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogfQogCiBzdGF0aWMg
Y29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXJDbGllbnQuaAppbmRleCAyMTVjMDRlYzk4OTVlOWYxZTZlMTQ3ZGE4MjA5MzAwOTg1
MjM5NjIzLi5mYTdhZDMwMzlhMjA1ZTkwNTcxMDhmM2M2ZjM5MjQxOWJjNDY0N2RjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vi
c3RpdHV0ZURhdGE7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJDbGllbnQgewpAQCAtNDEsNyArNDIs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRC
dWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRC
bG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxv
YWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25z
dCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDZiZjNhYzI5N2VjNmIyNjNhMDc4NjQw
YmNmM2FkNTc3OWRiMGZlZGIuLjVlNzdhNjk3YTg0ZWFlOWRhYThlYjEwMjk5MTBhNzA4YTEyNDg5
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNDgzLDgg
KzQ4Myw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZygpCiAgICAgICAg
IC8vIElmIHRoaXMgaXMgYW4gZW1wdHkgZG9jdW1lbnQsIGl0IHdpbGwgbm90IGhhdmUgYWN0dWFs
bHkgYmVlbiBjcmVhdGVkIHlldC4gQ29tbWl0IGR1bW15IGRhdGEgc28gdGhhdAogICAgICAgICAv
LyBEb2N1bWVudFdyaXRlcjo6YmVnaW4oKSBnZXRzIGNhbGxlZCBhbmQgY3JlYXRlcyB0aGUgRG9j
dW1lbnQuCiAgICAgICAgIGlmICghbV9nb3RGaXJzdEJ5dGUpCi0gICAgICAgICAgICBjb21taXRE
YXRhKDAsIDApOwotICAgICAgICAKKyAgICAgICAgICAgIGNvbW1pdERhdGEoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSk7CisKICAgICAgICAgaWYgKCFmcmFtZUxvYWRlcigpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5maW5pc2hlZExvYWRpbmco
dGhpcyk7CkBAIC0xMTU3LDggKzExNTcsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51
ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGlmICghaXNTdG9w
cGluZygpICYmIG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmIGlzTG9hZGluZ01haW5SZXNv
dXJjZSgpKSB7CiAgICAgICAgIGF1dG8gY29udGVudCA9IG1fc3Vic3RpdHV0ZURhdGEuY29udGVu
dCgpOwogICAgICAgICBpZiAoY29udGVudCAmJiBjb250ZW50LT5zaXplKCkpIHsKLSAgICAgICAg
ICAgIGNvbnRlbnQtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAg
ICAgICAgICAgZGF0YVJlY2VpdmVkKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Cisg
ICAgICAgICAgICBjb250ZW50LT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRv
JiYgYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNl
KCkpCkBAIC0xMTcxLDcgKzExNzEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFm
dGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIH0KIH0KIAotdm9pZCBE
b2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdlIGFuZCBwYXJzaW5nIHRo
ZSBuZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRlc3Ryb3lzIHRoZSBkYXRh
c291cmNlCiAgICAgLy8gYnkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28gcmV0YWluIHRlbXBvcmFy
aWx5LgpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9h
ZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIGlmIChBcmNoaXZlRmFjdG9y
eTo6aXNBcmNoaXZlTUlNRVR5cGUocmVzcG9uc2UoKS5taW1lVHlwZSgpKSkKICAgICAgICAgcmV0
dXJuOwogI2VuZGlmCi0gICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmNvbW1pdHRlZExvYWQodGhp
cywgZGF0YSwgbGVuZ3RoKTsKKyAgICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuY29tbWl0dGVkTG9h
ZCh0aGlzLCBkYXRhKTsKIAogICAgIGlmIChpc011bHRpcGFydFJlcGxhY2luZ0xvYWQoKSkKICAg
ICAgICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCk7
CkBAIC0xMjE1LDcgKzEyMTUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkVXNlQWN0aXZl
U2VydmljZVdvcmtlckZyb21QYXJlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZQogfQogI2VuZGlm
CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMs
IHNpemVfdCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fZ290Rmlyc3RCeXRlKSB7CiAgICAgICAg
IG1fZ290Rmlyc3RCeXRlID0gdHJ1ZTsKQEAgLTEzMTMsMjQgKzEzMTMsMjQgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0
aCkKICNlbmRpZgogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNpbmcoKSk7
Ci0gICAgbV93cml0ZXIuYWRkRGF0YShieXRlcywgbGVuZ3RoKTsKKyAgICBtX3dyaXRlci5hZGRE
YXRhKGRhdGEpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9p
ZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJj
ZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKLSAgICBkYXRhUmVjZWl2ZWQoZGF0YSwg
bGVuZ3RoKTsKKyAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKIH0KIAotdm9pZCBEb2N1bWVudExv
YWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lk
IERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChkYXRhLCBs
ZW5ndGgpKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29u
dGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSkKICAg
ICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgQVNTRVJUKGxl
bmd0aCk7CisgICAgQVNTRVJUKGJ1ZmZlci5kYXRhKCkpOworICAgIEFTU0VSVChidWZmZXIuc2l6
ZSgpKTsKICAgICBBU1NFUlQoIW1fcmVzcG9uc2UuaXNOdWxsKCkpOwogCiAgICAgLy8gVGhlcmUg
aXMgYSBidWcgaW4gQ0ZOZXR3b3JrIHdoZXJlIGNhbGxiYWNrcyBjYW4gYmUgZGlzcGF0Y2hlZCBl
dmVuIHdoZW4gbG9hZHMgYXJlIGRlZmVycmVkLgpAQCAtMTM0MCwxMiArMTM0MCwxMiBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCkKICNlbmRpZgogCiAgICAgaWYgKG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3Vy
Y2VMb2FkZXIpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hEaWRS
ZWNlaXZlRGF0YSh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVy
LCBkYXRhLCBsZW5ndGgsIC0xKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5k
aXNwYXRjaERpZFJlY2VpdmVEYXRhKHRoaXMsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVz
b3VyY2VMb2FkZXIsICZidWZmZXIsIGJ1ZmZlci5zaXplKCksIC0xKTsKIAotICAgIG1fYXBwbGlj
YXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgsIC0x
LCBmYWxzZSk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+bWFpblJlc291cmNlRGF0YVJl
Y2VpdmVkKGJ1ZmZlciwgLTEsIGZhbHNlKTsKIAogICAgIGlmICghaXNNdWx0aXBhcnRSZXBsYWNp
bmdMb2FkKCkpCi0gICAgICAgIGNvbW1pdExvYWQoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgY29t
bWl0TG9hZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXR1cEZvclJlcGxh
Y2UoKQpAQCAtMTYxNCw3ICsxNjE0LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVh
dGVBcmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5
cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0
YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgp
KTsKKyAgICBjb21taXREYXRhKCptX3BhcnNlZEFyY2hpdmVEYXRhKTsKICAgICByZXR1cm4gdHJ1
ZTsKICNlbmRpZgogfQpAQCAtMjI1Nyw4ICsyMjU3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAKICAgICBmcmFtZUxvYWRlcigp
LT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwotICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRh
KCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExvYWQobWFpblJlc291cmNlRGF0
YSgpLT5tYWtlQ29udGlndW91cygpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJ
Y29uTG9hZGluZygpCkBAIC0yNDEwLDkgKzI0MDksOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpl
bnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChTZWN1cml0eVBvbGljeVZpb2xhdGlv
bgogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotdm9pZCBEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IHNpemUpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBkYXRhUmVjZWl2ZWQo
ZGF0YSwgc2l6ZSk7CisgICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CiB9CiAKIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApp
bmRleCBiNDY5ODFkNzUwYjI1YzFmZDMwN2YxNmZkYTc0YjdlZTMwNmE0YzM5Li4yOGUyOGE2ODhh
ZTZiNTdlMGYwZDE0YzRlN2EwYzI1NThjYjY3ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwog
Y2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xh
c3MgU1dDbGllbnRDb25uZWN0aW9uOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7CiBjbGFzcyBVc2VyQ29udGVu
dFVSTFBhdHRlcm47CkBAIC0zNzcsNyArMzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRU
aW1pbmcoKSB7IG1fbG9hZFRpbWluZyA9IHsgfTsgfQogCiAgICAgLy8gVGhlIFdlYktpdCBsYXll
ciBjYWxscyB0aGlzIGZ1bmN0aW9uIHdoZW4gaXQncyByZWFkeSBmb3IgdGhlIGRhdGEgdG8gYWN0
dWFsbHkgYmUgYWRkZWQgdG8gdGhlIGRvY3VtZW50LgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAg
QXBwbGljYXRpb25DYWNoZUhvc3QmIGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAgICAg
QXBwbGljYXRpb25DYWNoZUhvc3QqIGFwcGxpY2F0aW9uQ2FjaGVIb3N0VW5sZXNzQmVpbmdEZXN0
cm95ZWQoKSBjb25zdDsKQEAgLTQ3Nyw3ICs0NzgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBj
b21taXRJZlJlYWR5KCk7CiAgICAgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJik7Ci0gICAgdm9pZCBjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3QqLCBpbnQpOwor
ICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGNsZWFy
TWFpblJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHNldHVwRm9yUmVwbGFjZSgpOwpAQCAt
NDkzLDcgKzQ5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYWluUmVjZWl2ZWRFcnJvcihjb25z
dCBSZXNvdXJjZUVycm9yJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3Zl
cnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBy
ZXZpZXdSZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIG92ZXJyaWRlOwpAQCAtNTAzLDEzICs1MDQsMTMgQEAgcHJpdmF0ZToKIAogI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25z
dCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNl
aXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAg
IFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9h
ZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50Rmls
dGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAj
ZW5kaWYKIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW5ndGgpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgYm9vbCBtYXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDM3YmQzMjlhYjkwOTQ0OTlhNWQ0
ODEzOTQ0OWZjNTNmMmVhODcwNTMuLjg0ZDlhNzVhZTYzNDJkMGY3ODJkMTZiNjNjODBlNDY5OWNl
MzEzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCkBAIC00MzgsMjAgKzQzOCwyMCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dAogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2Up
OwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
Cit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIGRpZFJlY2Vp
dmVEYXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CisgICAg
ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+aWRlbnRpZmllcigpLCBidWZmZXIpOwogfQogCi12
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVChtX2Ns
aWVudCk7CiAKICAgICBpZiAobV9kZWxheUNhbGxiYWNrc0ZvckludGVncml0eUNoZWNrKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgZGF0YUxl
bmd0aCk7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZmFsc2UpOwogfQog
CiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJM
b2FkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VUaW1pbmcmIHJlc291
cmNlVGltaW5nKQpAQCAtNDk0LDIwICs0OTQsMTQgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWYK
IAogICAgICAgICBpZiAob3B0aW9ucygpLmZpbHRlcmluZ1BvbGljeSA9PSBSZXNwb25zZUZpbHRl
cmluZ1BvbGljeTo6RGlzYWJsZSkgewogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVS
ZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7Ci0gICAgICAgICAgICBpZiAoYXV0byogYnVm
ZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewotICAgICAgICAgICAgICAgIGJ1
ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNp
emUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlciwgZmFsc2UpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlc3BvbnNlLnR5cGUoKSA9PSBSZXNvdXJj
ZVJlc3BvbnNlOjpUeXBlOjpEZWZhdWx0KTsKIAogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCBSZXNvdXJjZVJlc3BvbnNlOjpmaWx0ZXIocmVzcG9u
c2UsIG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJ
bmNsdWRlID8gUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6
Tm8gOiBSZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3JtRXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpZZXMp
KTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1
ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0
byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNl
LT5yZXNvdXJjZUJ1ZmZlcigpKQorICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YSgqYnVmZmVyLCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY2OCwxMSArNjYy
LDggQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICB9CiAgICAgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGRh
dGEtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICBkaWRS
ZWNlaXZlRGF0YShpZGVudGlmaWVyLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwot
ICAgICAgICB9KTsKLSAgICB9CisgICAgaWYgKGRhdGEpCisgICAgICAgIGRpZFJlY2VpdmVEYXRh
KGlkZW50aWZpZXIsICpkYXRhKTsKIAogICAgIGNvbnN0IGF1dG8qIHRpbWluZyA9IHJlc3BvbnNl
LmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKICAgICBhdXRvIHJlc291cmNl
VGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21TeW5jaHJvbm91c0xvYWQocmVxdWVzdFVSTCwg
bV9vcHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWluZywgdGltaW5nID8gKnRpbWluZyA6IE5ldHdv
cmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCksIHJlc3BvbnNlLCBzZWN1cml0eU9yaWdpbigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
aAppbmRleCBmMWY0MWVlOTFkNmNlOGExYzU4NjIzODE3YjM1OGY3NzQ2NTFlMGE0Li5jODZiYTdm
NDUzODNiNmMyODYwMDMyZDNhZWJmYmEzZTA4NjA3NjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCkBAIC04NiwxNCArODYsMTQgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAog
ICAgICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJp
ZGU7CiAgICAgICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRl
OwotICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAg
ICAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNoZWRUaW1p
bmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSBv
dmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQoY29uc3Qg
UmVzb3VyY2VUaW1pbmcmKTsKICAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
U2hhcmVkQnVmZmVyJik7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIpOwogICAgICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZvaWQgbWFrZUNyb3NzT3Jp
Z2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmNwcAppbmRleCBiMDQ2ZWYwZGUyMDQ4ZWZkNDMxOTcwMjYyMmI5NmE3
ZGYyZmVhZmE3Li40ZmY5MzgxODBmZGQyOGZjNzE1ZDA4ODgxNjA4ZmM2Mjg5NDkyZTlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKQEAgLTI2NCw3ICsyNjQsNyBA
QCB2b2lkIERvY3VtZW50V3JpdGVyOjpyZXBvcnREYXRhUmVjZWl2ZWQoKQogICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPnJlc29sdmVTdHlsZShEb2N1bWVudDo6UmVzb2x2ZVN0eWxlVHlwZTo6UmVi
dWlsZCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRXcml0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCog
Ynl0ZXMsIHNpemVfdCBsZW5ndGgpCit2b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIHRvIEFT
U0VSVCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQyNyBo
YXMgYmVlbiByZXNvbHZlZC4KICAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpO
b3RTdGFydGVkKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjphZGRE
YXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIEFTU0VSVChtX3BhcnNlcik7Ci0gICAgbV9wYXJzZXItPmFwcGVuZEJ5dGVz
KCp0aGlzLCBieXRlcywgbGVuZ3RoKTsKKyAgICBtX3BhcnNlci0+YXBwZW5kQnl0ZXMoKnRoaXMs
IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRXcml0ZXI6Omlu
c2VydERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYgbWFya3VwKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRXcml0ZXIuaAppbmRleCAwNzE3MmM5NzM5ZWI1NzM1YmM4MWY4ZGVmMmZi
OWIyODVjMjU0ZDBiLi5jMGEzNGE2YjdlOWNmZTk2NDMwNDVhOTVlNzkzMjI1MjM2M2IyNjhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaApAQCAtMzYsNiArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50UGFyc2Vy
OwogY2xhc3MgRnJhbWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwogCiBjbGFzcyBEb2N1bWVudFdyaXRlciB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgYmVnaW4oKTsKICAgICBib29sIGJlZ2luKGNvbnN0IFVSTCYsIGJvb2wg
ZGlzcGF0Y2hXaW5kb3dPYmplY3RBdmFpbGFibGUgPSB0cnVlLCBEb2N1bWVudCogb3duZXJEb2N1
bWVudCA9IG51bGxwdHIpOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBieXRlcywg
c2l6ZV90IGxlbmd0aCk7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwog
ICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJik7IC8vIEZvciBh
biBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRoZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4K
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwCmluZGV4IDc1OGNiZTgwNjU0ZTg4ODk3YWNkOWVkNDExOTkwYzg2ODZjYWYz
YmEuLmQyM2M5NmI2YzUyODAzZmVjMmU0NTdiN2VjN2RiYzllYjM3OTk1ZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC04NzAsNyArODcwLDcgQEAgdm9pZCBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiB7CiB9CiAK
LXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRl
ciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNv
bW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAppbmRl
eCAyMjY5OWM5YzUxODMyYTVhYThjODlhYmFiMmZmYzdlMDk4NWJmYzAwLi4xMTZhMTdkMWY1Yzll
NjQ3ZTFmMTQxYTEwMDg2YjA3OTgzOTNmM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAgICAgdm9pZCBk
aWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb21taXR0ZWRM
b2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9p
ZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmlu
YWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKIAog
ICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikg
Y29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBmZGM5
N2RjNDYyYzg3NTI2YWExODhmNzk2OGQ2MGEwYzgzZDY4MGQ5Li5iYjUyOTFhNjdmZmZlN2ExMTZm
OGMyY2ZiZjRmYWI5NGY4ODQ4MjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTE2ODcsNyArMTY4Nyw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFF
bGVtZW50VVJMKFVSTCYgdXJsLCBOb2RlJiBpbml0aWF0b3JOb2RlKQogICAgIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAg
cmVxdWVzdEZyb21EZWxlZ2F0ZShyZXF1ZXN0LCBpZGVudGlmaWVyLCBlcnJvcik7Ci0gICAgbm90
aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdl
dCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKHVybCwgU3RyaW5nKCks
IC0xLCBTdHJpbmcoKSksIDAsIC0xLCAtMSwgZXJyb3IpOworICAgIG5vdGlmaWVyKCkuc2VuZFJl
bWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmll
ciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygpLCAtMSwgU3RyaW5nKCkp
LCBudWxscHRyLCAtMSwgLTEsIGVycm9yKTsKIAogICAgIHVybCA9IHJlcXVlc3QudXJsKCk7CiAK
QEAgLTIwODcsOCArMjA4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFs
TG9hZCgpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0
bGUpOwogCiAgICAgICAgIC8vIFNlbmQgcmVtYWluaW5nIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBt
YWluIHJlc291cmNlLgotICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1l
c3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1h
aW5SZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwKLSAgICAgICAgICAgIG51bGxw
dHIsIHN0YXRpY19jYXN0PGludD4obV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5leHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKSksIDAsIG1haW5SZXNvdWNlRXJyb3IpOworICAgICAgICBub3RpZmll
cigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCks
IG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVz
cG9uc2UoKSwgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50PihtX2RvY3VtZW50TG9hZGVyLT5yZXNw
b25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwgbWFpblJlc291Y2VFcnJvcik7CiAK
ICAgICAgICAgVmVjdG9yPFJlZjxGcmFtZT4+IHRhcmdldEZyYW1lczsKICAgICAgICAgdGFyZ2V0
RnJhbWVzLmFwcGVuZChtX2ZyYW1lKTsKQEAgLTIxMzYsNyArMjEzNSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYg
d2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24n
dCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAgICAgICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5
J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4g
cHJhY3RpY2UuCiAgICAgICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQg
bG9jYWwgZmlsZS4KLSAgICAgICAgICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRl
TWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVz
cG9uc2UsIDAsIHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkpLCAwLCBlcnJvcik7CisgICAgICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxl
Z2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3Qs
IHJlc3BvbnNlLCBudWxscHRyLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3BvbnNlLmV4cGVjdGVkQ29u
dGVudExlbmd0aCgpKSwgMCwgZXJyb3IpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6
IFdoeSBvbmx5IHRoaXMgZnJhbWUgYW5kIG5vdCBwYXJlbnQgZnJhbWVzPwpAQCAtMzE2Niw3ICsz
MTY1LDggQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgICAgICAgICAoaXNTY3Jp
cHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3Vt
ZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgZGF0YSA/IGRh
dGEtPmRhdGEoKSA6IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwLCAtMSwgZXJyb3Ip
OworCisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3Vt
ZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgZGF0YS5nZXQo
KSwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIC0xLCBlcnJvcik7CiAgICAgcmV0dXJuIGlkZW50
aWZpZXI7CiB9CiAKQEAgLTM2NDcsNyArMzY0Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRl
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgUmVzb3Vy
CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlID0gcmVzb3VyY2UucmVzcG9uc2UoKTsK
ICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpNZW1vcnlD
YWNoZSk7Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2Rv
Y3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwgMCwg
cmVzb3VyY2UuZW5jb2RlZFNpemUoKSwgMCwgZXJyb3IpOworICAgIG5vdGlmaWVyKCkuc2VuZFJl
bWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmll
ciwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsIG51bGxwdHIsIHJlc291cmNlLmVuY29kZWRTaXplKCks
IDAsIGVycm9yKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6YXBwbHlVc2VyQWdlbnRJZk5lZWRl
ZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oCmluZGV4IGVlOWYzZDBjOTg0ZDQ1NWNiYjkxYjQ2MGMxYmMxMjg5OGQxMjM2
NTIuLjM1MmE0YzRmYjUwNGY3Y2Q0ZDJlYzQwNmU2YmMyOTExYTU1ZmQwOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC03LDcgKzcsNyBAQAogICogYXJl
IG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKQEAgLTUw
LDcgKzUwLDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWZkZWYgX19PQkpD
X18gCisjaWZkZWYgX19PQkpDX18KICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgog
dHlwZWRlZiBpZCBSZW1vdGVBWE9iamVjdFJlZjsKICNlbHNlCkBAIC05OCw3ICs5OCw3IEBAIGNs
YXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xh
c3MgV2lkZ2V0OwogCkBAIC0yMTQsOSArMjE0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbW1p
dHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBTaGFyZWRC
dWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExv
YWRlciopID0gMDsKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5r
cygpID0gMDsKIApAQCAtMjcyLDcgKzI3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmlu
ZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcg
b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1l
KENhY2hlZEZyYW1lKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0
ZWRGcm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSA9IDA7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKQEAgLTM4MSw3ICszODEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwg
QWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJl
Y2VudE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBBbGxvd3NDb250ZW50SmF2YVNjcmlwdDo6
WWVzOyB9Ci0gICAgCisKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgdmlydHVh
bCBib29sIHNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVBhZ2VPZkFwcEJvdW5k
QmVoYXZpb3IoKSB7IH0KQEAgLTM5MCw3ICszOTAsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFBE
RktJVF9QTFVHSU4pCiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZVBERlBsdWdpbihjb25zdCBT
dHJpbmcmLCBTdHJpbmdWaWV3KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCi0gICAg
CisKICAgICB2aXJ0dWFsIGJvb2wgaXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcAppbmRleCA1ZDEyMGUyNDdhYzI2MjcxMTYxZGUwZGM1MjMwMjRk
YzhkZTM0ZDY5Li4xYTE3YTcwZmE1OGM3MjI4ZjYzODkzNTlkZDBkMzM5ZDBlMDVjZDJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMzEs
MTMgKzIzMSwxMyBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzUwogICAgICAgICBtX2NsaWVudC0+
ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9p
ZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgTWVkaWFSZXNvdXJjZTo6
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1f
cmVzb3VyY2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhp
cyk7CiAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0
aGlzLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgq
dGhpcywgYnVmZmVyKTsKIH0KIAogdm9pZCBNZWRpYVJlc291cmNlOjpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCmluZGV4IGZm
NmMyODg3MTAwODhmNGIwNTRjZTQ3NjNkNWRhMGRkYzkyYzIwNjUuLjdiNTU3NzIwZWYwNTMzZmJh
YTIyNjU2NTM4ZWZkZDk2ZjYxNzlmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRp
cmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYm
KT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNl
bnQoQ2FjaGVkUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9u
Zykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IDYwNDNhYzliZTI2N2VhNGZiYzcxZTExMThi
OTA3OTE1NWUzOTE1MDMuLjVjYWFkZjYyOWM3MGFlMDg2Yjc3YmQ3MmNkMjg2NzUzNmI4ZmE5N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmNwcApAQCAtMTQxLDMwICsxNDEsMTQgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AK
ICAgICB9KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0gICAg
ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRh
TGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBh
eWxvYWRUeXBlKQotewotICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RG
TW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKLX0KLQot
dm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgUmVm
PE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAg
IGlmIChtX2NsaWVudCkgewotICAgICAgICBpZiAoYnVmZmVyKSB7Ci0gICAgICAgICAgICBidWZm
ZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNp
emUoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgZGF0YSwgbGVuZ3RoKTsKLSAgICB9CisgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVy
KTsKIAotICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxl
bmd0aCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBl
KTsKKyAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0
YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmgKaW5kZXggYjUxNzRlZGM5NGI5OTIzOTAyMDVmMGZhZDQ1MmVhNWFj
Mzg3ODkzOC4uMWVjN2Q2MWUzYTE3NWMyMmI1NTg3NThkMzdlZDBjNTViZTVmMTNiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgK
QEAgLTM2LDEyICszNiwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgd2FudHNBbGxTdHJlYW1zKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KQEAgLTYyLDggKzYzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
JiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21w
bGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKIApAQCAtNzQsOCArNzQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0KICAgICB2
b2lkIG5vdGlmeURvbmUoKTsKIAogICAgIFdlYWtQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXJDbGllbnQ+IG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE5vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWROb3RpZmllci5jcHAKaW5kZXggNjJiYjU2ZTM0ZTZmNDZkMjYyODM2Y2ZjYTQ2NWI0ZGIwZTMw
ODNjZi4uMDE5ZDE3NDgxZTQ0ODJhMDQ4YTI2NzM1NjAxODc0Nzk3ZDNlODg3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgog
I2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICNpbmNsdWRlICJRdWlja0xvb2suaCIKQEAgLTc4LDEyICs3
OSwxMiBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzbwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJl
c3BvbnNlKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIHIs
IGxvYWRlcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRh
KFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jl
c3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGFMZW5ndGgpOworICAgICAgICBwYWdlLT5wcm9n
cmVzcygpLmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRpZmllcigpLCBidWZmZXIuc2l6
ZSgpKTsKIAotICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLT5kb2N1bWVudExvYWRl
cigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFM
ZW5ndGgpOworICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLT5kb2N1bWVudExvYWRl
cigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgJmJ1ZmZlciwgYnVmZmVyLnNpemUoKSwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRGaW5pc2hM
b2FkKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0
d29ya0xvYWRNZXRyaWNzKQpAQCAtMTUzLDEzICsxNTQsMTMgQEAgdm9pZCBSZXNvdXJjZUxvYWRO
b3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgUmUKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJl
c3BvbnNlKG1fZnJhbWUsIGlkZW50aWZpZXIsIGxvYWRlciwgciwgcmVzb3VyY2VMb2FkZXIpOwog
fQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShE
b2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIsIGludCBleHBlY3RlZERhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICAvLyBOb3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVy
Q2xpZW50IG1heSBjYXVzZSB0aGUgZnJhbWUgdG8gYmUgZGVzdHJveWVkLgogICAgIFJlZjxGcmFt
ZT4gcHJvdGVjdChtX2ZyYW1lKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3Bh
dGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhTGVuZ3Ro
KTsKKyAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRl
bnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBleHBlY3RlZERhdGFMZW5ndGgpOwogCi0gICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSgmbV9mcmFtZSwgaWRlbnRp
ZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoJm1fZnJhbWUsIGlkZW50aWZpZXIsIGJ1
ZmZlciA/ICpidWZmZXIgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbmNvZGVkRGF0YUxlbmd0
aCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9h
ZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJl
c291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKQEAgLTE4MCw3ICsxODEsNyBAQCB2b2lkIFJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIFJlc291cgogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExv
YWRpbmcoJm1fZnJhbWUsIGxvYWRlciwgaWRlbnRpZmllciwgZXJyb3IpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVu
dExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIFJlc291cmNlTG9hZE5v
dGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGludCBleHBlY3RlZERhdGFMZW5ndGgsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgLy8gSWYgdGhl
IHJlcXVlc3QgaXMgbnVsbCwgd2lsbFNlbmRSZXF1ZXN0IGNhbmNlbGxlZCB0aGUgbG9hZC4gV2Ug
c2hvdWxkCiAgICAgLy8gb25seSBkaXNwYXRjaCBkaWRGYWlsTG9hZGluZyBpbiB0aGlzIGNhc2Uu
CkBAIC0xOTMsOCArMTk0LDggQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwKICAgICBpZiAoIXJl
c3BvbnNlLmlzTnVsbCgpKQogICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2Fk
ZXIsIGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlmIChkYXRhTGVuZ3RoID4gMCkKLSAg
ICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50aWZpZXIsIGRhdGEsIGRh
dGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBpZiAoZXhwZWN0ZWREYXRhTGVuZ3Ro
ID4gMCkKKyAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50aWZpZXIs
IGJ1ZmZlciwgZXhwZWN0ZWREYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICBp
ZiAoZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0
cmljczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3Rp
Zmllci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKaW5k
ZXggNmRhMTYwMzI1ZjQyZmVmNTQwYzZiZDUwYmIxODJlODY5ZGFkZTllMy4uYzRmNWIyZWJkZDgx
MDhlNzhiMjgyNWI5ZDZkNzEyOGQ3NGQ1NzRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVzb3Vy
Y2VMb2FkTm90aWZpZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlc291cmNlTG9hZE5v
dGlmaWVyKTsKQEAgLTU1LDE4ICs1NiwxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50IGRhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUxvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKFJlc291cmNlTG9hZGVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRGYWlsVG9Mb2FkKFJlc291cmNlTG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFs
UmVxdWVzdChSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1
bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgQ2FjaGVkUmVz
b3VyY2UqKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9h
ZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVzb3VyY2VMb2FkZXIqID0gbnVsbHB0cik7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVE
YXRhKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciosIGludCBleHBlY3RlZERhdGFMZW5ndGgs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRp
bmcoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgdm9pZCBkaXNwYXRjaERpZEZh
aWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOworICAgIHZvaWQgc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRM
b2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTaGFyZWRCdWZmZXIqLCBpbnQgZXhwZWN0
ZWREYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIAogICAgIGJvb2wgaXNJbml0aWFsUmVxdWVzdElkZW50aWZpZXIoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggNmRlYmIyNTg4YTNlODJiMjFjNjFkN2U4ZjM2ZTRmNGJiYmEyNWU2
MC4uNjY0N2MyNzA4MTE4MGViY2VjMmI1Y2EyOWZkNjBiNzIzYWI2NDgzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogCiAgICAgICAgIGF1dG8gZGF0YVNpemUgPSBk
ZWNvZGVSZXN1bHQtPmRhdGEuc2l6ZSgpOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIGRhdGFS
ZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZSh1cmwsIGRlY29kZVJl
c3VsdC52YWx1ZSgpKTsKLSAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGRhdGFSZXNw
b25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBkYXRh
U2l6ZSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGVjb2RlUmVzdWx0LT5k
YXRhKSldKCkgbXV0YWJsZSB7CisgICAgICAgIHRoaXMtPmRpZFJlY2VpdmVSZXNwb25zZShkYXRh
UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
ZGF0YVNpemUsIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRlY29kZVJlc3Vs
dC0+ZGF0YSkpXSgpIHsKICAgICAgICAgICAgIGlmICghdGhpcy0+cmVhY2hlZFRlcm1pbmFsU3Rh
dGUoKSAmJiBkYXRhU2l6ZSAmJiBtX3JlcXVlc3QuaHR0cE1ldGhvZCgpICE9ICJIRUFEIikKLSAg
ICAgICAgICAgICAgICB0aGlzLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoZGF0YSksIGRhdGFT
aXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICAgICAgICAgIHRoaXMtPmRp
ZFJlY2VpdmVCdWZmZXIoZGF0YSwgZGF0YVNpemUsIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7
CiAKICAgICAgICAgICAgIGlmICghdGhpcy0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewogICAg
ICAgICAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7CkBAIC0zMjgsNyAr
MzI4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291
cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lkIFJlc291cmNlTG9h
ZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5
bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjphZGRCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQog
ewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTMzNiwxMCArMzM2
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ20KICAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09
IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKICAgICAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQo
KTsKIAotICAgIGlmIChidWZmZXIpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZCgqYnVm
ZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZChkYXRhLCBsZW5n
dGgpOworICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZChidWZmZXIpOwogfQogCiBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QK
QEAgLTUzOSw3ICs1MzYsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxldGlvbkhhbgogICAgICAgICBmcmFt
ZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBtX3Jlc3BvbnNl
KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIC8vIFRo
ZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhcmUgbm90IHF1aXRlIHZhbGlkIGhlcmUsIHNpbmNlIGEg
c3ViY2xhc3MKICAgICAvLyBtaWdodCBvdmVycmlkZSBkaWRSZWNlaXZlRGF0YSBpbiBhIHdheSB0
aGF0IGludmFsaWRhdGVzIHRoZW0uIFRoaXMKQEAgLTU0NywzMCArNTQ0LDIyIEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgbG9uZyBsCiAgICAgLy8gQVNTRVJUKGNvbiA9PSBjb25uZWN0aW9uKTsKICAgICAv
LyBBU1NFUlQoIW1fcmVhY2hlZFRlcm1pbmFsU3RhdGUpOwogCi0gICAgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5
bG9hZFR5cGUpOworICAgIGRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0
aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSBkYXRhUGF5bG9hZFR5cGUpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRy
LCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUp
OwotfQotCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkg
Z2V0IGRhdGErbGVuZ3RoICpPUiogYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgotICAgIEFTU0VS
VCghYnVmZmVyIHx8ICghZGF0YSAmJiAhbGVuZ3RoKSk7Ci0KICAgICAvLyBQcm90ZWN0IHRoaXMg
aW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBj
YW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsg
b25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgogICAgIFJlZjxSZXNvdXJjZUxv
YWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhZGREYXRhT3JCdWZmZXIoZGF0YSwg
bGVuZ3RoLCBidWZmZXIuZ2V0KCksIGRhdGFQYXlsb2FkVHlwZSk7CisgICAgYWRkQnVmZmVyKGJ1
ZmZlciwgZGF0YVBheWxvYWRUeXBlKTsKIAogICAgIC8vIEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNv
dXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywgdGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdo
dCB0aGluZy4KICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3
b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291
bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9u
cy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3Mg
JiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRh
dGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVu
Y29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlk
UmVjZWl2ZURhdGEodGhpcywgYnVmZmVyLm1ha2VDb250aWd1b3VzKCksIHN0YXRpY19jYXN0PGlu
dD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykK
QEAgLTcyOSwxNCArNzE4LDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmCiAgICAgZGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
LXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgp
Cit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAg
ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRCeXRlcyk7CisgICAgZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlQnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAg
IGRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRC
eXRlcyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDkwNzVjYmMwYTMwNDBlYTE1MGE4NjI1Y2Rh
MDg5MGIxZWUxMzhjNzIuLjEwOThlNGYyNzg4OWNkYTdiM2E5Y2ZkNGQ1NDZhZTJmZDlhN2M1NmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0xMDcsOCArMTA3LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogCkBAIC0xNjcsOCArMTY3LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3
YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5j
ZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiwgdW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0gICAgCiAgICAgdm9pZCBzZXRS
ZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMu
cmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGljeTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJl
ZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9
CiAKQEAgLTE5Miw3ICsxOTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2Fu
Y2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNl
bChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIo
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgRGF0YVBh
eWxvYWRUeXBlKTsKKyAgICB2b2lkIGFkZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9p
ZCBmaW5pc2hOZXR3b3JrTG9hZCgpOwogCkBAIC0yMDIsOCArMjAwLDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5
dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggMzdkMGJiODIxYWJkODZhOWI1NjA2ZTEyN2VmYzk0MTJhNTFiYjFhOS4uOTcyZjJhZjIyNjAz
ZjQyNGNkODc3NWY1OTEwMTBlMmQ3NjkzOGEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MTgsMzIgKzUxOCwxNSBAQCB2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VQb2xpY3koKQogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRh
UGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmll
d0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewotICAgICAgICBpZiAocHJldmlld0xv
YWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoKSkKKyAgICAgICAgaWYgKHByZXZpZXdM
b2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAotICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
ZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBl
KTsKLX0KLQotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKLSNpZiBVU0UoUVVJQ0tfTE9P
SykKLSAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7
Ci0gICAgICAgIGlmIChwcmV2aWV3TG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlci5nZXQo
KSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5n
dGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17CiAgICAgQVNTRVJUKG1f
cmVzb3VyY2UpOwogCiAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0Nv
ZGUoKSA+PSA0MDAgJiYgIW1fcmVzb3VyY2UtPnNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJy
b3JzKCkpCkBAIC01NTUsMTMgKzUzOCwxMyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAg
Ly8gYW55dGhpbmcgaW5jbHVkaW5nIHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlz
IG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2LgogICAgIFJlZjxTdWJyZXNv
dXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIGJ1ZmZlci5jb3B5UmVmKCksIGVu
Y29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlw
ZSk7CiAKICAgICBpZiAoIW1fbG9hZGluZ011bHRpcGFydENvbnRlbnQpIHsKICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAg
bV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oCmluZGV4IDgzMmM5ZjBlNzNkMzg0NjRhNzk1ZjQwMzg2MGY3OWMzNGU3M2JjN2YuLjNk
YmQ1MzM4YWZlNDliNDc4NTdkNTM0MDk3ODg3NTJlYWExYWVkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03Myw4ICs3Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2VuZERhdGEo
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21w
bGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIEV4cGVjdGVkPHZv
aWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1JlZGly
ZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJl
dmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBu
ZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKExv
YWRDb21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVz
b3VyY2UuaAppbmRleCBjZjJkZTBjNjJkOTVmMzMyNWI0MmI0NmUyNDAzNzc0NDEwNzQyYTBkLi4z
ZDE5Mjg2MmYyNzcyOWIyZjM4ZGI1NGJkODM2Nzk5NTI1YzAxOWQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9
CiAgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19yZWZlcmVuY2VfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdl
dCgpIH0pOyB9Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgeyBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7IH0KICAgICB2
b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRlbGl2
ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0
YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKaW5kZXggODRkNzliMGM5OWRmMTBkOTkzODBiODQ4
MzE3MzcxYmMxZTg1NzNiZi4uY2VmMGM4ZjFmMTdkMGY1NzY1OWEzNTQxYjU0ZjYzODk5MDY0YjFj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5o
CkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUmVzb3VyY2VUaW1pbmc7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFRocmVhZGFibGVMb2FkZXJDbGllbnQgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZGFibGVMb2FkZXJDbGllbnQpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9u
ZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCosIGludCAvKmRhdGFMZW5ndGgqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgLyogdXNlU3RyTGVuICovKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoVGltaW5nKGNvbnN0IFJlc291cmNlVGltaW5nJikg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNs
aWVudFdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50V3JhcHBlci5oCmluZGV4IDQyYWU2NDkwOWE1ZTBmZTQ0YzZhNWUwMDYwZDU4Yzk2NGVjNTYw
NTEuLmYzNmEyZDQwN2FmODgxNTkwNDI4NjZiODVlOWUwMTg2MWRhYWM3MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5o
CkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgfQogCi0gICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVzZVN0
ckxlbikKICAgICB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIHVzZVN0ckxlbik7CiAgICAgfQogCiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IGRmZjg5NzAxYzkzOWJjNzNjMzcwMzJhZDljNDJhZDIwNjMyNmFkNmUuLjdjMDM0OTQ1ZWUwM2E3
NGY1MzMzOWJiODFmZmEwZTA2YzY5YzcxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIzMSwxNCArMjMxLDEzIEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlTG9hZGVyCiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKLXZvaWQgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCB1c2VTdHJMZW4pCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihkYXRh
LCBkYXRhTGVuZ3RoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBSZWYg
eyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93
b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5w
b3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29ya2VyQ2xpZW50V3JhcHBlciB9LCB3b3JrZXJS
ZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlciA9IFJl
ZiB7IGRhdGEgfSwgdXNlU3RyTGVuXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
ewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4
dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50
V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Cisg
ICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZl
ciwgdXNlU3RyTGVuKTsKICAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEo
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRp
ZmllciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlcik7CiAgICAgfSwg
bV90YXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5oCmluZGV4IDcyM2I0NTZlYzhlOWUzMDZmYzE4Y2M4ZjM2ZGU2ZGNkOGFlMzA0
NzAuLjMzOWQ2ZjQ3MzEwYTFlZDI4OTAzNmFkMGE0MDRmMzhhN2EyNjg2MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtMTA1LDcgKzEw
NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgbWFpbiB0aHJl
YWQuCiAgICAgICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2Vu
dCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCkgb3ZlcnJpZGU7CiAg
ICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92
ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNTE5NzhmNDEyMzg3NGRjNTY2MGVmZjQ3MDY1
OTcwN2Q0ZTVkODVhNy4uZWQ3NTY2NTI2YjJkN2VmYmYxYzUxNzAyMDk1YTg3OWJhZjU2OTQ0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFp
blJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIGxvbmcgbG9uZywgYm9v
bCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChj
b25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcsIGJvb2wpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5k
ZXggYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMxNzBjZGY3MjM2NzJhMC4uZDJhZWFlYzNlMTRj
NjNiY2JmNjAxZTlhYWYwMjRjMWY5ZWM0NzZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTk1LDcgKzk1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgbWF5YmVMb2FkTWFpblJlc291cmNlKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFN1YnN0aXR1dGVEYXRhJik7CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3Vy
Y2VGb3JSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwog
ICAgIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgbWFpblJlc291cmNl
RGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9uY2UpOworICAgIHZvaWQgbWFpblJlc291cmNl
RGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgYm9vbCBhbGxBdE9uY2UpOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291
cmNlKCk7CiAgICAgdm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAKaW5kZXggMmJiM2ZlNzViOTk3N2U4MzMyMmFlMjU4MGY3MjEyZWU1YmYyMTYx
MC4uMjU2ZTg5YjIxMWIzOGIyZDIxZGNkNjY1NzgyNjllNjYwNzM2NzMyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDEwIEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAK
IHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBs
b2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwg
bV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDogU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgaWYgKG1fcGF0aC5pc0Vt
cHR5KCkpCisgICAgICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCks
IFJlZlB0ciB7ICZkYXRhKCkgfSk7CisgICAgZWxzZQorICAgICAgICBsb2FkZXIuZGVsaXZlclJl
c3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFk
ZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYuLjU0ZmVlZDJjYTY0
MTJiNDUyMDk4NzBjNzczNDM2MDlkODUwOWI3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC05OSw5ICs5OSw5IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwKICAgICBt
X2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3Jl
YXRlKG1fcmVzb3VyY2UtPnVybCgpLCByZXNwb25zZSwgbV90eXBlKTsKIH0KIAotdm9pZCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVu
ZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQo
YnVmZmVyKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGly
ZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmgKaW5k
ZXggMDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3ZWJlOWIwNjllMjMyZC4uMGIyOTYyODhmMzFh
NDMyNWQ0ODQ5YTQ0MmU4YWU2MDJjMTczMTkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsK
LSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYp
IGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggNTA0NjVjYzZjMDEzM2U1YTc3NDQ1Y2Y5NDczMzNmZTIw
NjQwODYxZC4uZDM0YzhmYjY1MzI2YTg3NTNiMmE5YjRmY2ZiYzU3MDFhOGM4YTRjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsNyArNDY4
LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRl
SW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJ
bnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJ
bWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewog
ICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZSht
X2RhdGEtPnNpemUoKSk7CkBAIC01NTUsMTggKzU1NSwxOCBAQCBFbmNvZGVkRGF0YVN0YXR1cyBD
YWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
OwotICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwotICAgIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoZGF0YSk7CisgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoYnVmZmVyLm1ha2VD
b250aWd1b3VzKCkpOworICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoYnVmZmVyKTsK
IH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7Ci0gICAgdXBkYXRlQnVmZmVySW50
ZXJuYWwoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7Ci0gICAgQ2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICB1cGRhdGVCdWZmZXJJbnRlcm5h
bChkYXRhKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhKTsKIH0KIAogdm9p
ZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGU4NDMwODcwYjQ4YWYzZGM5NWJiYTNj
YWQxYTY0ZTA2OGFlMTU1MTMuLmE1ZGM2M2YyM2RiZDQxYTI3MGVlNTZjMzJhNDQxNzc3ZDZhZGRi
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjgs
NyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAg
ICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRh
dGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgdXBkYXRlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9y
KENhY2hlZFJlc291cmNlOjpTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNl
aXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAKQEAgLTE2OSw3ICsxNjks
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0
IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdl
Jik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAKaW5kZXggNzFlMTYwODJmZmU2NTVkMTExZjE2OTkwZDEyMzA1MzViZWFjYmY5NS4u
ZDMzNjExMzIxM2ZiZWJmZjRlOTFmZjY1ZjgzZmZlMjRkM2U4YTBjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCwxMiAr
NDgsMTIgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRp
YU9ySWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25h
bDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3Jl
bWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsKICAgICBz
aXplX3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKLSAgICBpZiAoIWRhdGEg
fHwgZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKKyAgICBpZiAoZGF0YS5zaXpl
KCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOworICAgIHJl
dHVybiBkYXRhLmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICAgICAgcHJldmlv
dXNEYXRhU2l6ZSArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogCiAgICAgICAgIFNldEZvclNj
b3BlPGJvb2w+IG5vdGlmeVNjb3BlKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnksIHRydWUpOwot
ICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS5kYXRh
KCksIGluY3JlbWVudGFsRGF0YS5zaXplKCkpOworICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CiAgICAgfQog
ICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKIApAQCAtODksMTEgKzg5LDExIEBA
IHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6
RG9Ob3RCdWZmZXJEYXRhKTsKLSAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGRhdGEs
IGxlbmd0aCk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsK
KyAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGJ1ZmZlcik7CisgICAgQ2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCkBAIC0xMTAsOSArMTEwLDkgQEAgdm9pZCBDYWNo
ZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdAogICAgICAgICBpZiAoZGF0YSkgewogICAgICAgICAgICAgaWYgKGRhdGEg
IT0gbV9kYXRhLmdldCgpKQogICAgICAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7Ci0gICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxh
dGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gaW5j
cmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoKm1fZGF0YSkpIHsK
ICAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAg
ICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRh
KCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGll
bnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CkBAIC0xMzAsMTUgKzEzMCwxNSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0CiAgICAg
fQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7Ci0gICAgaWYgKCFsZW5ndGgpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jl
c291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCi0gICAgICAgIGMtPmRhdGFSZWNl
aXZlZCgqdGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgYy0+ZGF0YVJlY2VpdmVkKCp0aGlz
LCBidWZmZXIpOwogfQogCiBzdGF0aWMgdm9pZCBpdGVyYXRlUmVkaXJlY3RzKENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiYmIGhhbmRsZSwgQ2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQmIGNsaWVudCwgVmVjdG9yPHN0ZDo6cGFpcjxSZXNvdXJjZVJlcXVlc3QsIFJlc291cmNl
UmVzcG9uc2U+PiYmIHJlZGlyZWN0c0luUmV2ZXJzZU9yZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MCw5ICsx
NzAsOSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQmIGMpCiAgICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAg
ICAgICAgbV9kYXRhLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgICAg
ICAgICAgICAgIG1fZGF0YS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYm
IGJ1ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQ2xpZW50KCpjbGllbnQpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIHNlZ21l
bnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGll
bnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgYnVmZmVyKTsKICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghaGFzQ2xpZW50KCpjbGllbnQpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCBhNzg2
NWY4YWQxNzhhZWZiMzIyMGE1NmRjZmYxOTU5OTNjZjk1YWU0Li4zNmU0N2ExZGJhMjMxMjhkYzUz
MDczYjcwYjVmM2Y4NTM4MDRhZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtMjgsNiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VUaW1pbmc7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAogY2xh
c3MgQ2FjaGVkUmF3UmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewpAQCAt
NTIsNyArNTMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgdXBkYXRl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTY2LDggKzY3LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsK
ICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFs
PFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKikgY29uc3Q7Ci0gICAgdm9pZCBub3RpZnlDbGllbnRz
RGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50
YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgdm9pZCBub3RpZnlD
bGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIAogI2lmIFVT
RShRVUlDS19MT09LKQogICAgIHZvaWQgcHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaAppbmRleCAyM2VhYjhkZjI5NThmZjhiNDlm
MzU0NWI1MDgzZmUyOTg5ZWYxMjIwLi5jZDY1MGEyZjMxMzZjZTliMjYyZmJkZmM4MjkyOGJmMjEw
NzlmYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQuaApAQCAtMzEsNiArMzEsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJj
ZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFz
cyBSZXNvdXJjZVRpbWluZzsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgpA
QCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCB1aW50OF90KiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hh
cmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggOWRlMGEwNGNkNWVjNWYzZmFkMmZiMTZk
N2IzMjJjODU4YTM4YTZiMi4uN2I5YzYxZjk2NjE3NTQ2YjY2YmNjM2M2M2VjYTBlODU3ZTI2MmVm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQordm9pZCBD
YWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFT
U0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RC
dWZmZXJEYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKaW5kZXggYzk4MmRkNjkzN2EwYmMyYmYzOGM0MjYxMjZmZmU2ZTc4Yzc5NjQ3OC4uNTM0
ZTAxMmNjNGZhNWRkMmJlMWZkNmVlZTVhYTZhZTRlNWZhZTIwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmco
KTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNl
RGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVz
b3VyY2U6OlN0YXR1cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyLmgKaW5kZXggOTZkODk4MmU5MzUwMzQ3Njk2ZmM5NjlkNTg1YWI3MDc1ZGUw
MjBlZC4uY2EwMTkzNGQzMWJhNWQ1MDlmZWJlN2QyZjkxMjI0OWQyNzEyNmFiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTQ3LDgg
KzQ3LDcgQEAgcHVibGljOgogICAgIH5MZWdhY3lQcmV2aWV3TG9hZGVyKCk7CiAKICAgICBib29s
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Cisg
ICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBib29sIGRp
ZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIGRpZEZhaWwoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IDQ4NzU2YTMzYjU4
NzJiNDRiMmYwYmEwODQyNDFmODZjZmFlYmNhYTAuLmEyNGI4YzU5ZDQ2MGFmZjVlMmZlZjgzMTkw
YzIwODY1NzIzNjVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIubW0KQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFJlZjxMZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50PiBtYWtlQ2xpZW50KGNvbnN0IFJlc291cmNlTG9hZGVyJiBsb2FkZXIs
IGMKICAgICByZXR1cm4gZW1wdHlDbGllbnQoKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252
ZXJ0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBw
ZW5kaW5nIGJ1ZmZlciB3aXRoIHNpemUgJWxkLiIsIGJ1ZmZlci5zaXplKCkpOwogICAgIG1fb3Jp
Z2luYWxEYXRhLmFwcGVuZChidWZmZXIpOwogICAgIG1fY29udmVydGVyLT51cGRhdGVNYWluUmVz
b3VyY2UoKTsKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIpOworICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0xNjIsOCArMTYyLDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVy
dGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnMKICAgICBpZiAoIW1faGFz
UHJvY2Vzc2VkUmVzcG9uc2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZGF0YUNvcHkg
PSBkYXRhLmNvcHkoKTsKLSAgICByZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZN
b3ZlKGRhdGFDb3B5KSwgZGF0YUNvcHktPnNpemUoKSwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAg
cmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoZGF0YSwgZGF0YS5zaXplKCksIERhdGFQ
YXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252
ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKQpAQCAtMjQzLDExICsy
NDIsNiBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNl
TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUgogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5
UHJldmlld0xvYWRlciBjcmVhdGVkIHdpdGggcHJldmlldyBmaWxlIG5hbWUgXCIlc1wiLiIsIG1f
Y29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotYm9vbCBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIGRpZFJlY2VpdmVCdWZmZXIoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKS5nZXQoKSk7Ci19Ci0KIGJvb2wgTGVnYWN5UHJldmll
d0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogewog
ICAgIHJldHVybiAhbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcAppbmRleCA2MDI2MzFiYjdjZDEwODYwYjFhMzEyMTA0M2M5N2Q4
ZWZlNDQ3NjFkLi42N2FjNzdlMmJmNzYxMDQ1YzhjMThkNWM3YWRlYzdmNzMzOGFiNzEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxv
YWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0yMTAsMTMgKzIx
MSwxMyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaXNwYXRjaEVycm9yRXZlbnQoKQogICAgIGRpc3Bh
dGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNh
bkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKLXZvaWQgRXZlbnRT
b3VyY2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2
b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgYm9vbCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBPUEVOKTsKICAgICBBU1NFUlQobV9y
ZXF1ZXN0SW5GbGlnaHQpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oIW1faXNTdXNwZW5kZWRGb3JCYWNrRm9yd2FyZENhY2hlKTsKIAotICAgIGFwcGVuZCht
X3JlY2VpdmVCdWZmZXIsIG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbmd0aCkpOworICAgIGFw
cGVuZChtX3JlY2VpdmVCdWZmZXIsIG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCkpKTsKICAgICBwYXJzZUV2ZW50U3RyZWFtKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuaAppbmRleCBkMDEyZDM3N2QxOTc2NzVmMGZlMTE0NWYxNzE5ZjE3ZmRkYmZl
YTNiLi5kNjYyYWUyODA2ZjRiMjQ4NjdiMDE2MDhlMDRkYmI0Zjk3ZGJhMDYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudFNvdXJjZS5oCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDg0YmMyODQ1YTY2YzE4ZDk1ZmIyNmVl
MjBkMmJmNjBiMzBiZTY3OTcuLmQwOWYxMDUyYTBmMzFlZTk3MDYxMTAxM2IzOTM1ZmI1MzA5NTUw
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMTM4LDcg
KzEzOCw3IEBAIFZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtlRGF0
YSgpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwogICAgIGlmIChoYXNPbmVT
ZWdtZW50KCkgJiYgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KG1fc2Vn
bWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSAmJiBtX3NlZ21lbnRzWzBdLnNlZ21l
bnQtPmhhc09uZVJlZigpKQotICAgICAgICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4Y2hhbmdlKHN0
ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJs
ZURhdGEpLCBWZWN0b3I8dWludDhfdD4oKSk7CisgICAgICAgIGNvbWJpbmVkRGF0YSA9IHN0ZDo6
ZXhjaGFuZ2Uoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+Pihjb25zdF9jYXN0PERhdGFTZWdtZW50
Jj4obV9zZWdtZW50c1swXS5zZWdtZW50LmdldCgpKS5tX2ltbXV0YWJsZURhdGEpLCBWZWN0b3I8
dWludDhfdD4oKSk7CiAgICAgZWxzZQogICAgICAgICBjb21iaW5lZERhdGEgPSBjb21iaW5lU2Vn
bWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7CiAKQEAgLTI1MCw2ICsyNTAsMTMgQEAgdm9p
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVu
dC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAordm9pZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKGNvbnN0IEZ1bmN0
aW9uPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik+JiBhcHBseSkgY29uc3QKK3sKKyAgICBhdXRv
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9OworICAgIGZvciAoYXV0byYgc2VnbWVudCA6
IG1fc2VnbWVudHMpCisgICAgICAgIGFwcGx5KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlZ21lbnQu
c2VnbWVudC5jb3B5UmVmKCkpKTsKK30KKwogYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAg
ICBpZiAocHJlZml4LmVtcHR5KCkpCkBAIC00MTUsNyArNDIyLDcgQEAgU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoKQogICAgIG1fY29udGlndW91cyA9IHRydWU7CiB9CiAKLVNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQorU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCiB7CiAgICAg
bV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RG
TW92ZShzZWdtZW50KSB9KTsKQEAgLTYwMyw3ICs2MTAsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OmVuc3VyZUJ1ZmZlcigpCiAgICAgICAgIG1fYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZm
ZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0
aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmIHNlZ21l
bnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBz
aXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9u
V2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/
ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC02
MTksNyArNjI2LDcgQEAgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3JiBvdGhlciwgc2kKIAogUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIGNvbnN0
IFJlZjxjb25zdCBEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Nl
Z21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKICAgICAgICAgW3NpemUg
PSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaAppbmRleCAwZjY0NDc2NWZhODc1ZmNhNjg3YmU5MGE3NTdkMDYyMDkyNGYzMmI4Li4x
Nzc1MDZjZjA0NzBmZTM1Y2M5YzJiNGI2ZmNkYmY5YjQyYTE5MThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMTc4LDEyICsxNzgsMTMgQEAgcHVibGljOgogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIo
Y29uc3QgRnVuY3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmKT4mKSBjb25zdDsKIAogICAg
IHVzaW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFj
a3dhcmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAg
IHNpemVfdCBiZWdpblBvc2l0aW9uOwotICAgICAgICBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQ7
CisgICAgICAgIGNvbnN0IFJlZjxjb25zdCBEYXRhU2VnbWVudD4gc2VnbWVudDsKICAgICB9Owog
ICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50
cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQpAQCAtMjYwLDcgKzI2MSwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKICAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcigpKTsKICAgICAgICAgZWxzZSBp
ZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCi0gICAgICAgICAgICAmJiAoc3RkOjpp
c19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgJiYg
KHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxjb25zdCBEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihB
cmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8c3RkOjpyZW1vdmVfY29u
c3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxBcmdzPj4sIERhdGFTZWdtZW50PiAmJi4uLikp
CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXV0byBi
dWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKTsKQEAgLTI4Nyw4ICsyOTEsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlcihjb25zdCBE
YXRhU2VnbWVudCYgc2VnbWVudCkKKyAgICAgICAgOiBTaGFyZWRCdWZmZXIoUmVmPGNvbnN0IERh
dGFTZWdtZW50PiB7IHNlZ21lbnQgfSkgeyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+
JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpOwpAQCAtMzYwLDcgKzM2Niw3IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmll
dyB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9z
aXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6
bnVsbG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3Qg
U2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsg
fQpAQCAtMzcxLDcgKzM3Nyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5Q
dHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBj
b25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8Y29uc3QgRGF0
YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNl
Z21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlci5oCmluZGV4IDg4NjkxZGMyNTZkNmRkNmM0NWY0NmUwMTU0OTY3NDI0NWFhMzUzMzcuLmM5
NThmODQ0ZGFjMTQzOTRlMjRkZWZlYWJhNzU0ZjlkOGE4MTI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlci5oCkBAIC01MSw5ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVS
ZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudCB1c2VzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCi0gICAgdmlydHVhbCB2
b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHBsYXRmb3JtLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNlaXZlZChwbGF0Zm9ybSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZpbmlz
aGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IGVjMGE3YWNmNDczMjYxYzc0ZTdlZWZmYWRjOWNjYzNjM2U1N2YyMjguLjc3MDhh
NThkMmI1ODA4Yjk0MDAyZDIwNWU5OGEyN2JiMmNlNmYzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEzOCw3ICsxMzgs
NyBAQCB2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCosIGludCkKK3ZvaWQgV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
U2hhcmVkQnVmZmVyJikKIHsKICAgICBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShyZXNvdXJj
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCBjZGYxNDNmM2MzY2RlOTcxZmQ3OWRjZjczMjhiZmNkN2IzMjYwMmRjLi42MjY3
YmUwMGM1NGVlNjE3MDJmYjc3YjJhNWZiNTY3YjI3ZWI5ZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKQEAgLTU3LDcgKzU3LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZ1bGZpbGxS
ZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggZjkyMWYzZGEwZTY5
YjMzOTk3N2M5ZTNlNDk2NjdhMjhmNWU5NWNiZC4uNzI2NDcyNWM4ZTU2MjJkZjM4YjQ1YmNkOTlh
Yzc4NzU1YjllYjg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogCiAgICAgLy8g
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwpA
QCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOCiAgICAgbV9wYXJlbnQu
bG9hZEZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCosIGludCkK
K3ZvaWQgQ2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoJnJlc291
cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGlmIChhdXRvKiBkYXRhID0gcmVzb3VyY2UucmVzb3Vy
Y2VCdWZmZXIoKSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJl
Y3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNv
dXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2Uo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgZmluYWwgeyB9Ci0gICAg
dm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNz
Q29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2Fk
RmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBs
b2FkRmluaXNoZWQoKTsgfQpAQCAtMjExLDkgKzIxMSw5IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJj
ZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgp
OwogfQogCi12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3ZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9i
dWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZl
cik7CiAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5n
ZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
aW5kZXggOTMwMTkwOTk0NWI0YTIzZDY2NzgyZjM1MGI1NmU0NDc5ZjgwMjZmMi4uYjdiMDdmZjE0
NTRkNTYxYTMwMjEwOGFlMzIyOTFlOGY4MzQzN2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCiAgICAgdm9p
ZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hl
Y2spPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
bG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMsNyBA
QCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENv
bnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1p
bmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0
V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CkBAIC0xMTA3LDcgKzEx
MDcsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYQogICAgIC8vIHRoYXQgZmlyc3QgcGFja2Fn
ZSBkZWxpdmVyeSB3b3VsZCBpbmNsdWRlIHRoZSB0aW1lIG9mIHNlbmRpbmcgb3V0IHRoZSByZXF1
ZXN0IGFuZCBnZXR0aW5nIHRoZSBkYXRhIGJhY2suIFNpbmNlIHdlIGNhbid0IGRpc3Rpbmd1aXNo
IHRoZQogICAgIC8vIHNlbmRpbmcgdGltZSBmcm9tIHRoZSByZWNlaXZpbmcgdGltZSwgaXQgaXMg
YmV0dGVyIHRvIGlnbm9yZSBpdC4KICAgICBpZiAoIXN0ZDo6aXNuYW4obWVtYmVycy0+ZG93bmxv
YWRTdGFydFRpbWUpKSB7Ci0gICAgICAgIG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzICs9
IGJ1ZmZlci0+c2l6ZSgpOworICAgICAgICBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyAr
PSBkYXRhLnNpemUoKTsKICAgICAgICAgZG91YmxlIHRpbWVTaW5jZVN0YXJ0ID0gKFdhbGxUaW1l
Ojpub3coKSAtIG1lbWJlcnMtPmRvd25sb2FkU3RhcnRUaW1lKS5zZWNvbmRzKCk7CiAgICAgICAg
IEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiUiV1OiBkb3dubG9hZGVkICUiIEdfR1VJTlQ2NF9GT1JN
QVQgIiBieXRlcyBpbiAlZiBzZWNvbmRzID1+ICUxLjBmIGJ5dGVzL3NlY29uZCIsIG1fcmVxdWVz
dE51bWJlciwgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMsIHRpbWVTaW5jZVN0YXJ0CiAg
ICAgICAgICAgICAsIHRpbWVTaW5jZVN0YXJ0ID8gbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0
ZXMgLyB0aW1lU2luY2VTdGFydCA6IDApOwpAQCAtMTExNSwyMCArMTExNSwxOSBAQCB2b2lkIENh
Y2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPEZyYQogICAgICAgICBtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSA9IFdh
bGxUaW1lOjpub3coKTsKICAgICB9CiAKLSAgICBidWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShh
dXRvJiBzZWdtZW50KSB7Ci0gICAgICAgIGludCBsZW5ndGggPSBzZWdtZW50LnNpemUoKTsKLSAg
ICAgICAgR1NUX0xPR19PQkpFQ1Qoc3JjLCAiUiV1OiBIYXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBt
X3JlcXVlc3ROdW1iZXIsIGxlbmd0aCk7CisgICAgaW50IGxlbmd0aCA9IGRhdGEuc2l6ZSgpOwor
ICAgIEdTVF9MT0dfT0JKRUNUKHNyYywgIlIldTogSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgbV9y
ZXF1ZXN0TnVtYmVyLCBsZW5ndGgpOwogCi0gICAgICAgIG1lbWJlcnMtPnJlYWRQb3NpdGlvbiAr
PSBsZW5ndGg7Ci0gICAgICAgIEFTU0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+
cmVhZFBvc2l0aW9uIDw9IG1lbWJlcnMtPnNpemUpOworICAgIG1lbWJlcnMtPnJlYWRQb3NpdGlv
biArPSBsZW5ndGg7CisgICAgQVNTRVJUKCFtZW1iZXJzLT5oYXZlU2l6ZSB8fCBtZW1iZXJzLT5y
ZWFkUG9zaXRpb24gPD0gbWVtYmVycy0+c2l6ZSk7CiAKLSAgICAgICAgZ3N0X2VsZW1lbnRfcG9z
dF9tZXNzYWdlKEdTVF9FTEVNRU5UX0NBU1Qoc3JjKSwgZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQo
R1NUX09CSkVDVF9DQVNUKHNyYyksCi0gICAgICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Vi
a2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwg
bWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNp
emUsIG51bGxwdHIpKSk7CisgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKEdTVF9FTEVNRU5U
X0NBU1Qoc3JjKSwgZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQoR1NUX09CSkVDVF9DQVNUKHNyYyks
CisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfbmV3KCJ3ZWJraXQtbmV0d29yay1zdGF0aXN0aWNzIiwg
InJlYWQtcG9zaXRpb24iLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5yZWFkUG9zaXRpb24sICJz
aXplIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+c2l6ZSwgbnVsbHB0cikpKTsKKworICAgIGNo
ZWNrVXBkYXRlQmxvY2tzaXplKGxlbmd0aCk7CisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RC
dWZmZXJOZXdXcmFwcGVkRmFzdChmYXN0TWVtRHVwKGRhdGEuZGF0YSgpLCBsZW5ndGgpLCBsZW5n
dGgpOworICAgIGdzdF9hZGFwdGVyX3B1c2gobWVtYmVycy0+YWRhcHRlci5nZXQoKSwgYnVmZmVy
KTsKIAotICAgICAgICBjaGVja1VwZGF0ZUJsb2Nrc2l6ZShsZW5ndGgpOwotICAgICAgICBHc3RC
dWZmZXIqIGJ1ZmZlciA9IGdzdEJ1ZmZlck5ld1dyYXBwZWRGYXN0KGZhc3RNZW1EdXAoc2VnbWVu
dC5kYXRhKCksIGxlbmd0aCksIGxlbmd0aCk7Ci0gICAgICAgIGdzdF9hZGFwdGVyX3B1c2gobWVt
YmVycy0+YWRhcHRlci5nZXQoKSwgYnVmZmVyKTsKLSAgICB9KTsKICAgICBzdG9wTG9hZGVySWZO
ZWVkZWQoc3JjLCBtZW1iZXJzKTsKICAgICBtZW1iZXJzLT5yZXNwb25zZUNvbmRpdGlvbi5ub3Rp
ZnlPbmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggYmE4ZmQ0ZmY0ZjFlNDFjOWFkNGZhNzRh
NDJiZTRlMmJkMTFhYTg0My4uZGNhYzU5OTdhNjEzNWQyYWI3NTlhN2FkMmViYjA0MzUyZDUxNGE3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM2LDkgKzM2LDExIEBAIFJlc291cmNlSGFuZGxlQ2xp
ZW50OjpSZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogUmVzb3VyY2VIYW5kbGVD
bGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBSZXNvdXJj
ZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICBidWZmZXIuZm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYm
IGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlciwgZW5jb2Rl
ZERhdGFMZW5ndGgpOworICAgIH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggYzRmMDU0ODVm
Mjg3MGIxMTZkYTdjNzYwZDNjMGZjZTk2ZWMyYjRhNS4uZTQ0MmM5NzM0YzExOTg0OTBhMWM2Y2Fj
NTc3MjVmZDUxOTZiM2JiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNDQsMTMgKzQ0LDE0IEBAIE9CSkNf
Q0xBU1MgTlNDYWNoZWRVUkxSZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3JlZGVudGlhbDsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBQcm90ZWN0
aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogZW51bSBDYWNoZVN0
b3JhZ2VQb2xpY3kgewogICAgIFN0b3JhZ2VBbGxvd2VkLApAQCAtNjUsOSArNjYsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNp
Z25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxC
eXRlc1RvQmVTZW50Ki8pIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0
YUxlbmd0aCovKSB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpOwotICAgIAorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCAvKmVuY29kZWRE
YXRhTGVuZ3RoKi8pIHsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hy
b25vdXNMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRjMDQyMTBjNWE1MTNhYzNmNTQ3MTQ2ZDlmODVj
ODJiZDg4MTM3NzYuLjMwYjRiYjBmZGFlZjdhZTJjYzc0YWM2MDlmN2IwMDk5N2U1YTZkY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hy
b25vdXNMb2FkZXJDbGllbnQuY3BwCkBAIC03MSw5ICs3MSw5IEBAIHZvaWQgU3luY2hyb25vdXNM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVz
b3VyY2VSCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTeW5jaHJvbm91c0xv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCit2b2lk
IFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQog
ewotICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIFN5bmNocm9ub3VzTG9hZGVy
Q2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKaW5kZXggNjgzOGU5ZDhjZjQzNzk2
ZDJmMzk0YmExZjU0ZjA5ZDBiNjdlOGFiZC4uYzRjYjcyZGM3YTY1NWZkMzY5NmEzMzNmZTA1Y2Rl
ZDYyOTc2YWZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
eW5jaHJvbm91c0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaApAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKwogY2xhc3MgU3luY2hyb25v
dXNMb2FkZXJNZXNzYWdlUXVldWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3luY2hy
b25vdXNMb2FkZXJNZXNzYWdlUXVldWU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN5bmNo
cm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlKTsgfQpAQCAtNjYsNyArNjgsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUq
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVu
c2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IC8q
ZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggZmMyNzI1NDA4OTJiOGUyY2Q3N2RlOGY2ZDllNTRh
OGM4YjU5N2Y2MS4uMTk4MTRhMzY1YzlmNjYxYTIxYzIyOWFkYmQwNDYxMWMyMDk0N2U2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUmFu
Z2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNl
aXZlZChXZWJDb3JlTlNVCiAKICAgICAgICAgICAgIHNpemVfdCBieXRlc0Zyb21UaGlzVmlld1Rv
RGVsaXZlciA9IHN0ZDo6bWluKGJ1ZmZlclZpZXcuc2l6ZSgpLCByYW5nZS5lbmQgLSBieXRlSW5k
ZXggKyAxKTsKICAgICAgICAgICAgIGJ5dGVJbmRleCArPSBieXRlc0Zyb21UaGlzVmlld1RvRGVs
aXZlcjsKLSAgICAgICAgICAgIFt0YXNrIHJlc291cmNlOm51bGxwdHIgcmVjZWl2ZWREYXRhOlNo
YXJlZEJ1ZmZlckRhdGFWaWV3KGJ1ZmZlclZpZXcsIGJ5dGVzRnJvbVRoaXNWaWV3VG9EZWxpdmVy
KS5jcmVhdGVTaGFyZWRCdWZmZXIoKV07CisgICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxs
cHRyIHJlY2VpdmVkRGF0YTpTaGFyZWRCdWZmZXJEYXRhVmlldyhidWZmZXJWaWV3LCBieXRlc0Zy
b21UaGlzVmlld1RvRGVsaXZlcikuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgp
XTsKICAgICAgICAgfQogICAgICAgICBpZiAoYnl0ZUluZGV4ID49IHJhbmdlLmVuZCkgewogICAg
ICAgICAgICAgW3Rhc2sgcmVzb3VyY2VGaW5pc2hlZDpudWxscHRyIG1ldHJpY3M6TmV0d29ya0xv
YWRNZXRyaWNzIHsgfV07CkBAIC0yMzgsNyArMjM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKKyAg
ICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCkBAIC0yNDYsNyArMjQ2LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJp
bmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRh
dGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVy
LmFwcGVuZChidWZmZXIpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNr
c1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5o
CmluZGV4IGY5MDk2ZWUyZTlmMjQyZmYwNGQ3MDVjMmFhMTA5M2E1NWU1NzM1ZGIuLmVhNGE5YmYy
OTc4MjllYmQwMjkxNDc2Y2JmOGE3ZTU0OTQ3MjEyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5o
CkBAIC0xNTgsNyArMTU4LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNV
UkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxv
bmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcp
dG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4m
Jiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJlc291cmNl
OihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2Vp
dmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YTsKKy0g
KHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZXRhaW5QdHI8TlNEYXRhPiYmKWRhdGE7CiAtICh2b2lk
KXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJl
c3BvbnNlIHJlcXVlc3Q6KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxl
dGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hl
Y2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwog
LSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJillcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCA1ZTJlOGU4ZDlkNzY2NzJh
MjQxNGY3NmY1YzA4ZjI1OWUwMjlmNTA0Li4zYzhiZTA4YzI5MzRlNTRkYTNiNzQ5Y2E2ZGEzNGVk
YTk2ZGM5YjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC02MDgsNyArNjA4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNo
b3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2
b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lk
IGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKQEAgLTY1MiwxMyArNjUyLDEzIEBAIGJvb2wgV2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjCiAgICAgcmV0dXJuIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHNob3VsZENhY2hl
UmVzcG9uc2U6cmVzcG9uc2VdOwogfQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
a0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW21fdGFzayByZXNvdXJjZTomcmVzb3VyY2UgcmVjZWl2ZWREYXRhOldURk1vdmUoYnVmZmVy
KV07CisgICAgW21fdGFzayByZXNvdXJjZTomcmVzb3VyY2UgcmVjZWl2ZWREYXRhOmJ1ZmZlci5j
cmVhdGVOU0RhdGEoKV07CiB9CiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xp
ZW50OjpyZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKQEAgLTkzMSwxNSArOTMxLDE0IEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAg
ICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVu
dFJhbmdlKS5pc0VtcHR5KCk7CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJilkYXRhCistICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4mJilkYXRhCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNv
dXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2Vs
ZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAg
YXV0byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKLSAg
ICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXpl
KCk7CisgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gW2Rh
dGEgbGVuZ3RoXTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVs
ZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNl
c3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKLSAg
ICAgICAgICAgIFtkYXRhRGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25n
U2VsZi5nZXQoKS5zZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9u
Z1NlbGYuZ2V0KCkgZGlkUmVjZWl2ZURhdGE6bnNEYXRhLmdldCgpXTsKKyAgICAgICAgICAgIFtk
YXRhRGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2VsZi5nZXQoKS5z
ZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkg
ZGlkUmVjZWl2ZURhdGE6ZGF0YS5nZXQoKV07CiAgICAgfV07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNw
cAppbmRleCBmMzIzYWYyNjQwMTZiNjYzOTMxMWFjMjMyNDZlYzVlZDgwYTM5NTQ1Li4zYmQyY2M3
NDI4NmVjNDY3ODY0MDI0OGM1ZTFjZmVjYzVhMDI2N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBA
IC0yNDMsNyArMjQzLDcgQEAgYm9vbCBDdXJsQ2FjaGVNYW5hZ2VyOjpnZXRDYWNoZWRSZXNwb25z
ZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYgcmUKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VI
YW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEN1cmxD
YWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiBqb2IsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjU1LDExICsyNTUsMTEgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCB1aW50OF90KiBkYXRhLAogICAgICAgICBp
ZiAoaXQtPnZhbHVlLT5nZXRKb2IoKSAhPSAmam9iKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGlmICghaXQtPnZhbHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLCBzaXplKSkKKyAgICAg
ICAgaWYgKCFpdC0+dmFsdWUtPnNhdmVDYWNoZWREYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSkpCiAgICAgICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwpOwogCiAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUgKz0gc2l6ZTsKKyAgICAgICAg
ICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9IGRhdGEuc2l6ZSgpOwogICAgICAgICAgICAgbV9M
UlVFbnRyeUxpc3QucHJlcGVuZE9yTW92ZVRvRmlyc3QodXJsKTsKICAgICAgICAgICAgIG1ha2VS
b29tRm9yTmV3RW50cnkoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKaW5kZXggYzllMjlkODA5
NzBjNDA0NmU3OTYxNjJiZDk4MzI5MTFiNmRlZTY4Yy4uYjY1Yjk2M2I2OGU2YTY4ZDk4MTkzYWFm
NzNmMTA4MDNkOTdmY2QyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGdldENhY2hlZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJj
ZVJlc3BvbnNlJik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSYsIFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNl
SGFuZGxlJiwgY29uc3QgdWludDhfdCosIHNpemVfdCk7IC8vIFNhdmUgZGF0YQorICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUmLCBjb25zdCBTaGFyZWRCdWZmZXImKTsgLy8g
U2F2ZSBkYXRhCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlJik7CiAg
ICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggMzQ5NDQ1
OTI1NGFjOTNmYzE5Y2IxMjE1MGE2MWJjMmJjZWQwMmQ2ZS4uYWFmMGM4ZDk0MDcwNTVkNjhhMDU1
ZmIzNTA3OTY3ZGU0YzAwODZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lk
IEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVz
dCwgQ3VybFJlc3BvbnNlJiYgcgogfQogCiAKLXZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3Qm
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNl
aXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1fbGlzdGVuZXIpCi0gICAgICAgIG1fbGlzdGVuZXItPmRp
ZFJlY2VpdmVEYXRhT2ZMZW5ndGgoYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2xpc3RlbmVy
LT5kaWRSZWNlaXZlRGF0YU9mTGVuZ3RoKGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxE
b3dubG9hZDo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBOZXR3b3JrTG9h
ZE1ldHJpY3MmJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuaAppbmRleCBjZGU0NDQ1Nzc1Zjc0NDIzMzA1MzBiNjViMTM1N2JhNmJm
ZDliYjgxLi5hMTIwNzU4MzQ5M2Y3ODMzNzU2ZDNjNDk4N2NmNWM5NWRmYTk3OWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5o
CkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
Q3VybERvd25sb2FkTGlzdGVuZXIgewogcHVibGljOgpAQCAtNzIsNyArNzMsNyBAQCBwcml2YXRl
OgogICAgIFJlZjxDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
Jik7CiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25n
IGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjdXJsRGlk
UmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEo
Q3VybFJlcXVlc3QmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGN1
cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcAppbmRleCAwOTBkMDM5YmE0NWRlMTAyOGVkZjc2ODRjNmQ3ZDJmMjk2ZTNhMzRkLi5kMWU1
ODYyNGFhZWUyZWNlODEyOWRkMzRlYTk4NjYyNmU2Y2RmMDY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwCkBAIC0xMTksMTIgKzExOSwxMiBAQCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmIGNsaWVudCwgY29ucwogCiB9
CiAKLXZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9zdGF0
ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3Nl
ZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVy
LmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9j
ZXNzQ29udGVudCgpKSB7IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCmluZGV4IDlhMWExYmJkMTkz
OGExNGY2OWZjY2VlM2YwZjg5Yjk3YTRhMjE4NzQuLjVjMDhiY2M1ZWIzZTRiYmNjMDI5YjQ3Njc4
NjhmNDNlMmY5NWMzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaApAQCAtMzQsNyArMzQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQ7CiBj
bGFzcyBDdXJsUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEN1cmxNdWx0
aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYsIGNvbnN0IFN0cmluZyYpOwog
ICAgIH5DdXJsTXVsdGlwYXJ0SGFuZGxlKCkgeyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCmluZGV4IGM4MTM4ODZhOGQ1YzVmYTZj
MTJkMTQxMzMxOTEwMWFmMjUwMmEyYWQuLmRmNzYzN2RlOWQ5ZmYyYjZiMTA4NTVkMGM1NzcxMjU1
MzRiMmE2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApAQCAtMzMsNyArMzMs
NyBAQCBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VybE11bHRpcGFydEhh
bmRsZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVIZWFkZXJG
cm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KGNv
bnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5DdXJsTXVsdGlwYXJ0
SGFuZGxlQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBiYWNiMmI1NTBiMjg0MTMxZDFhYzIwYWE2
NjM4ODZmZTIyZmU3Zjk4Li5kMGVmMGU3MTE2MmI1MzYzYWQ0MjU0MTdkODVlYzcyMzhmM2Y2MmJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCBzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJl
Y2VpdmVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogCiAvLyBjYWxsZWQgd2l0aCBkYXRhIGFmdGVy
IGFsbCBoZWFkZXJzIGhhdmUgYmVlbiBwcm9jZXNzZWQgdmlhIGhlYWRlckNhbGxiYWNrCiAKLXNp
emVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgp
KQogICAgICAgICByZXR1cm4gMDsKQEAgLTQxMSw3ICs0MTEsNyBAQCBzaXplX3QgQ3VybFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIENVUkxfV1JJVEVGVU5DX1BBVVNFOwogICAgIH0KIAotICAgIGF1dG8g
cmVjZWl2ZUJ5dGVzID0gYnVmZmVyLT5zaXplKCk7CisgICAgYXV0byByZWNlaXZlQnl0ZXMgPSBi
dWZmZXIuc2l6ZSgpOwogICAgIG1fdG90YWxSZWNlaXZlZFNpemUgKz0gcmVjZWl2ZUJ5dGVzOwog
CiAgICAgd3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoYnVmZmVyKTsKQEAgLTQyMCw4
ICs0MjAsOCBAQCBzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgaWYgKG1fbXVsdGlwYXJ0SGFuZGxl
KQogICAgICAgICAgICAgbV9tdWx0aXBhcnRIYW5kbGUtPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7
CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0gV1RGTW92
ZShidWZmZXIpXShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQmIGNsaWVu
dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlQnVmZmVy
KHJlcXVlc3QsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICBjYWxsQ2xpZW50KFtidWZm
ZXIgPSBSZWYgeyBidWZmZXIgfV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xp
ZW50JiBjbGllbnQpIHsKKyAgICAgICAgICAgICAgICBjbGllbnQuY3VybERpZFJlY2VpdmVEYXRh
KHJlcXVlc3QsIGJ1ZmZlcik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KQEAg
LTQ0NCwxNiArNDQ0LDE2IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXJGcm9t
TXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBoZWFkZXJzKQogICAgIGludm9rZURpZFJl
Y2VpdmVSZXNwb25zZShyZXNwb25zZSwgQWN0aW9uOjpOb25lKTsKIH0KIAotdm9pZCBDdXJsUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRp
cGFydChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRP
ckNhbmNlbGxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlY2VpdmVCeXRlcyA9
IGJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gcmVjZWl2ZUJ5dGVzID0gYnVmZmVyLnNpemUoKTsK
IAogICAgIGlmIChyZWNlaXZlQnl0ZXMpIHsKLSAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpXShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQm
IGNsaWVudCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjbGllbnQuY3VybERpZFJlY2VpdmVCdWZm
ZXIocmVxdWVzdCwgV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgY2FsbENsaWVudChbYnVmZmVy
ID0gUmVmIHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVxdWVzdENsaWVu
dCYgY2xpZW50KSB7CisgICAgICAgICAgICBjbGllbnQuY3VybERpZFJlY2VpdmVEYXRhKHJlcXVl
c3QsIGJ1ZmZlcik7CiAgICAgICAgIH0pOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggYTZmYjMxNTc2NmJh
NWMyZjNlYTMyYjllZjUxZWIwMDNlOGNiODlkMC4uOTJiNzQ2OTdiYzMxNzVjZTBjZGFkZjE1MWZh
MjU0M2EwM2UxMTk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmgKQEAgLTEyMiw5ICsxMjIsOSBAQCBwcml2YXRlOgogICAgIENV
UkwqIHNldHVwVHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICBzaXplX3Qgd2lsbFNlbmREYXRhKGNo
YXIqLCBzaXplX3QsIHNpemVfdCk7CiAgICAgc2l6ZV90IGRpZFJlY2VpdmVIZWFkZXIoU3RyaW5n
JiYpOwotICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgc2l6ZV90IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YUZyb21NdWx0aXBhcnQoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2RlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENh
bmNlbFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5hbGl6ZVRyYW5zZmVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3RDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdENsaWVudC5oCmluZGV4IDM0Nzk4MzJmNTc2ZDQxMjhhZmE1MWM4MTQyNGNjZmQ3NDFkZjZh
ZTcuLjczMDMzZjBlZjRlYjRkZjIxYWI3NjQ2M2NjMzk4MTliMjg2Nzg0OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENs
aWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgQ3VybFJl
c3BvbnNlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
LWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIEN1cmxSZXF1ZXN0Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJs
UmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGN1cmxEaWRS
ZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0Jiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkQ29tcGxl
dGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwg
Q2VydGlmaWNhdGVJbmZvJiYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcAppbmRleCAzMDVkNGU1YzlmYzI3MDc3NTc4N2IwZjlhOTE5NzljMDg4ODlhOGE2Li4z
ODk3ZTAxYzZkMDc2NmRhY2YzZTE5YjIzNzMzNmY1YjU1Y2U1MjY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0MiwxNiArMTQyLDE1IEBAIHZvaWQgQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3Qm
IHJlcXVlc3QsIEN1CiAgICAgfSk7CiB9CiAKLXZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3Vy
bERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChjYW5jZWxsZWRPckNs
aWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmds
ZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5k
bGUsIFdURk1vdmUoY29udGlndW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBDdXJs
Q2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVy
KTsKKyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIGJ1ZmZlciwgYnVm
ZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxE
aWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCmluZGV4IGRhZjBhNTlhNGU1ODZkNzExNGFi
YjRlNWVmOWM1NGY2YThiZWZjNzAuLjAyNGJjNGU5YWUzMWRmMjVhOGY5YjcwY2JhMjgxZmFjZWFj
OGNmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCkBAIC0zOCw2ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVz
b3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZUludGVybmFsOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZSBmaW5hbCA6
IHB1YmxpYyBDdXJsUmVxdWVzdENsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUz
LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVl
c3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2Uo
Q3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgZmluYWw7Ci0gICAgdm9pZCBjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0
JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRo
RXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxTdHJlYW0uY3BwCmluZGV4IGMwNzA0ZjBjZGQ2NDQyMzczZjdiNzBiZmU2MTUzOWJmNWIzN2Q2
MjUuLjM2NjU4ZjkxZGM5ZDY3MjMwYjIzOWU0OTdjMDAwMGFjNjJhYWU5ODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKQEAg
LTksNyArOSw3IEBACiAgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKICAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAogICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkN1cmxTdHJlYW0uaCIK
IAogI2luY2x1ZGUgIkN1cmxTdHJlYW1TY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogCiAjaWYgVVNFKENVUkwpCkBA
IC0xMjksMTAgKzEzMCwxMCBAQCB2b2lkIEN1cmxTdHJlYW06OnRyeVRvUmVjZWl2ZSgpCiAgICAg
aWYgKCFtX2N1cmxIYW5kbGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVjZWl2ZUJ1
ZmZlciA9IG1ha2VVbmlxdWVBcnJheTx1aW50OF90PihrUmVjZWl2ZUJ1ZmZlclNpemUpOworICAg
IFZlY3Rvcjx1aW50OF90PiByZWNlaXZlQnVmZmVyKGtSZWNlaXZlQnVmZmVyU2l6ZSk7CiAgICAg
c2l6ZV90IGJ5dGVzUmVjZWl2ZWQgPSAwOwogCi0gICAgYXV0byBlcnJvckNvZGUgPSBtX2N1cmxI
YW5kbGUtPnJlY2VpdmUocmVjZWl2ZUJ1ZmZlci5nZXQoKSwga1JlY2VpdmVCdWZmZXJTaXplLCBi
eXRlc1JlY2VpdmVkKTsKKyAgICBhdXRvIGVycm9yQ29kZSA9IG1fY3VybEhhbmRsZS0+cmVjZWl2
ZShyZWNlaXZlQnVmZmVyLmRhdGEoKSwga1JlY2VpdmVCdWZmZXJTaXplLCBieXRlc1JlY2VpdmVk
KTsKICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX09LKSB7CiAgICAgICAgIGlmIChlcnJvckNv
ZGUgIT0gQ1VSTEVfQUdBSU4pCiAgICAgICAgICAgICBub3RpZnlGYWlsdXJlKGVycm9yQ29kZSk7
CkBAIC0xNDMsOCArMTQ0LDkgQEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUoKQogICAg
IGlmICghYnl0ZXNSZWNlaXZlZCkKICAgICAgICAgZGVzdHJveUhhbmRsZSgpOwogCi0gICAgbV9z
Y2hlZHVsZXIuY2FsbENsaWVudE9uTWFpblRocmVhZChtX3N0cmVhbUlELCBbc3RyZWFtSUQgPSBt
X3N0cmVhbUlELCBidWZmZXIgPSBXVEZNb3ZlKHJlY2VpdmVCdWZmZXIpLCBsZW5ndGggPSBieXRl
c1JlY2VpdmVkXShDbGllbnQmIGNsaWVudCkgbXV0YWJsZSB7Ci0gICAgICAgIGNsaWVudC5kaWRS
ZWNlaXZlRGF0YShzdHJlYW1JRCwgYnVmZmVyLmdldCgpLCBsZW5ndGgpOworICAgIHJlY2VpdmVC
dWZmZXIucmVzaXplKGJ5dGVzUmVjZWl2ZWQpOworICAgIG1fc2NoZWR1bGVyLmNhbGxDbGllbnRP
bk1haW5UaHJlYWQobV9zdHJlYW1JRCwgW3N0cmVhbUlEID0gbV9zdHJlYW1JRCwgYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZWNlaXZlQnVmZmVyKSldKENsaWVudCYgY2xp
ZW50KSB7CisgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgYnVmZmVyKTsK
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU3RyZWFtLmgKaW5kZXggNGY1OWIyMGU4ZGIyNzkwMzk5NGIzMzE1NGNlNjRiMDk5NGYz
YTBiYS4uZThhMzJjMjY0NjFiNDMwOGVhMjI3YzZkZjhjOTcyNDM5OTA1ZDBiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCkBAIC05
LDcgKzksNyBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCiAgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ3VybFN0cmVhbVNjaGVkdWxlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNvY2tl
dFN0cmVhbUVycm9yOwogCiB1c2luZyBDdXJsU3RyZWFtSUQgPSB1aW50MTZfdDsKQEAgLTQ2LDcg
KzQ3LDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZE9w
ZW4oQ3VybFN0cmVhbUlEKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShD
dXJsU3RyZWFtSUQsIHNpemVfdCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoQ3VybFN0cmVhbUlELCBD
VVJMY29kZSkgPSAwOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IGI4
MDRmZGUwOTczYmJmYjI4MzMxY2Y3YzNhMWYyMGIwNDNlNzRmZTguLjM2NmIwNTljMDI4MDRiMTk5
Yzg4NmE5YzJjNjcyNzNmOTI0ZjJlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAt
NTksOSArNTksMTAgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcGxhdGZv
cm1TZW5kSW50ZXJuYWwoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgYm9vbCBzZW5kUGVu
ZGluZ0RhdGEoKTsKIAorICAgIC8vIEN1cmxTdHJlYW06OkNsaWVudAogICAgIHZvaWQgZGlkT3Bl
bihDdXJsU3RyZWFtSUQpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEoQ3VybFN0cmVhbUlE
LCBzaXplX3QpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBj
b25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1
cmxTdHJlYW1JRCwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWls
KEN1cmxTdHJlYW1JRCwgQ1VSTGNvZGUpIGZpbmFsOwogCiAgICAgYm9vbCBpc1N0cmVhbUludmFs
aWRhdGVkKCkgeyByZXR1cm4gbV9zdHJlYW1JRCA9PSBpbnZhbGlkQ3VybFN0cmVhbUlEOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCA0Yjk0OTFjMTE1NDNmMmI2
MGYxMmQzNmU5ZTZhMGNiYWFlMzRhNzJlLi5hOGY1N2E3MmQwZWFjY2E3NzU1YmU4NGZjYWExYzli
ZjEwOTU4YzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKIAogI2luY2x1ZGUgIkN1cmxTdHJlYW1TY2hlZHVsZXIuaCIKICNpbmNsdWRl
ICJEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKQEAgLTEw
NCwxMiArMTA1LDEyIEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6ZGlkU2VuZERhdGEo
Q3VybFN0cmVhbUlELCBzaXplX3QgbGVuZ3RoKQogICAgIHNlbmRQZW5kaW5nRGF0YSgpOwogfQog
Ci12b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1J
RCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlSW1wbDo6ZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gT3BlbikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMsIGRhdGEsIGxl
bmd0aCk7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMsIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6ZGlkRmFpbChDdXJsU3RyZWFtSUQsIENVUkxjb2RlIGVycm9yQ29kZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQuaAppbmRleCAxZjRhMTkzMTMzMTJjNWRkNmE0OGFkNTMzOWRmZDJjM2I1
ZGVjMjU3Li4wZmU2NWEyOWU2MzYxNmRiNDJmN2M5ZWExZDE4NTIyMWMyMDA0MGMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zMSwxMiArMzEsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50IDogcHVibGljIFJlZkNv
dW50ZWQ8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwg
fkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsKCkgeyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KaW5kZXggMzE1ZTA2NTE1MzBkY2Ri
MDI4MDE2NTRiNzU3ZDgxNDczYzIwZmQzMC4uYWU3MTU1ZWNlZjM1ZDNlMTg4OGQ5MTY1NjQ1N2Uz
ODExNTlkZjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpAQCAtMzAwLDcgKzMwMCw3IEBAIC0gKHZvaWQp
Y29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlRGF0YToo
TlNEYXRhICopZGF0YSBsCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTMKICAgICAgICAgLy8gLTEgbWVhbnMgd2UgZG8gbm90IHBy
b3ZpZGUgYW55IGRhdGEgYWJvdXQgdHJhbnNmZXIgc2l6ZSB0byBpbnNwZWN0b3Igc28gaXQgd291
bGQgdXNlCiAgICAgICAgIC8vIENvbnRlbnQtTGVuZ3RoIGhlYWRlcnMgb3IgY29udGVudCBzaXpl
IHRvIHNob3cgdHJhbnNmZXIgc2l6ZS4KLSAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRS
ZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwg
LTEpOworICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVEYXRhKG1faGFuZGxl
LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgLTEpOwogICAgIH07CiAKICAgICBb
c2VsZiBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6V1RGTW92ZSh3b3JrKV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAwOGQwNTdiYmI1ZjE3YzIwNDViZmY5
MDZmZjVhZGE4NWYxMDQyOTMwLi5mN2YyNjZjZThkODE5MTA2MGM4NTdhMmY4YTZhZDlmZGViZDgx
ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTU0Niw4
ICs1NDYsOCBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2Fk
ZXIoKSk7IC8vIERvY3VtZW50TG9hZGVyIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFt
ZS0+aW5pdCgpLgogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVy
KCkuc2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0
eSBkb2N1bWVudAotICAgICAgICBkYXRhKCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdt
ZW50KSB7Ci0gICAgICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVy
KCkuYWRkRGF0YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICBkYXRh
KCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKKyAg
ICAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRh
KGJ1ZmZlcik7CiAgICAgICAgIH0pOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2Fk
ZXIoKS0+d3JpdGVyKCkuZW5kKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA4MmEyYThjNGIxOGFjY2U3OThiMjdjMmM4ZDAw
OTU4OWZmNzVjYmE4Li40ZThhYjc4MWE0MDYxYWIxOGM1MDMzNzNiZGEzOGY2YzU1ZDhhMDI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CkBAIC0xMTUsMTIgKzExNSwxMiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUgogICAgICAgICBt
X2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogfQogCi12b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lk
IFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGJvb2wpCiB7CiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEu
YXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGRhYjczZmM3YjFhOTNlZDRlM2Zl
YjMxZDY3MDk4ZDk5YjUxNzZhMzkuLjdjYmFhOGU1NTEwYzhjNGZjYWYyZWI5MmM2ZjczYjNkMmEx
MmM2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNXb3JrZXJGb250TG9h
ZFJlcXVlc3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmNwcAppbmRleCBiZjVhNDRmZTM0OGQyZmZjZTkxNmZiMTk0OTE1ZTY3YmZk
YTlhZWMxLi5jZDI2ZWNkNmEzN2E3ZWQzOWZmNzFlZGRhMzVlOGVmYTkwYjM3YzRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0yMDAsNyAr
MjAwLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiB9CiAKLXZvaWQgV29ya2VyU2Ny
aXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQor
dm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBib29sIHVzZVN0ckxlbikKIHsKICAgICBpZiAobV9mYWlsZWQpCiAgICAgICAg
IHJldHVybjsKQEAgLTIxMiwxMyArMjEyLDExIEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICAgICAg
bV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQi
X3MsICJVVEYtOCIpOwogICAgIH0KIAotICAgIGlmICghbGVuKQorICAgIGlmIChidWZmZXIuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKGxlbiA9PSAtMSkKLSAgICAg
ICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKIAot
ICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKKyAgICBz
aXplX3QgbGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CisgICAgbV9zY3JpcHQuYXBwZW5k
KG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGxlbikpOwogfQogCiB2b2lkIFdvcmtl
clNjcmlwdExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5o
CmluZGV4IGVhYWJlMWVhNWQxM2IzM2Y5YzNjYzY2ZGQ0OTU1N2ViNjllMzdlZmMuLjBiYzNhMDI1
YjM2NzllMjU2MzA4NjI0ZWVlYmE4OWRjY2M0NWM4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CiAK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgdXNlU3RyTGVuKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGZiYTM2MzIyYjI5YTZkNWI3OTdiMzll
ZGMzYzNkMTcxMjRiM2I1YmMuLmNlMzcwOTY4OWQ5ZjA5MjFlMDkwM2EwMzc3ZGIyNjhhNTQ1MGIy
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmlu
ZGV4IDliMTEyYjlkYjJjZDg0ZDAzMmY1OWRhZmE4ZThlMzhlMDcwZTUzZjcuLmRjM2FlYThjYWQ5
ZDA5NmI0MmJjYTY1YjI2MTIzMmYxMzc0M2QxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcApAQCAtMTAzNCw3ICsxMDM0LDcgQEAgUmVmPFRleHRSZXNvdXJjZURlY29kZXI+
IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVEZWNvZGVyKCkgY29uc3QKICAgICByZXR1cm4gVGV4dFJl
c291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7CiB9CiAKLXZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW4pCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pCiB7CiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAg
IHJldHVybjsKQEAgLTEwNTIsMTcgKzEwNTIsMTYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICBpZiAodXNlRGVj
b2RlciAmJiAhbV9kZWNvZGVyKQogICAgICAgICBtX2RlY29kZXIgPSBjcmVhdGVEZWNvZGVyKCk7
CiAKLSAgICBpZiAoIWxlbikKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKKyAgICBzaXplX3QgbGVuID0gdXNlU3RyTGVu
ID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpKSA6
IGJ1ZmZlci5zaXplKCk7CiAKICAgICBpZiAodXNlRGVjb2RlcikKLSAgICAgICAgbV9yZXNwb25z
ZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOworICAgICAgICBt
X3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwg
bGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAg
ICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5kKGRhdGEsIGxlbik7CisgICAgICAgIG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIGlmICgh
bV9lcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAyZDEzYmVjMzk0
NjQ0OGI5YjRmOTI1ZDMyYmQ4NmJhMmQ4MDM3NzVhLi42YmYxOWY4MmJkMmZmNzY3MDdkYTQ1NzE0
NzUwN2U5OTFkMjQ2NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMTYy
LDcgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudAogICAg
IHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZh
aWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SXNEb25l
KGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IDYxN2Y0NzY4OTU2NDJkZWMyMzI1NGI1NDBl
ZTgxOTExYWM0YTJkZjYuLjdmNTEyYzZjMTFhOGU3MTA4Y2YwMDYyYjU4NGQyN2I1ODkwOGQxOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBs
YXllclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtOTYsMTAgKzk3LDEwIEBA
IHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQodWludDY0X3QgYnl0ZXNTZW50LCB1
aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhp
cywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlh
UmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFS
ZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7CisgICAgICAgIG1fY2xpZW50LT5kYXRhUmVj
ZWl2ZWQoKnRoaXMsIGRhdGEpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmFjY2Vz
c0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCmlu
ZGV4IDViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJlNzE3MThhMTY3Mzc1ZTcuLjk1MTA2ZjY3MjI3
M2I0NWYwYTI0YTQ3YTFhMmJkZDE0MDllMGY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzUsNiArMzUsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC01Nyw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpOwog
ICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50KHVpbnQ2NF90
LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAppbmRleCA3MWZkMDIyMjli
YmIxYzU3MzI2ZmRmY2ZlMjZjMTFmNzYxYWJjZjcyLi4wNTRiODkzZTExMTEwZGNmOWE3MDAyNTJm
NGY3OTViMDFhNTg3YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAgICAg
dm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlk
RmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTU4NjA5MWVhMDA0MWI2ZjE1ODY5ZDQyYmJkYTcy
NDMyOTc2OTBlYy4uYmE4ZDA0OGY2NWRjMzM5ODRmMGNkNDc2MzVhYjkxMDE4NzliZDNiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQog
Ci12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCit2b2lkIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikK
IHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuaAppbmRleCA1MDVhNGVmZTU3MWQ0ODllNTBhOTg4YmViODE4NWI3ZmVh
YjNkYjEwLi4wY2IzMTVmZDhmZjUzMTk5MTU3ZGU3OGY4NDUyZDcxYzRmNWUyOThiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lk
IGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmRE
YXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKaW5kZXggNGI5ZWU1NzRiOTJj
N2MzNzE3YTRiYzI4MTlhNmJlM2ExOTA2NTcxNS4uZjQ3OWUwOTAyYjIxNzkyOTU1ZDM3NjgxNGIy
MWM4OWZmNTVkYjU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYzLDcgKzYzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNo
YWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290
aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0
aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2
NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggOGMxMDRkODE2MGI3YWFmZDA5OTcx
NWRhNmQ0ZTZmN2M0NjM3ZmEwOC4uNjBiNjlhOTM2YmI3OGRmMjUxMDc0OWM3NTRmZTZhYTIyOTNm
ZTAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAK
QEAgLTI1NCwxMSArMjU0LDEwIEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGll
bnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRh
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90
IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgotICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgp
OwotICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBz
aXplKTsKKyAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgYnVmZmVy
LnNpemUoKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuaAppbmRleCBlNmE3NjExNTk2MmI5NjU5ZTdiZmU3OGM2ZjRkYzZmNTMxMmIzY2Jl
Li4wZTRjMWFlNDkyM2MzMzdmNWNmOWIwYTQwOGI1YTg4MjI5ZjU5NjVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNl
bmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCmluZGV4IDM0OGNm
ZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1NGQzOWUuLjhhMjg1ODI2MTEzZjlkOGVlNjYw
ZGI2ODhiM2M1MzkzZmY5N2IyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDM2YWNjNjMxNDVmNDA1YjE5NTVkMzM1NDBkYWE3MDhmOWE2MjkzNDEuLmU2ZmQyYWM3
MGVjN2UwZTc1OTBhZGUyNzJlMTQyN2ZjZTk2ZGRlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg2Mywy
OSArODYzLDI5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJl
c3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4CiAgICAgfSk7CiB9CiAKLXZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1JlY2VpdmVkKQotICAgICAgICBMT0FERVJfUkVM
RUFTRV9MT0coImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7Ci0g
ICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGJ1ZmZlci0+c2l6ZSgpOworICAgICAgICBMT0FERVJf
UkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChyZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZmZXIuc2l6ZSgpOwogCiAgICAgQVNTRVJUKCFt
X2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVh
bWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAg
ICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5
KCkgLyA4OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZm
ZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVC
dWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVm
ZmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5y
ZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAg
IHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdh
eXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KLSAgICB1bnNpZ25lZCBlbmNvZGVk
RGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKKyAgICB1bnNpZ25lZCBlbmNvZGVkRGF0
YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGggOiBidWZmZXIuc2l6ZSgpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7
Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBt
X2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNv
ZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJp
bmdUaW1lcklmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNzMsNyArMTI3Myw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKICAgICBt
X2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIAotdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBz
aXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2Vu
ZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
CmluZGV4IGNmMTBjZjBlNzFhMWJjNjU1NDBlODdkNmJhNGMxYjljODU2YzBhMWQuLjgxN2FlZjI2
YzgzNmMzNGE3ZDQ0ZWU3Y2M5NWVkZDlhMjk4ZDZhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMTE1LDcgKzEx
NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
czsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCkgZmluYWw7CkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRC
dWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7
Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBz
aXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgc2VuZEJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsK
IAogICAgIHZvaWQgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAgICAgdm9pZCBpbnZhbGlk
YXRlU2FuZGJveEV4dGVuc2lvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5jcHAKaW5kZXggYmMyYzMzN2U0ZWVlMDFhZjgzZTEzNjcyMzE3YTlhOWVhYmM3YzZmOC4u
ZjBlZmQwNGJiMmUxOGY2ZjNjYmMxNjNmYWYyM2RhMDQ2NmJlZTU0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFBp
bmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBO
ZWdvdGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlzaCh7IH0sIHJlc3BvbnNlKTsKIH0KIAotdm9p
ZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
Cit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKQogewog
ICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggZTc4
MDhkOGU2NTU4MmY3OTM4ODgyOGQ1MTc1OGNiMTkzY2Y1NWZjNy4uYjIyNWM0N2I5NGFmYTBiNDRl
ZGMyNjcwZGZjNThhZDdhZmM5MTQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
JiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lk
IHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5jcHAKaW5kZXggMTdkNDc5MDdhM2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3
NTFkNmIwYi4uYWFhZTJiZmJkZjgzYTM5YWNlYzA2M2ZlYjI0NDYxNmRjODQ4ZWRhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTc5
LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb20KICAgICBjb21wbGV0aW9uSGFuZGxl
cihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggODU4MDhlMTIxYjY4Y2E4YjczZTI1
MThkMTkzYWIzOTU4MWVhZDFlNy4uOGM2YjBkZWVkNjZjNTEwMTliZTg5ODRlZDViODdlMGMxZDc5
MGY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0
VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
aApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5h
bDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRv
d25sb2FkVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAKaW5kZXggMjVkNGUzN2Y5NDU0YmVlMzJm
MDRkOGNjOGM0NzFkNWQzZjdlZDgyYi4uOGM4ZGMzNmIxZTUzOTM4ZjgxZWI0YWJhYWZmMDE5MGYy
YjU0ZWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCkBAIC0xNzMsNyArMTc0LDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrOjpzdGFydCgpCiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURl
c3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwogfQogCi12b2lkIFNlcnZpY2VX
b3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlckRv
d25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBk
YXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaXNNYWluUnVu
TG9vcCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKaW5k
ZXggYWI1OWVhZTUyNjY1MzA2MjEyYTI4ZTkzMjNhMmI4YjRmZmUwYzc4Zi4uYjg5YWIzZWJkNzYy
ZjY4MTJhNWU5N2JmZjY5MGJhOTBmMDI1N2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzay5oCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBJUEMgewog
Y2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY2LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50
JiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNv
cmU6OkZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgRG93
bmxvYWRJRCk7CiAKICAgICAvLyBJUEMgTWVzc2FnZQotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBpbnQ2
NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YShjb25z
dCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2
b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxv
YWRUYXNrLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KaW5kZXggMWQzYmZi
N2NjMzEwOTc5OWNjODAwMWJiYTcxZDg5YzBmNmYyZDkyZi4uNTBkMmI0MmE3MWIwZWRhYjc5ZmJj
ZTlkZGI5ZjE5OTgyZGI1MzU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIAogbWVzc2Fn
ZXMgLT4gU2VydmljZVdvcmtlckRvd25sb2FkVGFzayBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRG
YWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2goKQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDRlNzkxOWIzZGRjMDJhZTE0ZDBlZDk2ODRiOGM2
OGJiNmYyOGE0MzQuLjRmNzhiOWRmNTRlNWU2Nzc4Nzg0MTM1YTI3YTAzZGJjNjI5YmZkNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJOZXR3b3Jr
U2Vzc2lvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgi
Ci0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlICJXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgU2Vy
dmljZVdvcmtlckZldGNoVGFzazo6cHJvY2Vzc1Jlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgYm9vbCBuCiAgICAgICAgIG1fbG9hZGVyLnNldFJlc3BvbnNlKFdURk1vdmUocmVz
cG9uc2UpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBpZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVybjsKQEAgLTQwMSw3ICs0MDEsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmxvYWRCb2R5RnJvbVByZWxvYWRlcigpCiAgICAg
ICAgICAgICBkaWRGaW5pc2hXaXRoTWV0cmljcyhtX3ByZWxvYWRlci0+bmV0d29ya0xvYWRNZXRy
aWNzKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGRpZFJlY2Vp
dmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSB7IGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkg
fSwgbGVuZ3RoKTsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoUmVmIHsgY29uc3RfY2FzdDxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJj4oKmNodW5rKSB9LCBsZW5ndGgpOwogICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBjMzQ1ODAy
NjdmYjMyNjllNmRjYmRjZWZjMzRkMDY4MmM2YTA4ODZjLi41MjI1ZTU0NTk5OTUxZDhmODFjNzBh
ZjgyZWJiYTI2ODllMzUwMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwog
Y2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVm
ZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTMsNyArOTQsNyBAQCBwcml2
YXRlOgogICAgIGVudW0gY2xhc3MgU2hvdWxkU2V0U291cmNlIDogYm9vbCB7IE5vLCBZZXMgfTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5JiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwogICAg
IHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGaW5pc2hXaXRoTWV0cmljcyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KaW5kZXggMThlNjI5ZjBkMTQ2ZWQyZDQyOWRi
MWJhMjg3MDFlODNmYjk2ZTYyZi4uN2RiNTNlOWJkMDM4MDQ1NDczYTI1YWYzN2Q0N2MxOTU3OTVl
MjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVz
c2FnZXMuaW4KQEAgLTI3LDcgKzI3LDcgQEAgbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckZldGNo
VGFzayBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
ZXJyb3IpCiAgICAgRGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZSkKICAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSkKLSAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICBEaWRSZWNlaXZlRGF0YShJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAg
ICBEaWRSZWNlaXZlRm9ybURhdGEoSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSBkYXRhKQogICAgIERp
ZEZpbmlzaCgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyLmNwcAppbmRleCA1ZDliZDMzMzM5MjExY2ExY2Q0NDdiODc5MmY1NDYxZWE4
N2VkZGY0Li5lNTY1NGNjMzEzOWI0OWQ2MWE5ODUxM2NkMDE2YmVjZjczOWJiY2Y4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAK
QEAgLTE3NSwxMCArMTc1LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiAgICAgICAgIGNh
bGxiYWNrKCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5
Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKFJl
ZlB0ciB7ICZidWZmZXIgfSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQg
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDY3YWJjNTVjNjBm
ZjI0ZTM5ZGQwNGVjYzUwMjFiNjA1ZWU4YmViYjEuLjVmODhhYzJhYThkZjk2MjhkNGM1OWRkZDA5
NGYwY2VlMWQyMWE3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAK
ICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lk
IHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJv
ZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CkBAIC03MSw3ICs3Miw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJv
b2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDdhMjYy
MjE5ZGU3OGIyMzVkMTI1YTkyYjZlMjM2ZDMzMjYyZjdhMjcuLmQ5ZDc0NzUyNTMyZjE4OWViMWJl
MmMwM2Q3ZTI5ZTg1OWU4OTZlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJlc291cmNlRXJyb3Ig
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnByb2Nlc3NSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlmICghbV9yZXNwb25zZUVuY29k
aW5nLmlzRW1wdHkoKSkKQEAgLTE4Niw4ICsxODYsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4KICAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgi
dGV4dC9qYXZhc2NyaXB0Il9zLCAiVVRGLTgiKTsKICAgICB9CiAKLSAgICBpZiAoYXV0byBzaXpl
ID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRl
Y29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOworICAgIGlmICgh
YnVmZmVyLmlzRW1wdHkoKSkgeworICAgICAgICBidWZmZXIuZm9yRWFjaFNlZ21lbnQoWyZdKGF1
dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRl
Y29kZShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKKyAgICAgICAgfSk7CisgICAg
fQogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDQ0ZmMwNjg1ZmEwZmVkYzg3
NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEuLjdlODE4ZjM0MTNkYTI5Zjg2MWUxMDAzOTkxZThkNTM4
OTIzNDZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fz
a1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmlu
YWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAKaW5kZXggNDFkODIzNTAyNDc0N2I2ZmM0YTNhYzU0OGUxMzM0ZWQ2Y2I1ZWY3YS4uODE0ZWIz
MjBkNGU3NDhhMjlhZTA5MTM1YWZjMWRhNWYzNzUxNWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUxv
YWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25z
ZSwgUmUKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZv
aWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNw
ZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewog
ICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVh
bWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9
IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNp
emUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAg
ICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXIuc2l6ZSgpIDw9IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LmFwcGVuZChidWZmZXIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgK
aW5kZXggMWI4NDNkYjdlYzI3MGRiOWRhYjllOGEyNWYyYTQ4YThlY2FlMmE4YS4uOWFkY2E2MDVl
NzI4MGJiN2IzNGNlNzQ0ZDg3ODhiYmI0NDg5MjRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRU
b0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmgKaW5kZXggNDE2NjhhNWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVjYTkwN2VkYy4uMDc3
MmFmMWE4NmQyMjQxN2JmMTFmMTZiZDZiN2I1ODBmZTU3YTdhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
aApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TTXV0YWJsZVVSTFJlcXVlc3Q7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFVSTCYpOwogICAgIHZvaWQg
ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCB3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQg
dHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW0KaW5kZXggNDc3MWZkZTkyMGQ2Yjk4ZTgzZmMyOWRkM2FhZjk3YTBhNmQ5YTg4MC4u
NjQ5YjVjYTc4YzY4NzVlY2RlMGQzZDQzNmY5NTkwZGI1MTc5ZDBiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCkBAIC00NDMsMTIgKzQ0MywxMiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpk
aWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcgogICAg
ICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0
cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7Ci0gICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwg
InJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7CisgICAgV1RGRW1pdFNpZ25wb3N0
KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEuc2l6
ZSgpKTsKIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVE
YXRhKFdURk1vdmUoZGF0YSkpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0
YSk7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMg
bmVnb3RpYXRlZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYg
Y29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggODQ2NjllMjA5ZDc3YmY1
MmEzNmFmZTJhN2RhYjI1MmE2OTAwZGNmNy4uMTNmY2M3YmQ0OGE1NWEwOTM5MTI5MjZiYTQ0ODRj
ZjVlMzU1MTMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
RXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxwYWwvdGV4dC9UZXh0RW5jb2RpbmcuaD4KQEAgLTE3Miwx
MyArMTczLDEzIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVSZXNw
b25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvCiAgICAgaW52b2tlRGlkUmVjZWl2
ZVJlc3BvbnNlKCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2Vp
dmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVx
dWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIFJlZiBwcm90ZWN0ZWRU
aGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHN0
YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFpc0Rvd25sb2FkKCkp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92
ZShidWZmZXIpKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKIH0KIAog
dm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBO
ZXR3b3JrTG9hZE1ldHJpY3MmJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAppbmRl
eCA0NWJlNWNlMTg0MzI1MjcxZDVjMDgwZGQzNGYxZWU0YTE2NjQyYTFmLi5lNTU4NjRhOTVmN2Jj
YmMwODVjNDY2MjhiZmYwNTg1NzM1NzMyODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKQEAgLTM2LDYgKzM2
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3VybFJlcXVlc3Q7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjgsNyArNjksNyBAQCBw
cml2YXRlOgogICAgIFJlZjxXZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVz
OjpOZXdSZXF1ZXN0KTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVx
dWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsK
ICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBX
ZWJDb3JlOjpDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2
ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0YShXZWJD
b3JlOjpDdXJsUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZEZhaWxX
aXRoRXJyb3IoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYs
IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDE3ZjA4YzI4ZWExMjViNTUw
OTkzZWVkMjRkNTk2M2I4NTEwYTExNDEuLjU3YjE0NmU1OGU3YTlkYTcwMjZjOWRlZTUyMDM5NTUx
YWRhYjcxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNw
YWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCA5Y2RlZDk2OTM1
MTVjYmRiOTI1ZjU5NTRhMTZmNGJhZjA2N2EzMTYyLi42YzE5YmM5YmFiNjQxMDMzMzAwNzNiNDFj
NWFlMWQ4ZWQwMWMzYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVk
aWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTE4
NSw5ICsxODUsOSBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyhTb3Vy
Y2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgogICAgIEFTU0VSVCghaXNNYWlu
UnVuTG9vcCgpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3BhcnNlVHJhY2tzTG9jayB9Owot
ICAgIEFTU0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1cyk7Ci0gICAgQVNTRVJUKG1fZHVyYXRpb24u
aXNJbnZhbGlkKCkpOwotICAgIEFTU0VSVChtX3RyYWNrUmVhZGVycy5pc0VtcHR5KCkpOworICAg
IEFTU0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1cyB8fCAobV9pbml0ICYmIGVycm9yQ29kZSkpOwor
ICAgIEFTU0VSVChtX2R1cmF0aW9uLmlzSW52YWxpZCgpIHx8IChtX2luaXQgJiYgZXJyb3JDb2Rl
KSk7CisgICAgQVNTRVJUKG1fdHJhY2tSZWFkZXJzLmlzRW1wdHkoKSB8fCAobV9pbml0ICYmIGVy
cm9yQ29kZSkpOwogCiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsK
ICAgICBpZiAoZXJyb3JDb2RlKQpAQCAtMjIxLDYgKzIyMSw3IEBAIHZvaWQgTWVkaWFGb3JtYXRS
ZWFkZXI6OmRpZFBhcnNlVHJhY2tzKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxp
emF0aW9uCiAgICAgfQogCiAgICAgbV9wYXJzZVRyYWNrc0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsK
KyAgICBtX2luaXQgPSB0cnVlOwogfQogCiB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQcm92
aWRlTWVkaWFEYXRhKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJh
Y2tJRCwgY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKaW5kZXggMzdl
NGFkNDI3NmIxMmFkNTE0M2RjMjI4Y2RlOTQ3NjM4N2U1Yzg4OC4uNjUwOTNlOWU0NmI0MGI1YTM5
NzZmZGVmMjllNjEzYzY0NTFmMzE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKQEAg
LTg3LDYgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmPE1lZGlhVHJhY2tSZWFkZXI+
PiBtX3RyYWNrUmVhZGVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fcGFyc2VUcmFja3NMb2NrKTsK
ICAgICBSZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xv
Z0lkZW50aWZpZXI7CisgICAgYm9vbCBtX2luaXQgeyBmYWxzZSB9OwogfTsKIAogY29uc3RleHBy
IE1lZGlhRm9ybWF0UmVhZGVyOjpXcmFwcGVyQ2xhc3MgTWVkaWFGb3JtYXRSZWFkZXI6OndyYXBw
ZXJDbGFzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
CmluZGV4IGUxMjY0Y2UyMWJhNTdmMmE0Mjc0OGUzM2ExZGFkODhhMGUyNThiYzIuLmQ3NjdmYzA2
YjM2ZjE1NmZmMzFjMzgzZTY0M2Q0MzQ0YzIxN2FhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgYXV0byBXZWJV
UkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIAotYXV0
byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKK2F1dG8gV2ViVVJMU2NoZW1lVGFzazo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5
cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xODcsMTEgKzE4Nywx
MSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAg
ICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIHJldHVy
biBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFu
ZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGJ1ZmZlci5nZXQoKSksIG1f
d2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNj
aGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwg
bV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIpLCBtX3dlYlBhZ2VJRCk7CiAgICAgcmV0dXJuIEV4
Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaAppbmRleCBmNmZmNDZlZWE1ZjI5MGI3YjdlM2ZlNTkyMWRmOWYxOTRiYWNkMTE3
Li5jMzIzMDY5YjFjYzAzMWYwMjViMjJjODU5YTM1NDE4OGZkZDIzNzI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC04Myw3ICs4Myw3IEBAIHB1Ymxp
YzoKICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRp
ZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHku
Y3BwCmluZGV4IGI1MTNhMjY4MDhlYWExOGUzN2Y0ZmRmMDRhMjNkMjk2MGIyNzNiMmMuLjkyMzRi
NWM2NTNmOTFlYmE5MTBmYmRmOWJlMWUyMmEwMmMxMWM2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VQcm94eS5jcHAKQEAgLTcyLDIwICs3MiwxNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQ
cm94eTo6ZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZQog
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXI6OkRhdGFTZW50KG1faWQsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KSwgMCk7CiB9
CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkK
K3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7Ci0gICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGxlbmd0
aCk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYnVm
ZmVyKTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBzaGFyZWRNZW1vcnlQdHIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRh
KCkpOwotICAgIG1lbWNweShzaGFyZWRNZW1vcnlQdHIsIGRhdGEsIGxlbmd0aCk7Ci0KICAgICBT
aGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5k
bGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAvLyBU
YWtlIG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFuZCBtYXJrIGl0IGFzIG1lZGlhLXJlbGF0
ZWQgbWVtb3J5LgogICAgIGhhbmRsZS50YWtlT3duZXJzaGlwT2ZNZW1vcnkoTWVtb3J5TGVkZ2Vy
OjpNZWRpYSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IHsgV1RGTW92ZShoYW5kbGUpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoKSB9KSwgMCk7
CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFu
YWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92
ZShoYW5kbGUpLCBidWZmZXIuc2l6ZSgpIH0pLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJl
c291cmNlUHJveHk6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VQcm94eS5oCmluZGV4IDQ3ZWE4NjY3MWIxM2QxMzk1YzNkYWQ5YmRhNzlhYmY2
MTZjYmExNzkuLjk0OTQ2NDUyMmMyNjNlNmE1ZTgwNzNmNzRlOWQyNDM0YmFhOTM5MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlUHJveHkuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBm
aW5hbDsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAg
IHZvaWQgZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQg
bG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
IGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgYWNj
ZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGxvYWRGYWlsZWQo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IGQ3MWFlNWUwYTlhZjNkOWVlM2E1MWQ4ZmNmNTBmZTUzNTliMzkwYjcu
Ljc0OTE5MGQxOWIwZmExY2UwYjUxMWU4NDIwNzI1NjAwNjkxMTg2MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWUuaCIKQEAgLTIwMCwxNiArMjAxLDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAg
ICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdURk1vdmUocG9s
aWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZvciAnJXMnIiwgZGF0YS5zaXplKCks
IG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsg
cHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJl
c3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50
ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwot
ICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlm
aWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RG
TW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9p
bnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCks
IGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxv
YWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlk
UmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjE4LDcgKzIxOCw4IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSwgaW50NjRfdCBlCiAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJk
aWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSIpOwogICAgIG1fbnVtQnl0ZXNS
ZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIAotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURh
dGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRCeXRlcyk7CisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpID8gUmVmIHsgKmRhdGEu
YnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9jb3JlTG9hZGVyLT5k
aWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVz
KTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtMzA2LDcgKzMw
Nyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBT
aGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJv
Y2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1f
Y29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBXRUJSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiIpOwogCi0gICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5
V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2Vu
dCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7CkBAIC0zMjMsNyArMzI0LDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291
cmNlOjpIYW5kbGUmIGhhbmQKIAogICAgIC8vIE9ubHkgc2VuZCBkYXRhIHRvIHRoZSBkaWRSZWNl
aXZlRGF0YSBjYWxsYmFjayBpZiBpdCBleGlzdHMuCiAgICAgaWYgKHVuc2lnbmVkIGJ1ZmZlclNp
emUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlQnVm
ZmVyKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRhUGF5bG9hZFdob2xl
UmVzb3VyY2UpOworICAgICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwog
CiAgICAgaWYgKCFtX2NvcmVMb2FkZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IGEy
MmU2MmYyOGI1ZmE0Y2ZjOTFhYTVlNWNlODJjYTI3YWUyNmFkNTMuLmFjNTQyMmZjMDY3MTBiZDBl
MDg3ZTBmNDQwOWVkOTQwMTdjMGNmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogCiBu
YW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVm
ZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODAsNyArODEsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVp
bnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNl
TG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsU2Vy
dmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5tZXNzYWdlcy5pbgppbmRleCAwMmExNGY1OWEzMDQ3NDRjMmQxODNlYTc5ZTk5ZWJhZWI0
Y2ZiYmEyLi5kYWEyNGQyN2M3MWE4M2NmN2MwZjE2OGRhMjZhNDliNDg3NjkyNjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQCBtZXNzYWdlcyAtPiBXZWJS
ZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVl
c3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UpCiAgICAg
RGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNl
bnQpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAg
RGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNoUmVz
b3VyY2VMb2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3Mp
CiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQog
ICAgIERpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
CmluZGV4IDhkMmM1ZjNlMjVjYTFhMjM3OGU1ZTMwMDVkNzU0OTJiZWFmMGIxZWEuLjJiN2U0ZDJj
MjBmZGQxOTk4ODI3MmRhOGJmY2M1YTYxODZjNmQzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTY1LDYgKzY1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVsZW1lbnQ7CiBz
dHJ1Y3QgUGx1Z2luSW5mbzsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdU
RiB7CkBAIC0xNzYsMTEgKzE3NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVK
YXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIGZpbmFs
OwogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0
YXR1cykgZmluYWwgeyB9CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0
X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0
aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5h
bDsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBzdHJlYW1EaWRS
ZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JikgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVh
bUlEKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJv
b2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVp
bnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUp
IGZpbmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBt
YW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJl
YW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICBib29sIGhhbmRsZU1vdXNl
RXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIGZpbmFsOwpAQCAtMzYyLDcgKzM2Myw3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNv
bnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdl
YkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsK
ICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGU1ZmEwNzEwOWE5MzE4NDUzOWZiMWUyNDcwYTNm
OTM4NmQ0MzE1NTguLmZhNmNlNmY2OWZjMDJmNzAxZjg4NTEzODg0NzVkZWYzZjI0MzE0Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQpAQCAtOTQsNiArOTQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxBbmltYXRvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0
aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2hlZWxFdmVudFRlc3RNb25pdG9yLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oPgpAQCAtMTE5MSw3ICsxMTkyLDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0
cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3QKICAg
ICB9CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBjb3VudCkKK3ZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1M
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBs
b2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fcGRmUGx1Z2lu
KQogICAgICAgICByZXR1cm47CkBAIC0xMjAwLDcgKzEyMDEsNyBAQCB2b2lkIFBERlBsdWdpbjo6
UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJ
blN0cmVhbQogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVxdWVz
dC0+YWRkRGF0YShkYXRhLCBjb3VudCk7CisgICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9h
ZGVyQ2xpZW50OjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImKQpAQCAtMTcxOCwxNSArMTcxOSwxNSBAQCB2b2lkIFBERlBsdWdp
bjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwm
LCB1aW50MzJfdAogICAgICAgICBtX2lzUG9zdFNjcmlwdCA9IHRydWU7CiB9CiAKLXZvaWQgUERG
UGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWlu
dDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2
ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtSUQsIHN0cmVhbUlEID09IHBkZkRvY3VtZW50UmVxdWVz
dElEKTsKIAogICAgIGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9wdENGKENGRGF0
YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCi0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdl
dCgpLCBieXRlcywgbGVuZ3RoKTsKLSAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gbGVuZ3RoOworICAg
IENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1ZmZlci5zaXplKCk7CiB9CiAKIHZvaWQg
UERGUGx1Z2luOjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKQpAQCAt
MTc2MywxNCArMTc2NCwxNCBAQCB2b2lkIFBERlBsdWdpbjo6ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0
aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAgICAgIENGRGF0YUluY3JlYXNlTGVuZ3RoKG1f
ZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVudExlbmd0aCk7CiB9CiAKLXZvaWQgUERG
UGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywg
aW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAg
bV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAgIGVuc3Vy
ZURhdGFCdWZmZXJMZW5ndGgobV9zdHJlYW1lZEJ5dGVzICsgbGVuZ3RoKTsKLSAgICBtZW1jcHko
Q0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdldCgpKSArIG1fc3RyZWFtZWRCeXRlcywg
Ynl0ZXMsIGxlbmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKKyAgICBlbnN1
cmVEYXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyArIGJ1ZmZlci5zaXplKCkpOworICAg
IG1lbWNweShDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihtX2RhdGEuZ2V0KCkpICsgbV9zdHJlYW1l
ZEJ5dGVzLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX3N0cmVhbWVkQnl0
ZXMgKz0gYnVmZmVyLnNpemUoKTsKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCiAg
ICAgLy8gS2VlcCBvdXIgcmFuZ2VzLWxvb2t1cC10YWJsZSBjb21wYWN0IGJ5IGNvbnRpbnVvdXNs
eSB1cGRhdGluZyBpdHMgZmlyc3QgcmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmgKaW5kZXggMWQ4NDQ4MDVmNGMxMGU5M2ZlZGNhYmRlZWMyMWRkMzVkZGY4ODIw
Mi4uZTRkNjJmNGJlYTliZmMyZmE4MGVmNGQ2ZTkwYzVjY2YwNjc5NGY2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTU0LDEyICs1NCwxMyBAQCBjbGFz
cyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmxvYXRQb2ludDsKIGNs
YXNzIEZsb2F0U2l6ZTsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRT
aXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjAsNyArMTYx
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAK
ICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEu
Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0
cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmlu
aXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgPSAwOwpAQCAtMTczLDcgKzE3NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAg
ICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2
ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYW51
YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7
CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBs
b2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAppbmRleCA1MzRkYTUyZDQ3ZDYyODUwZTIwNWZmOWU5OWMzMGIzN2QzYmNiYTEyLi4wMzQ0ZjRi
ZTIzYTQzNzY3MTk3Nzg5OTk3ZDc2MzdhMjAzMWI3ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHBy
aXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7
CiAKQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUgogICAgIG1fcGx1
Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCBy
ZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBt
aW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZv
aWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5W
aWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdp
bi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnl0ZXMsIGxlbmd0aCk7CisgICAg
bV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwg
YnVmZmVyKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZEZhaWwoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgCkBAIC0zNzQs
NyArMzc0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIG1fcGx1Z2luLT5tYW51YWxT
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1v
ZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dl
c3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmll
dzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGlu
aXRpYWxpemUuCiAgICAgaWYgKCFtX3BsdWdpbikKQEAgLTM4MiwxMSArMzgyLDExIEBAIHZvaWQg
UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNT
RVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVk
UmVzcG9uc2UpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ5dGVzLCBsZW5n
dGgpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURh
dGEoYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVE
YXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZpbmlzaExv
YWRpbmcoKQpAQCAtMTE3MSw5ICsxMTcxLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJN
YW51YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBpZiAobV9tYW51
YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRh
LnRha2UoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgp
KQotICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+
ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7CisgICAgICAgIG1fbWFudWFsU3RyZWFt
RGF0YS50YWtlKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZm
ZXIpIHsKKyAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShidWZmZXIpOworICAg
ICAgICB9KTsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxT
dHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmgKaW5kZXggZjY2MzEyYTgwYWNkMWUwMzUzMTBkZmFhM2E1ZjNhMTdiNzJh
YWU1NS4uMjU2MTVjYjMwZjIyNjQ2MzkyNDQ0ODhmMmJkN2M0MTIyNzkwNzliOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNzMsNyArNzMs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVkKCkgY29uc3QgeyByZXR1cm4g
IW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCk7IH0KIAogICAgIHZvaWQg
bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
Ynl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWFudWFsTG9hZERpZEZpbmlz
aExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApp
bmRleCBlZTQwZmI5NTg1ZTc5ZDg2YjNjZmQyZjU3OWVkNDZlNjFiOWVjNjNlLi4zMTQ4MmViM2Iz
NjhkNzhhNjFhN2VjMWQyNGM1OTgxMGJjOTFlZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
aWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTgwLDE0ICs4MCwxNCBAQCB2
b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKICAgICAgICAgICAgIG1f
cmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOwotICAgICAgICBzdGQ6OmdldDxT
aGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRh
KS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX2lz
RG93bmxvYWQpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIuZ2V0KCksIHN0YXRpY19j
YXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFz
azo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5z
aXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURh
dGEgeyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9
LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRp
Y19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURh
dGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1EYXRhKQpAQCAtMTM2LDE1ICsxMzYsMTUg
QEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURh
dGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pc0Rvd25s
b2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJE
b3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBkYXRhLCBzaXplIH0sIHN0YXRpY19jYXN0
PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZl
RGF0YSB7IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9m
ZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgZGF0YSwg
c2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7
CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNo
VGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIgLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZm
ZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNoQmxvYkxvYWRpbmcoKQpAQCAtMjI4LDcgKzIy
OCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2UoKQogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBk
aWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVm
ZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOworICAgICAgICBk
aWRSZWNlaXZlRGF0YShidWZmZXIuY29weSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAg
aWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNd
KFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmgKaW5kZXggZTk4N2UxOWFjOGI3Mzg4NzFhYWQ4MmI0YjM4NTYyOTY4YTJiNmM5Yy4uMDk0
MDBkZjBjZTcyNWYzOWE4YjExZDkzNWUxNDU0ZTM5OWY1YTI2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtNjAsOCArNjAsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgY29udmVydEZldGNoVG9Eb3dubG9hZCgpIGZpbmFsOwogCiAgICAgdm9pZCBjbGVhbnVw
KCk7Ci0gICAgCi0gICAgdm9pZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRGaW5pc2hCbG9iTG9hZGluZygpOwogCiAg
ICAgc3RydWN0IEJsb2JMb2FkZXIgZmluYWwgOiBXZWJDb3JlOjpGZXRjaExvYWRlckNsaWVudCB7
CkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGll
bnQgQVBJCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBjbGllbnQtPmRpZFJlY2Vp
dmVCbG9iQ2h1bmsoZGF0YSwgc2l6ZSk7IH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpIGZpbmFsIHsgY2xpZW50LT5kaWRSZWNl
aXZlQmxvYkNodW5rKGRhdGEpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBjbGllbnQtPmRpZEZhaWwoZXJyb3IpOyB9
CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsgY2xpZW50LT5kaWRGaW5pc2hCbG9i
TG9hZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDE0YTA4
M2NhMjA3YTkwNjNjZjgwYjFlN2U5NjcwYTQ4N2NmNGQzOTkuLmVkNGY1ZGU5ZDVlNTYxOGQ0MzI0
NTUwODJmNWRhMTg4YWJmOWJmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApA
QCAtMTE1MiwxMCArMTE1MiwxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBs
YWNlTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgd2ViUGFnZS0+ZGlkUmVwbGFjZU11bHRpcGFydENv
bnRlbnQobV9mcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRl
ZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmICghbV9w
bHVnaW5WaWV3KQotICAgICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKKyAg
ICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEpOwogCiAgICAgLy8gSWYgdGhlIGRvY3VtZW50
IGlzIGEgc3RhbmQtYWxvbmUgbWVkaWEgZG9jdW1lbnQsIG5vdyBpcyB0aGUgcmlnaHQgdGltZSB0
byBjYW5jZWwgdGhlIFdlYktpdCBsb2FkLgogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxk
IGJlIHNoYXJlZCBhY3Jvc3MgYWxsIHBvcnRzLiA8aHR0cDovL3dlYmtpdC5vcmcvYi80ODc2Mj4u
CkBAIC0xMTc3LDcgKzExNzcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0
ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3ID0gdHJ1ZTsK
ICAgICB9Ci0gICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZGF0YSwg
bGVuZ3RoKTsKKyAgICBtX3BsdWdpblZpZXctPm1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShkYXRh
KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGJiNTI5
ZDNhZWM0ZTJjNzVmMWE3ZGU5MWIxMGI1NTgyZDQ1MjJiNDIuLjFkMzBiYzM5MzgzYWZmZjJjYTlj
Mjg3NTNkZDJkN2VjMmIyNjQ5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0x
NTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29u
dGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5h
bDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNv
bnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwog
ICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7
CiAgICAgCiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCBhMjA1ZTAwMWNhNzE1ODIwOTEz
YTgxYWU0YTgzNjUzMGY5YTBmNjQ4Li43MmUzNTU0YzhlMGFhNjkwYTZlYzU3ODAxNzZmMTllMGI4
ZDcwZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAg
LTQ5LDcgKzQ5LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNs
aWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKIAogV2ViUHJldmlld0xvYWRl
ckNsaWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2Vi
UHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gd2ViUGFnZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwogICAgIGlmICghd2Vi
UGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGRjMTY3
ZTViN2JjM2IwM2VmMzkzMWVhYjM1NmM3ODI3OTI5NTI5ZS4uNjQ5YmM4MzE5YzI3ODZmMDFkNjE3
YzExMTk5ZGIwYzZjMDc3ZmE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGks
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDk0MmVkYzYyM2E0ZTY1M2JiMTg4YWVlMDUwNjQ0YTNmNGEwMzJlODku
LmY4OWZmNzJhMGQzMWJlYzExZWY4MDI5N2VmYmE5MmMyYTdiYzY2YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03MDU3LDEyICs3MDU3LDEy
IEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJVUkxT
Y2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kCiAgICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVS
ZXNwb25zZSh0YXNrSWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVy
bFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBo
YW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJ
ZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2U6
OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmll
ciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRh
c2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEpCiB7CiAgICAg
YXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdl
dChoYW5kbGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhhbmRsZXIpOwogCi0gICAgaGFuZGxl
ci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLnNpemUoKSwgZGF0YS5k
YXRhKCkpOworICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwg
ZGF0YS5idWZmZXIoKSA/ICpkYXRhLmJ1ZmZlcigpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS5n
ZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYlVS
TFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IGE5NGI1YjlkN2ZlMzJmMjRhODZkYWFhZDQ0ODQyYjBjZGQwYWViMmYuLjQ4ODY2NzA3YzQ2MTNk
OWE3Y2QzNTIxNWRmY2E5MjNjNjk3OWJlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE4NCw2ICsxODQsNyBAQCBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7
CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
ODk2LDcgKzE4OTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXJsU2NoZW1lVGFza1dpbGxQZXJm
b3JtUmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgdXJsU2NoZW1l
VGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2
b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMU2NoZW1lSGFuZGxlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgdXJsU2NoZW1l
VGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYpOworICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYlVS
TFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpOwogICAgIHZv
aWQgdXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc2V0SXNUYWtpbmdTbmFwc2hv
dHNGb3JBcHBsaWNhdGlvblN1c3BlbnNpb24oYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBiMjcyMjk0NzFl
YWU4NmVlNTk4MTk4M2RkNTdiNWU3YTgyOTFjZDRiLi5iZGE1ZjUwYWRkMjNhOTY3NDBlODlkNzMz
ZDc5YzE4N2YwNTJiZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTU2NCw3ICs1NjQsNyBAQCBHZW5lcmF0ZVN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZQogICAgIFVSTFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdl
YktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bv
c2VkUmVxdWVzdCkgLT4gKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBhY3R1YWxSZXF1ZXN0KSBB
c3luYwogICAgIFVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViS2l0OjpXZWJV
UkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcHJvcG9zZWRSZXF1ZXN0
KQogICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJVUkxTY2hl
bWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlKQotICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYlVS
TFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSBkYXRhKQorICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJLaXQ6
OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVm
ZmVyQ29weSBkYXRhKQogICAgIFVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJLaXQ6OldlYlVS
TFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgZXJyb3IpCiAKICAgICBTZXRJc1N1c3BlbmRlZChib29sIHN1c3BlbmRlZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHkuY3BwCmluZGV4IDZkOGQwY2YyNzg0ZWQzMDU2NjI1YzdmNmU4NDZhOTNhNzEx
Y2JhY2QuLjYxNmVkYTA4ZjBiOGZjYWIyZDU3ZmM0NzUzMjkxMDdiODE1Y2QyM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5LmNwcApAQCAtOTYsMTMgKzk2LDEzIEBAIHZvaWQgV2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVySWRlCiAgICAgdGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9p
ZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIHNpemVfdCBzaXplLCBjb25z
dCB1aW50OF90KiBkYXRhKQordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRS
ZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZp
ZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvKiB0YXNrID0gbV90YXNr
cy5nZXQodGFza0lkZW50aWZpZXIpOwogICAgIGlmICghdGFzaykKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgdGFzay0+ZGlkUmVjZWl2ZURhdGEoc2l6ZSwgZGF0YSk7CisgICAgdGFzay0+ZGlkUmVj
ZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNr
RGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKaW5k
ZXggNThiZWNjMTdiNWQ4NTk4NzQ5ODg0ZDMwMjUxNjg5Y2NjYzE3NjkzZi4uYWIyMGJkNTczYWE0
YWZjMTU4MDU5MGYyNzA0NjYzMDA2ODc3NDBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKQEAg
LTM1LDYgKzM1LDcgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVy
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01OSw3ICs2MCw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIHRhc2tEaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7Ci0gICAgdm9pZCB0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpOworICAgIHZv
aWQgdGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB0YXNrRGlkQ29tcGxldGUo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAgICAgdm9pZCB0YXNrRGlkU3RvcExvYWRpbmcoV2ViVVJMU2NoZW1lVGFza1By
b3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCmluZGV4IDM2MDZiYmRjNjUyMTVkZGNhOTI2MTNh
ODEwN2RhYjFiMTFlY2I2NTYuLjllNzJkODRjOTdkZjZkMjk3MTRhODNjNTFhYzE3NzYzZTVmYjY1
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNj
aGVtZVRhc2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcApAQCAtMTQwLDIxICsxNDAsMjEgQEAgdm9pZCBXZWJV
UkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6
OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQordm9pZCBX
ZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIWhhc0xvYWRlcigpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgV0VC
VVJMU0NIRU1FVEFTS1BST1hZX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogUmVjZWl2ZWQg
ZGF0YSBkdXJpbmcgcmVzcG9uc2UgcHJvY2Vzc2luZywgcXVldWluZyBpdC4iKTsKLSAgICAgICAg
cXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YVZlY3Rv
ciA9IFZlY3RvciB7IGRhdGEsIHNpemUgfV0gewotICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEo
ZGF0YVZlY3Rvci5zaXplKCksIGRhdGFWZWN0b3IuZGF0YSgpKTsKKyAgICAgICAgcXVldWVUYXNr
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YSA9IFJlZiB7IGRhdGEg
fV0geworICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiAgICAgICAgIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9Owot
ICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgc2l6ZSwgMCwgRGF0YVBheWxv
YWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVE
YXRhKGRhdGEsIDAsIERhdGFQYXlsb2FkVHlwZTo6RGF0YVBheWxvYWRCeXRlcyk7CiAgICAgcHJv
Y2Vzc05leHRQZW5kaW5nVGFzaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCmluZGV4IDc1NTA4Nzk0
MTgyMGZlZWZjNWQwMTI3MTU4YzA2NGNlMjU4YTA4MzUuLmVkOTFmMzhlM2FkZDEzYmUxOWNiMjE3
N2VkNDQ4ZmRkMmZhNzk1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoc2l6
ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKaW5kZXggYTI1
NTYwYTEwYzI4ODJlMWFiZDE3ODQ1Njk0ODZlYTEzZWQ4OTZkNC4uMzI4OWMyMzYyOWEwZGMzMWZj
MGMxOTllZGYxMzI5N2JlZDYxYTE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
cXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIApAQCAtNzMsNyArNzQsNyBAQCBwcml2
YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5nTG9hZENvbXBs
ZXRlKHsgfSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lk
IGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiBlcnJvcikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKGVycm9yKTsgfQogICAgIGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBm
aW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAppbmRleCA5NTlkNzQ4YjU2YmUxMDc2YmQ5Nzc5OTIyY2QzNTZkMjFhNjgx
NzRlLi44ZGY5OTNmMmQ3NzViNmM5M2QyZThmMDk5MGY3MmY4NWY2MThlNThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTQ4LDEwICs0OCwxMiBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNz
IENhY2hlZEZyYW1lOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEhpc3Rv
cnlJdGVtOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIGNsYXNzIFdl
YkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50LCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+IHsKQEAgLTE1MSw3ICsx
NTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkg
ZmluYWwgeyB9CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3Qg
dWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAg
dm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKICAg
ICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2Jh
bEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CmluZGV4IDQzZTYzZjQ1NjM0NWVjZjFjOTI0ZTViNzcyYTZmNTQxNzNhOTE0MmIuLjg3YTVkNjU3
ZjdiNzMzZDA3YzVkYjYwMWY2OTgxZjkwNDk3NzEzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCkBAIC05OTIsMTAgKzk5Miw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
ZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkKICNlbmRpZgogfQogCi12b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBhdXRvIG5zRGF0YSA9IGFkb3B0
TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3Ro
Omxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICBbZGF0YVNvdXJjZShsb2FkZXIpIF9yZWNl
aXZlZERhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBbZGF0YVNvdXJjZShsb2FkZXIpIF9yZWNlaXZl
ZERhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVy
KQpAQCAtMjAxMiw3ICsyMDExLDcgQEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG8KICAgICAgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRoOwogICAgICAgICBSZXRhaW5QdHI8TlNGaWxl
SGFuZGxlPiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKKyAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBkYXRhQXJyYXkgPSBi
dWZmZXIuY3JlYXRlTlNEYXRhQXJyYXkoKTsKICAgICAgICAgICAgIGZvciAoTlNEYXRhICpkYXRh
IGluIGRhdGFBcnJheS5nZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCmluZGV4IDBlMDViMThkNjk2Mzk4MjhkNDMzYzQ2ZDc5MjFjZjcwZGU3ZGY5ZDEu
LjJhODc3MGRmODBiYjlmNzBjMTBiYjkxZjk1MjBkMWUxOWM4NTlkOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtOTc3LDcgKzk3Nyw3IEBAIC0g
KHZvaWQpX2NvbW1pdERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICBhdXRvKiBkb2N1bWVudCA9IF9w
cml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCk7CiAgICAgZG9jdW1lbnQtPnNldFNob3VsZENy
ZWF0ZVJlbmRlcmVycyhfcHJpdmF0ZS0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKTsKIAotICAgIF9w
cml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERhdGEo
KGNvbnN0IHVpbnQ4X3QqKVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgX3ByaXZh
dGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+Y29tbWl0RGF0YShXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCBmYjI1ODNmZTk3MjY0YzczZWViMjNlYmI0ZDM5OTBiM2I4
NGEwN2YzLi4xMjcwZTU3ZGQ5NWIwZDAwMDNiNWU1Njc3ZDQ3NDJhMTI1NTJkODUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC02NDEsOSArNjQxLDkgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExv
YWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIGxvYWRlci0+Y29t
bWl0RGF0YShkYXRhLCBsZW5ndGgpOworICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhKTsKIAog
ICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50LCBu
b3cgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2VsIHRoZSBXZWJLaXQgbG9hZC4KICAgICAvLyBG
SVhNRTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIGFsbCBwb3J0cy4gPGh0dHA6
Ly93ZWJraXQub3JnL2IvNDg3NjI+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMDk1
YjI1MzVhNjg3NTQ3YmQ3ODg0NmY5MDc2YWU2YzdkMDE2Mjk0OC4uNzkyNmZkMzY3MTgwOWU4Mzg0
N2E0ODAzMWE4YjkwYzYzOGZhZjdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0x
MTIsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IFN0
cmluZygpKSBvdmVycmlkZTsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgY29t
bWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJD
b3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448488</attachid>
            <date>2022-01-06 05:25:12 -0800</date>
            <delta_ts>2022-01-06 07:32:59 -0800</delta_ts>
            <desc>rebase</desc>
            <filename>bug-232424-20220107002509.patch</filename>
            <type>text/plain</type>
            <size>266006</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMyY2NiYzI2ZjE3N2Jh
Mjg3ZjFjZTIxN2Q5YWMyNDQ5ZTg0N2Y1Yi4uOThhYjgwZDU1MmUwZWExMDI5MGUxYTdhZThiMzcx
Y2VmODgzNmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyNiBAQAorMjAyMS0xMi0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1
ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vl
bm4gRmFibGV0LgorCisgICAgICAgIFdlIG1vZGlmeSBhbGwgZGlkUmVjZWl2ZURhdGEgYW5kIHJl
bGF0ZWQgbWV0aG9kcyBzbyB0aGF0IHRoZXkgbm8gbG9uZ2VyCisgICAgICAgIHVzZSB1aW50OF90
Ki9pbnQgYW5kIGluc3RlYWQgdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2UgZG8gdGhlIHNh
bWUgZm9yIGFueSBpbnRlcm1lZGlhcmllcyB1c2VkIGJ5IHRoZSB2YXJpb3VzIGRpZFJlY2VpdmVE
YXRhCisgICAgICAgIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgVGhpcyB3aWxsIGZhY2lsaXRh
dGUgbW92aW5nIG5ldHdvcmtpbmcgb2ZmIHRoZSBtYWluIHRocmVhZCBpbiB0aGUgR1BVCisgICAg
ICAgIHByb2Nlc3MgYW5kIGFsbG93cyB0byByZW1vdmUgc2V2ZXJhbCBtZW1vcnkgYWxsb2NhdGlv
bnMgYW5kIGNvcGllcyBhdCB0aGUKKyAgICAgICAgcHJvY2VzcyBib3VuZGFyaWVzLgorICAgICAg
ICBXZSBjYW4gbm93IGNvbnNpZGVyIHRyYW5zZmVyIHRoZSB1bmRlcmx5aW5nIFNoYXJlZE1lbW9y
eSBjcmVhdGVkIGluCisgICAgICAgIHRoZSBuZXR3b3JrIHByb2Nlc3MgYWxsIHRoZSB3YXkgdG8g
dGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgIEZseS1ieSBmaXg6IGNoYW5nZSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyIHR5cGUgdG8gU2hhcmVkQnVmZmVyIHdoZW4gYXBwcm9wcmlhdGUuCisKKyAg
ICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyLiBDb3ZlcmVkIGJ5IGFsbCBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5T3duZXI6OmJsb2JDaHVuayk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXJDbGllbnQ6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y29uc3VtZUNodW5rKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtU2luay5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZSk6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVu
dEZpbHRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVy
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OmFkZERh
dGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5oOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFFbGVtZW50VVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTWVk
aWFSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlOjpk
YXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMp
OgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6bG9hZERhdGFVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZEJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3Vic3RpdHV0ZVJlc291cmNlOjphcHBlbmQpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRh
YmxlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJD
bGllbnRXcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6
Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAg
KiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3
TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBhZ2Uv
RXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OnRha2VEYXRhKTogVXBkYXRlIGR1ZSB0byBEYXRhU2VnbWVudFZlY3RvckVudHJ5Ojpz
ZWdtZW50IGJlaW5nIGNvbnN0CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpmb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyIGNvbnN0KTogQWRkIGNvbnZlbmllbmNl
IG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRh
Vmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDogTWFr
ZSBEYXRhU2VnbWVudFZlY3RvckVudHJ5OjpzZWdtZW50IGNvbnN0LgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VM
b2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lm
Qnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKC1bV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxEb3du
bG9hZDo6Y3VybERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRs
ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZy
b21NdWx0aXBhcnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtOjp0cnlUb1Jl
Y2VpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1
cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW06CisgICAgICAgICgt
W1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9u
OmRpZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuaDoKKwogMjAyMi0wMS0wNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgogCiAgICAgICAgIGxlbmd0aCBhcmd1bWVudCBwYXNzZWQgdG8gZGlkUmVjZWl2ZURhdGEg
Y2FuIG5ldmVyIGJlIG5lZ2F0aXZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4Njc3ODg5MGQzZWEwYzMzZjI1ZDRj
NGI1Yzg4MWZjODY5ZjlhOWU2Li5kNzI0OTBkODJkMTJjNzdiYzY2OThkODc4ZDgwYzNlZGNiY2Vh
YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAyMS0xMi0yOCAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQyNAorICAg
ICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vy
dmljZVdvcmtlckRvd25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2Fk
VGFzay5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OmxvYWRCb2R5RnJvbVByZWxvYWRlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29y
a0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6
OmN1cmxEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0
UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OmRpZFBhcnNl
VHJhY2tzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9y
bWF0UmVhZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2lu
U3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlQmxvYkNodW5rKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2Fk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNr
RGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJv
eHkuaDoKKwogMjAyMi0wMS0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZENvbXBsZXRlIHNo
b3VsZCBtYWtlIHN1cmUgdG8gY2FsbCBpdHMgYm9keUNhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
CmluZGV4IDU3NjgxYjIxYTczNDM5ZTkwYmYyMWJhMjQ0OTU4MjU5N2UwMTk5ODIuLjNjMTk1OGZl
YjQ4NzliY2FkNmRlODdhODY2NGJiZGQ0YmRiNmVhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVk
IG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0
Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMi0xNCAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nl
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ZjQzZTJkYjY2NTc3YjY1ZTdhYzEy
MDBkODc1NjQwYTZlMjQyYjk5Li40YjVjZTE1Y2EzZGFkNjI1YjM0MzBlM2Q2ODI5YTI4MzRmY2Q3
ZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEt
MTItMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZl
IENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVz
ZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmlld0xvYWRlckNsaWVu
dCk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X2NvbW1pdERhdGE6XSk6CisKIDIwMjItMDEtMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBtb3JlIFNESyBjaGVja3MgdG8gbGlua2VkT25P
ckFmdGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAwYjc4ZjVjZTEwYTkyYzVm
ODk3YWI4MTY5MDFlOTU5MWI4NjkxYzM4Li45MmEzNWQ3NzM4NWEyYzYzZGE2MWE2ZGI5YmFhYjYx
OGVlMmE3YTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMjEtMTItMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAg
ICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0
b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
b21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oOgorCiAyMDIxLTEyLTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIFVJIGRlbGVnYXRlIG1ldGhvZCB0byBk
ZWNpZGUgaG93IHRvIGhhbmRsZSBkZXRlY3RlZCBtb2RhbCBjb250YWluZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDJi
NWQxMDQ2MmI3YTk0NThhMGE4OTI1NzgyOGM0MWJkOTE4OGY1ZGUuLmZlNmY2MmJiNzZlMTJlOGQ0
OGYxZjc5MDVmM2RkMzNlZmQyNjlhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0zNzgsMTMgKzM3OCwxMyBAQCB2b2lk
IEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSwgY29uc3QgU3RyaW5nJiBjbwogICAgIH0KIH0KIAotdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCit2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KG1fc291cmNlKSB7Ci0gICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoZGF0YSwgc2l6ZSkpOworICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShidWZmZXIudHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9idWZm
ZXIuYXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIpOwogfQog
CiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmgKaW5kZXggNzk4MDVkNGFhNTY0YmEwY2Y1YWUxM2ExMjQ0OTNkMDYwMzFhZGJi
MS4uY2JlZDBmMDMzZDkxM2NkMWNiYmJiYTAxYjgyNzQyZTM4NDYxNjNhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTIsNyAr
NTIsNyBAQCBwdWJsaWM6CiAKICAgICBGZXRjaEJvZHlDb25zdW1lciBjbG9uZSgpOwogCi0gICAg
dm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQpOworICAgIHZvaWQgYXBw
ZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2J1ZmZlcjsgfQogICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCA1MzU0MGNmZGM0
NjBiNDBmM2NhYTI3NjRkOTNhMTFkNDg2ZGZjYTBhLi4zMjE1YmMxN2MzODE0NDE4Yjc5NzllYzYy
MjBkNTRiYTMzNTNlYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmNwcApAQCAtMjk4LDExICsyOTgsMTAgQEAgdm9pZCBGZXRjaEJvZHlPd25l
cjo6YmxvYkxvYWRpbmdGYWlsZWQoKQogICAgIGZpbmlzaEJsb2JMb2FkaW5nKCk7CiB9CiAKLXZv
aWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKK3ZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKLSAgICBBU1NFUlQoZGF0YSk7CiAgICAgQVNTRVJUKG1fcmVhZGFibGVTdHJl
YW1Tb3VyY2UpOwotICAgIGlmICghbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+ZW5xdWV1ZShBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKSkKKyAgICBpZiAoIW1fcmVhZGFibGVTdHJl
YW1Tb3VyY2UtPmVucXVldWUoYnVmZmVyLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpKQogICAgICAg
ICBzdG9wKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5T3duZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaAppbmRleCAwMjBiNWVmZTdiM2JmNDVhY2VjYTEyNmYyZDIyY2YxOTNkY2U0ZmViLi43
MTBlZGNmZDY2NTI3ZjA0YzFmYTkxNTQ4ODY0ZjgwNGEyMmU2NGY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSAiRmV0Y2hMb2FkZXIuaCIKICNpbmNsdWRlICJGZXRjaExvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDEsNyArMTAyLDcgQEAgcHJvdGVjdGVkOgogCiBw
cml2YXRlOgogICAgIC8vIEJsb2IgbG9hZGluZyByb3V0aW5lcwotICAgIHZvaWQgYmxvYkNodW5r
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHZvaWQgYmxvYkNodW5rKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOwogICAgIHZvaWQgYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsKICAgICB2b2lkIGJs
b2JMb2FkaW5nRmFpbGVkKCk7CiAgICAgdm9pZCBmaW5pc2hCbG9iTG9hZGluZygpOwpAQCAtMTE0
LDcgKzExNSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJ
CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBvd25lci5ibG9iQ2h1bmsoZGF0YSwgc2l6ZSk7IH0KKyAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgZmlu
YWwgeyBvd25lci5ibG9iQ2h1bmsoYnVmZmVyKTsgfQogICAgICAgICB2b2lkIGRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5h
bCB7IG93bmVyLmJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCAwM2Y4OWI2MWNhNWY3YzcxNzZiOWQ4
OGNkMTM2NjBlODZiN2EyNTQ4Li5iMjZjMmFkMTUwNGYzZjc0ZDA4YWZhNjUxZTA1MDEyZDZlMzZi
OTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcApA
QCAtMTQ4LDEzICsxNDgsMTMgQEAgdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXMKICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNoTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiB2YWx1ZSwgaW50IHNpemUpCit2b2lkIEZldGNo
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBpZiAoIW1fY29uc3VtZXIpIHsKLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEodmFs
dWUsIHNpemUpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YShidWZmZXIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIG1fY29uc3VtZXItPmFwcGVuZCh2YWx1ZSwgc2l6ZSk7
CisgICAgbV9jb25zdW1lci0+YXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgRmV0Y2hMb2FkZXI6
OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IDQ2MTJkMGUwZTNhN2VmZTMwNjAz
OTZiMGQ3NWEyZmEzYmM0ZWRkYWQuLjcyYjI3MmViZTY1NDgwZjhhMmIwZWVhYmU3Mjc1NTMxYzdm
NWI2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKQEAg
LTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50IEFQSS4KICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oCmluZGV4IGZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcx
YWRjY2JkZDliZDA0NWU3ODkuLjEwOWUwOGVjZjdhNDdlN2MwMzdlMzJkY2FhY2FiODZjODFjMThk
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xp
ZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogCiAgICAg
dmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDEwODdjNWEwNWY5NDU3OTIxMDUyZmVhNDA5ZDgx
MDU0NjQ0NWI3OTAuLjBkNGZmMWE3ODUzM2RmNDUxYTkxMDJhMjRiZDg4ZTEwODZjYmViZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAt
MzU4LDEyICszNTgsMTIgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9u
c2VDYWxsYmFjayhtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3Zv
aWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVh
bVNvdXJjZSB8fCBtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURh
dGFDYWxsYmFjaykgewotICAgICAgICBTcGFuIGNodW5rIHsgZGF0YSwgc2l6ZSB9OworICAgICAg
ICBTcGFuIGNodW5rIHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9OwogICAgICAgICBt
X2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTM3MSw3ICszNzEsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgIGF1dG8mIHNvdXJj
ZSA9ICptX3Jlc3BvbnNlLm1fcmVhZGFibGVTdHJlYW1Tb3VyY2U7CiAKICAgICBpZiAoIXNvdXJj
ZS5pc1B1bGxpbmcoKSkgewotICAgICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFw
cGVuZChkYXRhLCBzaXplKTsKKyAgICAgICAgbV9yZXNwb25zZS5ib2R5KCkuY29uc3VtZXIoKS5h
cHBlbmQoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzc5LDcgKzM3OSw3
IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAgIHN0b3AoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAoIXNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVh
dGUoZGF0YSwgc2l6ZSkpKSB7CisgICAgaWYgKCFzb3VyY2UuZW5xdWV1ZShidWZmZXIudHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSkpIHsKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAKIHZvaWQg
RmV0Y2hSZXNwb25zZTo6Y29uc3VtZUNodW5rKFJlZjxKU0M6OlVpbnQ4QXJyYXk+JiYgY2h1bmsp
CiB7Ci0gICAgYm9keSgpLmNvbnN1bWVyKCkuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5i
eXRlTGVuZ3RoKCkpOworICAgIGJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChTaGFyZWRCdWZmZXI6
OmNyZWF0ZShjaHVuay0+ZGF0YSgpLCBjaHVuay0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHZvaWQg
RmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHlBc1N0cmVhbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDNjYzlkMWJlZjY0ZDMxNDg3ODcxOTUw
ODA0NWJkYTQ4MWQ0N2U2MGQuLjI3NDY4MDdjYThiYmIxODNiMDM0MTFhOTk0OWMyZjRkNWQ1NDdh
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBA
IC0xNDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmlu
YWw7CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAg
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBm
aW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90
KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
KSBmaW5hbDsKIAogICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBO
b3RpZmljYXRpb25DYWxsYmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
aW5kZXggMjdhNmQ3MDMzNGNhMzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1MmU3ZC4uYTY0MWY4MTA3
YjRmZDE3OTExZmRiOTJiYjMwZjQ1ZTJlODJiNTJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAt
MTc3LDEwICsxNzcsMTAgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIAogLy8gTUFSSzogLSBD
YWNoZWRSYXdSZXNvdXJjZUNsaWVudAogCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKQordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgbV9kYXRh
LmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9
CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXgg
Y2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNiZS4uMGQzYmRiNzQ5ZDdhMzM2
OGIzY2E2OGMyMTczMTYwNTkxNTQ5ZDFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMTYsNyArMTE2
LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFs
OwogCiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgb3ZlcnJpZGVzLgotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgLy8g
TW9kZWxQbGF5ZXJDbGllbnQgb3ZlcnJpZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCmluZGV4IGQ1MTczZmJmOGI0MDM0MWM1
Y2Y4ZDhhNGY1NWVlYWM4ZmY4MzhhMzkuLmZlZTk4ODQyMjFiYjQzZThjYzA2MmVhYmNkMGE5OWVj
NTRjMDM0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbVNpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1TaW5rLmgKQEAgLTM1LDcgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBCdWZmZXJTb3VyY2U7CiBjbGFzcyBSZWFkYWJsZVN0cmVhbTsKLWNsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBS
ZWZDb3VudGVkPFJlYWRhYmxlU3RyZWFtU2luaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggNzRlZjVmNGI4YjQ3YTcyYTU1OTA4
N2ZhZmE3MTc1Njg4ZThkNTY0OS4uMDdhYmNhYTgxZGRmNDBhZDlmYzY5OTA3MzRmYjhjNTI4NGFh
N2E4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBA
IC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVy
LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVMb2FkZXIuaCIKQEAgLTE2OCwxNiArMTY5LDE1IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVz
b3VyCiAgICAgICAgIG1fY2xpZW50LT5kaWRTdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBGaWxl
UmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIEFTU0VSVChkYXRh
TGVuZ3RoID4gMCk7CisgICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkpOwogCiAgICAgLy8gQmFpbCBv
dXQgaWYgd2UgYWxyZWFkeSBlbmNvdW50ZXJlZCBhbiBlcnJvci4KICAgICBpZiAobV9lcnJvckNv
ZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBsZW5ndGggPSBkYXRhTGVuZ3RoOworICAg
IGludCBsZW5ndGggPSBidWZmZXIuc2l6ZSgpOwogICAgIHVuc2lnbmVkIHJlbWFpbmluZ0J1ZmZl
clNwYWNlID0gbV90b3RhbEJ5dGVzIC0gbV9ieXRlc0xvYWRlZDsKICAgICBpZiAobGVuZ3RoID4g
c3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZW1haW5pbmdCdWZmZXJTcGFjZSkpIHsKICAgICAgICAg
Ly8gSWYgdGhlIGJ1ZmZlciBoYXMgaGl0IG1heGltdW0gc2l6ZSwgaXQgY2FuJ3QgYmUgZ3Jvd24g
YW55IG1vcmUuCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCkgewot
ICAgICAgICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbV90b3RhbEJ5dGVzICsgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGRhdGFMZW5ndGgpOworICAgICAgICAgICAgdW5zaWduZWQgbmV3TGVuZ3Ro
ID0gbV90b3RhbEJ5dGVzICsgYnVmZmVyLnNpemUoKTsKICAgICAgICAgICAgIGlmIChuZXdMZW5n
dGggPCBtX3RvdGFsQnl0ZXMpIHsKICAgICAgICAgICAgICAgICBmYWlsZWQoTm90UmVhZGFibGVF
cnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQg
RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgpCiAgICAgaWYgKGxlbmd0aCA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNM
b2FkZWQsIGRhdGEsIGxlbmd0aCk7CisgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihtX3Jh
d0RhdGEtPmRhdGEoKSkgKyBtX2J5dGVzTG9hZGVkLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpOwog
ICAgIG1fYnl0ZXNMb2FkZWQgKz0gbGVuZ3RoOwogCiAgICAgbV9pc1Jhd0RhdGFDb252ZXJ0ZWQg
PSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXgg
ZGJhZTllMzM1MDkwYThiOTZkZmI3NmViNmUxNTExMjU5ODhlNjBlZi4uNjMxNmM0MDA0ZGVmYjRh
NzZjZDAzMjNmYzQ4NjUxZDM5ZGExMTUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFk
YWJsZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CmluZGV4IDVjNWJiMmFlYTgzOTkxOGIwNjk3NzU4ODFjZTNhMzY5YTQyOGU1YjkuLjNjOTc4ZTNm
NDQyMWNmMzVhMjA2MWRmY2UwZDFlMGFhZTUxMTM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC02MTYsMTAg
KzYxNiwxMCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudAogICAgICAgICBuZXR3b3JrQWdlbnQt
PmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoaWRlbnRpZmllciwgZG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5l
dHdvcmtBZ2VudCgpKQotICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50
aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbmV0
d29ya0FnZW50LT5kaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCAmYnVmZmVyLCBidWZmZXIuc2l6
ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJp
Y3MsIFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBkMjk1NzgxMGQ4
MzgyYzkzNTFkNWE5M2YxNDRhZWQxNDkzYmNjNjUxLi44MmFjY2VkMjBjZmQ1MTMxYjI1MDJmMDk5
YTljNGZhMmZkZDYxNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0xOTMsMTMgKzE5MywxMyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKFBhZ2UmLCBEb2N1
bWVudExvYWRlciosIENhY2hlZFJlc291cmNlKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZVJlc291cmNlUmVzcG9uc2UoRnJhbWUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXImLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwotICAgIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIq
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJl
c291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoRnJhbWUqLCBE
b2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogCiAgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEo
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZUVycm9yJik7CiAKQEAgLTQxNCw3ICs0MTQsNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIERvY3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
VGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKLSAgICBzdGF0
aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgc3RhdGljIHZvaWQgZGlk
RmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNv
dXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlcios
IGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsTG9hZFhIUlN5bmNo
cm9ub3VzbHlJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmKTsKQEAgLTEwODIsMTcgKzEwODIsMTcg
QEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFk
YWJsZUxvYWRlclJlc3BvbnNlKERvY3VtZW4KICAgICAgICAgZGlkUmVjZWl2ZVRocmVhZGFibGVM
b2FkZXJSZXNwb25zZUltcGwoKmFnZW50cywgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLCBpZGVu
dGlmaWVyKTsKIH0KICAgICAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVj
ZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoYXV0byog
YWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhmcmFtZSkpCi0gICAgICAgIGRpZFJlY2VpdmVE
YXRhSW1wbCgqYWdlbnRzLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqYWdlbnRzLCBpZGVudGlmaWVy
LCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSYgZ2xvYmFsU2NvcGUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
IGdsb2JhbFNjb3BlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KHZvaWQoKSk7Ci0gICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMoZ2xv
YmFsU2NvcGUpLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3RoKTsKKyAg
ICBkaWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyhnbG9iYWxTY29wZSksIGlk
ZW50aWZpZXIsIGJ1ZmZlciwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhGcmFtZSogZnJhbWUsIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2Fk
ZXIqIHJlc291cmNlTG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggMzliMDExY2YwNmY3ZjM4NTMyNDNlMGE3NjNhM2Ix
ZDQ1NDkwNDE0OS4uMzI4ZWJlN2U2NDExOTVlNWE0Njg1MDI3NTU5MTBmNzhjNDhiNThkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CkBAIC05MCwxMCArOTAsMTAgQEAgc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGFCdWZmZXIuc2l6ZSgp
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBtX2RhdGFCdWZmZXIu
YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSk7
CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29k
ZURhdGFUb0NvbnRlbnQoKQpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEJ1
ZmZlclJlc291cmNlRGF0YShjb25zdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
JiByCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1OZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoKQorTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29y
a1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNv
dXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBpZiAo
IXJlc291cmNlRGF0YSkKQEAgLTIzMCwxNSArMjMwLDE1IEBAIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291
cmNlCiAgICAgaWYgKCFzaG91bGRCdWZmZXJSZXNvdXJjZURhdGEoKnJlc291cmNlRGF0YSkpCiAg
ICAgICAgIHJldHVybiByZXNvdXJjZURhdGE7CiAKLSAgICBpZiAocmVzb3VyY2VEYXRhLT5kYXRh
TGVuZ3RoKCkgKyBkYXRhTGVuZ3RoID4gbV9tYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6
ZSkKKyAgICBpZiAocmVzb3VyY2VEYXRhLT5kYXRhTGVuZ3RoKCkgKyBkYXRhLnNpemUoKSA+IG1f
bWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpCiAgICAgICAgIG1fY29udGVudFNpemUg
LT0gcmVzb3VyY2VEYXRhLT5ldmljdENvbnRlbnQoKTsKICAgICBpZiAocmVzb3VyY2VEYXRhLT5p
c0NvbnRlbnRFdmljdGVkKCkpCiAgICAgICAgIHJldHVybiByZXNvdXJjZURhdGE7CiAKLSAgICBp
ZiAoZW5zdXJlRnJlZVNwYWNlKGRhdGFMZW5ndGgpICYmICFyZXNvdXJjZURhdGEtPmlzQ29udGVu
dEV2aWN0ZWQoKSkgeworICAgIGlmIChlbnN1cmVGcmVlU3BhY2UoZGF0YS5zaXplKCkpICYmICFy
ZXNvdXJjZURhdGEtPmlzQ29udGVudEV2aWN0ZWQoKSkgewogICAgICAgICBtX3JlcXVlc3RJZHNE
ZXF1ZS5hcHBlbmQocmVxdWVzdElkKTsKLSAgICAgICAgcmVzb3VyY2VEYXRhLT5hcHBlbmREYXRh
KGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICBtX2NvbnRlbnRTaXplICs9IGRhdGFMZW5ndGg7
CisgICAgICAgIHJlc291cmNlRGF0YS0+YXBwZW5kRGF0YShkYXRhKTsKKyAgICAgICAgbV9jb250
ZW50U2l6ZSArPSBkYXRhLnNpemUoKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzb3VyY2VEYXRh
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApp
bmRleCBkYWFlNWZlNGEzMWUzMTU5MzYzNzkwNDIzZjVmYmQzMzcwYzVjZDM5Li5jOGNlZDEyYTY0
MDdmZGNkNTc0ZWNjMmE3ODE5ZWRlNjYzODAzZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1Ymxp
YzoKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAg
c2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKLSAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9pZCBhcHBlbmRE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgICAgICB1bnNpZ25lZCBkZWNvZGVEYXRhVG9D
b250ZW50KCk7CiAKICAgICAgICAgU3RyaW5nIG1fcmVxdWVzdElkOwpAQCAtMTQxLDcgKzE0MSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291cmNlVHlwZShjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUpOwogICAgIEluc3BlY3RvclBh
Z2VBZ2VudDo6UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCk7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkID0gZmFsc2UpOwotICAg
IFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAgICBS
ZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIG1heWJlRGVjb2RlRGF0YVRv
Q29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNv
dXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lk
IGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcAppbmRleCAzYTEzYjg1MmQ4MmQyNWVlNTExYWU5Mjc3OTkzNmNk
ZDBmMGYzNTU4Li4wYzI5NzBlODM4YTcwMTVjYzllYzY1YmI1Y2Q4ZWQ0ODA0NjkwMmNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCkBAIC0xMjQsMTIgKzEyNCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1f
ZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiJfcywgdGV4
dEVuY29kaW5nLCB1c2VEZXRlY3Rvcik7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGUKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQogICAg
IHsKLSAgICAgICAgaWYgKCFkYXRhTGVuZ3RoKQorICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX3Jlc3BvbnNlVGV4dC5hcHBlbmQo
bV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgZGF0YUxlbmd0aCkpOworICAgICAgICBtX3Jlc3BvbnNl
VGV4dC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSkpOwogICAgIH0KIAogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIpIG92ZXJyaWRlCkBAIC01NDYsOSArNTQ2LDggQEAgdm9pZCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmkKICAgICAgICAgICAgIGlmIChwcmV2aW91c1Jlc291cmNlRGF0YS0+aGFzQ29udGVudCgp
KQogICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJl
cXVlc3RJZCwgcHJldmlvdXNSZXNvdXJjZURhdGEtPmNvbnRlbnQoKSwgcHJldmlvdXNSZXNvdXJj
ZURhdGEtPmJhc2U2NEVuY29kZWQoKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChwcmV2aW91c1Jl
c291cmNlRGF0YS0+aGFzQnVmZmVyZWREYXRhKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHBy
ZXZpb3VzQnVmZmVyID0gcHJldmlvdXNSZXNvdXJjZURhdGEtPmJ1ZmZlcigpOwotICAgICAgICAg
ICAgICAgIHByZXZpb3VzQnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkg
ewotICAgICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VE
YXRhKHJlcXVlc3RJZCwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICBwcmV2aW91c1Jlc291cmNlRGF0YS0+YnVmZmVyKCktPmZvckVhY2hTZWdtZW50QXNT
aGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9y
ZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGJ1ZmZlcik7CiAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTU3NCw3
ICs1NzMsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgICAgICBkaWRSZWNlaXZlRGF0
YShpZGVudGlmaWVyLCBudWxscHRyLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBpbnQgZXhwZWN0ZWREYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1faGlkZGVuUmVxdWVzdElkZW50aWZpZXJzLmNv
bnRhaW5zKGlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm47CkBAIC01ODIsMTYgKzU4MSwxNiBA
QCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZp
ZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKICAgICBpZiAo
ZGF0YSkgewotICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0
KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJl
cXVlc3RJZCwgZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+bWF5
YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCAqZGF0YSk7CiAKICAgICAgICAgLy8gRm9yIGEg
c3luY2hyb25vdXMgWEhSLCBpZiB3ZSBkaWRuJ3QgYWRkIGRhdGEgdGhlbiB3ZSBjYW4gYXBwbHkg
aXQgaGVyZSBhcyBiYXNlNjQgZW5jb2RlZCBjb250ZW50LgogICAgICAgICAvLyBPZnRlbiB0aGUg
ZGF0YSBpcyB0ZXh0IGFuZCB3ZSB3b3VsZCBoYXZlIGEgZGVjb2RlciwgYnV0IGZvciBub24tdGV4
dCB3ZSB3b24ndCBoYXZlIGEgZGVjb2Rlci4KICAgICAgICAgLy8gU3luYyBYSFJzIG1heSBub3Qg
aGF2ZSBhIGNhY2hlZCByZXNvdXJjZSwgd2hpbGUgbm9uLXN5bmMgWEhScyB1c3VhbGx5IHRyYW5z
ZmVyIGRhdGEgb3ZlciBvbiBjb21wbGV0aW9uLgogICAgICAgICBpZiAobV9sb2FkaW5nWEhSU3lu
Y2hyb25vdXNseSAmJiByZXNvdXJjZURhdGEgJiYgIXJlc291cmNlRGF0YS0+aGFzQnVmZmVyZWRE
YXRhKCkgJiYgIXJlc291cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSkKLSAgICAgICAgICAgIG1f
cmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoZGF0YSwgZGF0YUxlbmd0aCksIHRydWUpOworICAgICAgICAgICAgbV9yZXNvdXJj
ZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSksIHRydWUpOwogICAgIH0KIAotICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5kYXRhUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAoKSwgZGF0
YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5k
YXRhUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAoKSwgZXhwZWN0ZWREYXRhTGVuZ3RoLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRG
aW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciogbG9hZGVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0
cmljcywgUmVzb3VyY2VMb2FkZXIqKQpAQCAtMTI2OCw3ICsxMjY3LDcgQEAgUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0
V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0
IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAg
aWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUo
Y29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI5Myw5ICsxMjkyLDkgQEAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICB9CiAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZp
ZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOwogICAgIHJlc3BvbnNlLnNldEhUVFBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJlc3BvbnNlLm1pbWVUeXBlKCkp
OwotICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZm
ZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAgbG9hZGVyLT5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5v
bk51bGwoKV0oKSB7CiAgICAgICAgIGlmIChidWZmZXItPnNpemUoKSkKLSAgICAgICAgICAgIGxv
YWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpLCBE
YXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICAgICAgbG9hZGVyLT5kaWRSZWNlaXZl
RGF0YShidWZmZXIsIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwog
ICAgICAgICBsb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkpOwog
ICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA2YmNkODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2
YjBlNmRhMTQxM2Q0Li43MmY0MjNmZjYxMjc3ZWVmNGJkMzU2MzI4YzQ2ZDNiZDkxMzFmZjY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUo
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVz
dCYsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciosIGlu
dCBleHBlY3RlZERhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQg
ZGlkRmFpbExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlcios
IGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggNDMzMmQ2OTFiYmY4MjZhN2M4N2VhODNhMzE3
ZTk2MTE1YTIwNDk5My4uYTA5ODFhZGQ3OTg1MzJiOTdiYWE0MDQxMjhiYTM4ODk2ZGFmNjg0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3
IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAg
IEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3Vy
Y2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3Vn
aENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
cmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKIH0K
IAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKaW5kZXggMjE1YzA0ZWM5ODk1ZTlmMWU2ZTE0N2Rh
ODIwOTMwMDk4NTIzOTYyMy4uZmE3YWQzMDM5YTIwNWU5MDU3MTA4ZjNjNmYzOTI0MTliYzQ2NDdk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCkBAIC0z
Myw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBDb250ZW50RmlsdGVyQ2xpZW50IHsKQEAg
LTQxLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lk
IGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29u
c3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50
RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRG
aWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA2YmYzYWMyOTdlYzZi
MjYzYTA3ODY0MGJjZjNhZDU3NzlkYjBmZWRiLi41ZTc3YTY5N2E4NGVhZTlkYWE4ZWIxMDI5OTEw
YTcwOGExMjQ4OWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
QEAgLTQ4Myw4ICs0ODMsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmco
KQogICAgICAgICAvLyBJZiB0aGlzIGlzIGFuIGVtcHR5IGRvY3VtZW50LCBpdCB3aWxsIG5vdCBo
YXZlIGFjdHVhbGx5IGJlZW4gY3JlYXRlZCB5ZXQuIENvbW1pdCBkdW1teSBkYXRhIHNvIHRoYXQK
ICAgICAgICAgLy8gRG9jdW1lbnRXcml0ZXI6OmJlZ2luKCkgZ2V0cyBjYWxsZWQgYW5kIGNyZWF0
ZXMgdGhlIERvY3VtZW50LgogICAgICAgICBpZiAoIW1fZ290Rmlyc3RCeXRlKQotICAgICAgICAg
ICAgY29tbWl0RGF0YSgwLCAwKTsKLSAgICAgICAgCisgICAgICAgICAgICBjb21taXREYXRhKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworCiAgICAgICAgIGlmICghZnJhbWVMb2FkZXIoKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZmluaXNo
ZWRMb2FkaW5nKHRoaXMpOwpAQCAtMTE1Nyw4ICsxMTU3LDggQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkKICAgICBp
ZiAoIWlzU3RvcHBpbmcoKSAmJiBtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSAmJiBpc0xvYWRp
bmdNYWluUmVzb3VyY2UoKSkgewogICAgICAgICBhdXRvIGNvbnRlbnQgPSBtX3N1YnN0aXR1dGVE
YXRhLmNvbnRlbnQoKTsKICAgICAgICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC0+c2l6ZSgpKSB7
Ci0gICAgICAgICAgICBjb250ZW50LT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkg
ewotICAgICAgICAgICAgICAgIGRhdGFSZWNlaXZlZChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5z
aXplKCkpOworICAgICAgICAgICAgY29udGVudC0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZl
cihbJl0oYXV0byYmIGJ1ZmZlcikgeworICAgICAgICAgICAgICAgIGRhdGFSZWNlaXZlZChidWZm
ZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzTG9hZGluZ01h
aW5SZXNvdXJjZSgpKQpAQCAtMTE3MSw3ICsxMTcxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkKICAgICB9CiB9
CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQoY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIC8vIEJvdGggdW5sb2FkaW5nIHRoZSBvbGQgcGFnZSBhbmQg
cGFyc2luZyB0aGUgbmV3IHBhZ2UgbWF5IGV4ZWN1dGUgSmF2YVNjcmlwdCB3aGljaCBkZXN0cm95
cyB0aGUgZGF0YXNvdXJjZQogICAgIC8vIGJ5IHN0YXJ0aW5nIGEgbmV3IGxvYWQsIHNvIHJldGFp
biB0ZW1wb3JhcmlseS4KQEAgLTExODYsNyArMTE4Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNvbW1pdExvYWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKICAgICBpZiAoQXJj
aGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1JTUVUeXBlKHJlc3BvbnNlKCkubWltZVR5cGUoKSkpCiAg
ICAgICAgIHJldHVybjsKICNlbmRpZgotICAgIGZyYW1lTG9hZGVyLT5jbGllbnQoKS5jb21taXR0
ZWRMb2FkKHRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLmNv
bW1pdHRlZExvYWQodGhpcywgZGF0YSk7CiAKICAgICBpZiAoaXNNdWx0aXBhcnRSZXBsYWNpbmdM
b2FkKCkpCiAgICAgICAgIGZyYW1lTG9hZGVyLT5jbGllbnQoKS5kaWRSZXBsYWNlTXVsdGlwYXJ0
Q29udGVudCgpOwpAQCAtMTIxNSw3ICsxMjE1LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNob3Vs
ZFVzZUFjdGl2ZVNlcnZpY2VXb3JrZXJGcm9tUGFyZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWUK
IH0KICNlbmRpZgogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0
YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKCFtX2dvdEZpcnN0Qnl0ZSkg
ewogICAgICAgICBtX2dvdEZpcnN0Qnl0ZSA9IHRydWU7CkBAIC0xMzEzLDI0ICsxMzEzLDI0IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNp
emVfdCBsZW5ndGgpCiAjZW5kaWYKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLT5w
YXJzaW5nKCkpOwotICAgIG1fd3JpdGVyLmFkZERhdGEoYnl0ZXMsIGxlbmd0aCk7CisgICAgbV93
cml0ZXIuYWRkRGF0YShkYXRhKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVT
RUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSk7Ci0gICAgZGF0YVJlY2Vp
dmVkKGRhdGEsIGxlbmd0aCk7CisgICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CiB9CiAKLXZvaWQg
RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBpZiAobV9j
b250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2
ZWQoZGF0YSwgbGVuZ3RoKSkKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRG
aWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgQVNTRVJUKGRhdGEpOwotICAg
IEFTU0VSVChsZW5ndGgpOworICAgIEFTU0VSVChidWZmZXIuZGF0YSgpKTsKKyAgICBBU1NFUlQo
YnVmZmVyLnNpemUoKSk7CiAgICAgQVNTRVJUKCFtX3Jlc3BvbnNlLmlzTnVsbCgpKTsKIAogICAg
IC8vIFRoZXJlIGlzIGEgYnVnIGluIENGTmV0d29yayB3aGVyZSBjYWxsYmFja3MgY2FuIGJlIGRp
c3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRzIGFyZSBkZWZlcnJlZC4KQEAgLTEzNDAsMTIgKzEzNDAs
MTIgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpCiAjZW5kaWYKIAogICAgIGlmIChtX2lkZW50aWZpZXJGb3JMb2FkV2l0
aG91dFJlc291cmNlTG9hZGVyKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRp
c3BhdGNoRGlkUmVjZWl2ZURhdGEodGhpcywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlciwgZGF0YSwgbGVuZ3RoLCAtMSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5v
dGlmaWVyKCkuZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YSh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2Fk
V2l0aG91dFJlc291cmNlTG9hZGVyLCAmYnVmZmVyLCBidWZmZXIuc2l6ZSgpLCAtMSk7CiAKLSAg
ICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5tYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoZGF0YSwg
bGVuZ3RoLCAtMSwgZmFsc2UpOworICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNv
dXJjZURhdGFSZWNlaXZlZChidWZmZXIsIC0xLCBmYWxzZSk7CiAKICAgICBpZiAoIWlzTXVsdGlw
YXJ0UmVwbGFjaW5nTG9hZCgpKQotICAgICAgICBjb21taXRMb2FkKGRhdGEsIGxlbmd0aCk7Cisg
ICAgICAgIGNvbW1pdExvYWQoYnVmZmVyKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0
dXBGb3JSZXBsYWNlKCkKQEAgLTE2MTQsNyArMTYxNCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6
Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291
cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAg
IGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YSgqbV9wYXJzZWRBcmNoaXZlRGF0YSk7CiAgICAg
cmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTIyNTcsOCArMjI1Nyw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJh
bWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsK
LSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJl
c291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKG1haW5S
ZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpAQCAtMjQxMCw5ICsyNDA5LDkgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoU2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb24KIH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLXZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBzaXplKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhy
b3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgZGF0
YVJlY2VpdmVkKGRhdGEsIHNpemUpOworICAgIGRhdGFSZWNlaXZlZChidWZmZXIpOwogfQogCiB2
b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRl
cihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKaW5kZXggYjQ2OTgxZDc1MGIyNWMxZmQzMDdmMTZmZGE3NGI3ZWUzMDZhNGMzOS4u
MjhlMjhhNjg4YWU2YjU3ZTBmMGQxNGM0ZTdhMGMyNTU4Y2I2N2U0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgUHJldmlld0Nv
bnZlcnRlcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwogY2xhc3Mg
VXNlckNvbnRlbnRVUkxQYXR0ZXJuOwpAQCAtMzc3LDcgKzM3OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlc2V0VGltaW5nKCkgeyBtX2xvYWRUaW1pbmcgPSB7IH07IH0KIAogICAgIC8vIFRoZSBX
ZWJLaXQgbGF5ZXIgY2FsbHMgdGhpcyBmdW5jdGlvbiB3aGVuIGl0J3MgcmVhZHkgZm9yIHRoZSBk
YXRhIHRvIGFjdHVhbGx5IGJlIGFkZGVkIHRvIHRoZSBkb2N1bWVudC4KLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0RGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
KTsKIAogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0JiBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpIGNv
bnN0OwogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBhcHBsaWNhdGlvbkNhY2hlSG9zdFVubGVz
c0JlaW5nRGVzdHJveWVkKCkgY29uc3Q7CkBAIC00NzcsNyArNDc4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgY29tbWl0SWZSZWFkeSgpOwogICAgIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3Io
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCB1aW50OF90
KiwgaW50KTsKKyAgICB2b2lkIGNvbW1pdExvYWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAg
dm9pZCBjbGVhck1haW5SZXNvdXJjZUxvYWRlcigpOwogCiAgICAgdm9pZCBzZXR1cEZvclJlcGxh
Y2UoKTsKQEAgLTQ5Myw3ICs0OTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFpblJlY2VpdmVk
RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwcmV2aWV3UmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKQEAgLTUwMywxMyArNTA0LDEzIEBAIHByaXZhdGU6
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgLy8gQ29udGVudEZpbHRlckNs
aWVudAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRG
aWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRC
bG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbE1haW5S
ZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9t
Q29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYp
IGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKIAogICAgIGJvb2wgbWF5YmVMb2FkRW1wdHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAzN2JkMzI5YWI5
MDk0NDk5YTVkNDgxMzk0NDlmYzUzZjJlYTg3MDUzLi5jN2I4MTdiMGIwN2IyYjdlYjhkOTZmOTMy
NTQ4MDFmZWU4ZDBkNzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNDM4LDIwICs0MzgsMjAgQEAgdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnQKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIs
IHJlc3BvbnNlKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAg
ICBkaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5pZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5n
dGgpOworICAgIGRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgYnVmZmVy
KTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBB
U1NFUlQobV9jbGllbnQpOwogCiAgICAgaWYgKG1fZGVsYXlDYWxsYmFja3NGb3JJbnRlZ3JpdHlD
aGVjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRh
dGEsIGRhdGFMZW5ndGgpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOwog
fQogCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZmluaXNoZWRUaW1pbmdGb3JXb3Jr
ZXJMb2FkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VUaW1pbmcmIHJl
c291cmNlVGltaW5nKQpAQCAtNDk0LDIwICs0OTQsMTQgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWYKIAogICAgICAgICBpZiAob3B0aW9ucygpLmZpbHRlcmluZ1BvbGljeSA9PSBSZXNwb25zZUZp
bHRlcmluZ1BvbGljeTo6RGlzYWJsZSkgewogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7Ci0gICAgICAgICAgICBpZiAoYXV0byog
YnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewotICAgICAgICAgICAgICAg
IGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50
LnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlcik7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQocmVzcG9uc2UudHlwZSgpID09IFJlc291cmNlUmVz
cG9uc2U6OlR5cGU6OkRlZmF1bHQpOwogCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKGlkZW50aWZpZXIsIFJlc291cmNlUmVzcG9uc2U6OmZpbHRlcihyZXNwb25zZSwg
bV9vcHRpb25zLmNyZWRlbnRpYWxzID09IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1
ZGUgPyBSZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3JtRXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpObyA6
IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6OlllcykpOwot
ICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVy
KCkpIHsKLSAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBz
ZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShz
ZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJl
c291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRh
KCpidWZmZXIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02NjgsMTEgKzY2Miw4IEBAIHZvaWQg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgfQogICAgIGRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlm
aWVyLCByZXNwb25zZSk7CiAKLSAgICBpZiAoZGF0YSkgewotICAgICAgICBkYXRhLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEo
aWRlbnRpZmllciwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgfSk7
Ci0gICAgfQorICAgIGlmIChkYXRhKQorICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVy
LCAqZGF0YSk7CiAKICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVk
TmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJl
c291cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5p
bml0aWF0b3IsIGxvYWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJp
Y3M6OmVtcHR5TWV0cmljcygpLCByZXNwb25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggZjFm
NDFlZTkxZDZjZThhMWM1ODYyMzgxN2IzNThmNzc0NjUxZTBhNC4uYzg2YmE3ZjQ1MzgzYjZjMjg2
MDAzMmQzYWViZmJhM2UwODYwNzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtODYsMTQgKzg2LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICAgICAgdm9p
ZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICAgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQg
cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2Vy
TG9hZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgb3ZlcnJpZGU7CiAg
ICAgICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNvbnN0IFJlc291cmNlVGlt
aW5nJik7CiAgICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyKTsKICAgICAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1Jl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5jcHAKaW5kZXggYjA0NmVmMGRlMjA0OGVmZDQzMTk3MDI2MjJiOTZhN2RmMmZlYWZhNy4u
NGZmOTM4MTgwZmRkMjhmYzcxNWQwODg4MTYwOGZjNjI4OTQ5MmU5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBEb2N1
bWVudFdyaXRlcjo6cmVwb3J0RGF0YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5yZXNvbHZlU3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVpbGQpOwogfQog
Ci12b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXpl
X3QgbGVuZ3RoKQordm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7CiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSB0byBBU1NFUlQgb25jZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MjcgaGFzIGJlZW4gcmVz
b2x2ZWQuCiAgICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Tm90U3RhcnRlZCk7
CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCB1
aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBBU1NFUlQobV9wYXJzZXIpOwotICAgIG1fcGFyc2VyLT5hcHBlbmRCeXRlcygqdGhpcywgYnl0
ZXMsIGxlbmd0aCk7CisgICAgbV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjppbnNlcnREYXRhU3lu
Y2hyb25vdXNseShjb25zdCBTdHJpbmcmIG1hcmt1cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmgKaW5kZXggMDcxNzJjOTczOWViNTczNWJjODFmOGRlZjJmYjliMjg1YzI1NGQw
Yi4uYzBhMzRhNmI3ZTljZmU5NjQzMDQ1YTk1ZTc5MzIyNTIzNjNiMjY4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudFBhcnNlcjsKIGNsYXNzIEZy
YW1lOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAog
Y2xhc3MgRG9jdW1lbnRXcml0ZXIgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGJlZ2luKCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBVUkwmLCBib29sIGRpc3BhdGNoV2lu
ZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSBudWxs
cHRyKTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5n
dGgpOworICAgIHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGlu
c2VydERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYpOyAvLyBGb3IgYW4gaW50ZXJuYWwg
dXNlIG9ubHkgdG8gcHJldmVudCB0aGUgcGFyc2VyIGZyb20geWllbGRpbmcuCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBlbmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAppbmRleCA3NThjYmU4MDY1NGU4ODg5N2FjZDllZDQxMTk5MGM4Njg2Y2FmM2JhLi5kMjNjOTZi
NmM1MjgwM2ZlYzJlNDU3YjdlYzdkYmM5ZWIzNzk5NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcApAQCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogewogfQogCi12b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1
aW50OF90KiwgaW50KQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2Fk
KERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjI2OTljOWM1
MTgzMmE1YWE4Yzg5YWJhYjJmZmM3ZTA5ODViZmMwMC4uMTE2YTE3ZDFmNWM5ZTY0N2UxZjE0MWEx
MDA4NmIwNzk4MzkzZjNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFt
ZUxvYWRlckNsaWVudC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdp
bGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFjZU11
bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVu
dExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVk
TG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgZmluYWw7CiAKICAgICBSZXNvdXJj
ZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZmRjOTdkYzQ2MmM4NzUy
NmFhMTg4Zjc5NjhkNjBhMGM4M2Q2ODBkOS4uYmI1MjkxYTY3ZmZmZTdhMTE2ZjhjMmNmYmY0ZmFi
OTRmODg0ODI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xNjg3
LDcgKzE2ODcsNyBAQCBib29sIEZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTChV
UkwmIHVybCwgTm9kZSYgaW5pdGlhdG9yTm9kZSkKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllcjsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVlc3RGcm9t
RGVsZWdhdGUocmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwotICAgIG5vdGlmaWVyKCkuc2Vu
ZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRp
ZmllciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygpLCAtMSwgU3RyaW5n
KCkpLCAwLCAtMSwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxl
Z2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3Qs
IFJlc291cmNlUmVzcG9uc2UodXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpKSwgbnVsbHB0ciwg
LTEsIC0xLCBlcnJvcik7CiAKICAgICB1cmwgPSByZXF1ZXN0LnVybCgpOwogCkBAIC0yMDg3LDgg
KzIwODcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAg
ICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKHRpdGxlKTsKIAogICAg
ICAgICAvLyBTZW5kIHJlbWFpbmluZyBub3RpZmljYXRpb25zIGZvciB0aGUgbWFpbiByZXNvdXJj
ZS4KLSAgICAgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2Rv
Y3VtZW50TG9hZGVyLmdldCgpLCBtYWluUmVzb3VyY2VJZGVudGlmaWVyLCBtYWluUmVzb3VyY2VS
ZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCksCi0gICAgICAgICAgICBudWxscHRyLCBzdGF0aWNf
Y2FzdDxpbnQ+KG1fZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKCkpLCAwLCBtYWluUmVzb3VjZUVycm9yKTsKKyAgICAgICAgbm90aWZpZXIoKS5zZW5kUmVt
YWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBtYWluUmVzb3Vy
Y2VJZGVudGlmaWVyLCBtYWluUmVzb3VyY2VSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCksIG51
bGxwdHIsIHN0YXRpY19jYXN0PGludD4obV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5leHBl
Y3RlZENvbnRlbnRMZW5ndGgoKSksIDAsIG1haW5SZXNvdWNlRXJyb3IpOwogCiAgICAgICAgIFZl
Y3RvcjxSZWY8RnJhbWU+PiB0YXJnZXRGcmFtZXM7CiAgICAgICAgIHRhcmdldEZyYW1lcy5hcHBl
bmQobV9mcmFtZSk7CkBAIC0yMTM2LDcgKzIxMzUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21t
aXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGdldCBhIHJl
c291cmNlIHdpdGggbW9yZSB0aGFuIDJCIGJ5dGVzLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJp
Z2h0IHRoaW5nLgogICAgICAgICAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVy
cyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgog
ICAgICAgICAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUu
Ci0gICAgICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1f
ZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNlLCAwLCBz
dGF0aWNfY2FzdDxpbnQ+KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwgZXJy
b3IpOworICAgICAgICAgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdl
cyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwg
bnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50PihyZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgo
KSksIDAsIGVycm9yKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiBXaHkgb25seSB0
aGlzIGZyYW1lIGFuZCBub3QgcGFyZW50IGZyYW1lcz8KQEAgLTMxNjYsNyArMzE2NSw4IEBAIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3Rp
bmF0aW9uKG9wdGlvbnMuZGVzdGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNo
RGVzdGluYXRpb25Jc1NjcmlwdExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRj
aERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpObykpOwogICAgICAgICB9CiAgICAgfQotICAgIG5v
dGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5n
ZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIGRhdGEgPyBkYXRhLT5kYXRhKCkg
OiBudWxscHRyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCwgLTEsIGVycm9yKTsKKworICAgIG5v
dGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5n
ZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIGRhdGEuZ2V0KCksIGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwLCAtMSwgZXJyb3IpOwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQog
CkBAIC0zNjQ3LDcgKzM2NDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZy
b21NZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cgogCiAgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSA9IHJlc291cmNlLnJlc3BvbnNlKCk7CiAgICAgcmVzcG9u
c2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TWVtb3J5Q2FjaGUpOwotICAg
IG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRl
ci5nZXQoKSwgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsIDAsIHJlc291cmNlLmVu
Y29kZWRTaXplKCksIDAsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxl
Z2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVl
c3QsIHJlc3BvbnNlLCBudWxscHRyLCByZXNvdXJjZS5lbmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7
CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmFwcGx5VXNlckFnZW50SWZOZWVkZWQoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCBlZTlmM2QwYzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThkMTIzNjUyLi4zNTJhNGM0
ZmI1MDRmN2NkNGQyZWM0MDZlNmJjMjkxMWE1NWZkMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNyw3ICs3LDcgQEAKICAqIGFyZSBtZXQ6CiAgKgog
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
ICAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCkBAIC01MCw3ICs1MCw3IEBA
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmZGVmIF9fT0JKQ19fIAorI2lmZGVm
IF9fT0JKQ19fCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIHR5cGVkZWYgaWQg
UmVtb3RlQVhPYmplY3RSZWY7CiAjZWxzZQpAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBSZXNvdXJj
ZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsK
IApAQCAtMjE0LDkgKzIxNCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlcGxh
Y2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSA9IDA7
Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKSA9IDA7CiAK
QEAgLTI3Miw3ICsyNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50
KGNvbnN0IFVSTCYpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlQ29u
dGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICAKKwog
ICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFt
ZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hl
ZEZyYW1lKENhY2hlZEZyYW1lKikgPSAwOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0z
ODEsNyArMzgxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIEFsbG93c0NvbnRl
bnRKYXZhU2NyaXB0IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gQWxsb3dzQ29udGVudEphdmFTY3JpcHQ6OlllczsgfQotICAg
IAorCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCkg
eyB9CkBAIC0zOTAsNyArMzkwLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShQREZLSVRfUExVR0lO
KQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VQREZQbHVnaW4oY29uc3QgU3RyaW5nJiwgU3Ry
aW5nVmlldykgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgotICAgIAorCiAgICAgdmly
dHVhbCBib29sIGlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggNWQxMjBlMjQ3YWMyNjI3MTE2MWRlMGRjNTIzMDI0ZGM4ZGUzNGQ2OS4u
MWExN2E3MGZhNThjNzIyOGY2Mzg5MzU5ZGQwZDMzOWQwZTA1Y2QyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcApAQCAtMjMxLDEzICsyMzEsMTMg
QEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1MKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0
aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNv
dXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsK
IAogICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwg
ZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZl
cik7CiB9CiAKIHZvaWQgTWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmZjZjMjg4NzEwMDg4
ZjRiMDU0Y2U0NzYzZDVkYTBkZGM5MmMyMDY1Li43YjU1NzcyMGVmMDUzM2ZiYWEyMjY1NjUzOGVm
ZGQ5NmY2MTc5ZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJy
aWRlOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJl
c291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCos
IGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyLmNwcAppbmRleCA2MDQzYWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkx
NTAzLi41Y2FhZGY2MjljNzBhZTA4NmI3N2JkNzJjZDI4Njc1MzZiOGZhOTdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
QEAgLTE0MSwzMCArMTQxLDE0IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwCiAgICAgfSk7CiB9
CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotICAgIGRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0
YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkK
LXsKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVy
KSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5
bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIFJlZjxOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBpZiAobV9jbGll
bnQpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikgewotICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlRGF0YSh0aGlzLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKHRoaXMsIGRhdGEsIGxlbmd0aCk7Ci0gICAgfQorICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlcik7CiAKLSAgICBS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIFdURk1v
dmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CisgICAgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJp
Y3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5oCmluZGV4IGI1MTc0ZWRjOTRiOTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzguLjFl
YzdkNjFlM2ExNzVjMjJiNTU4NzU4ZDM3ZWQwYzU1YmU1ZjEzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC0zNiwxMiAr
MzYsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVx
dWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBT
aGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgeyB9CiAg
ICAgdmlydHVhbCBib29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CkBAIC02Miw4ICs2Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2sp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVu
c2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAg
LTc0LDggKzc0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1
aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotCiAgICAgdm9pZCBub3RpZnlE
b25lKCk7CiAKICAgICBXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50PiBt
X2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRO
b3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
Y3BwCmluZGV4IDYyYmI1NmUzNGU2ZjQ2ZDI2MjgzNmNmY2E0NjViNGRiMGUzMDgzY2YuLjAxOWQx
NzQ4MWU0NDgyYTA0OGEyNjczNTYwMTg3NDc5N2QzZTg4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtMzksNiArMzksNyBAQAogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaWYgVVNFKFFV
SUNLX0xPT0spCiAjaW5jbHVkZSAiUXVpY2tMb29rLmgiCkBAIC03OCwxMiArNzksMTIgQEAgdm9p
ZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVy
KiBsb2FkZXIsIGNvbnN0IFJlc28KICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2Fk
ZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCByLCBsb2FkZXIpOwog
fQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxv
YWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURh
dGEoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFn
ZSgpKQotICAgICAgICBwYWdlLT5wcm9ncmVzcygpLmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+
aWRlbnRpZmllcigpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNy
ZW1lbnRQcm9ncmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSwgYnVmZmVyLnNpemUoKSk7CiAKLSAg
ICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVy
LT5pZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAg
ICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVy
LT5pZGVudGlmaWVyKCksICZidWZmZXIsIGJ1ZmZlci5zaXplKCksIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmluaXNoTG9hZChSZXNvdXJj
ZUxvYWRlciogbG9hZGVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0
cmljcykKQEAgLTE1MywxMyArMTU0LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRp
c3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlCiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2Zy
YW1lLCBpZGVudGlmaWVyLCBsb2FkZXIsIHIsIHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQg
UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBpbnQgZXhwZWN0ZWREYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgLy8gTm90aWZ5aW5nIHRoZSBGcmFtZUxvYWRlckNsaWVudCBtYXkg
Y2F1c2UgdGhlIGZyYW1lIHRvIGJlIGRlc3Ryb3llZC4KICAgICBSZWY8RnJhbWU+IHByb3RlY3Qo
bV9mcmFtZSk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2Vp
dmVDb250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgZGF0YUxlbmd0aCk7CisgICAgbV9m
cmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxv
YWRlciwgaWRlbnRpZmllciwgZXhwZWN0ZWREYXRhTGVuZ3RoKTsKIAotICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoJm1fZnJhbWUsIGlkZW50aWZpZXIsIGRhdGEs
IGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhKCZtX2ZyYW1lLCBpZGVudGlmaWVyLCBidWZmZXIgPyAqYnVm
ZmVyIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRl
ciogcmVzb3VyY2VMb2FkZXIpCkBAIC0xODAsNyArMTgxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRO
b3RpZmllcjo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBS
ZXNvdXIKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKCZtX2Zy
YW1lLCBsb2FkZXIsIGlkZW50aWZpZXIsIGVycm9yKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRO
b3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2Vu
ZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBpbnQgZXhwZWN0ZWREYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgs
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIC8vIElmIHRoZSByZXF1ZXN0IGlz
IG51bGwsIHdpbGxTZW5kUmVxdWVzdCBjYW5jZWxsZWQgdGhlIGxvYWQuIFdlIHNob3VsZAogICAg
IC8vIG9ubHkgZGlzcGF0Y2ggZGlkRmFpbExvYWRpbmcgaW4gdGhpcyBjYXNlLgpAQCAtMTkzLDgg
KzE5NCw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsCiAgICAgaWYgKCFyZXNwb25zZS5pc051
bGwoKSkKICAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLCBpZGVudGlm
aWVyLCByZXNwb25zZSk7CiAKLSAgICBpZiAoZGF0YUxlbmd0aCA+IDApCi0gICAgICAgIGRpc3Bh
dGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgaWYgKGV4cGVjdGVkRGF0YUxlbmd0aCA+IDApCisgICAg
ICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLCBpZGVudGlmaWVyLCBidWZmZXIsIGV4
cGVjdGVkRGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgaWYgKGVycm9yLmlz
TnVsbCgpKSB7CiAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCmluZGV4IDZkYTE2MDMy
NWY0MmZlZjU0MGM2YmQ1MGJiMTgyZTg2OWRhZGU5ZTMuLmM0ZjViMmViZGQ4MTA4ZTc4YjI4MjVi
OWQ2ZDcxMjhkNzRkNTc0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWROb3RpZmllci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlc291cmNlTG9hZE5vdGlm
aWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXNvdXJjZUxvYWROb3RpZmllcik7CkBA
IC01NSwxOCArNTYsMTggQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVz
b3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxv
YWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlc291cmNlTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
OwogICAgIHZvaWQgZGlkRmFpbFRvTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKIAogICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIq
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9h
ZGVyKiA9IG51bGxwdHIpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVu
dExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaXNwYXRj
aERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBjb25zdCBTaGFyZWRCdWZmZXIqLCBpbnQgZXhwZWN0ZWREYXRhTGVuZ3RoLCBpbnQgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50
TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhE
b2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogCi0gICAgdm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVu
dExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAg
ICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgU2hhcmVkQnVmZmVyKiwgaW50IGV4cGVjdGVkRGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBi
b29sIGlzSW5pdGlhbFJlcXVlc3RJZGVudGlmaWVyKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDZkZWJiMjU4OGEzZTgyYjIxYzYxZDdlOGYzNmU0ZjRiYmJhMjVlNjAuLjY2NDdjMjcw
ODExODBlYmNlYzJiNWNhMjlmZDYwYjcyM2FiNjQ4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmxvYWREYXRhVVJMKCkKIAogICAgICAgICBhdXRvIGRhdGFTaXplID0gZGVjb2RlUmVzdWx0
LT5kYXRhLnNpemUoKTsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBkYXRhUmVzcG9uc2UgPSBS
ZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UodXJsLCBkZWNvZGVSZXN1bHQudmFsdWUo
KSk7Ci0gICAgICAgIHRoaXMtPmRpZFJlY2VpdmVSZXNwb25zZShkYXRhUmVzcG9uc2UsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZGF0YVNpemUsIGRhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRlY29kZVJlc3VsdC0+ZGF0YSkpXSgpIG11
dGFibGUgeworICAgICAgICB0aGlzLT5kaWRSZWNlaXZlUmVzcG9uc2UoZGF0YVJlc3BvbnNlLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRhdGFTaXplLCBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkZWNvZGVSZXN1bHQtPmRhdGEpKV0o
KSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMtPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkgJiYgZGF0
YVNpemUgJiYgbV9yZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiSEVBRCIpCi0gICAgICAgICAgICAg
ICAgdGhpcy0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGRhdGEpLCBkYXRhU2l6ZSwgRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgICAgICAgICB0aGlzLT5kaWRSZWNlaXZlQnVm
ZmVyKGRhdGEsIGRhdGFTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogCiAgICAgICAg
ICAgICBpZiAoIXRoaXMtPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKICAgICAgICAgICAgICAg
ICBOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOwpAQCAtMzI4LDcgKzMyOCw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCiAgICAg
ICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQor
dm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBpZiAo
bV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9O
b3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CkBAIC0zMzYsMTAgKzMzNiw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgsIEZyYWdtCiAgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9h
ZFdob2xlUmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CiAKLSAgICBp
ZiAoYnVmZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoKmJ1ZmZlcik7Ci0gICAg
ZWxzZQotICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBt
X3Jlc291cmNlRGF0YS5hcHBlbmQoYnVmZmVyKTsKIH0KIAogY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0CkBAIC01MzksNyAr
NTM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHIsIENvbXBsZXRpb25IYW4KICAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywgbV9yZXNwb25zZSk7CiB9CiAKLXZv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICAvLyBUaGUgZm9sbG93aW5n
IGFzc2VydGlvbnMgYXJlIG5vdCBxdWl0ZSB2YWxpZCBoZXJlLCBzaW5jZSBhIHN1YmNsYXNzCiAg
ICAgLy8gbWlnaHQgb3ZlcnJpZGUgZGlkUmVjZWl2ZURhdGEgaW4gYSB3YXkgdGhhdCBpbnZhbGlk
YXRlcyB0aGVtLiBUaGlzCkBAIC01NDcsMzAgKzU0NCwyMiBAQCB2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bmcgbAogICAgIC8vIEFTU0VSVChjb24gPT0gY29ubmVjdGlvbik7CiAgICAgLy8gQVNTRVJUKCFt
X3JlYWNoZWRUZXJtaW5hbFN0YXRlKTsKIAotICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0
YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsK
KyAgICBkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxv
YWRUeXBlKQogewotICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92
ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKLX0KLQotdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBh
eWxvYWRUeXBlKQotewotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xl
bmd0aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KLSAgICBBU1NFUlQoIWJ1ZmZlciB8
fCAoIWRhdGEgJiYgIWxlbmd0aCkpOwotCiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVs
ZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAg
Ly8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxl
IG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KICAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYWRkRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgYnVm
ZmVyLmdldCgpLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIGFkZEJ1ZmZlcihidWZmZXIsIGRhdGFQ
YXlsb2FkVHlwZSk7CiAKICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBt
b3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAg
ICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVl
ZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlz
c3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRD
YWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUp
Ci0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIg
PyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxl
bmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRh
KHRoaXMsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWRE
YXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmco
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCkBAIC03MjksMTQg
KzcxOCwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhS
ZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJgogICAgIGRpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVE
YXRhKGRhdGEsIGxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwor
ICAgIGRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
Qnl0ZXMpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291
cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBkaWRSZWNlaXZl
QnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuaAppbmRleCA5MDc1Y2JjMGEzMDQwZWExNTBhODYyNWNkYTA4OTBiMWVlMTM4
YzcyLi4xMDk4ZTRmMjc4ODljZGE3YjNhOWNmZDRkNTQ2YWUyZmQ5YTdjNTZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMTA3LDggKzEwNyw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjayk7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBw
b2xpY3lDb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
IApAQCAtMTY3LDggKzE2Nyw2IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgd2FzQ2FuY2VsbGVk
KCkgY29uc3QgeyByZXR1cm4gbV9jYW5jZWxsYXRpb25TdGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVk
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIAogICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xp
Y3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9vcHRpb25zLnJlZmVycmVyUG9s
aWN5ID0gcmVmZXJyZXJQb2xpY3k7IH0KICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGlj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeTsgfQogCkBAIC0xOTIs
NyArMTkwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpID0gMDsKIAotICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7
CisgICAgdm9pZCBhZGRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIERhdGFQ
YXlsb2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAgIHZvaWQgZmluaXNoTmV0
d29ya0xvYWQoKTsKIApAQCAtMjAyLDggKzIwMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRT
ZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNl
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNv
dXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXIm
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM3ZDBiYjgy
MWFiZDg2YTliNTYwNmUxMjdlZmM5NDEyYTUxYmIxYTkuLjk3MmYyYWYyMjYwM2Y0MjRjZDg3NzVm
NTkxMDEwZTJkNzY5MzhhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcApAQCAtNTE4LDMyICs1MTgsMTUgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlUG9saWN5KCkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
IH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBl
KQogewogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBt
X3ByZXZpZXdMb2FkZXIuZ2V0KCkpIHsKLSAgICAgICAgaWYgKHByZXZpZXdMb2FkZXItPmRpZFJl
Y2VpdmVEYXRhKGRhdGEsIGxlbmd0aCkpCisgICAgICAgIGlmIChwcmV2aWV3TG9hZGVyLT5kaWRS
ZWNlaXZlRGF0YShidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgfQogI2VuZGlmCiAKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0
aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0jaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgaWYg
KGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewotICAgICAgICBp
ZiAocHJldmlld0xvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIuZ2V0KCkpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5
bG9hZFR5cGUpOwotfQotCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewogICAgIEFTU0VSVChtX3Jlc291cmNlKTsK
IAogICAgIGlmIChtX3Jlc291cmNlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAw
ICYmICFtX3Jlc291cmNlLT5zaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpKQpAQCAt
NTU1LDEzICs1MzgsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgIC8vIGFueXRoaW5n
IGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9u
ZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KICAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIuY29weVJlZigpLCBlbmNvZGVkRGF0YUxl
bmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKKyAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogCiAgICAg
aWYgKCFtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAgICAgICAgIG1fcmVzb3VyY2Ut
PnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
bV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRl
eCA4MzJjOWYwZTczZDM4NDY0YTc5NWY0MDM4NjBmNzljMzRlNzNiYzdmLi4zZGJkNTMzOGFmZTQ5
YjQ3ODU3ZDUzNDA5Nzg4NzUyZWFhMWFlZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuaApAQCAtNzMsOCArNzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVu
c2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKQEAgLTkyLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+
IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZWRpcmVjdGlvbkNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7
CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlv
blR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJl
c291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5k
ZXggY2YyZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3NDQxMDc0MmEwZC4uM2QxOTI4NjJmMjc3
MjliMmYzOGRiNTRiZDgzNjc5OTUyNWMwMTlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNl
X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQot
ICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRh
LmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIHsgbV9kYXRhLmFwcGVuZChidWZmZXIpOyB9CiAgICAgdm9pZCBjbGVhcigp
IHsgbV9kYXRhLmVtcHR5KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNl
TG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25z
ZSwgbV9kYXRhLmNvcHkoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlckNsaWVudC5oCmluZGV4IDg0ZDc5YjBjOTlkZjEwZDk5MzgwYjg0ODMxNzM3MWJjMWU4
NTczYmYuLmY5YzZiNWM0YTAyYWYwYmRhMTQyMGIwYWU4ZTU4ZTcxOWQzZmE0YzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaApAQCAtMzcsNiAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNlVGltaW5nOworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC00NCw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEo
dW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRv
dGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQg
LypkYXRhTGVuZ3RoKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoVGltaW5n
KGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCmluZGV4IDQyYWU2NDkwOWE1ZTBm
ZTQ0YzZhNWUwMDYwZDU4Yzk2NGVjNTYwNTEuLmJhYzY2YjQ1Mjg5Mzg4ZDRiNjYwN2JjMDVmMzRl
MDM3Y2EyZDM2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyQ2xpZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgogICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25z
ZSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5ndGgpOworICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGRm
Zjg5NzAxYzkzOWJjNzNjMzcwMzJhZDljNDJhZDIwNjMyNmFkNmUuLjI3MGZmZDQyNWU3NzMyYzll
YmY1NDFkMDhiNTg4YWRiZWY4YmE5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIzMSwxNCArMjMxLDEzIEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlTG9hZGVyCiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKLXZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGRhdGEsIGRhdGFMZW5ndGgpOwotICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFJlZiB7ICptX3dvcmtlckNsaWVudFdy
YXBwZXIgfSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlm
aWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBS
ZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0g
bV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gUmVmIHsgZGF0YSB9XSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dv
cmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKLSAg
ICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdy
YXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiAgICAgICAgIGlmIChpczxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29y
a2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBi
dWZmZXIpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAppbmRleCA3MjNiNDU2ZWM4ZTllMzA2ZmMxOGNj
OGYzNmRlNmRjZDhhZTMwNDcwLi44NzNkOTYxNTE2MzM2MzAwZGE3YTdmYTc0NTVmMGYxNWZhODc0
ODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBBbGwgZXhlY3V0ZWQg
b24gdGhlIG1haW4gdGhyZWFkLgogICAgICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICAgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50IGRhdGFMZW5ndGgpIG92ZXJy
aWRlOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3Vy
Y2VUaW1pbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDUxOTc4ZjQxMjM4NzRkYzU2
NjBlZmY0NzA2NTk3MDdkNGU1ZDg1YTcuLmVkNzU2NjUyNmIyZDdlZmJmMWM1MTcwMjA5NWE4Nzli
YWY1Njk0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrRm9yTWFpbkVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiwgaW50LCBsb25n
IGxvbmcsIGJvb2wpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRh
UmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nLCBib29sKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5oCmluZGV4IGI5NjM1NmU3ODU2MTM4OTU2YWU0YzA1OTgzMTcwY2RmNzIzNjcyYTAuLmQy
YWVhZWMzZTE0YzYzYmNiZjYwMWU5YWFmMDI0YzFmOWVjNDc2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC05
NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1heWJlTG9hZE1haW5SZXNvdXJjZShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIHZvaWQgbWF5YmVMb2Fk
TWFpblJlc291cmNlRm9yUmVkaXJlY3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3Vic3RpdHV0
ZURhdGEmKTsKICAgICBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yTWFpblJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIG1h
aW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIGJvb2wgYWxsQXRPbmNlKTsKKyAgICB2b2lkIG1h
aW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIGJvb2wgYWxsQXRPbmNlKTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGlu
Z01haW5SZXNvdXJjZSgpOwogICAgIHZvaWQgZmFpbGVkTG9hZGluZ01haW5SZXNvdXJjZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IDJiYjNmZTc1Yjk5NzdlODMzMjJhZTI1ODBmNzIx
MmVlNWJmMjE2MTAuLjI1NmU4OWIyMTFiMzhiMmQyMWRjZDY2NTc4MjY5ZTY2MDczNjczMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSwxMCBAQCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVz
cG9uc2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJl
c3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGlmICht
X3BhdGguaXNFbXB0eSgpKQorICAgICAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShy
ZXNwb25zZSgpLCBSZWZQdHIgeyAmZGF0YSgpIH0pOworICAgIGVsc2UKKyAgICAgICAgbG9hZGVy
LmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA3YjJmYjZjOWMyNTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRjNzEyOTI2Li41
NGZlZWQyY2E2NDEyYjQ1MjA5ODcwYzc3MzQzNjA5ZDg1MDliNzc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyLmNwcApAQCAtOTksOSArOTksOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsCiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UgPSBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmNyZWF0ZShtX3Jlc291cmNlLT51cmwoKSwgcmVzcG9uc2UsIG1fdHlwZSk7CiB9CiAK
LXZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291
cmNlLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS0+YXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYg
bmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlci5oCmluZGV4IDAyZDdhZDk3YTI4ZDQ3YzNmYWI1ZTNiYWIwN2ViZTliMDY5ZTIzMmQuLjBi
Mjk2Mjg4ZjMxYTQzMjVkNDg0OWE0NDJlOGFlNjAyYzE3MzE5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lk
IHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDUwNDY1Y2M2YzAxMzNlNWE3NzQ0NWNm
OTQ3MzMzZmUyMDY0MDg2MWQuLmQzNGM4ZmI2NTMyNmE4NzUzYjJhOWI0ZmNmYmM1NzAxYThjOGE0
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAt
NDY4LDcgKzQ2OCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAg
ICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBk
YXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3Zv
aWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5j
b2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwpAQCAtNTU1LDE4ICs1NTUsMTggQEAgRW5jb2RlZERh
dGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZl
ZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpC
dWZmZXJEYXRhKTsKLSAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKLSAgICBDYWNoZWRS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOworICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGJ1
ZmZlci5tYWtlQ29udGlndW91cygpKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVy
KGJ1ZmZlcik7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xp
Y3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwotICAgIHVwZGF0
ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOwotICAg
IENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgdXBkYXRlQnVm
ZmVySW50ZXJuYWwoZGF0YSk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSk7
CiB9CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlODQzMDg3MGI0OGFm
M2RjOTViYmEzY2FkMWE2NGUwNjhhZTE1NTEzLi5hNWRjNjNmMjNkYmQ0MWEyNzBlZTU2YzMyYTQ0
MTc3N2Q2YWRkYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aApAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEp
IGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFT
dGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogCkBAIC0x
NjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1h
Z2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShj
b25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25z
dCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRl
bnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDcxZTE2MDgyZmZlNjU1ZDExMWYxNjk5MGQxMjMwNTM1
YmVhY2JmOTUuLmQzMzYxMTMyMTNmYmViZmY0ZTkxZmY2NWY4M2ZmZTI0ZDNlOGEwYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApA
QCAtNDgsMTIgKzQ4LDEyIEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlz
TWFpbk9yTWVkaWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNo
YXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50
YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxj
dWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0
CiB7CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7Ci0gICAg
aWYgKCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCisgICAgaWYg
KGRhdGEuc2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3Ro
KTsKKyAgICByZXR1cm4gZGF0YS5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQog
CiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAg
ICAgIHByZXZpb3VzRGF0YVNpemUgKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKIAogICAgICAg
ICBTZXRGb3JTY29wZTxib29sPiBub3RpZnlTY29wZShtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5
LCB0cnVlKTsKLSAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRh
bERhdGEuZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpKTsKKyAgICAgICAgbm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkp
OwogICAgIH0KICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAKQEAgLTg5LDEx
ICs4OSwxMSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQor
dm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJp
bmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7Ci0gICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNl
aXZlZChkYXRhLCBsZW5ndGgpOwotICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEs
IGxlbmd0aCk7CisgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChidWZmZXIpOworICAg
IENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpAQCAtMTEwLDkgKzExMCw5IEBA
IHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QKICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAg
IGlmIChkYXRhICE9IG1fZGF0YS5nZXQoKSkKICAgICAgICAgICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOwotICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRh
ID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKCpt
X2RhdGEpKSB7CiAgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsK
LSAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFs
RGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBt
X2RhdGEgPSBudWxscHRyOwpAQCAtMTMwLDE1ICsxMzAsMTUgQEAgdm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdAogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0Rh
dGFXYXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lk
IENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGlmICghbGVuZ3RoKQorICAgIGlmIChidWZmZXIu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBDYWNoZWRSZXNvdXJj
ZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMpOwogICAg
IHdoaWxlIChDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQotICAgICAgICBj
LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGMtPmRhdGFSZWNl
aXZlZCgqdGhpcywgYnVmZmVyKTsKIH0KIAogc3RhdGljIHZvaWQgaXRlcmF0ZVJlZGlyZWN0cyhD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4mJiBoYW5kbGUsIENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50JiBjbGllbnQsIFZlY3RvcjxzdGQ6OnBhaXI8UmVzb3VyY2VSZXF1ZXN0
LCBSZXNvdXJjZVJlc3BvbnNlPj4mJiByZWRpcmVjdHNJblJldmVyc2VPcmRlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBA
IC0xNzAsOSArMTcwLDkgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50JiBjKQogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVu
dCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKG1fZGF0YSkgewot
ICAgICAgICAgICAgICAgIG1fZGF0YS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQp
IHsKKyAgICAgICAgICAgICAgICBtX2RhdGEtPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIo
WyZdKGF1dG8mJiBidWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsaWVudCgq
Y2xpZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0
aGlzLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CiAgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgK
aW5kZXggYTc4NjVmOGFkMTc4YWVmYjMyMjBhNTZkY2ZmMTk1OTkzY2Y5NWFlNC4uMzZlNDdhMWRi
YTIzMTI4ZGM1MzA3M2I3MGI1ZjNmODUzODA0YWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKIGNsYXNzIFJlc291
cmNlVGltaW5nOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZp
ZXc7CiAKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlIGZpbmFsIDogcHVibGljIENhY2hlZFJlc291
cmNlIHsKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFk
ZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2
b2lkIHVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVF
cnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC02Niw4ICs2Nyw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0gICAgc3Rk
OjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRh
Q2h1bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQgbm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0
ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIHZv
aWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAg
ICAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKaW5kZXggMjNlYWI4ZGYy
OTU4ZmY4YjQ5ZjM1NDViNTA4M2ZlMjk4OWVmMTIyMC4uY2Q2NTBhMmYzMTM2Y2U5YjI2MmZiZGZj
ODI5MjhiZjIxMDc5ZmJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAgY2xhc3MgQ2Fj
aGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogY2xhc3MgUmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsK
IHB1YmxpYzoKQEAgLTQ2LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0
aCAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVz
dCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDlkZTBhMDRjZDVlYzVm
M2ZhZDJmYjE2ZDdiMzIyYzg1OGEzOGE2YjIuLjdiOWM2MWY5NjYxNzU0NmI2NmJjYzNjNjNlY2Ew
ZTg1N2UyNjJlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKICAgICBBU1NFUlQoZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQog
Ci12b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikK
IHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oCmluZGV4IGM5ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3
OTY0NzguLjUzNGUwMTJjYzRmYTVkZDJiZTFmZDZlZWU1YWE2YWU0ZTVmYWUyMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTMsNyArMTEz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1
cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRl
eHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9y
KENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDk2ZDg5ODJlOTM1MDM0NzY5NmZjOTY5ZDU4
NWFiNzA3NWRlMDIwZWQuLmNhMDE5MzRkMzFiYTVkNTA5ZmViZTdkMmY5MTIyNDlkMjcxMjZhYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CkBAIC00Nyw4ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB+TGVnYWN5UHJldmlld0xvYWRlcigpOwog
CiAgICAgYm9vbCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOworICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAg
ICAgYm9vbCBkaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCA0
ODc1NmEzM2I1ODcyYjQ0YjJmMGJhMDg0MjQxZjg2Y2ZhZWJjYWEwLi5hMjRiOGM1OWQ0NjBhZmY1
ZTJmZWY4MzE5MGMyMDg2NTcyMzY1ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBSZWY8
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbWFrZUNsaWVudChjb25zdCBSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyLCBjCiAgICAgcmV0dXJuIGVtcHR5Q2xpZW50KCk7CiB9CiAKLWJvb2wgTGVnYWN5
UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0Rh
dGFJbnRvQ29udmVydGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MSw3ICs3MSw3IEBA
IGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3
TG9hZGVyIGFwcGVuZGluZyBidWZmZXIgd2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsK
ICAgICBtX29yaWdpbmFsRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICBtX2NvbnZlcnRlci0+dXBk
YXRlTWFpblJlc291cmNlKCk7Ci0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVy
KTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMTYyLDggKzE2Miw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJl
dmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zCiAgICAg
aWYgKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRv
IGRhdGFDb3B5ID0gZGF0YS5jb3B5KCk7Ci0gICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVC
dWZmZXIoV1RGTW92ZShkYXRhQ29weSksIGRhdGFDb3B5LT5zaXplKCksIERhdGFQYXlsb2FkQnl0
ZXMpOworICAgIHJlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKGRhdGEsIGRhdGEuc2l6
ZSgpLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpw
cmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikKQEAg
LTI0MywxMSArMjQyLDYgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRl
cihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVIKICAgICBMT0coTmV0d29y
aywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgY3JlYXRlZCB3aXRoIHByZXZpZXcgZmlsZSBuYW1lIFwi
JXNcIi4iLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCkudXRmOCgpLmRhdGEoKSk7CiB9
CiAKLWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBkaWRSZWNlaXZlQnVmZmVy
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkuZ2V0KCkpOwotfQotCiBib29sIExl
Z2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikKIHsKICAgICByZXR1cm4gIW1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggNjAyNjMxYmI3Y2QxMDg2MGIxYTMx
MjEwNDNjOTdkOGVmZTQ0NzYxZC4uM2M0OTU3MWU0MTlkZDBhZTllNmI3NjYyZDIxMjlhYjU4YjVl
NzRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAt
MjEwLDEzICsyMTEsMTMgQEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkK
ICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCi12
b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoKQordm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gT1BFTik7CiAgICAgQVNTRVJU
KG1fcmVxdWVzdEluRmxpZ2h0KTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKCFtX2lzU3VzcGVuZGVkRm9yQmFja0ZvcndhcmRDYWNoZSk7CiAKLSAgICBhcHBl
bmQobV9yZWNlaXZlQnVmZmVyLCBtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpKTsKKyAg
ICBhcHBlbmQobV9yZWNlaXZlQnVmZmVyLCBtX2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKSk7CiAgICAgcGFyc2VFdmVudFN0cmVhbSgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmgKaW5kZXggZDAxMmQzNzdkMTk3Njc1ZjBmZTExNDVmMTcxOWYxN2Zk
ZGJmZWEzYi4uNzNmZWU3OTI3MzQyNzViZmFlODc1MGNkMTgwMTBmM2ZhMTFlMjM1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRTb3VyY2UuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gVGhyZWFkYWJsZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2
b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA4NGJjMjg0NWE2NmMxOGQ5NWZiMjZlZTIw
ZDJiZjYwYjMwYmU2Nzk3Li5kMDlmMTA1MmEwZjMxZWU5NzA2MTEwMTNiMzkzNWZiNTMwOTU1MDk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEzOCw3ICsx
MzgsNyBAQCBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEo
KQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBpZiAoaGFzT25lU2Vn
bWVudCgpICYmIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21l
bnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkgJiYgbV9zZWdtZW50c1swXS5zZWdtZW50
LT5oYXNPbmVSZWYoKSkKLSAgICAgICAgY29tYmluZWREYXRhID0gc3RkOjpleGNoYW5nZShzdGQ6
OmdldDxWZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVE
YXRhKSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOworICAgICAgICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4
Y2hhbmdlKHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oY29uc3RfY2FzdDxEYXRhU2VnbWVudCY+
KG1fc2VnbWVudHNbMF0uc2VnbWVudC5nZXQoKSkubV9pbW11dGFibGVEYXRhKSwgVmVjdG9yPHVp
bnQ4X3Q+KCkpOwogICAgIGVsc2UKICAgICAgICAgY29tYmluZWREYXRhID0gY29tYmluZVNlZ21l
bnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwogCkBAIC0yNTAsNiArMjUwLDEzIEBAIHZvaWQg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTcGFuPGNvbnN0CiAgICAgICAgIGFwcGx5KFNwYW4geyBzZWdtZW50LnNlZ21lbnQt
PmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7CiB9CiAKK3ZvaWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihjb25zdCBGdW5jdGlv
bjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYpPiYgYXBwbHkpIGNvbnN0Cit7CisgICAgYXV0byBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfTsKKyAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBt
X3NlZ21lbnRzKQorICAgICAgICBhcHBseShTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZWdtZW50LnNl
Z21lbnQuY29weVJlZigpKSk7Cit9CisKIGJvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c3Rh
cnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiB7CiAgICAg
aWYgKHByZWZpeC5lbXB0eSgpKQpAQCAtNDE1LDcgKzQyMiw3IEBAIFNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKCkKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQogCi1TaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK1NoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJiBzZWdtZW50KQogewogICAgIG1f
c2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1v
dmUoc2VnbWVudCkgfSk7CkBAIC02MDMsNyArNjEwLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJCdWls
ZGVyOjplbnN1cmVCdWZmZXIoKQogICAgICAgICBtX2J1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVy
RGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhp
blNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJiBzZWdtZW50
LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6
ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldp
dGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAq
c2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNjE5
LDcgKzYyNiw3IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhj
b25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYgb3RoZXIsIHNpCiAKIFJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewotICAg
IGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICBjb25zdCBS
ZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CiAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdt
ZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCiAgICAgICAgIFtzaXplID0g
c2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKaW5kZXggMGY2NDQ3NjVmYTg3NWZjYTY4N2JlOTBhNzU3ZDA2MjA5MjRmMzJiOC4uMTc3
NTA2Y2YwNDcwZmUzNWNjOWMyYjRiNmZjZGJmOWI0MmExOTE4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTE3OCwxMiArMTc4LDEzIEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKGNv
bnN0IEZ1bmN0aW9uPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik+JikgY29uc3Q7CiAKICAgICB1
c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3
YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBz
aXplX3QgYmVnaW5Qb3NpdGlvbjsKLSAgICAgICAgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50Owor
ICAgICAgICBjb25zdCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IHNlZ21lbnQ7CiAgICAgfTsKICAg
ICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5
LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25z
dCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KQEAgLTI2MCw3ICsyNjEsMTAgQEAgcHVi
bGljOgogICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCiAgICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoKSk7CiAgICAgICAgIGVsc2UgaWYg
Y29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQotICAgICAgICAgICAgJiYgKHN0ZDo6aXNf
c2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgICYmIChz
dGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJn
cykgPT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PHN0ZDo6cmVtb3ZlX2NvbnN0
X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8QXJncz4+LCBEYXRhU2VnbWVudD4gJiYuLi4pKQog
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CkBAIC0yODcsOCArMjkxLDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBX
RUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXIoY29uc3QgRGF0
YVNlZ21lbnQmIHNlZ21lbnQpCisgICAgICAgIDogU2hhcmVkQnVmZmVyKFJlZjxjb25zdCBEYXRh
U2VnbWVudD4geyBzZWdtZW50IH0pIHsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KTsKQEAgLTM2MCw3ICszNjYsNyBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXcg
ewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxE
YXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0
aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51
bGxvcHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNo
YXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7IH0K
QEAgLTM3MSw3ICszNzcsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29u
c3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPGNvbnN0IERhdGFT
ZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdt
ZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCA4ODY5MWRjMjU2ZDZkZDZjNDVmNDZlMDE1NDk2NzQyNDVhYTM1MzM3Li5jOTU4
Zjg0NGRhYzE0Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhhODEyOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtNTEsOSArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
ZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVz
cG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgotICAgIHZpcnR1YWwgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSB7IFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJv
bENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3Im
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNw
cAppbmRleCBlYzBhN2FjZjQ3MzI2MWM3NGU3ZWVmZmFkYzljY2MzYzNlNTdmMjI4Li43NzA4YTU4
ZDJiNTgwOGI5NDAwMmQyMDVlOThhMjdiYjJjZTZmMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcg
QEAgdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12
b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIFdlYkNvcmVBVkNGUmVzb3Vy
Y2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpCiB7CiAgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
LmgKaW5kZXggY2RmMTQzZjNjM2NkZTk3MWZkNzlkY2Y3MzI4YmZjZDdiMzI2MDJkYy4uNjI2N2Jl
MDBjNTRlZTYxNzAyZmI3N2IyYTVmYjU2N2IyN2ViOWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmdWxmaWxsUmVx
dWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGY5MjFmM2RhMGU2OWIz
Mzk5NzdjOWUzZTQ5NjY3YTI4ZjVlOTVjYmQuLjcyNjQ3MjVjOGU1NjIyZGYzOGI0NWJjZDk5YWM3
ODc1NWI5ZWI4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW0KQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJikgZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAog
ICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKQEAg
LTEzMCw3ICsxMzAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTgogICAgIG1fcGFyZW50Lmxv
YWRGaW5pc2hlZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2
b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKCZyZXNvdXJj
ZSA9PSBtX3Jlc291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJlc291cmNlLnJlc291cmNl
QnVmZmVyKCkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
dW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZv
aWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0Nv
bnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZh
aWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikg
ZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9h
ZEZpbmlzaGVkKCk7IH0KQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsK
IH0KIAotdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fYnVm
ZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIp
OwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0
KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmlu
ZGV4IDkzMDE5MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIuLmI3YjA3ZmYxNDU0
ZDU2MWEzMDIxMDhhZTMyMjkxZThmODM0MzdiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNr
KT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxv
YWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250
aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0Ns
aWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdl
YlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwpAQCAtMTEwNyw3ICsxMTA3
LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmEKICAgICAvLyB0aGF0IGZpcnN0IHBhY2thZ2Ug
ZGVsaXZlcnkgd291bGQgaW5jbHVkZSB0aGUgdGltZSBvZiBzZW5kaW5nIG91dCB0aGUgcmVxdWVz
dCBhbmQgZ2V0dGluZyB0aGUgZGF0YSBiYWNrLiBTaW5jZSB3ZSBjYW4ndCBkaXN0aW5ndWlzaCB0
aGUKICAgICAvLyBzZW5kaW5nIHRpbWUgZnJvbSB0aGUgcmVjZWl2aW5nIHRpbWUsIGl0IGlzIGJl
dHRlciB0byBpZ25vcmUgaXQuCiAgICAgaWYgKCFzdGQ6OmlzbmFuKG1lbWJlcnMtPmRvd25sb2Fk
U3RhcnRUaW1lKSkgewotICAgICAgICBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyArPSBi
dWZmZXItPnNpemUoKTsKKyAgICAgICAgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgKz0g
ZGF0YS5zaXplKCk7CiAgICAgICAgIGRvdWJsZSB0aW1lU2luY2VTdGFydCA9IChXYWxsVGltZTo6
bm93KCkgLSBtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSkuc2Vjb25kcygpOwogICAgICAgICBH
U1RfVFJBQ0VfT0JKRUNUKHNyYywgIlIldTogZG93bmxvYWRlZCAlIiBHX0dVSU5UNjRfRk9STUFU
ICIgYnl0ZXMgaW4gJWYgc2Vjb25kcyA9fiAlMS4wZiBieXRlcy9zZWNvbmQiLCBtX3JlcXVlc3RO
dW1iZXIsIG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzLCB0aW1lU2luY2VTdGFydAogICAg
ICAgICAgICAgLCB0aW1lU2luY2VTdGFydCA/IG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVz
IC8gdGltZVNpbmNlU3RhcnQgOiAwKTsKQEAgLTExMTUsMjAgKzExMTUsMTkgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlZjxGcmEKICAgICAgICAgbWVtYmVycy0+ZG93bmxvYWRTdGFydFRpbWUgPSBXYWxs
VGltZTo6bm93KCk7CiAgICAgfQogCi0gICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0
byYgc2VnbWVudCkgewotICAgICAgICBpbnQgbGVuZ3RoID0gc2VnbWVudC5zaXplKCk7Ci0gICAg
ICAgIEdTVF9MT0dfT0JKRUNUKHNyYywgIlIldTogSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgbV9y
ZXF1ZXN0TnVtYmVyLCBsZW5ndGgpOworICAgIGludCBsZW5ndGggPSBkYXRhLnNpemUoKTsKKyAg
ICBHU1RfTE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVx
dWVzdE51bWJlciwgbGVuZ3RoKTsKIAotICAgICAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0g
bGVuZ3RoOwotICAgICAgICBBU1NFUlQoIW1lbWJlcnMtPmhhdmVTaXplIHx8IG1lbWJlcnMtPnJl
YWRQb3NpdGlvbiA8PSBtZW1iZXJzLT5zaXplKTsKKyAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24g
Kz0gbGVuZ3RoOworICAgIEFTU0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVh
ZFBvc2l0aW9uIDw9IG1lbWJlcnMtPnNpemUpOwogCi0gICAgICAgIGdzdF9lbGVtZW50X3Bvc3Rf
bWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdT
VF9PQkpFQ1RfQ0FTVChzcmMpLAotICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcoIndlYmtp
dC1uZXR3b3JrLXN0YXRpc3RpY3MiLCAicmVhZC1wb3NpdGlvbiIsIEdfVFlQRV9VSU5UNjQsIG1l
bWJlcnMtPnJlYWRQb3NpdGlvbiwgInNpemUiLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5zaXpl
LCBudWxscHRyKSkpOworICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9D
QVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAor
ICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJy
ZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6
ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7CisKKyAgICBjaGVj
a1VwZGF0ZUJsb2Nrc2l6ZShsZW5ndGgpOworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVm
ZmVyTmV3V3JhcHBlZEZhc3QoZmFzdE1lbUR1cChkYXRhLmRhdGEoKSwgbGVuZ3RoKSwgbGVuZ3Ro
KTsKKyAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7
CiAKLSAgICAgICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKLSAgICAgICAgR3N0QnVm
ZmVyKiBidWZmZXIgPSBnc3RCdWZmZXJOZXdXcmFwcGVkRmFzdChmYXN0TWVtRHVwKHNlZ21lbnQu
ZGF0YSgpLCBsZW5ndGgpLCBsZW5ndGgpOwotICAgICAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJl
cnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7Ci0gICAgfSk7CiAgICAgc3RvcExvYWRlcklmTmVl
ZGVkKHNyYywgbWVtYmVycyk7CiAgICAgbWVtYmVycy0+cmVzcG9uc2VDb25kaXRpb24ubm90aWZ5
T25lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IGJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQy
YmU0ZTJiZDExYWE4NDMuLmRjYWM1OTk3YTYxMzVkMmFiNzU5YTdhZDJlYmIwNDM1MmQ1MTRhNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiwxMSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIFJlc291cmNlSGFuZGxlQ2xp
ZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVzb3VyY2VI
YW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgp
Cit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgYnVmZmVyLmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBi
dWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIsIGVuY29kZWRE
YXRhTGVuZ3RoKTsKKyAgICB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGM0ZjA1NDg1ZjI4
NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUuLmU0NDJjOTczNGMxMTk4NDkwYTFjNmNhYzU3
NzI1ZmQ1MTk2YjNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTQ0LDEzICs0NCwxNCBAQCBPQkpDX0NM
QVNTIE5TQ2FjaGVkVVJMUmVzcG9uc2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUHJvdGVjdGlv
blNwYWNlOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9y
YWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY1LDkgKzY2LDkgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWdu
ZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0
ZXNUb0JlU2VudCovKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFM
ZW5ndGgqLykgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgLyplbmNvZGVkRGF0
YUxlbmd0aCovKSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpOworCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3Im
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9u
b3VzTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YzA0MjEwYzVhNTEzYWMzZjU0NzE0NmQ5Zjg1Yzgy
YmQ4ODEzNzc2Li4zMGI0YmIwZmRhZWY3YWUyY2M3NGFjNjA5ZjdiMDA5OTdlNWE2ZGNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9u
b3VzTG9hZGVyQ2xpZW50LmNwcApAQCAtNzEsOSArNzEsOSBAQCB2b2lkIFN5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQordm9pZCBT
eW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKIHsK
LSAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBTeW5jaHJvbm91c0xvYWRlckNs
aWVudDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCmluZGV4IDY4MzhlOWQ4Y2Y0Mzc5NmQy
ZjM5NGJhMWY1NGYwOWQwYjY3ZThhYmQuLmM0Y2I3MmRjN2E2NTVmZDM2OTZhMzMzZmUwNWNkZWQ2
Mjk3NmFmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKIGNsYXNzIFN5bmNocm9ub3Vz
TG9hZGVyTWVzc2FnZVF1ZXVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN5bmNocm9u
b3VzTG9hZGVyTWVzc2FnZVF1ZXVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTeW5jaHJv
bm91c0xvYWRlck1lc3NhZ2VRdWV1ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
eW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZSk7IH0KQEAgLTY2LDcgKzY4LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJj
ZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNp
Z25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCAvKmVu
Y29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJl
c3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IGZjMjcyNTQwODkyYjhlMmNkNzdkZThmNmQ5ZTU0YThj
OGI1OTdmNjEuLjE5ODE0YTM2NWM5ZjY2MWEyMWMyMjlhZGJkMDQ2MTFjMjA5NDdlNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJhbmdl
UmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2
ZWQoV2ViQ29yZU5TVQogCiAgICAgICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdUb0Rl
bGl2ZXIgPSBzdGQ6Om1pbihidWZmZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUluZGV4
ICsgMSk7CiAgICAgICAgICAgICBieXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2
ZXI7Ci0gICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpTaGFy
ZWRCdWZmZXJEYXRhVmlldyhidWZmZXJWaWV3LCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlciku
Y3JlYXRlU2hhcmVkQnVmZmVyKCldOworICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0
ciByZWNlaXZlZERhdGE6U2hhcmVkQnVmZmVyRGF0YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNGcm9t
VGhpc1ZpZXdUb0RlbGl2ZXIpLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKV07
CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsKICAgICAg
ICAgICAgIFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtMb2Fk
TWV0cmljcyB7IH1dOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5n
KTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRh
LT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5h
cHBlbmQoYnVmZmVyKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NX
aXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApp
bmRleCBmOTA5NmVlMmU5ZjI0MmZmMDRkNzA1YzJhYTEwOTNhNTVlNTczNWRiLi5lYTRhOWJmMjk3
ODI5ZWJkMDI5MTQ3NmNiZjhhN2U1NDk0NzIxMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApA
QCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJM
U2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25n
IGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRv
dGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYp
Y29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToo
bnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZl
ZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CistICh2
b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJl
c291cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4mJilkYXRhOwogLSAodm9pZCly
ZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNw
b25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRp
b25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0g
KHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggNWUyZThlOGQ5ZDc2NjcyYTI0
MTRmNzZmNWMwOGYyNTllMDI5ZjUwNC4uM2M4YmUwOGMyOTM0ZTU0ZGEzYjc0OWNhNmRhMzRlZGE5
NmRjOWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91
bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBs
b2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CkBAIC02NTIsMTMgKzY1MiwxMyBAQCBib29sIFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVz
b3VyYwogICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJl
c3BvbnNlOnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tD
bGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2NrZXIg
eyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIAotICAg
IFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpXVEZNb3ZlKGJ1ZmZlcild
OworICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpidWZmZXIuY3Jl
YXRlTlNEYXRhKCldOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVu
dDo6cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC05MzEsMTUgKzkzMSwxNCBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwogICAg
IHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRS
YW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJldGFpblB0cjxOU0RhdGE+JiYpZGF0YQogewogICAg
IEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3Vy
Y2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYg
PSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1
dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAg
ICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgp
OworICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IFtkYXRh
IGxlbmd0aF07CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVn
YXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNz
aW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCi0gICAg
ICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1Nl
bGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdT
ZWxmLmdldCgpIGRpZFJlY2VpdmVEYXRhOm5zRGF0YS5nZXQoKV07CisgICAgICAgICAgICBbZGF0
YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vz
c2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRp
ZFJlY2VpdmVEYXRhOmRhdGEuZ2V0KCldOwogICAgIH1dOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
aW5kZXggZjMyM2FmMjY0MDE2YjY2MzkzMTFhYzIzMjQ2ZWM1ZWQ4MGEzOTU0NS4uM2JkMmNjNzQy
ODZlYzQ2Nzg2NDAyNDhjNWUxY2ZlY2M1YTAyNjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAt
MjQzLDcgKzI0Myw3IEBAIGJvb2wgQ3VybENhY2hlTWFuYWdlcjo6Z2V0Q2FjaGVkUmVzcG9uc2Uo
Y29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFu
ZGxlJiBqb2IsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBDdXJsQ2Fj
aGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsK
QEAgLTI1NSwxMSArMjU1LDExIEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURh
dGEoUmVzb3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCogZGF0YSwKICAgICAgICAgaWYg
KGl0LT52YWx1ZS0+Z2V0Sm9iKCkgIT0gJmpvYikKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBpZiAoIWl0LT52YWx1ZS0+c2F2ZUNhY2hlZERhdGEoZGF0YSwgc2l6ZSkpCisgICAgICAg
IGlmICghaXQtPnZhbHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
KQogICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsKIAogICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9IHNpemU7CisgICAgICAgICAg
ICBtX2N1cnJlbnRTdG9yYWdlU2l6ZSArPSBkYXRhLnNpemUoKTsKICAgICAgICAgICAgIG1fTFJV
RW50cnlMaXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0KHVybCk7CiAgICAgICAgICAgICBtYWtlUm9v
bUZvck5ld0VudHJ5KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCmluZGV4IGM5ZTI5ZDgwOTcw
YzQwNDZlNzk2MTYyYmQ5ODMyOTExYjZkZWU2OGMuLmI2NWI5NjNiNjhlNmE2OGQ5ODE5M2FhZjcz
ZjEwODAzZDk3ZmNkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VS
ZXNwb25zZSYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUm
LCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhh
bmRsZSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7IC8vIFNh
dmUgZGF0YQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSYpOwogICAg
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IDM0OTQ0NTky
NTRhYzkzZmMxOWNiMTIxNTBhNjFiYzJiY2VkMDJkNmUuLmFhZjBjOGQ5NDA3MDU1ZDY4YTA1NWZi
MzUwNzk2N2RlNGMwMDg2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBD
dXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3Qs
IEN1cmxSZXNwb25zZSYmIHIKIH0KIAogCi12b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2Vp
dmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0Jiwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2
ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChtX2xpc3RlbmVyKQotICAgICAgICBtX2xpc3RlbmVyLT5kaWRS
ZWNlaXZlRGF0YU9mTGVuZ3RoKGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9saXN0ZW5lci0+
ZGlkUmVjZWl2ZURhdGFPZkxlbmd0aChidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsRG93
bmxvYWQ6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgTmV0d29ya0xvYWRN
ZXRyaWNzJiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybERvd25sb2FkLmgKaW5kZXggY2RlNDQ0NTc3NWY3NDQyMzMwNTMwYjY1YjEzNTdiYTZiZmQ5
YmI4MS4uYTEyMDc1ODM0OTNmNzgzMzc1NmQzYzQ5ODdjZjVjOTVkZmE5NzljNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaApA
QCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1
cmxEb3dubG9hZExpc3RlbmVyIHsKIHB1YmxpYzoKQEAgLTcyLDcgKzczLDcgQEAgcHJpdmF0ZToK
ICAgICBSZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYp
OwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBs
b25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERpZFJl
Y2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVEYXRhKEN1
cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJs
RGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJy
b3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAKaW5kZXggMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZkN2QyZjI5NmUzYTM0ZC4uZDFlNTg2
MjRhYWVlMmVjZTgxMjlkZDM0ZWE5ODY2MjZlNmNkZjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcApAQCAtMTE5LDEyICsxMTksMTIgQEAgQ3VybE11bHRpcGFydEhhbmRsZTo6Q3VybE11bHRp
cGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnMKIAogfQog
Ci12b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fc3RhdGUg
PT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQg
ZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5h
cHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vz
c0NvbnRlbnQoKSkgeyB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA5YTFhMWJiZDE5Mzhh
MTRmNjlmY2NlZTNmMGY4OWI5N2E0YTIxODc0Li41YzA4YmNjNWViM2U0YmJjYzAyOWI0NzY3ODY4
ZjQzZTJmOTVjMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50OwogY2xh
c3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDdXJsTXVsdGlw
YXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBTdHJpbmcmKTsKICAg
ICB+Q3VybE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKCk7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAppbmRleCBjODEzODg2YThkNWM1ZmE2YzEy
ZDE0MTMzMTkxMDFhZjI1MDJhMmFkLi5kZjc2MzdkZTlkOWZmMmI2YjEwODU1ZDBjNTc3MTI1NTM0
YjJhNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcg
QEAgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5k
bGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJv
bU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChjb25z
dCBTaGFyZWRCdWZmZXImKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhh
bmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYmFjYjJiNTUwYjI4NDEzMWQxYWMyMGFhNjYz
ODg2ZmUyMmZlN2Y5OC4uZDBlZjBlNzExNjJiNTM2M2FkNDI1NDE3ZDg1ZWM3MjM4ZjNmNjJiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNl
aXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBh
bGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogCi1zaXpl
X3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC00MTEsNyArNDExLDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAg
ICAgICAgIHJldHVybiBDVVJMX1dSSVRFRlVOQ19QQVVTRTsKICAgICB9CiAKLSAgICBhdXRvIHJl
Y2VpdmVCeXRlcyA9IGJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gcmVjZWl2ZUJ5dGVzID0gYnVm
ZmVyLnNpemUoKTsKICAgICBtX3RvdGFsUmVjZWl2ZWRTaXplICs9IHJlY2VpdmVCeXRlczsKIAog
ICAgIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGJ1ZmZlcik7CkBAIC00MjAsOCAr
NDIwLDggQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIGlmIChtX211bHRpcGFydEhhbmRsZSkK
ICAgICAgICAgICAgIG1fbXVsdGlwYXJ0SGFuZGxlLT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQp
IG11dGFibGUgewotICAgICAgICAgICAgICAgIGNsaWVudC5jdXJsRGlkUmVjZWl2ZUJ1ZmZlcihy
ZXF1ZXN0LCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgY2FsbENsaWVudChbYnVmZmVy
ID0gUmVmIHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVxdWVzdENsaWVu
dCYgY2xpZW50KSB7CisgICAgICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShy
ZXF1ZXN0LCBidWZmZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00
NDQsMTYgKzQ0NCwxNiBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJvbU11
bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaGVhZGVycykKICAgICBpbnZva2VEaWRSZWNl
aXZlUmVzcG9uc2UocmVzcG9uc2UsIEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JD
YW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWNlaXZlQnl0ZXMgPSBi
dWZmZXItPnNpemUoKTsKKyAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci5zaXplKCk7CiAK
ICAgICBpZiAocmVjZWl2ZUJ5dGVzKSB7Ci0gICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdU
Rk1vdmUoYnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBj
bGllbnQpIG11dGFibGUgewotICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlQnVmZmVy
KHJlcXVlc3QsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9
IFJlZiB7IGJ1ZmZlciB9XShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQm
IGNsaWVudCkgeworICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0
LCBidWZmZXIpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IGE2ZmIzMTU3NjZiYTVj
MmYzZWEzMmI5ZWY1MWViMDAzZThjYjg5ZDAuLjkyYjc0Njk3YmMzMTc1Y2UwY2RhZGYxNTFmYTI1
NDNhMDNlMTE5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5oCkBAIC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICBDVVJM
KiBzZXR1cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0YShjaGFy
Kiwgc2l6ZV90LCBzaXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYm
KTsKLSAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpOworICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5j
ZWxUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3RDbGllbnQuaAppbmRleCAzNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2YWU3
Li43MzAzM2YwZWY0ZWI0ZGYyMWFiNzY0NjNjYzM5ODE5YjI4Njc4NDliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGll
bnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxSZXNw
b25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1j
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJl
cXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZENvbXBsZXRl
KEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENl
cnRpZmljYXRlSW5mbyYmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZS5jcHAKaW5kZXggMzA1ZDRlNWM5ZmMyNzA3NzU3ODdiMGY5YTkxOTc5YzA4ODg5YThhNi4uMzg5
N2UwMWM2ZDA3NjZkYWNmM2UxOWIyMzczMzZmNWI1NWNlNTI2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTYgKzE0MiwxNSBAQCB2b2lkIEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiBy
ZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
OjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxE
aWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoY2FuY2VsbGVkT3JDbGll
bnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0
b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxl
LCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgQ3VybENh
Y2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlcik7
CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBidWZmZXIsIGJ1ZmZl
ci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlk
Q29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCBkYWYwYTU5YTRlNTg2ZDcxMTRhYmI0
ZTVlZjljNTRmNmE4YmVmYzcwLi4wMjRiYzRlOWFlMzFkZjI1YThmOWI3MGNiYTI4MWZhY2VhYzhj
ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtMzgsNiArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291
cmNlSGFuZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUgZmluYWwgOiBw
dWJsaWMgQ3VybFJlcXVlc3RDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3
ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0
JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
Qnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1
cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIGZpbmFsOwotICAgIHZvaWQgY3VybERpZFJlY2Vp
dmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYs
IE5ldHdvcmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVy
cm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
U3RyZWFtLmNwcAppbmRleCBjMDcwNGYwY2RkNjQ0MjM3M2Y3YjcwYmZlNjE1MzliZjViMzdkNjI1
Li4zNjY1OGY5MWRjOWQ2NzIzMGIyMzllNDk3YzAwMDBhYzYyYWFlOTgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCkBAIC05
LDcgKzksNyBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCiAgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDdXJsU3RyZWFtLmgiCiAK
ICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKIAogI2lmIFVTRShDVVJMKQpAQCAt
MTI5LDEwICsxMzAsMTAgQEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUoKQogICAgIGlm
ICghbV9jdXJsSGFuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlY2VpdmVCdWZm
ZXIgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4oa1JlY2VpdmVCdWZmZXJTaXplKTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gcmVjZWl2ZUJ1ZmZlcihrUmVjZWl2ZUJ1ZmZlclNpemUpOwogICAgIHNp
emVfdCBieXRlc1JlY2VpdmVkID0gMDsKIAotICAgIGF1dG8gZXJyb3JDb2RlID0gbV9jdXJsSGFu
ZGxlLT5yZWNlaXZlKHJlY2VpdmVCdWZmZXIuZ2V0KCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0
ZXNSZWNlaXZlZCk7CisgICAgYXV0byBlcnJvckNvZGUgPSBtX2N1cmxIYW5kbGUtPnJlY2VpdmUo
cmVjZWl2ZUJ1ZmZlci5kYXRhKCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNlaXZlZCk7
CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykgewogICAgICAgICBpZiAoZXJyb3JDb2Rl
ICE9IENVUkxFX0FHQUlOKQogICAgICAgICAgICAgbm90aWZ5RmFpbHVyZShlcnJvckNvZGUpOwpA
QCAtMTQzLDggKzE0NCw5IEBAIHZvaWQgQ3VybFN0cmVhbTo6dHJ5VG9SZWNlaXZlKCkKICAgICBp
ZiAoIWJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIGRlc3Ryb3lIYW5kbGUoKTsKIAotICAgIG1fc2No
ZWR1bGVyLmNhbGxDbGllbnRPbk1haW5UaHJlYWQobV9zdHJlYW1JRCwgW3N0cmVhbUlEID0gbV9z
dHJlYW1JRCwgYnVmZmVyID0gV1RGTW92ZShyZWNlaXZlQnVmZmVyKSwgbGVuZ3RoID0gYnl0ZXNS
ZWNlaXZlZF0oQ2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICBjbGllbnQuZGlkUmVj
ZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKTsKKyAgICByZWNlaXZlQnVm
ZmVyLnJlc2l6ZShieXRlc1JlY2VpdmVkKTsKKyAgICBtX3NjaGVkdWxlci5jYWxsQ2xpZW50T25N
YWluVGhyZWFkKG1fc3RyZWFtSUQsIFtzdHJlYW1JRCA9IG1fc3RyZWFtSUQsIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVjZWl2ZUJ1ZmZlcikpXShDbGllbnQmIGNsaWVu
dCkgeworICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlcik7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFN0cmVhbS5oCmluZGV4IDRmNTliMjBlOGRiMjc5MDM5OTRiMzMxNTRjZTY0YjA5OTRmM2Ew
YmEuLmU4YTMyYzI2NDYxYjQzMDhlYTIyN2M2ZGY4Yzk3MjQzOTkwNWQwYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaApAQCAtOSw3
ICs5LDcgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwogICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEN1cmxTdHJlYW1TY2hlZHVsZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTb2NrZXRT
dHJlYW1FcnJvcjsKIAogdXNpbmcgQ3VybFN0cmVhbUlEID0gdWludDE2X3Q7CkBAIC00Niw3ICs0
Nyw3IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVu
KEN1cmxTdHJlYW1JRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoQ3Vy
bFN0cmVhbUlELCBzaXplX3QpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZm
ZXImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwgQ1VS
TGNvZGUpID0gMDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCBiODA0
ZmRlMDk3M2JiZmIyODMzMWNmN2MzYTFmMjBiMDQzZTc0ZmU4Li4zNjZiMDU5YzAyODA0YjE5OWM4
ODZhOWMyYzY3MjczZjkyNGYyZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTU5
LDkgKzU5LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRmb3Jt
U2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgc2VuZFBlbmRp
bmdEYXRhKCk7CiAKKyAgICAvLyBDdXJsU3RyZWFtOjpDbGllbnQKICAgICB2b2lkIGRpZE9wZW4o
Q3VybFN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwg
c2l6ZV90KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29u
c3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJs
U3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChD
dXJsU3RyZWFtSUQsIENVUkxjb2RlKSBmaW5hbDsKIAogICAgIGJvb2wgaXNTdHJlYW1JbnZhbGlk
YXRlZCgpIHsgcmV0dXJuIG1fc3RyZWFtSUQgPT0gaW52YWxpZEN1cmxTdHJlYW1JRDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggNGI5NDkxYzExNTQzZjJiNjBm
MTJkMzZlOWU2YTBjYmFhZTM0YTcyZS4uYThmNTdhNzJkMGVhY2NhNzc1NWJlODRmY2FhMWM5YmYx
MDk1OGMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0zNyw2
ICszNyw3IEBACiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAi
RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQuaCIKICNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCkBAIC0xMDQs
MTIgKzEwNSwxMiBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFNlbmREYXRhKEN1
cmxTdHJlYW1JRCwgc2l6ZV90IGxlbmd0aCkKICAgICBzZW5kUGVuZGluZ0RhdGEoKTsKIH0KIAot
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNvY2tldFN0cmVhbUhh
bmRsZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIGlmIChtX3N0YXRlICE9IE9wZW4pCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLCBsZW5n
dGgpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6
OmRpZEZhaWwoQ3VybFN0cmVhbUlELCBDVVJMY29kZSBlcnJvckNvZGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50LmgKaW5kZXggMWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUzMzlkZmQyYzNiNWRl
YzI1Ny4uMGZlNjVhMjllNjM2MTZkYjQyZjdjOWVhMWQxODUyMjFjMjAwNDBjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5M
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDMxNWUwNjUxNTMwZGNkYjAy
ODAxNjU0Yjc1N2Q4MTQ3M2MyMGZkMzAuLmFlNzE1NWVjZWYzNWQzZTE4ODhkOTE2NTY0NTdlMzgx
MTU5ZGY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTMwMCw3ICszMDAsNyBAQCAtICh2b2lkKWNv
bm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5T
RGF0YSAqKWRhdGEgbAogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NzkzCiAgICAgICAgIC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92
aWRlIGFueSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxk
IHVzZQogICAgICAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0
byBzaG93IHRyYW5zZmVyIHNpemUuCi0gICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVj
ZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0x
KTsKKyAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKICAgICB9OwogCiAgICAgW3Nl
bGYgY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOldURk1vdmUod29yayldOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMDhkMDU3YmJiNWYxN2MyMDQ1YmZmOTA2
ZmY1YWRhODVmMTA0MjkzMC4uZjdmMjY2Y2U4ZDgxOTEwNjBjODU3YTJmOGE2YWQ5ZmRlYmQ4MTgy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC01NDYsOCAr
NTQ2LDggQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgICAgICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUt
PmluaXQoKS4KICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigp
LnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1
bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkg
ZG9jdW1lbnQKLSAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVu
dCkgewotICAgICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigp
LmFkZERhdGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgZGF0YSgp
LT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAg
ICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShi
dWZmZXIpOwogICAgICAgICB9KTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPndyaXRlcigpLmVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggODJhMmE4YzRiMThhY2NlNzk4YjI3YzJjOGQwMDk1
ODlmZjc1Y2JhOC4uNDNjM2EzYjQ2NmVmYzc5ZDBkNWU5MWQyMjUwMGYwMGMzNWRhOGNhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApA
QCAtMTE1LDEyICsxMTUsMTIgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFIKICAgICAgICAgbV9l
cnJvck9jY3VycmVkID0gdHJ1ZTsKIH0KIAotdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChi
dWZmZXIpOwogfQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBkYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5
OGQ5OWI1MTc2YTM5Li5kOGMxODk5NzJmMTgxOTFkODA2OGE1ZjQ1Mjk2MWE0Y2Y0MTU1MDBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAg
LTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzV29ya2VyRm9udExvYWRSZXF1ZXN0
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHAKaW5kZXggMzIzNWRjZWI2MWQ5Y2I4NTYwMmFlYmZjZmM4OWZmZDNhNGU2MDllNy4uOTAwMmI1
ODM4YjJlMmIwZDM5YWFhMGI0M2MyYTZiMjJiOTI5ZDFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQg
V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsCiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2Uo
aWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKK3ZvaWQgV29ya2VyU2Ny
aXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAobV9mYWlsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMiwxMCArMjEyLDEwIEBA
IHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuKQogICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQiX3MsICJVVEYtOCIpOwogICAgIH0KIAotICAgIGlm
ICghbGVuKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOworCisg
ICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBlYWFiZTFlYTVkMTNiMzNmOWMzY2M2
NmRkNDk1NTdlYjY5ZTM3ZWZjLi4xNTk5MjZhOTU5ZjlmODcxZjE4MDNhYTMzYjY2ODg0MzUxOTM1
NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAg
LTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKCkg
Y29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGZiYTM2MzIyYjI5
YTZkNWI3OTdiMzllZGMzYzNkMTcxMjRiM2I1YmMuLmNlMzcwOTY4OWQ5ZjA5MjFlMDkwM2EwMzc3
ZGIyNjhhNTQ1MGIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCmluZGV4IGZmOGRjYTVhMzlhMDE0NTAwN2M1NDVhZTFjOWY0MWU5ZWE5MGQyZGMu
Ljg0NzEwMzEwMzIxMWIyMTA1NTkxZDk3NGZlYmFlOGUwMjU3NGU5NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTAzNCw3ICsxMDM0LDcgQEAgUmVmPFRleHRSZXNv
dXJjZURlY29kZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVEZWNvZGVyKCkgY29uc3QKICAgICBy
ZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7
CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW4pCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9lcnJvcikKICAgICAgICAgcmV0
dXJuOwpAQCAtMTA1MiwxOCArMTA1MiwxOCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgIGlmICh1c2VEZWNvZGVy
ICYmICFtX2RlY29kZXIpCiAgICAgICAgIG1fZGVjb2RlciA9IGNyZWF0ZURlY29kZXIoKTsKIAot
ICAgIGlmICghbGVuKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAodXNlRGVjb2RlcikKLSAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5k
KG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOworICAgICAgICBtX3Jlc3BvbnNlQnVpbGRl
ci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkp
OwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChkYXRhLCBsZW4pOworICAgICAgICBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlci5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICBpZiAoIW1fZXJy
b3IpIHsKLSAgICAgICAgbV9yZWNlaXZlZExlbmd0aCArPSBsZW47CisgICAgICAgIG1fcmVjZWl2
ZWRMZW5ndGggKz0gYnVmZmVyLnNpemUoKTsKIAogICAgICAgICBpZiAocmVhZHlTdGF0ZSgpICE9
IExPQURJTkcpCiAgICAgICAgICAgICBjaGFuZ2VTdGF0ZShMT0FESU5HKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMmQxM2JlYzM5NDY0NDhiOWI0ZjkyNWQzMmJkODZiYTJk
ODAzNzc1YS4uZWQ2ZjM2MDkxYmZjMjU5OGNjYzAxNDNmNzE4ZDRjMmIxZWRlM2NhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTE2Miw3ICsxNjIsNyBAQCBwcml2YXRlOgog
ICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmll
cikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKICAgICB2b2lkIG5vdGlmeUlzRG9uZShib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAppbmRl
eCA2MTdmNDc2ODk1NjQyZGVjMjMyNTRiNTQwZWU4MTkxMWFjNGEyZGY2Li43ZjUxMmM2YzExYThl
NzEwOGNmMDA2MmI1ODRkMjdiNTg5MDhkMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3Bv
bnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKQEAgLTk2LDEwICs5NywxMCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRh
dGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZQogICAg
ICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVT
ZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6
ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAobV9jbGll
bnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUoZGF0YSkp
OworICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhKTsKIH0KIAogdm9p
ZCBSZW1vdGVNZWRpYVJlc291cmNlOjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAppbmRleCA1YjdhN2UyYTc0MjQ0MzJkODZjYjI4YTFi
ZTcxNzE4YTE2NzM3NWU3Li45NTEwNmY2NzIyNzNiNDVmMGEyNGE0N2ExYTJiZGQxNDA5ZTBmNDM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTcsNyArNTgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNob3Vs
ZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKTsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7
CiAgICAgdm9pZCBkYXRhU2VudCh1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lk
IGRhdGFSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGFj
Y2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAg
ICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2
b2lkIGxvYWRGaW5pc2hlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGlu
Z0Rvd25sb2FkLmgKaW5kZXggNzFmZDAyMjI5YmJiMWM1NzMyNmZkZmNmZTI2YzExZjc2MWFiY2Y3
Mi4uMDU0Yjg5M2UxMTExMGRjZjlhNzAwMjUyZjRmNzk1YjAxYTU4N2I5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNr
VXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fz
a1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk1
ODYwOTFlYTAwNDFiNmYxNTg2OWQ0MmJiZGE3MjQzMjk3NjkwZWMuLmJhOGQwNDhmNjVkYzMzOTg0
ZjBjZDQ3NjM1YWI5MTAxODc5YmQzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEy
MCw3ICsxMjAsNyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJgogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXI6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKQordm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQ09SU19DSEVDS0VSX1JFTEVBU0Vf
TE9HKCJkaWRSZWNlaXZlRGF0YSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggNTA1YTRl
ZmU1NzFkNDg5ZTUwYTk4OGJlYjgxODViN2ZlYWIzZGIxMC4uMGNiMzE1ZmQ4ZmY1MzE5OTE1N2Rl
NzhmODQ1MmQ3MWM0ZjVlMjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC0zNyw2ICszNyw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVn
b3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBO
ZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwg
dWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Js
b2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oCmluZGV4IDRiOWVlNTc0YjkyYzdjMzcxN2E0YmMyODE5YTZiZTNhMTkwNjU3MTUu
LmY0NzllMDkwMmIyMTc5Mjk1NWQzNzY4MTRiMjFjODlmZjU1ZGI1ODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApAQCAtNDMsNyArNDMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBl
cmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2Nr
ZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3Bw
CmluZGV4IDhjMTA0ZDgxNjBiN2FhZmQwOTk3MTVkYTZkNGU2ZjdjNDYzN2ZhMDguLjYwYjY5YTkz
NmJiNzhkZjI1MTA3NDljNzU0ZmU2YWEyMjkzZmUwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNTQsMTEgKzI1NCwxMCBAQCB2b2lkIE5l
dHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBOZWdvdGlhdAogICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZShX
VEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
dGhlIGVuY29kZWQgZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVjb2RlZCBkYXRhIGxlbmd0aC4KLSAg
ICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsKLSAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNl
aXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgc2l6ZSk7CisgICAgbV9jbGllbnQuZ2V0KCkuZGlk
UmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIE5ldHdvcmtM
b2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKaW5kZXggZTZhNzYxMTU5NjJi
OTY1OWU3YmZlNzhjNmY0ZGM2ZjUzMTJiM2NiZS4uMGU0YzFhZTQ5MjNjMzM3ZjVjZjliMGE0MDhi
NWE4ODIyOWY1OTY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwg
TmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2Vu
dCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdh
c0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRDbGllbnQuaAppbmRleCAzNDhjZmZiOWU4ZTI1ZWU4M2JiYjM5YTAyY2QzY2Y2ZDI4
NTRkMzllLi44YTI4NTgyNjExM2Y5ZDhlZTY2MGRiNjg4YjNjNTM5M2ZmOTdiMmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAzNmFjYzYzMTQ1ZjQwNWIxOTU1ZDMz
NTQwZGFhNzA4ZjlhNjI5MzQxLi5lNmZkMmFjNzBlYzdlMGU3NTkwYWRlMjcyZTE0MjdmY2U5NmRk
ZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NjMsMjkgKzg2MywyOSBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c2VuZERpZFJlY2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2lu
Z0NvbnRleAogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0ZXNS
ZWNlaXZlZCkKLSAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlQnVmZmVyOiBT
dGFydGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwotICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZm
ZXItPnNpemUoKTsKKyAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTog
U3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gYnVm
ZmVyLnNpemUoKTsKIAogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAK
ICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1l
bW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBl
bnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1
ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKLSAgICAgICAgaWYgKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1
ZmZlci5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiAgICAgaWYgKGlzQ3Jv
c3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IEF0IGxl
YXN0IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNvdXJjZSBo
YW5kbGUuCi0gICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5zaXpl
KCk7CisgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLnNpemUoKTsK
IAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBl
bmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZlcik7
CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERhdGFM
ZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgICAgICBy
ZXR1cm47CkBAIC0xMjczLDcgKzEyNzMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0
aCA9IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQordm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJU
KCFpc1N5bmNocm9ub3VzKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBjZjEwY2YwZTcxYTFiYzY1NTQwZTg3
ZDZiYTRjMWI5Yzg1NmMwYTFkLi44MTdhZWYyNmM4MzZjMzRhN2Q0NGVlN2NjOTVlZGQ5YTI5OGQ2
YTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Fs
bG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNB
bGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlk
QmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGZpbmFsOwpAQCAtMTkzLDcgKzE5Myw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAg
IHZvaWQgYnVmZmVyaW5nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc2VuZEJ1ZmZlcihXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAg
ICB2b2lkIHNlbmRCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2b2lkIGNvbnN1bWVTYW5kYm94RXh0
ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IGJjMmMzMzdlNGVlZTAx
YWY4M2UxMzY3MjMxN2E5YTllYWJjN2M2ZjguLmYwZWZkMDRiYjJlMThmNmYzY2JjMTYzZmFmMjNk
YTA0NjZiZWU1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
CkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVQKICAgICBkaWRGaW5p
c2goeyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBQSU5HX1JFTEVBU0VfTE9HKCJkaWRSZWNl
aXZlRGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IGU3ODA4ZDhlNjU1ODJmNzkzODg4MjhkNTE3NThjYjE5
M2NmNTVmYzcuLmIyMjVjNDdiOTRhZmEwYjQ0ZWRjMjY3MGRmYzU4YWQ3YWZjOTE0MWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAg
IHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IDE3ZDQ3
OTA3YTNmNmVlNTJiZTY1MDFkMWRhYjBjYTYwNzUxZDZiMGIuLmFhYWUyYmZiZGY4M2EzOWFjZWMw
NjNmZWIyNDQ2MTZkYzg0OGVkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJlY29ubmVjdFRh
c2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3Bv
bnNlQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQog
Ci12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUHJlY29u
bmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5o
CmluZGV4IDg1ODA4ZTEyMWI2OGNhOGI3M2UyNTE4ZDE5M2FiMzk1ODFlYWQxZTcuLjhjNmIwZGVl
ZDY2YzUxMDE5YmU4OTg0ZWQ1Yjg3ZTBjMWQ3OTBmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgd2lsbFNl
bmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2su
Y3BwCmluZGV4IDI1ZDRlMzdmOTQ1NGJlZTMyZjA0ZDhjYzhjNDcxZDVkM2Y3ZWQ4MmIuLjhjOGRj
MzZiMWU1MzkzOGY4MWViNGFiYWFmZjAxOTBmMmI1NGVkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRU
YXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAi
V2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgpAQCAt
MTczLDcgKzE3NCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6c3RhcnQoKQog
ICAgIGRvd25sb2FkUHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX3BlbmRpbmdEb3dubG9hZExv
Y2F0aW9uKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFM
ZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxv
YWRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckRvd25sb2FkVGFzay5oCmluZGV4IGFiNTllYWU1MjY2NTMwNjIxMmEyOGU5MzIz
YTJiOGI0ZmZlMGM3OGYuLmI4OWFiM2ViZDc2MmY2ODEyYTVlOTdiZmY2OTBiYTkwZjAyNTdmY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaApAQCAtMzcsNiAr
MzcsNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xh
c3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Niw3ICs2
Nyw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckRvd25sb2FkVGFzayhOZXR3b3JrU2Vz
c2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIERvd25sb2FkSUQpOwogCiAgICAgLy8gSVBDIE1lc3Nh
Z2UKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGlu
dDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
dm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwog
ICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRU
YXNrLm1lc3NhZ2VzLmluCmluZGV4IDFkM2JmYjdjYzMxMDk3OTljYzgwMDFiYmE3MWQ4OWMwZjZm
MmQ5MmYuLjUwZDJiNDJhNzFiMGVkYWI3OWZiY2U5ZGRiOWYxOTk4MmRiNTM1OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmlu
CkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2sgTm90UmVmQ291bnRlZCB7CiAgICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBk
YXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZFJlY2VpdmVEYXRhKElQQzo6
U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERp
ZFJlY2VpdmVGb3JtRGF0YShJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgRGlkRmlu
aXNoKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA0
ZTc5MTliM2RkYzAyYWUxNGQwZWQ5Njg0YjhjNjhiYjZmMjhhNDM0Li40Zjc4YjlkZjU0ZTVlNjc3
ODc4NDEzNWEyN2EwM2RiYzYyOWJmZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2suY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
QEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnByb2Nlc3NS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvb2wgbgogICAgICAgICBtX2xv
YWRlci5zZXRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiB9CiAKLXZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGlu
dDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1faXNEb25lKQogICAgICAgICBy
ZXR1cm47CkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjps
b2FkQm9keUZyb21QcmVsb2FkZXIoKQogICAgICAgICAgICAgZGlkRmluaXNoV2l0aE1ldHJpY3Mo
bV9wcmVsb2FkZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBkaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UgeyBj
aHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpIH0sIGxlbmd0aCk7CisgICAgICAgIGRpZFJlY2Vp
dmVEYXRhKFJlZiB7IGNvbnN0X2Nhc3Q8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciY+
KCpjaHVuaykgfSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmgKaW5kZXggYzM0NTgwMjY3ZmIzMjY5ZTZkY2JkY2VmYzM0ZDA2ODJjNmEw
ODg2Yy4uNTIyNWU1NDU5OTk1MWQ4ZjgxYzcwYWY4MmViYmEyNjg5ZTM1MDA2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFj
ZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0
YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTkzLDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFNob3VsZFNl
dFNvdXJjZSA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3RS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgYm9vbCBuZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQg
ZGlkRmluaXNoV2l0aE1ldHJpY3MoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmlu
CmluZGV4IDE4ZTYyOWYwZDE0NmVkMmQ0MjlkYjFiYTI4NzAxZTgzZmI5NmU2MmYuLjdkYjUzZTli
ZDAzODA0NTQ3M2EyNWFmMzdkNDdjMTk1Nzk1ZTIzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3IEBAIG1l
c3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgTm90UmVmQ291bnRlZCB7CiAgICAgRGlk
RmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZFJlY2VpdmVSZWRpcmVj
dFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAgRGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2ZURhdGEo
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFM
ZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGlu
dDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2goKQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggZTRkOWFj
ZGRiNGI2OGYzYTg5NmI5NTkxYTE2MGRlYzI3Y2Y1NWU0Zi4uOWVjMzk0MWM2Y2VmNGE4OTg2YzQy
ZjlmMTU2NjRlYjhjZTYyMTk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2
b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxs
YmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
OworICAgICAgICBtX2JvZHlDYWxsYmFjayhSZWZQdHIgeyAmYnVmZmVyIH0sIHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuaAppbmRleCA2N2FiYzU1YzYwZmYyNGUzOWRkMDRlY2M1MDIxYjYwNWVlOGJlYmIx
Li41Zjg4YWMyYWE4ZGY5NjI4ZDRjNTlkZGQwOTRmMGNlZTFkMjFhN2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtMzYsNiAr
MzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxs
YmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47
CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8Y29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
cjsgfQpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tV
c2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZv
aWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmNwcAppbmRleCA3YTI2MjIxOWRlNzhiMjM1ZDEyNWE5MmI2ZTIzNmQzMzI2
MmY3YTI3Li4zOTg5MzcwYWEzNTY0OGYzYzQ0MDllMzkwODEwZjdkMzM4MDM5OWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE3
Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9yIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
Ojpwcm9jZXNzUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwbwogICAgIHJldHVybiB7IH07CiB9
CiAKLXZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGVjb2Rlcikgewog
ICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCkBAIC0xODYsOCArMTg2
LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgICAgICBtX2RlY29kZXIgPSBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvamF2YXNjcmlwdCJfcywgIlVURi04Iik7
CiAgICAgfQogCi0gICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBt
X3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHNpemUpKTsKKyAgICBidWZmZXIuZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNl
Z21lbnQpIHsKKyAgICAgICAgaWYgKHNlZ21lbnQuc2l6ZSgpKQorICAgICAgICAgICAgbV9zY3Jp
cHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUo
KSkpOworICAgIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDQ0ZmMw
Njg1ZmEwZmVkYzg3NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEuLjdlODE4ZjM0MTNkYTI5Zjg2MWUx
MDAzOTkxZThkNTM4OTIzNDZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAKaW5kZXggNDFkODIzNTAyNDc0N2I2ZmM0YTNhYzU0OGUxMzM0ZWQ2Y2I1
ZWY3YS4uODE0ZWIzMjBkNGU3NDhhMjlhZTA5MTM1YWZjMWRhNWYzNzUxNWVmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBT
cGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVj
ZWl2ZWRSZXNwb25zZSwgUmUKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVz
ZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIAogICAgIGlmIChtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBj
YXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hl
QnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNp
emUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0
KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXIu
c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmgKaW5kZXggMWI4NDNkYjdlYzI3MGRiOWRhYjllOGEyNWYyYTQ4YThlY2FlMmE4
YS4uOWFkY2E2MDVlNzI4MGJiN2IzNGNlNzQ0ZDg3ODhiYmI0NDg5MjRlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLmgKaW5kZXggNDE2NjhhNWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVj
YTkwN2VkYy4uMDc3MmFmMWE4NmQyMjQxN2JmMTFmMTZiZDZiN2I1ODBmZTU3YTdhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TTXV0YWJsZVVSTFJl
cXVlc3Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYyLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFVSTCYp
OwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExl
Z2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9p
ZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYp
OwogICAgIHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNDc3MWZkZTkyMGQ2Yjk4ZTgzZmMyOWRkM2FhZjk3
YTBhNmQ5YTg4MC4uNjQ5YjVjYTc4YzY4NzVlY2RlMGQzZDQzNmY5NTkwZGI1MTc5ZDBiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tCkBAIC00NDMsMTIgKzQ0MywxMiBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5l
dHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2
b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwg
IkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7CisgICAgV1RG
RW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRl
cyIsIGRhdGEuc2l6ZSgpKTsKIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSkpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0
ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggODQ2
NjllMjA5ZDc3YmY1MmEzNmFmZTJhN2RhYjI1MmE2OTAwZGNmNy4uMTNmY2M3YmQ0OGE1NWEwOTM5
MTI5MjZiYTQ0ODRjZjVlMzU1MTMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxwYWwvdGV4dC9UZXh0RW5jb2Rpbmcu
aD4KQEAgLTE3MiwxMyArMTczLDEzIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERp
ZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvCiAgICAgaW52
b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6
Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZl
RGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIFJl
ZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2Fu
Y2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFp
c0Rvd25sb2FkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVm
ZmVyKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkQ29tcGxldGUoQ3Vy
bFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuaAppbmRleCA0NWJlNWNlMTg0MzI1MjcxZDVjMDgwZGQzNGYxZWU0YTE2NjQyYTFmLi5l
NTU4NjRhOTVmN2JjYmMwODVjNDY2MjhiZmYwNTg1NzM1NzMyODZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgK
QEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3VybFJlcXVl
c3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjgs
NyArNjksNyBAQCBwcml2YXRlOgogICAgIFJlZjxXZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRl
Q3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBS
ZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJD
b3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25n
KSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNl
aXZlRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKFdlYkNvcmU6OkN1cmxSZXF1
ZXN0JiwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y3VybERpZEZhaWxXaXRoRXJyb3IoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiYsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYmKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDE3ZjA4
YzI4ZWExMjViNTUwOTkzZWVkMjRkNTk2M2I4NTEwYTExNDEuLjU3YjE0NmU1OGU3YTlkYTcwMjZj
OWRlZTUyMDM5NTUxYWRhYjcxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIu
aD4KIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRl
eCA5Y2RlZDk2OTM1MTVjYmRiOTI1ZjU5NTRhMTZmNGJhZjA2N2EzMTYyLi42YzE5YmM5YmFiNjQx
MDMzMzAwNzNiNDFjNWFlMWQ4ZWQwMWMzYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRl
ci5jcHAKQEAgLTE4NSw5ICsxODUsOSBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJz
ZVRyYWNrcyhTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgogICAgIEFT
U0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3BhcnNlVHJh
Y2tzTG9jayB9OwotICAgIEFTU0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1cyk7Ci0gICAgQVNTRVJU
KG1fZHVyYXRpb24uaXNJbnZhbGlkKCkpOwotICAgIEFTU0VSVChtX3RyYWNrUmVhZGVycy5pc0Vt
cHR5KCkpOworICAgIEFTU0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1cyB8fCAobV9pbml0ICYmIGVy
cm9yQ29kZSkpOworICAgIEFTU0VSVChtX2R1cmF0aW9uLmlzSW52YWxpZCgpIHx8IChtX2luaXQg
JiYgZXJyb3JDb2RlKSk7CisgICAgQVNTRVJUKG1fdHJhY2tSZWFkZXJzLmlzRW1wdHkoKSB8fCAo
bV9pbml0ICYmIGVycm9yQ29kZSkpOwogCiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJ
REVOVElGSUVSKTsKICAgICBpZiAoZXJyb3JDb2RlKQpAQCAtMjIxLDYgKzIyMSw3IEBAIHZvaWQg
TWVkaWFGb3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQ6OkluaXRpYWxpemF0aW9uCiAgICAgfQogCiAgICAgbV9wYXJzZVRyYWNrc0NvbmRpdGlvbi5u
b3RpZnlBbGwoKTsKKyAgICBtX2luaXQgPSB0cnVlOwogfQogCiB2b2lkIE1lZGlhRm9ybWF0UmVh
ZGVyOjpkaWRQcm92aWRlTWVkaWFEYXRhKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwg
dWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVy
LmgKaW5kZXggMzdlNGFkNDI3NmIxMmFkNTE0M2RjMjI4Y2RlOTQ3NjM4N2U1Yzg4OC4uNjUwOTNl
OWU0NmI0MGI1YTM5NzZmZGVmMjllNjEzYzY0NTFmMzE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0
UmVhZGVyLmgKQEAgLTg3LDYgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmPE1lZGlh
VHJhY2tSZWFkZXI+PiBtX3RyYWNrUmVhZGVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fcGFyc2VU
cmFja3NMb2NrKTsKICAgICBSZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25z
dCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisgICAgYm9vbCBtX2luaXQgeyBmYWxzZSB9OwogfTsK
IAogY29uc3RleHByIE1lZGlhRm9ybWF0UmVhZGVyOjpXcmFwcGVyQ2xhc3MgTWVkaWFGb3JtYXRS
ZWFkZXI6OndyYXBwZXJDbGFzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwCmluZGV4IGUxMjY0Y2UyMWJhNTdmMmE0Mjc0OGUzM2ExZGFkODhhMGUyNThi
YzIuLmQ3NjdmYzA2YjM2ZjE1NmZmMzFjMzgzZTY0M2Q0MzQ0YzIxN2FhYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0xNjgsNyArMTY4LDcg
QEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9u
ZTsKIH0KIAotYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKK2F1dG8gV2ViVVJM
U2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIC0+
IEV4Y2VwdGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0x
ODcsMTEgKzE4NywxMSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRQogICAgIG1fZGF0YVNlbnQg
PSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIG1fc3luY0RhdGEuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKGJ1ZmZlcik7CiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1f
dXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGJ1ZmZl
ci5nZXQoKSksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlk
ZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIpLCBtX3dlYlBhZ2VJRCk7CiAg
ICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBmNmZmNDZlZWE1ZjI5MGI3YjdlM2ZlNTkyMWRm
OWYxOTRiYWNkMTE3Li5jMzIzMDY5YjFjYzAzMWYwMjViMjJjODU5YTM1NDE4OGZkZDIzNzI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC04Myw3ICs4
Myw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
IEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNl
cHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhj
ZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlUHJveHkuY3BwCmluZGV4IGI1MTNhMjY4MDhlYWExOGUzN2Y0ZmRmMDRhMjNkMjk2MGIy
NzNiMmMuLjkyMzRiNWM2NTNmOTFlYmE5MTBmYmRmOWJlMWUyMmEwMmMxMWM2NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKQEAgLTcyLDIwICs3MiwxNyBAQCB2b2lkIFJlbW90ZU1l
ZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgdW5zaWduZQogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXI6OkRhdGFTZW50KG1faWQsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVT
ZW50KSwgMCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2
ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFs
bG9jYXRlKGxlbmd0aCk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNv
cHlCdWZmZXIoYnVmZmVyKTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byBzaGFyZWRNZW1vcnlQdHIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc2hhcmVk
TWVtb3J5LT5kYXRhKCkpOwotICAgIG1lbWNweShzaGFyZWRNZW1vcnlQdHIsIGRhdGEsIGxlbmd0
aCk7Ci0KICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgc2hhcmVkTWVtb3J5
LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5
KTsKICAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFuZCBtYXJrIGl0IGFz
IG1lZGlhLXJlbGF0ZWQgbWVtb3J5LgogICAgIGhhbmRsZS50YWtlT3duZXJzaGlwT2ZNZW1vcnko
TWVtb3J5TGVkZ2VyOjpNZWRpYSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVu
Z3RoKSB9KSwgMCk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXIuc2l6ZSgpIH0pLCAwKTsKIH0KIAogdm9pZCBS
ZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCmluZGV4IDQ3ZWE4NjY3MWIxM2QxMzk1YzNk
YWQ5YmRhNzlhYmY2MTZjYmExNzkuLjk0OTQ2NDUyMmMyNjNlNmE1ZTgwNzNmNzRlOWQyNDM0YmFh
OTM5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwogICAgIHZvaWQgZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsOwotICAgIHZv
aWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVp
bnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwog
ICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lk
IGxvYWRGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGQ3MWFlNWUwYTlhZjNkOWVlM2E1MWQ4ZmNmNTBm
ZTUzNTliMzkwYjcuLjc0OTE5MGQxOWIwZmExY2UwYjUxMWU4NDIwNzI1NjAwNjkxMTg2MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291
cmNlTG9hZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAgLTIwMCwxNiArMjAxLDE1IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgYm9vCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2Us
IFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2Vzcykg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZvciAnJXMnIiwg
ZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgp
KTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25z
ZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxp
ZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250
cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpOwotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9h
ZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
YnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsK
KyAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRp
ZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRh
dGEuYnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAg
ICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0
aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjE4LDcgKzIxOCw4
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JF
TEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSIpOwogICAg
IG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIAotICAgIG1fY29yZUxvYWRlci0+
ZGlkUmVjZWl2ZURhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpID8g
UmVmIHsgKmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9j
b3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVz
b3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpA
QCAtMzA2LDcgKzMwNyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNv
dXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5ldHdv
cmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBm
b3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsK
ICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiIp
OwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50
cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxl
UmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7CkBAIC0zMjMsNyArMzI0
LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNo
YXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQKIAogICAgIC8vIE9ubHkgc2VuZCBkYXRhIHRv
IHRoZSBkaWRSZWNlaXZlRGF0YSBjYWxsYmFjayBpZiBpdCBleGlzdHMuCiAgICAgaWYgKHVuc2ln
bmVkIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9jb3JlTG9hZGVyLT5k
aWRSZWNlaXZlQnVmZmVyKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRh
UGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVE
YXRhKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRhUGF5bG9hZFdob2xl
UmVzb3VyY2UpOwogCiAgICAgaWYgKCFtX2NvcmVMb2FkZXIpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IGEyMmU2MmYyOGI1ZmE0Y2ZjOTFhYTVlNWNlODJjYTI3YWUyNmFkNTMuLmFjNTQy
MmZjMDY3MTBiZDBlMDg3ZTBmNDQwOWVkOTQwMTdjMGNmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiAr
MzksNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xh
c3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODAsNyAr
ODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBi
eXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRh
dGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3Vy
Y2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlk
RmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9p
ZCBkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgppbmRleCAwMmExNGY1OWEzMDQ3NDRjMmQxODNl
YTc5ZTk5ZWJhZWI0Y2ZiYmEyLi5kYWEyNGQyN2M3MWE4M2NmN2MwZjE2OGRhMjZhNDliNDg3Njky
NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQCBtZXNz
YWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgV2lsbFNlbmRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVz
cG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3Rh
bEJ5dGVzVG9CZVNlbnQpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1l
c3NhZ2UpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAg
RGlkRmluaXNoUmVzb3VyY2VMb2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3Jr
TG9hZE1ldHJpY3MpCiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGVycm9yKQogICAgIERpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oCmluZGV4IDhkMmM1ZjNlMjVjYTFhMjM3OGU1ZTMwMDVkNzU0OTJiZWFmMGIx
ZWEuLjJiN2U0ZDJjMjBmZGQxOTk4ODI3MmRhOGJmY2M1YTYxODZjNmQzZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTY1LDYg
KzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNz
IEVsZW1lbnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAog
bmFtZXNwYWNlIFdURiB7CkBAIC0xNzYsMTEgKzE3NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiBy
ZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0
cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGlu
dCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90
IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0
cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7CisgICAgdm9p
ZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVp
bnQ2NF90IHN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qg
c3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVh
bURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJl
YW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgbWFudWFs
U3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7
CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9p
ZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICBib29s
IGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIGZpbmFsOwpAQCAtMzYyLDcg
KzM2Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFs
OwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsK
LSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRmFpbChXZWJDb3Jl
OjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGU1ZmEwNzEwOWE5MzE4NDUz
OWZiMWUyNDcwYTNmOTM4NmQ0MzE1NTguLmZhNmNlNmY2OWZjMDJmNzAxZjg4NTEzODg0NzVkZWYz
ZjI0MzE0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQpAQCAtOTQsNiArOTQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxB
bmltYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2hlZWxFdmVudFRlc3RNb25pdG9yLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nn
L0NvcmVHcmFwaGljc1NQSS5oPgpAQCAtMTE5MSw3ICsxMTkyLDcgQEAgdm9pZCBQREZQbHVnaW46
OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBl
UGx1Z0luU3QKICAgICB9CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2Fk
ZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBjb3VudCkKK3ZvaWQgUERGUGx1Z2luOjpQREZQ
bHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAo
IW1fcGRmUGx1Z2luKQogICAgICAgICByZXR1cm47CkBAIC0xMjAwLDcgKzEyMDEsNyBAQCB2b2lk
IFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShO
ZXRzY2FwZVBsdWdJblN0cmVhbQogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLCBjb3VudCk7CisgICAgcmVxdWVzdC0+YWRkRGF0
YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6UERGUGx1
Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
KiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQpAQCAtMTcxOCwxNSArMTcxOSwxNSBAQCB2
b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBVUkwmLCB1aW50MzJfdAogICAgICAgICBtX2lzUG9zdFNjcmlwdCA9IHRydWU7CiB9
CiAKLXZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1J
RCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6c3Ry
ZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtSUQsIHN0cmVhbUlEID09IHBkZkRv
Y3VtZW50UmVxdWVzdElEKTsKIAogICAgIGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCi0gICAgQ0ZEYXRhQXBwZW5kQnl0
ZXMobV9kYXRhLmdldCgpLCBieXRlcywgbGVuZ3RoKTsKLSAgICBtX3N0cmVhbWVkQnl0ZXMgKz0g
bGVuZ3RoOworICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1ZmZlci5zaXplKCk7
CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0
cmVhbUlEKQpAQCAtMTc2MywxNCArMTc2NCwxNCBAQCB2b2lkIFBERlBsdWdpbjo6ZW5zdXJlRGF0
YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAgICAgIENGRGF0YUluY3Jl
YXNlTGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVudExlbmd0aCk7CiB9
CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0
YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsK
IAotICAgIGVuc3VyZURhdGFCdWZmZXJMZW5ndGgobV9zdHJlYW1lZEJ5dGVzICsgbGVuZ3RoKTsK
LSAgICBtZW1jcHkoQ0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdldCgpKSArIG1fc3Ry
ZWFtZWRCeXRlcywgYnl0ZXMsIGxlbmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0
aDsKKyAgICBlbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyArIGJ1ZmZlci5z
aXplKCkpOworICAgIG1lbWNweShDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihtX2RhdGEuZ2V0KCkp
ICsgbV9zdHJlYW1lZEJ5dGVzLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBt
X3N0cmVhbWVkQnl0ZXMgKz0gYnVmZmVyLnNpemUoKTsKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxf
UERGX0FQSVMpCiAgICAgLy8gS2VlcCBvdXIgcmFuZ2VzLWxvb2t1cC10YWJsZSBjb21wYWN0IGJ5
IGNvbnRpbnVvdXNseSB1cGRhdGluZyBpdHMgZmlyc3QgcmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggMWQ4NDQ4MDVmNGMxMGU5M2ZlZGNhYmRlZWMy
MWRkMzVkZGY4ODIwMi4uZTRkNjJmNGJlYTliZmMyZmE4MGVmNGQ2ZTkwYzVjY2YwNjc5NGY2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTU0LDEyICs1
NCwxMyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmxv
YXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7
CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC0xNjAsNyArMTYxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGRpZCBy
ZWNlaXZlIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWct
aW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgPSAwOwpAQCAtMTczLDcg
KzE3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFt
ZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVh
bSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhh
cyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5p
c2hMb2FkaW5nKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAppbmRleCA1MzRkYTUyZDQ3ZDYyODUwZTIwNWZmOWU5OWMzMGIzN2QzYmNi
YTEyLi4wMzQ0ZjRiZTIzYTQzNzY3MTk3Nzg5OTk3ZDc2MzdhMjAzMWI3ZWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI3LDcg
KzEyNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1Mb2FkZXJDbGll
bnQKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcios
IFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
Kikgb3ZlcnJpZGU7CiAKQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVh
bTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
UgogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSht
X3N0cmVhbUlELCByZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMo
cmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUo
KSk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQor
dm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9wbHVnaW5W
aWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnl0ZXMsIGxl
bmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEo
bV9zdHJlYW1JRCwgYnVmZmVyKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZEZh
aWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikgCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIG1fcGx1
Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxl
bmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJl
c3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3Zv
aWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQg
ZmFpbGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX3BsdWdpbikKQEAgLTM4MiwxMSArMzgy
LDExIEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsK
ICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6
Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5k
KGJ5dGVzLCBsZW5ndGgpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ1ZmZl
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFt
RGlkUmVjZWl2ZURhdGEoYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVh
bURpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9h
ZERpZEZpbmlzaExvYWRpbmcoKQpAQCAtMTE3MSw5ICsxMTcxLDkgQEAgdm9pZCBQbHVnaW5WaWV3
OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAg
ICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51
YWxTdHJlYW1EYXRhLnRha2UoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
YnVmZmVyLmdldCgpKQotICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1l
bnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7CisgICAgICAgIG1f
bWFudWFsU3RyZWFtRGF0YS50YWtlKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZd
KGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShi
dWZmZXIpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0
ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggZjY2MzEyYTgwYWNkMWUwMzUzMTBkZmFh
M2E1ZjNhMTdiNzJhYWU1NS4uMjU2MTVjYjMwZjIyNjQ2MzkyNDQ0ODhmMmJkN2M0MTIyNzkwNzli
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApA
QCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVkKCkgY29u
c3QgeyByZXR1cm4gIW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCk7IH0K
IAogICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgbWFudWFsTG9hZERpZFJl
Y2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWFudWFs
TG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGYWlsKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcAppbmRleCBlZTQwZmI5NTg1ZTc5ZDg2YjNjZmQyZjU3OWVkNDZlNjFiOWVjNjNl
Li4zMTQ4MmViM2IzNjhkNzhhNjFhN2VjMWQyNGM1OTgxMGJjOTFlZDhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQog
Ci12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTgwLDE0
ICs4MCwxNCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgIGlmIChtX3dhaXRpbmdGb3JD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKICAgICAgICAgaWYgKCFzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKICAg
ICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOwotICAgICAg
ICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1f
cmVzcG9uc2VEYXRhKS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIuZ2V0
KCksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRp
Zmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0
X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZl
ci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBi
dWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRS
ZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1EYXRhKQpAQCAtMTM2
LDE1ICsxMzYsMTUgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRS
ZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV9pc0Rvd25sb2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBkYXRhLCBzaXplIH0s
IHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNr
OjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNp
emUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0
YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNo
SWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIgLCBzdGF0aWNfY2FzdDxp
bnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNoQmxvYkxvYWRpbmcoKQpA
QCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAg
ICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVy
QnVpbGRlciYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkp
OworICAgICAgICBkaWRSZWNlaXZlRGF0YShidWZmZXIuY29weSgpLT5tYWtlQ29udGlndW91cygp
KTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAg
ICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggZTk4N2UxOWFjOGI3Mzg4NzFhYWQ4MmI0YjM4NTYyOTY4
YTJiNmM5Yy4uMDk0MDBkZjBjZTcyNWYzOWE4YjExZDkzNWUxNDU0ZTM5OWY1YTI2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4m
JikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtNjAsOCArNjAsOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgY29udmVydEZldGNoVG9Eb3dubG9hZCgpIGZpbmFsOwogCiAgICAg
dm9pZCBjbGVhbnVwKCk7Ci0gICAgCi0gICAgdm9pZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1bmso
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRGaW5pc2hCbG9iTG9h
ZGluZygpOwogCiAgICAgc3RydWN0IEJsb2JMb2FkZXIgZmluYWwgOiBXZWJDb3JlOjpGZXRjaExv
YWRlckNsaWVudCB7CkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgLy8gRmV0
Y2hMb2FkZXJDbGllbnQgQVBJCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IH0KLSAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBjbGll
bnQtPmRpZFJlY2VpdmVCbG9iQ2h1bmsoZGF0YSwgc2l6ZSk7IH0KKyAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpIGZpbmFsIHsgY2xp
ZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBjbGllbnQtPmRpZEZh
aWwoZXJyb3IpOyB9CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsgY2xpZW50LT5k
aWRGaW5pc2hCbG9iTG9hZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDE0YTA4M2NhMjA3YTkwNjNjZjgwYjFlN2U5NjcwYTQ4N2NmNGQzOTkuLmVkNGY1ZGU5
ZDVlNTYxOGQ0MzI0NTUwODJmNWRhMTg4YWJmOWJmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMTE1MiwxMCArMTE1MiwxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgd2ViUGFnZS0+ZGlkUmVwbGFj
ZU11bHRpcGFydENvbnRlbnQobV9mcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExv
YWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewog
ICAgIGlmICghbV9wbHVnaW5WaWV3KQotICAgICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwg
bGVuZ3RoKTsKKyAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEpOwogCiAgICAgLy8gSWYg
dGhlIGRvY3VtZW50IGlzIGEgc3RhbmQtYWxvbmUgbWVkaWEgZG9jdW1lbnQsIG5vdyBpcyB0aGUg
cmlnaHQgdGltZSB0byBjYW5jZWwgdGhlIFdlYktpdCBsb2FkLgogICAgIC8vIEZJWE1FOiBUaGlz
IGNvZGUgc2hvdWxkIGJlIHNoYXJlZCBhY3Jvc3MgYWxsIHBvcnRzLiA8aHR0cDovL3dlYmtpdC5v
cmcvYi80ODc2Mj4uCkBAIC0xMTc3LDcgKzExNzcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3Qq
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5W
aWV3ID0gdHJ1ZTsKICAgICB9Ci0gICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX3BsdWdpblZpZXctPm1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YShkYXRhKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRM
b2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CmluZGV4IGJiNTI5ZDNhZWM0ZTJjNzVmMWE3ZGU5MWIxMGI1NTgyZDQ1MjJiNDIuLjFkMzBiYzM5
MzgzYWZmZjJjYTljMjg3NTNkZDJkN2VjMmIyNjQ5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNl
TXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENv
bnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVk
TG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKikgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCBhMjA1ZTAw
MWNhNzE1ODIwOTEzYTgxYWU0YTgzNjUzMGY5YTBmNjQ4Li43MmUzNTU0YzhlMGFhNjkwYTZlYzU3
ODAxNzZmMTllMGI4ZDcwZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJl
dmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKIAogV2Vi
UHJldmlld0xvYWRlckNsaWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7
CiAKLXZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1
dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwog
ICAgIGlmICghd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgK
aW5kZXggMGRjMTY3ZTViN2JjM2IwM2VmMzkzMWVhYjM1NmM3ODI3OTI5NTI5ZS4uNjQ5YmM4MzE5
YzI3ODZmMDFkNjE3YzExMTk5ZGIwYzZjMDc3ZmE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
U3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDk0MmVkYzYyM2E0ZTY1M2JiMTg4YWVlMDUwNjQ0
YTNmNGEwMzJlODkuLmY4OWZmNzJhMGQzMWJlYzExZWY4MDI5N2VmYmE5MmMyYTdiYzY2YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03MDU3
LDEyICs3MDU3LDEyIEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNw
b25zZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kCiAgICAgaGFuZGxlci0+dGFz
a0RpZFJlY2VpdmVSZXNwb25zZSh0YXNrSWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lk
IFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVy
SWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2
b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5k
bGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRh
dGEpCiB7CiAgICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxl
clByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhhbmRsZXIpOwog
Ci0gICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLnNp
emUoKSwgZGF0YS5kYXRhKCkpOworICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNr
SWRlbnRpZmllciwgZGF0YS5idWZmZXIoKSA/ICpkYXRhLmJ1ZmZlcigpIDogU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZENv
bXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IGE5NGI1YjlkN2ZlMzJmMjRhODZkYWFhZDQ0ODQyYjBjZGQwYWViMmYuLjQ4
ODY2NzA3YzQ2MTNkOWE3Y2QzNTIxNWRmY2E5MjNjNjk3OWJlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE4NCw2ICsxODQsNyBAQCBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURh
dGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xODk2LDcgKzE4OTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXJsU2NoZW1l
VGFza1dpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZv
aWQgdXJsU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJVUkxTY2hlbWVIYW5kbGVy
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMU2No
ZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0
YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZv
aWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2Vp
dmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRs
ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc2V0SXNU
YWtpbmdTbmFwc2hvdHNGb3JBcHBsaWNhdGlvblN1c3BlbnNpb24oYm9vbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRl
eCBiMjcyMjk0NzFlYWU4NmVlNTk4MTk4M2RkNTdiNWU3YTgyOTFjZDRiLi5iZGE1ZjUwYWRkMjNh
OTY3NDBlODlkNzMzZDc5YzE4N2YwNTJiZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTU2NCw3ICs1NjQsNyBA
QCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFVSTFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJl
ZGlyZWN0aW9uKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkgLT4gKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBhY3R1
YWxSZXF1ZXN0KSBBc3luYwogICAgIFVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24o
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcHJv
cG9zZWRSZXF1ZXN0KQogICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0
OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlKQotICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShX
ZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZl
RGF0YShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKQogICAgIFVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShX
ZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgZXJyb3IpCiAKICAgICBTZXRJc1N1c3BlbmRlZChib29sIHN1c3BlbmRl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNj
aGVtZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCmluZGV4IDZkOGQwY2YyNzg0ZWQzMDU2NjI1Yzdm
NmU4NDZhOTNhNzExY2JhY2QuLjYxNmVkYTA4ZjBiOGZjYWIyZDU3ZmM0NzUzMjkxMDdiODE1Y2Qy
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNj
aGVtZUhhbmRsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcApAQCAtOTYsMTMgKzk2LDEzIEBAIHZvaWQg
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlCiAgICAgdGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNl
KTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0
YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIHNpemVf
dCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHk6OnRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
dGFza0lkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvKiB0
YXNrID0gbV90YXNrcy5nZXQodGFza0lkZW50aWZpZXIpOwogICAgIGlmICghdGFzaykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgdGFzay0+ZGlkUmVjZWl2ZURhdGEoc2l6ZSwgZGF0YSk7CisgICAg
dGFzay0+ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxl
clByb3h5Ojp0YXNrRGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxl
clByb3h5LmgKaW5kZXggNThiZWNjMTdiNWQ4NTk4NzQ5ODg0ZDMwMjUxNjg5Y2NjYzE3NjkzZi4u
YWIyMGJkNTczYWE0YWZjMTU4MDU5MGYyNzA0NjYzMDA2ODc3NDBlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxl
clByb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJl
c291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
OSw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGFza0RpZFBlcmZvcm1SZWRpcmVjdGlv
bihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIHRhc2tEaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCB0YXNrRGlkUmVjZWl2ZURhdGEoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEpOworICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB0YXNr
RGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCB0YXNrRGlkU3RvcExvYWRpbmcoV2ViVVJM
U2NoZW1lVGFza1Byb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCmluZGV4IDM2MDZiYmRjNjUy
MTVkZGNhOTI2MTNhODEwN2RhYjFiMTFlY2I2NTYuLjllNzJkODRjOTdkZjZkMjk3MTRhODNjNTFh
YzE3NzYzZTVmYjY1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcApAQCAtMTQwLDIxICsxNDAsMjEg
QEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJVUkxTY2hl
bWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBk
YXRhKQordm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIWhhc0xvYWRlcigpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29tcGxldGlvbkhhbmRsZXIpIHsK
ICAgICAgICAgV0VCVVJMU0NIRU1FVEFTS1BST1hZX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0
YTogUmVjZWl2ZWQgZGF0YSBkdXJpbmcgcmVzcG9uc2UgcHJvY2Vzc2luZywgcXVldWluZyBpdC4i
KTsKLSAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgZGF0YVZlY3RvciA9IFZlY3RvciB7IGRhdGEsIHNpemUgfV0gewotICAgICAgICAgICAgZGlk
UmVjZWl2ZURhdGEoZGF0YVZlY3Rvci5zaXplKCksIGRhdGFWZWN0b3IuZGF0YSgpKTsKKyAgICAg
ICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YSA9
IFJlZiB7IGRhdGEgfV0geworICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiAgICAg
ICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUmVmIHByb3RlY3RlZFRoaXMg
eyAqdGhpcyB9OwotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgc2l6ZSwg
MCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2FkZXIt
PmRpZFJlY2VpdmVEYXRhKGRhdGEsIDAsIERhdGFQYXlsb2FkVHlwZTo6RGF0YVBheWxvYWRCeXRl
cyk7CiAgICAgcHJvY2Vzc05leHRQZW5kaW5nVGFzaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCmlu
ZGV4IDc1NTA4Nzk0MTgyMGZlZWZjNWQwMTI3MTU4YzA2NGNlMjU4YTA4MzUuLmVkOTFmMzhlM2Fk
ZDEzYmUxOWNiMjE3N2VkNDQ4ZmRkMmZhNzk1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCkBAIC0zNCw2
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxl
dGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGlu
Z0hhbmRsZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxl
LmgKaW5kZXggYTI1NTYwYTEwYzI4ODJlMWFiZDE3ODQ1Njk0ODZlYTEzZWQ4OTZkNC4uMzI4OWMy
MzYyOWEwZGMzMWZjMGMxOTllZGYxMzI5N2JlZDYxYTE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2Uu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGltZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIApAQCAtNzMsNyAr
NzQsNyBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBw
aW5nTG9hZENvbXBsZXRlKHsgfSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQorICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7
IH0KICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKGVycm9y
KTsgfQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqKSBmaW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5NTlkNzQ4YjU2YmUxMDc2YmQ5Nzc5OTIy
Y2QzNTZkMjFhNjgxNzRlLi44ZGY5OTNmMmQ3NzViNmM5M2QyZThmMDk5MGY3MmY4NWY2MThlNThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTQ4LDEwICs0OCwxMiBAQCBjbGFzcyBT
ZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTsKIGNsYXNzIENhY2hlZEZyYW1lOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3Vy
Y2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9
CiAKIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+IHsK
QEAgLTE1MSw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBh
cnRDb250ZW50KCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVu
dCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2Fk
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
ZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbDsKICAgICB2b2lk
IHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCmluZGV4IDQzZTYzZjQ1NjM0NWVjZjFjOTI0ZTViNzcyYTZmNTQxNzNhOTE0
MmIuLjg3YTVkNjU3ZjdiNzMzZDA3YzVkYjYwMWY2OTgxZjkwNDk3NzEzOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC05OTIsMTAgKzk5Miw5IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkKICNlbmRpZgogfQogCi12b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBhdXRvIG5z
RGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQq
KWRhdGEgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICBbZGF0YVNvdXJjZShs
b2FkZXIpIF9yZWNlaXZlZERhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBbZGF0YVNvdXJjZShsb2Fk
ZXIpIF9yZWNlaXZlZERhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAKIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExv
YWRlciogbG9hZGVyKQpAQCAtMjAxMiw3ICsyMDExLDcgQEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3
TG8KICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRoOwogICAgICAgICBSZXRh
aW5QdHI8TlNGaWxlSGFuZGxlPiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
b3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBk
YXRhQXJyYXkgPSBidWZmZXIuY3JlYXRlTlNEYXRhQXJyYXkoKTsKICAgICAgICAgICAgIGZvciAo
TlNEYXRhICpkYXRhIGluIGRhdGFBcnJheS5nZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDBlMDViMThkNjk2Mzk4MjhkNDMzYzQ2ZDc5MjFj
ZjcwZGU3ZGY5ZDEuLjJhODc3MGRmODBiYjlmNzBjMTBiYjkxZjk1MjBkMWUxOWM4NTlkOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtOTc3LDcg
Kzk3Nyw3IEBAIC0gKHZvaWQpX2NvbW1pdERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICBhdXRvKiBk
b2N1bWVudCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCk7CiAgICAgZG9jdW1lbnQt
PnNldFNob3VsZENyZWF0ZVJlbmRlcmVycyhfcHJpdmF0ZS0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJz
KTsKIAotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkt
PmNvbW1pdERhdGEoKGNvbnN0IHVpbnQ4X3QqKVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSk7
CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+Y29t
bWl0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSk7CiB9CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBmYjI1ODNmZTk3MjY0YzczZWViMjNl
YmI0ZDM5OTBiM2I4NGEwN2YzLi4xMjcwZTU3ZGQ5NWIwZDAwMDNiNWU1Njc3ZDQ3NDJhMTI1NTJk
ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC02NDEsOSArNjQxLDkgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIq
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAg
IGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOworICAgIGxvYWRlci0+Y29tbWl0RGF0
YShkYXRhKTsKIAogICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0YW5kLWFsb25lIG1lZGlh
IGRvY3VtZW50LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2VsIHRoZSBXZWJLaXQgbG9h
ZC4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIGFsbCBw
b3J0cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKaW5kZXggMDk1YjI1MzVhNjg3NTQ3YmQ3ODg0NmY5MDc2YWU2YzdkMDE2Mjk0OC4uNzkyNmZk
MzY3MTgwOWU4Mzg0N2E0ODAzMWE4YjkwYzYzOGZhZjdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydERvd25s
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkTmFtZSA9IFN0cmluZygpKSBvdmVycmlkZTsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5n
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdpbGxDaGFu
Z2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>