<?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>234037</bug_id>
          
          <creation_ts>2021-12-08 14:47:29 -0800</creation_ts>
          <short_desc>Refactoring: Make MediaPlayerEnums and HTMLMediaElementEnums namespaces rather than classes</short_desc>
          <delta_ts>2021-12-15 14:48:17 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1821787</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-08 14:47:29 -0800</bug_when>
    <thetext>Refactoring: Make MediaPlayerEnums and HTMLMediaElementEnums namespaces rather than classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821792</commentid>
    <comment_count>1</comment_count>
      <attachid>446428</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-08 14:55:01 -0800</bug_when>
    <thetext>Created attachment 446428
[fast-cq] Follow-up patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821800</commentid>
    <comment_count>2</comment_count>
      <attachid>446434</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-08 15:01:35 -0800</bug_when>
    <thetext>Created attachment 446434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821810</commentid>
    <comment_count>3</comment_count>
      <attachid>446434</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-12-08 15:33:10 -0800</bug_when>
    <thetext>Comment on attachment 446434
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:1323
&gt; -        m_networkState = NETWORK_LOADING;
&gt; +        m_networkState = NetworkState::Idle;

This seems wrong.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:1460
&gt; -    m_networkState = NETWORK_LOADING;
&gt; +    m_networkState = NetworkState::Idle;

Ditto

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2320
&gt; -        if (m_networkState &lt; NETWORK_LOADING || m_networkState == NETWORK_NO_SOURCE)
&gt; +        if (m_networkState &lt; NetworkState::Idle || m_networkState == NetworkState::NoSource)

Ditto.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2322
&gt; -        m_networkState = NETWORK_LOADING;
&gt; +        m_networkState = NetworkState::Idle;

Ditto.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2918
&gt; -    if (m_networkState != NETWORK_LOADING)
&gt; +    if (m_networkState != NetworkState::Idle)

Ditto

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3928
&gt; -    return !paused() &amp;&amp; m_networkState == NETWORK_LOADING &amp;&amp; m_readyState &lt;= HAVE_CURRENT_DATA;
&gt; +    return !paused() &amp;&amp; m_networkState == NetworkState::Idle &amp;&amp; m_readyState &lt;= ReadyState::HaveCurrentData;

Ditto

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3943
&gt; -    return !paused() &amp;&amp; m_networkState == NETWORK_LOADING &amp;&amp; m_readyState &lt;= HAVE_CURRENT_DATA &amp;&amp; m_sentStalledEvent;
&gt; +    return !paused() &amp;&amp; m_networkState == NetworkState::Idle &amp;&amp; m_readyState &lt;= ReadyState::HaveCurrentData &amp;&amp; m_sentStalledEvent;

Ditto

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4932
&gt; -    m_networkState = NETWORK_LOADING;
&gt; +    m_networkState = NetworkState::Idle;

Ditto.

&gt; Source/WebCore/platform/mac/VideoFullscreenInterfaceMac.h:84
&gt; +        MediaPlayerEnums::VideoFullscreenMode mode() const { return m_mode; }

Nit: extra indentation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824552</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-15 14:48:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/86543781&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446428</attachid>
            <date>2021-12-08 14:55:01 -0800</date>
            <delta_ts>2021-12-08 14:55:20 -0800</delta_ts>
            <desc>[fast-cq] Follow-up patch</desc>
            <filename>bug-234037-20211208145500.patch</filename>
            <type>text/plain</type>
            <size>4387</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI5Njk0MWQ1Yjg2NWQy
MTVjNjExYzY4MWU0NWJmNTJiNDgyZmZlMS4uMmU0NDI3N2Q0YTVjZmFlOWNkZjVhOTU0NTEwMGRk
YTI5YmZiNWQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEyLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtNU0VdIEFkZCBhIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvUkVBRE1FLm1kIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDAyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYy
Mjc3MzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEZv
bGxvdy11cCB0byBhZGRyZXNzIHJldmlldyBjb21tZW50cy4KKworICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzb3VyY2UvUkVBRE1FLm1kOgorCiAyMDIxLTEyLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdIEFkZCBhIE1vZHVsZXMvbWVkaWFzb3VyY2Uv
UkVBRE1FLm1kIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvUkVBRE1FLm1kIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9SRUFE
TUUubWQKaW5kZXggNjFmMGU3NWY1Yjg2MDYxYWY0Mjc0NmExNTVhZDFmMGE5M2I5YTEzZi4uZWJj
OTU1YWM0OTk1MjQ4ZWMxNjUxZjRkMDlkZDY5MzNkODdjYTcxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9SRUFETUUubWQKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9SRUFETUUubWQKQEAgLTQsNyArNCw3IEBAIFRoaXMgZGly
ZWN0b3J5IGNvbnRhaW5zIGNyb3NzLXBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgb2Jq
ZWN0cyBzcGVjaWZpZWQKIAogIyMgQmFzaWMgQ29uY2VwdHMKIAotVGhlIE1lZGlhIFNvdXJjZSBF
eHRlbnNpb25zIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIHNldCBvZiBjbGFzc2VzIHdoaWNoIGFs
bG93cyBjbGllbnRzIHRvIGltcGxlbWVudCB0aGVpciBvd24gbG9hZGluZywgYnVmZmVyaW5nLCBh
bmQgdmFyaWFudCBzd2l0Y2hpbmcgYmVoYXZpb3IsIGFzIG9wcG9zZWQgdG8gYWxsb3dpbmcgdGhl
IFVBIHRvIGhhbmRsZSBzYW1lLgorVGhlIE1lZGlhIFNvdXJjZSBFeHRlbnNpb25zIHNwZWNpZmlj
YXRpb24gZGVmaW5lcyBhIHNldCBvZiBjbGFzc2VzIHdoaWNoIGFsbG93cyBjbGllbnRzIHRvIGlt
cGxlbWVudCB0aGVpciBvd24gbG9hZGluZywgYnVmZmVyaW5nLCBhbmQgdmFyaWFudCBzd2l0Y2hp
bmcgYmVoYXZpb3IsIGFzIG9wcG9zZWQgdG8gcmVxdWlyaW5nIHRoZSBVQSB0byBoYW5kbGUgc2Ft
ZS4KIAogQ2xpZW50cyBgZmV0Y2goKWAgbWVkaWEgaW5pdGlhbGl6YXRpb24gc2VnbWVudHMgYW5k
IG1lZGlhIHNlZ21lbnRzLCB0eXBpY2FsbHkgc3Vic2V0cyBvZiBhIHNpbmdsZSBbZnJhZ21lbnRl
ZCBNUDQgZmlsZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL21zZS1ieXRlLXN0cmVhbS1mb3JtYXQt
aXNvYm1mZi8pIG9yIFtXZWJNIGZpbGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tc2UtYnl0ZS1z
dHJlYW0tZm9ybWF0LXdlYm0vKSwgYW5kIGFwcGVuZCB0aG9zZSBzZWdtZW50cyBpbnRvIGEgU291
cmNlQnVmZmVyIG9iamVjdCwgd2hpY2ggaXMgYXNzb2NpYXRlZCB3aXRoIGEgSFRNTE1lZGlhRWxl
bWVudCB0aHJvdWdoIGEgW01lZGlhU291cmNlXSgjbWVkaWFzb3VyY2UpIG9iamVjdC4KIApAQCAt
NTIsMTEgKzUyLDIzIEBAIF8oWy5oXSguLi9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQ
cml2YXRlLmgpLCBbLmNwcF0oLi4vcGxhdGZvcm0vZ3JhcGhpY3MvCiAKIFNvdXJjZUJ1ZmZlclBy
aXZhdGUgaXMgYSBzZW1pLWFic3RyYWN0IGJhc2UgY2xhc3Mgd2hpY2ggYWNjZXB0cyBpbml0aWFs
aXphdGlvbiBzZWdtZW50IGFuZCBtZWRpYSBzZWdtZW50IGJ1ZmZlcnMsIHBhcnNlIHRob3NlIGJ1
ZmZlcnMgd2l0aCBwbGF0Zm9ybS1zcGVjaWZpYyBwYXJzZXJzLCBhbmQgZW5xdWV1ZSB0aGUgcmVz
dWx0aW5nIHNhbXBsZXMgaW50byBwbGF0Zm9ybS1zcGVjaWZpYyBkZWNvZGVycy4gU291cmNlQnVm
ZmVyUHJpdmF0ZSBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBjYWNoaW5nIHBhcnNlZCBzYW1wbGVz
IGluIGEgW1NhbXBsZU1hcF0oI3NhbXBsZW1hcCkuCiAKKyMjIyBNZWRpYVRpbWUgIyMjIAorCitf
KFsuaF0oLi4vLi4vV1RGL3d0Zi9NZWRpYVRpbWUuaCksIFsuY3BwXSguLi8uLi9XVEYvd3RmL01l
ZGlhVGltZS5jcHApKV8KKworTWVkaWFUaW1lIGlzIGEgcmF0aW9uYWwtbnVtYmVyIHRpbWUgY2xh
c3MgZm9yIG1hbmlwdWxhdGluZyB0aW1lIHZhbHVlcyBjb21tb25seSBmb3VuZCBpbiBtZWRpYSBm
aWxlcy4gVGhlIHVuaXQgb2YgTWVkaWFUaW1lIGlzIHNlY29uZHMuCisKK01lZGlhIGNvbnRhaW5l
cnMgc3VjaCBhcyBtcDQgYW5kIFdlYk0gcmVwcmVzZW50IHRpbWUgdmFsdWVzIGFzIGEgcmF0aW8g
YmV0d2VlbiBhICJ0aW1lIGJhc2UiIGFuZCBhICJ0aW1lIHZhbHVlIi4gVGhlc2UgdmFsdWVzIGNh
bm5vdCBuZWNlc3NhcmlseSBiZSBhY2N1cmF0ZWx5IHJlcHJlc2VudGVkIGFzIGZsb2F0aW5nLXBv
aW50IHZhbHVlcyB3aXRob3V0IGluY3VycmluZyBjdW11bGF0aXZlIHJvdW5kaW5nIGVycm9ycy4g
IEZvciBleGFtcGxlLCBhIGNvbW1vbiBmcmFtZSByYXRlIGluIHZpZGVvIGZvcm1hdHMgaXMgMjku
OTdmcHMsIGhvd2V2ZXIgdGhhdCB2YWx1ZSBpcyBhbiBhcHByb3hpbWF0aW9uIG9mIDMwMDAwLzEw
MDEuIFNvIGEgbWVkaWEgZmlsZSBjb250YWluaW5nIGEgdmlkZW8gdHJhY2sgd2l0aCBhIDI5Ljk3
ZnBzIGNvbnRlbnQgd2lsbCBkZWNsYXJlIGEgInRpbWUgYmFzZSIgc2NhbGFyIG9mIDMwMDAwLCBh
bmQgZWFjaCBmcmFtZSB3aWxsIGhhdmUgYSAidGltZSB2YWx1ZSIgZHVyYXRpb24gb2YgMTAwMS4K
KworTWVkaWEgU291cmNlIEV4dGVuc2lvbiBhbGdvcml0aG1zIGFyZSB2ZXJ5IHNlbnNpdGl2ZSB0
byBzbWFsbCBnYXBzIGJldHdlZW4gc2FtcGxlcywgYW5kIGR1ZSB0byBpdHMgcmF0aW9uYWwtbnVt
YmVyIGJlaGF2aW9yLCBNZWRpYVRpbWUgZ3VhcmFudGVlcyBzYW1wbGVzIGFyZSBjb250aWd1b3Vz
IGJ5IGF2b2lkaW5nIGZsb2F0aW5nLXBvaW50IHJvdW5kaW5nIGVycm9ycy4KKworTWVkaWFUaW1l
IG9mZmVycyBjb252ZW5pZW5jZSBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSAoYGNyZWF0ZVRpbWVX
aXRoRG91YmxlKClgKSBhbmQgdG8gKGB0b0RvdWJsZSgpYCkgZmxvYXRpbmctcG9pbnQgdmFsdWVz
LgorCiAjIyMgTWVkaWFTYW1wbGUgIyMjCiAKIF8oWy5oXSguLi9wbGF0Zm9ybS9NZWRpYVNhbXBs
ZS5oKSwgWy5jcHBdKC4uL3BsYXRmb3JtL01lZGlhU2FtcGxlLmNwcCkpXwogCi1NZWRpYVNhbXBs
ZSBpcyBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhIHNhbXBsZSBwYXJzZWQg
ZnJvbSBhIG1lZGlhIHNlZ21lbnQuIE1lZGlhU2FtcGxlcyBoYXZlIGBwcmVzZW50YXRpb25UaW1l
KClgLCBgZGVjb2RlVGltZSgpYCwgYW5kIGBkdXJhdGlvbigpYCwgd2hpY2ggYXJlIHVzZWQgdG8g
b3JkZXIgdGhlc2Ugc2FtcGxlcyByZWxhdGl2ZSB0byBvbmUgYW5vdGhlciBpbiBhIFtTYW1wbGVN
YXBdKCNzYW1wbGVtYXApLiBGb3IgY29kZWNzIHdoaWNoIHN1cHBvcnQgZnJhbWUgcmVvcmRlcmlu
ZywgYHByZXNlbnRhdGlvblRpbWUoKWAgYW5kIGBkZWNvZGVUaW1lKClgIGZvciBlYWNoIHNhbXBs
ZSBtYXkgZGlmZmVyLgorTWVkaWFTYW1wbGUgaXMgYW4gYWJzdHJhY3QgYmFzZSBjbGFzcyByZXBy
ZXNlbnRpbmcgYSBzYW1wbGUgcGFyc2VkIGZyb20gYSBtZWRpYSBzZWdtZW50LiBNZWRpYVNhbXBs
ZXMgaGF2ZSBgcHJlc2VudGF0aW9uVGltZSgpYCwgYGRlY29kZVRpbWUoKWAsIGFuZCBgZHVyYXRp
b24oKWAsIGVhY2ggb2Ygd2hpY2ggYXJlIFtNZWRpYVRpbWVdKCNtZWRpYXRpbWUpIHZhbHVlcywg
d2hpY2ggYXJlIHVzZWQgdG8gb3JkZXIgdGhlc2Ugc2FtcGxlcyByZWxhdGl2ZSB0byBvbmUgYW5v
dGhlciBpbiBhIFtTYW1wbGVNYXBdKCNzYW1wbGVtYXApLiBGb3IgY29kZWNzIHdoaWNoIHN1cHBv
cnQgZnJhbWUgcmVvcmRlcmluZywgYHByZXNlbnRhdGlvblRpbWUoKWAgYW5kIGBkZWNvZGVUaW1l
KClgIGZvciBlYWNoIHNhbXBsZSBtYXkgZGlmZmVyLgogCiAjIyMgU2FtcGxlTWFwICMjIwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446434</attachid>
            <date>2021-12-08 15:01:35 -0800</date>
            <delta_ts>2021-12-08 15:55:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234037-20211208150133.patch</filename>
            <type>text/plain</type>
            <size>198812</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU0NDI3N2Q0YTVjZmFl
OWNkZjVhOTU0NTEwMGRkYTI5YmZiNWQyZS4uOTU2ZjFkNTAyN2Q0YzM5MTQ1NjdhMDJjNjNkZWZj
M2RlZjllNmZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NyBAQAorMjAyMS0xMi0wOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvcmluZzogTWFr
ZSBNZWRpYVBsYXllckVudW1zIGFuZCBIVE1MTWVkaWFFbGVtZW50RW51bXMgbmFtZXNwYWNlcyBy
YXRoZXIgdGhhbiBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzQwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcmV2aW91c2x5LCBNZWRpYVBsYXllckVudW1zIGFuZCBIVE1MTWVkaWFFbGVt
ZW50RW51bXMgd2VyZSBtYWRlIGludG8gY2xhc3NlcyBzbyB0aGF0IHRoZQorICAgICAgICBlbnVt
ZXJhdGlvbnMgY291bGQgYmUgdXNlZCBpbnNpZGUgcGxhdGZvcm0vIGFuZCB0aGUgc2FtZSBlbnVt
ZXJhdGlvbnMgY291bGQgYmUgYWNjZXNzZWQgYXMKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCBj
bGFzcyBlbnVtZXJhdGlvbnMgdGhyb3VnaCBpbmhlcml0YW5jZS4gSG93ZXZlciwgdGhpcyBwcmV2
ZW50cyB0aG9zZQorICAgICAgICBlbnVtZXJhdGlvbnMgZnJvbSBiZWluZyBmb3J3YXJkLWRlY2xh
cmVkLiBJbnN0ZWFkLCB0dXJuIHRob3NlIEVudW1zIGNsYXNzZXMgaW50byBuYW1lc3BhY2VzCisg
ICAgICAgIGFuZCBleHBsaWNpdGx5IGltcG9ydCB0aGUgZW51bWVyYXRpb25zIGludG8gSFRNTE1l
ZGlhRWxlbWVudC4KKworICAgICAgICBUaGlzIGFsc28gZ2l2ZXMgdXMgdGhlIG9wcG9ydHVuaXRl
IHRvIGRlLWR1cGxpY2F0ZSBIVE1MTWVkaWFFbGVtZW50OjpSZWFkeVN0YXRlIGFuZAorICAgICAg
ICA6Ok5ldHdvcmtTdGF0ZSwgYW5kIGhhdmUgYSBzaW5nbGUgZGVjbGFyYXRpb24gb2YgdGhvc2Ug
ZW51bWVyYXRpb25zLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29u
dHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjpzdXBw
b3J0c0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Om1vbml0b3JTb3Vy
Y2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdp
dGhFcnJvcik6CisgICAgICAgICogTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0hUTUxWaWRlb0Vs
ZW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0Vs
ZW1lbnRQaWN0dXJlSW5QaWN0dXJlOjpyZXF1ZXN0UGljdHVyZUluUGljdHVyZSk6CisgICAgICAg
ICogTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdGVQbGF5YmFjazo6cHJvbXB0KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkRmlu
aXNoSW5zZXJ0aW5nTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpw
YXVzZUFmdGVyRGV0YWNoZWRUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZv
ckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJS
ZWxvYWRBbmRSZXN1bWVQbGF5YmFja0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bG9hZE5leHRTb3VyY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6d2FpdEZvclNvdXJjZUNoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpub25lU3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHkpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFMb2FkaW5nRmFpbGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldE5ldHdvcmtTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjaGFuZ2VOZXR3b3JrU3RhdGVGcm9tTG9hZGluZ1Rv
SWRsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5UcmFuc2l0aW9u
RnJvbUF1dG9wbGF5VG9QbGF5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpjbGVhclNlZWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6ZmluaXNoU2Vlayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpzZXRDdXJyZW50VGltZUZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmR1cmF0aW9uTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpwYXVzZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmJ1ZmZlcmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzdGFsbGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmNhblBsYXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aGF2
ZVBvdGVudGlhbFNvdXJjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojpzb3VyY2VXYXNBZGRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyU2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6cG90ZW50aWFsbHlQbGF5aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuZGVkUGxheWJhY2sgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3RvcHBlZER1ZVRvRXJyb3JzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN0b3BXaXRob3V0RGVzdHJveWluZ01lZGlh
UGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc0xpdmVTb3Vy
Y2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlzaWJpbGl0
eVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZXF1
aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6aXNGdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmlzU3RhbmRhcmRGdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsU3RvcEJlaW5nRnVsbHNjcmVl
bkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJl
VGV4dFRyYWNrRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpp
c0Jsb2NrZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJl
cGFyZU1lZGlhRnJhZ21lbnRVUkkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmRpc3BsYXlUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmNhblByb2R1Y2VBdWRpbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhU3RhdGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2hvdWxkT3ZlcnJpZGVCYWNrZ3Jv
dW5kTG9hZGluZ1Jlc3RyaWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNldEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmJ1ZmZlcmluZ1BvbGljeSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpuZXR3b3Jr
U3RhdGVGb3JCaW5kaW5ncyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpyZWFkeVN0YXRlRm9yQmluZGluZ3MgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50RW51bXMuaDoK
KyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1z
OjpUZXh0VHJhY2tWaXNpYmlsaXR5Q2hlY2tUeXBlPjo6dG9TdHJpbmcpOgorICAgICAgICAoKTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVudW1zOjpSZWFkeVN0YXRlPjo6dG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpMb2dBcmd1bWVudDxXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6Ok5ldHdvcmtTdGF0
ZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2Ny
ZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdEVu
dGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojp3ZWJr
aXRTdXBwb3J0c0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVu
dDo6YW5jZXN0b3JXaWxsRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxW
aWRlb0VsZW1lbnQ6OndlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjp0b0Z1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxW
aWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9uTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50OjpzZXRQcmVzZW50YXRpb25Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQ6OmV4aXRUb0Z1bGxzY3JlZW5Nb2RlV2l0aG91dEFuaW1hdGlvbklmUG9z
c2libGUpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UpOgorICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OmV2ZW50TmFtZUZvclJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjp1cGRhdGVSZWFkeVN0YXRlKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJv
bGxlci5oOgorICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmg6CisgICAg
ICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRWxlbWVudFNlc3Npb246OnBsYXliYWNrU3RhdGVDaGFuZ2VQZXJtaXR0ZWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OnJlcXVpcmVz
RnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2sgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4pOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnN1
cHBvcnRzVmlkZW9GdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6
ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbik6
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dDo6aXNTdGFsbGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Ojppc1BpY3R1cmVJblBpY3R1cmVBY3RpdmUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsLmg6CisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0
RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oOgorICAg
ICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0
YXRlPjo6dG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6Okxv
Z0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeT46OnRv
U3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW06CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBG
dWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleGl0
RnVsbHNjcmVlbik6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cmVx
dWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdGFydFBpY3R1cmVJblBpY3R1cmUpOgorICAgICAg
ICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJlSW5Q
aWN0dXJlKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdG9w
UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6c2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29uKToKKyAgICAgICAgKFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0dXJuVG9TdGFuZGJ5KToKKyAgICAgICAg
KFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb0V4aXRGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbkhhbmRsZXIp
OgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVl
bkhhbmRsZXIpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldE1v
ZGUpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNsZWFyTW9kZSk6
CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6aXNQbGF5aW5nVmlkZW9J
bkVuaGFuY2VkRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgICgtW1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOm1vZGU6XSk6CisgICAgICAgIChW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKToK
KyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpmdWxsc2NyZWVuTW9k
ZUNoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNl
dFVwRnVsbHNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5oOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjptb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYzo6aGFzTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OmlzTW9kZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjT2JqQyBzZXRVcFBJUEZvclZpZGVvVmlldzp3aXRoRnJhbWU6aW5XaW5k
b3c6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09iakMgcGlw
RGlkQ2xvc2U6XSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OnNldE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjpjbGVhck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjOjpzZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25U
b01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpy
ZXF1ZXN0SGlkZUFuZEV4aXRQaVApOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjOjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6Omhhc1ZpZGVvQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmlzUGxheWluZ1ZpZGVvSW5F
bmhhbmNlZEZ1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6Om1lZGlhU3VwcG9ydHNG
dWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnRvZ2ds
ZU1lZGlhRnVsbHNjcmVlblN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQ6OmVudGVyRnVsbHNjcmVlbkZvclZpZGVvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQ6Om1lZGlhU3VwcG9ydHNFbmhhbmNlZEZ1bGxzY3JlZW4gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bWVkaWFJc0luRW5oYW5jZWRGdWxsc2Ny
ZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnRvZ2dsZUVuaGFu
Y2VkRnVsbHNjcmVlbkZvclZpZGVvIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VmlkZW8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86OnVwZGF0ZUludHJpbnNp
Y1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86OmNhbGN1bGF0ZUludHJpbnNp
Y1NpemUpOgorCiAyMDIxLTEyLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFtNU0VdIEFkZCBhIE1vZHVsZXMvbWVkaWFzb3VyY2UvUkVBRE1FLm1kIGZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggOTQ5YWMwYmJhYzkwZjFkMTA3ZjExYzk0YmY0NjE2ODU4ODUwNmVhNy4uZWFm
M2MxMzRlNDczOTRmM2YxNmE3ZWI2ZTFlM2Q2OTcwOTYzYzY0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0OSBAQAorMjAyMS0xMi0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZWZhY3RvcmluZzogTWFrZSBNZWRpYVBsYXllckVudW1zIGFuZCBIVE1MTWVkaWFF
bGVtZW50RW51bXMgbmFtZXNwYWNlcyByYXRoZXIgdGhhbiBjbGFzc2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQwMzcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2FsbE1lZGlhUHJlc2VudGF0aW9uc0Ns
b3NlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9pc1Nob3dpbmdWaWRlb1BpY3R1cmVJblBpY3R1cmVdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
Omhhc01vZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENv
bnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXR1cEZ1bGxzY3JlZW5XaXRoSUQp
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxs
c2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpl
eGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUpOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RDbG9zZUFsbE1lZGlhUHJlc2VudGF0
aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpkaWRDbGVhbnVwRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojp2aWV3RGlkTGVhdmVXaW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNj
cmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoLVtXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGJlZ2FuRW50ZXJGdWxsU2NyZWVuV2l0aEluaXRpYWxG
cmFtZTpmaW5hbEZyYW1lOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpz
dXBwb3J0c1ZpZGVvRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5o
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpmdWxs
c2NyZWVuTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUNvbnRleHQ6OnNldEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2Ny
ZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUp
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTW9k
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRD
bGVhbnVwRnVsbHNjcmVlbik6CisKIDIwMjEtMTAtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFuIGV4cGVyaW1lbnRhbCB0cmFja0NvbmZpZ3VyYXRp
b24gYWNjZXNzb3Igb24gQXVkaW9UcmFjayAmIFZpZGVvVHJhY2suCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggZTE3MGUwOTNjYmE5YzUwZGZmYzIxMTU4YmYyMGIyOGFhZGMxYTBhZS4u
MTkxNjkzNmEyMTRjZmM0YzFiNjg3ZmFmMGMxNmYxMzBjOTJmZmIyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTEyLTA4ICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yaW5nOiBNYWtlIE1lZGlhUGxh
eWVyRW51bXMgYW5kIEhUTUxNZWRpYUVsZW1lbnRFbnVtcyBuYW1lc3BhY2VzIHJhdGhlciB0aGFu
IGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogRE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxNZWRpYUVs
ZW1lbnQgbmV0d29ya1N0YXRlXSk6CisgICAgICAgICgtW0RPTUhUTUxNZWRpYUVsZW1lbnQgcmVh
ZHlTdGF0ZV0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdl
YkNocm9tZUNsaWVudDo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ2hy
b21lQ2xpZW50OjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6CisgICAgICAg
IChXZWJDaHJvbWVDbGllbnQ6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0
aW9uKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcg
X2VudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50Om1vZGU6XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKwogMjAyMS0xMi0wNiAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIElETCBgRGF0ZWAgdG8gYmUgYmFj
a2VkIGJ5IGBXYWxsVGltZWAgdG8gYXZvaWQgY29uZnVzaW9uIHdoZW4gY29udmVydGluZyB0byBu
YXRpdmUgZGF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250
cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
Y29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCmluZGV4IGVlZjc5ZGJmNTA0N2E3ODVhYjgy
NDllM2NiZTExZGUyMWM5OTczMzEuLjAwYzViMDJjZjEzOTk3ZGExNjBkYWZjMDEwN2RlMWE4NDA3
ZmM5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9N
ZWRpYUNvbnRyb2xzSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIGJvb2wgTWVk
aWFDb250cm9sc0hvc3Q6OmFsbG93c0lubGluZU1lZGlhUGxheWJhY2soKSBjb25zdAogCiBib29s
IE1lZGlhQ29udHJvbHNIb3N0OjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAogewotICAgIHJl
dHVybiBtX21lZGlhRWxlbWVudCAmJiBtX21lZGlhRWxlbWVudC0+c3VwcG9ydHNGdWxsc2NyZWVu
KEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKKyAg
ICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgJiYgbV9tZWRpYUVsZW1lbnQtPnN1cHBvcnRzRnVsbHNj
cmVlbihNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwogfQog
CiBib29sIE1lZGlhQ29udHJvbHNIb3N0Ojppc1ZpZGVvTGF5ZXJJbmxpbmUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApp
bmRleCA1OTVlNDI1NDI3ZThlYmFjOWY1YWI2YWYxMGE1NzNjMDU0NWJiNGFiLi45MWIwNzQ4NTUx
YmIyNTNkZDgxM2IzNDgxNzc2MzJiZDM1MzU3YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtMzg5LDcgKzM4OSw3IEBA
IHZvaWQgTWVkaWFTb3VyY2U6Om1vbml0b3JTb3VyY2VCdWZmZXJzKCkKICAgICB9CiAKICAgICAv
LyDihrMgSWYgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgZXF1YWxz
IEhBVkVfTk9USElORzoKLSAgICBpZiAobWVkaWFFbGVtZW50KCktPnJlYWR5U3RhdGUoKSA9PSBI
VE1MTWVkaWFFbGVtZW50OjpIQVZFX05PVEhJTkcpIHsKKyAgICBpZiAobWVkaWFFbGVtZW50KCkt
PnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpSZWFkeVN0YXRlOjpIYXZlTm90aGlu
ZykgewogICAgICAgICAvLyAxLiBBYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIE1lZGlhU291cmNlOjptb25pdG9yU291cmNl
QnVmZmVycygpCiAgICAgICAgIC8vIDEuIFNldCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0
YXRlIGF0dHJpYnV0ZSB0byBIQVZFX01FVEFEQVRBLgogICAgICAgICAvLyAyLiBJZiB0aGlzIGlz
IHRoZSBmaXJzdCB0cmFuc2l0aW9uIHRvIEhBVkVfTUVUQURBVEEsIHRoZW4gcXVldWUgYSB0YXNr
IHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQKICAgICAgICAgLy8gbmFtZWQgbG9hZGVkbWV0YWRhdGEg
YXQgdGhlIG1lZGlhIGVsZW1lbnQuCi0gICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKTsKKyAgICAgICAgbV9wcml2YXRl
LT5zZXRSZWFkeVN0YXRlKEhUTUxNZWRpYUVsZW1lbnQ6OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0
YSk7CiAKICAgICAgICAgLy8gMy4gQWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgICAgIHJldHVybjsK
QEAgLTU5MSw3ICs1OTEsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJv
cihzdGQ6Om9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQogICAgICAgICBtX3ByaXZh
dGUtPm1hcmtFbmRPZlN0cmVhbShNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05ldHdvcmtFcnJvcik7
CiAgICAgICAgIC8vIOKGsyBJZiBlcnJvciBpcyBzZXQgdG8gIm5ldHdvcmsiCiAgICAgICAgIEFT
U0VSVChtX21lZGlhRWxlbWVudCk7Ci0gICAgICAgIGlmIChtX21lZGlhRWxlbWVudC0+cmVhZHlT
dGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6OkhBVkVfTk9USElORykgeworICAgICAgICBpZiAo
bV9tZWRpYUVsZW1lbnQtPnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpSZWFkeVN0
YXRlOjpIYXZlTm90aGluZykgewogICAgICAgICAgICAgLy8gIOKGsyBJZiB0aGUgSFRNTE1lZGlh
RWxlbWVudC5yZWFkeVN0YXRlIGF0dHJpYnV0ZSBlcXVhbHMgSEFWRV9OT1RISU5HCiAgICAgICAg
ICAgICAvLyAgICBSdW4gdGhlICJJZiB0aGUgbWVkaWEgZGF0YSBjYW5ub3QgYmUgZmV0Y2hlZCBh
dCBhbGwsIGR1ZSB0byBuZXR3b3JrIGVycm9ycywgY2F1c2luZwogICAgICAgICAgICAgLy8gICAg
dGhlIHVzZXIgYWdlbnQgdG8gZ2l2ZSB1cCB0cnlpbmcgdG8gZmV0Y2ggdGhlIHJlc291cmNlIiBz
dGVwcyBvZiB0aGUgcmVzb3VyY2UgZmV0Y2ggYWxnb3JpdGhtLgpAQCAtNjEwLDcgKzYxMCw3IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKHN0ZDo6b3B0aW9uYWw8RW5k
T2ZTdHJlYW1FcnJvcj4gZXJyb3IpCiAgICAgICAgIG1fcHJpdmF0ZS0+bWFya0VuZE9mU3RyZWFt
KE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zRGVjb2RlRXJyb3IpOwogCiAgICAgICAgIEFTU0VSVCht
X21lZGlhRWxlbWVudCk7Ci0gICAgICAgIGlmIChtX21lZGlhRWxlbWVudC0+cmVhZHlTdGF0ZSgp
ID09IEhUTUxNZWRpYUVsZW1lbnQ6OkhBVkVfTk9USElORykgeworICAgICAgICBpZiAobV9tZWRp
YUVsZW1lbnQtPnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpSZWFkeVN0YXRlOjpI
YXZlTm90aGluZykgewogICAgICAgICAgICAgLy8gIOKGsyBJZiB0aGUgSFRNTE1lZGlhRWxlbWVu
dC5yZWFkeVN0YXRlIGF0dHJpYnV0ZSBlcXVhbHMgSEFWRV9OT1RISU5HCiAgICAgICAgICAgICAv
LyAgICBSdW4gdGhlICJJZiB0aGUgbWVkaWEgZGF0YSBjYW4gYmUgZmV0Y2hlZCBidXQgaXMgZm91
bmQgYnkgaW5zcGVjdGlvbiB0byBiZSBpbiBhbiB1bnN1cHBvcnRlZAogICAgICAgICAgICAgLy8g
ICAgZm9ybWF0LCBvciBjYW4gb3RoZXJ3aXNlIG5vdCBiZSByZW5kZXJlZCBhdCBhbGwiIHN0ZXBz
IG9mIHRoZSByZXNvdXJjZSBmZXRjaCBhbGdvcml0aG0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRNTFZpZGVvRWxlbWVudFBpY3R1cmVJblBp
Y3R1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0hUTUxW
aWRlb0VsZW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcAppbmRleCBiMDA5MGZjNGU1MzQxYjg1MTQz
MDE1M2RkYWM5ZjY0NjhkNTY3M2UyLi43ZTkwNjdiMDY2Y2E3ZmNiMDFhN2IyMDQwMjAxMjZmN2U2
NWEwYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1
cmUvSFRNTFZpZGVvRWxlbWVudFBpY3R1cmVJblBpY3R1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGljdHVyZWlucGljdHVyZS9IVE1MVmlkZW9FbGVtZW50UGljdHVyZUluUGlj
dHVyZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50UGljdHVyZUlu
UGljdHVyZTo6cmVxdWVzdFBpY3R1cmVJblBpY3R1cmUoSFRNTFZpZGVvRWxlbWVudCYKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh2aWRlb0VsZW1lbnQucmVhZHlTdGF0ZSgpID09
IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6SEFWRV9OT1RISU5HKSB7CisgICAgaWYgKHZpZGVvRWxl
bWVudC5yZWFkeVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6UmVhZHlTdGF0ZTo6SGF2ZU5v
dGhpbmcpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiVGhl
IHZpZGVvIGVsZW1lbnQgaXMgbm90IHJlYWR5IHRvIGVudGVyIHRoZSBQaWN0dXJlLWluLVBpY3R1
cmUgbW9kZS4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5jcHAKaW5kZXgg
NGExNTViMGE0NWFhMmQ1NjE2MTAzYTI5M2FlZTc0MjI3ZTIwY2NmNC4uZDEwZWYyNjc2M2FkYzFm
YzJhNTJhNjY5N2E1ZThkOTVmM2UwOTYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5jcHAKQEAgLTIwNiw3ICsy
MDYsNyBAQCB2b2lkIFJlbW90ZVBsYXliYWNrOjpwcm9tcHQoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlKQogICAgICAgICAvLyA1LiBPUFRJT05BTExZLCBpZiB0aGUgdXNlciBhZ2VudCBr
bm93cyBhIHByaW9yaSB0aGF0IHNob3dpbmcgdGhlIFVJIGZvciB0aGlzIHBhcnRpY3VsYXIgbWVk
aWEgZWxlbWVudAogICAgICAgICAvLyAgICBpcyBub3QgZmVhc2libGUsIHJlamVjdCBwcm9taXNl
IHdpdGggYSBOb3RTdXBwb3J0ZWRFcnJvciBhbmQgYWJvcnQgYWxsIHJlbWFpbmluZyBzdGVwcy4K
ICNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnQtPnJlYWR5U3Rh
dGUoKSA8IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6SEFWRV9NRVRBREFUQSkgeworICAgICAgICBp
ZiAobV9tZWRpYUVsZW1lbnQtPnJlYWR5U3RhdGUoKSA8IEhUTUxNZWRpYUVsZW1lbnQ6OlJlYWR5
U3RhdGU6OkhhdmVNZXRhZGF0YSkgewogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1
cHBvcnRlZEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZWM4MzUxYzA5Nzc0OGIxNDlhOTQ0
MzliYWI2OTU3OGVlOTAwMWEwZS4uNzU2ODFjZDc0NDAwZGNmZWUzMGI0MjExMTJjOWNjMTdlMjQw
OWE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yMjks
NDAgKzIyOSw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBtZWRpYVN0cmVhbUJsb2JQcm90b2NvbCA9
ICJibG9iIjsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotU3RyaW5nIGNvbnZlcnRF
bnVtZXJhdGlvblRvU3RyaW5nKEhUTUxNZWRpYUVsZW1lbnQ6OlJlYWR5U3RhdGUgZW51bWVyYXRp
b25WYWx1ZSkKLXsKLSAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2YWx1
ZXNbXSA9IHsKLSAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkhBVkVfTk9USElORyIp
LAotICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiSEFWRV9NRVRBREFUQSIpLAotICAg
ICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiSEFWRV9DVVJSRU5UX0RBVEEiKSwKLSAgICAg
ICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkhBVkVfRlVUVVJFX0RBVEEiKSwKLSAgICAgICAg
TUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkhBVkVfRU5PVUdIX0RBVEEiKSwKLSAgICB9OwotICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihIVE1MTWVkaWFFbGVtZW50RW51bXM6
OkhBVkVfTk9USElORykgPT0gMCwgIkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6SEFWRV9OT1RISU5H
IGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxz
aXplX3Q+KEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6SEFWRV9NRVRBREFUQSkgPT0gMSwgIkhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6SEFWRV9NRVRBREFUQSBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwot
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihIVE1MTWVkaWFFbGVtZW50RW51
bXM6OkhBVkVfQ1VSUkVOVF9EQVRBKSA9PSAyLCAiSFRNTE1lZGlhRWxlbWVudEVudW1zOjpIQVZF
X0NVUlJFTlRfREFUQSBpcyBub3QgMiBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRpY19hc3NlcnQo
c3RhdGljX2Nhc3Q8c2l6ZV90PihIVE1MTWVkaWFFbGVtZW50RW51bXM6OkhBVkVfRlVUVVJFX0RB
VEEpID09IDMsICJIVE1MTWVkaWFFbGVtZW50RW51bXM6OkhBVkVfRlVUVVJFX0RBVEEgaXMgbm90
IDMgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4o
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpIQVZFX0VOT1VHSF9EQVRBKSA9PSA0LCAiSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpIQVZFX0VOT1VHSF9EQVRBIGlzIG5vdCA0IGFzIGV4cGVjdGVkIik7Ci0g
ICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJS
QVlfTEVOR1RIKHZhbHVlcykpOwotICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90
PihlbnVtZXJhdGlvblZhbHVlKV07Ci19Ci0KLVN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0
cmluZyhIVE1MTWVkaWFFbGVtZW50OjpOZXR3b3JrU3RhdGUgZW51bWVyYXRpb25WYWx1ZSkKLXsK
LSAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2YWx1ZXNbXSA9IHsKLSAg
ICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIk5FVFdPUktfRU1QVFkiKSwKLSAgICAgICAg
TUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIk5FVFdPUktfSURMRSIpLAotICAgICAgICBNQUtFX1NU
QVRJQ19TVFJJTkdfSU1QTCgiTkVUV09SS19MT0FESU5HIiksCi0gICAgICAgIE1BS0VfU1RBVElD
X1NUUklOR19JTVBMKCJORVRXT1JLX05PX1NPVVJDRSIpLAotICAgIH07Ci0gICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6TkVUV09SS19F
TVBUWSkgPT0gMCwgIkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6TkVUV09SS19FTVBUWSBpcyBub3Qg
MCBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihI
VE1MTWVkaWFFbGVtZW50RW51bXM6Ok5FVFdPUktfSURMRSkgPT0gMSwgIkhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6TkVUV09SS19JRExFIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6TkVUV09S
S19MT0FESU5HKSA9PSAyLCAiSFRNTE1lZGlhRWxlbWVudEVudW1zOjpORVRXT1JLX0xPQURJTkcg
aXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNp
emVfdD4oSFRNTE1lZGlhRWxlbWVudEVudW1zOjpORVRXT1JLX05PX1NPVVJDRSkgPT0gMywgIkhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6TkVUV09SS19OT19TT1VSQ0UgaXMgbm90IDMgYXMgZXhwZWN0
ZWQiKTsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8
IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7Ci0gICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNfY2Fz
dDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKLX0KLQogU3RyaW5nIGNvbnZlcnRFbnVtZXJh
dGlvblRvU3RyaW5nKEhUTUxNZWRpYUVsZW1lbnQ6OkF1dG9wbGF5RXZlbnRQbGF5YmFja1N0YXRl
IGVudW1lcmF0aW9uVmFsdWUpCiB7CiAgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gdmFsdWVzW10gPSB7CkBAIC04MzAsNyArNzk2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CiAKLSAgICBpZiAobV9pbkFjdGl2ZURvY3VtZW50ICYmIG1fbmV0d29ya1N0YXRlID09
IE5FVFdPUktfRU1QVFkgJiYgIWF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0
cikuaXNFbXB0eSgpKQorICAgIGlmIChtX2luQWN0aXZlRG9jdW1lbnQgJiYgbV9uZXR3b3JrU3Rh
dGUgPT0gTmV0d29ya1N0YXRlOjpFbXB0eSAmJiAhYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihzcmNBdHRyKS5pc0VtcHR5KCkpCiAgICAgICAgIHByZXBhcmVGb3JMb2FkKCk7CiAKICAg
ICBpZiAoIW1fZXhwbGljaXRseU11dGVkKSB7CkBAIC04NDgsOSArODE0LDkgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpwYXVzZUFmdGVyRGV0YWNoZWRUYXNrKCkKICAgICBpZiAobV9pbkFjdGl2
ZURvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5N
b2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlICYmIG1fbmV0d29ya1N0
YXRlID4gTkVUV09SS19FTVBUWSkKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IE1l
ZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlICYmIG1f
bmV0d29ya1N0YXRlID4gTmV0d29ya1N0YXRlOjpFbXB0eSkKICAgICAgICAgcGF1c2UoKTsKLSAg
ICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCkKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09IE1lZGlhUGxheWVyRW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKICAgICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsKIAog
ICAgIGlmICghbV9wbGF5ZXIpCkBAIC0xMTI1LDcgKzEwOTEsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmxvYWQoKQogCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBpZiAo
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0
dXJlICYmIGRvY3VtZW50KCkucXVpcmtzKCkucmVxdWlyZXNVc2VyR2VzdHVyZVRvTG9hZEluUGlj
dHVyZUluUGljdHVyZSgpICYmICFkb2N1bWVudCgpLnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1l
ZGlhKCkpCisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBNZWRpYVBsYXllckVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSAmJiBkb2N1bWVudCgpLnF1aXJr
cygpLnJlcXVpcmVzVXNlckdlc3R1cmVUb0xvYWRJblBpY3R1cmVJblBpY3R1cmUoKSAmJiAhZG9j
dW1lbnQoKS5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBwcmVwYXJlRm9yTG9hZCgpOwpAQCAtMTE3NCwxNiArMTE0MCwxNiBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkKCkKIAogICAgIC8vIDUgLSBJZiB0aGUgbWVk
aWEgZWxlbWVudCdzIG5ldHdvcmtTdGF0ZSBpcyBzZXQgdG8gTkVUV09SS19MT0FESU5HIG9yIE5F
VFdPUktfSURMRSwgcXVldWUKICAgICAvLyBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBu
YW1lZCBhYm9ydCBhdCB0aGUgbWVkaWEgZWxlbWVudC4KLSAgICBpZiAobV9uZXR3b3JrU3RhdGUg
PT0gTkVUV09SS19MT0FESU5HIHx8IG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktfSURMRSkKKyAg
ICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTmV0d29ya1N0YXRlOjpMb2FkaW5nIHx8IG1fbmV0d29y
a1N0YXRlID09IE5ldHdvcmtTdGF0ZTo6SWRsZSkKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVu
dE5hbWVzKCkuYWJvcnRFdmVudCk7CiAKICAgICAvLyA2IC0gSWYgdGhlIG1lZGlhIGVsZW1lbnQn
cyBuZXR3b3JrU3RhdGUgaXMgbm90IHNldCB0byBORVRXT1JLX0VNUFRZLCB0aGVuIHJ1biB0aGVz
ZSBzdWJzdGVwcwotICAgIGlmIChtX25ldHdvcmtTdGF0ZSAhPSBORVRXT1JLX0VNUFRZKSB7Cisg
ICAgaWYgKG1fbmV0d29ya1N0YXRlICE9IE5ldHdvcmtTdGF0ZTo6RW1wdHkpIHsKICAgICAgICAg
Ly8gNi4xIC0gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgZW1wdGll
ZCBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVz
KCkuZW1wdGllZEV2ZW50KTsKIAogICAgICAgICAvLyA2LjIgLSBJZiBhIGZldGNoaW5nIHByb2Nl
c3MgaXMgaW4gcHJvZ3Jlc3MgZm9yIHRoZSBtZWRpYSBlbGVtZW50LCB0aGUgdXNlciBhZ2VudCBz
aG91bGQgc3RvcCBpdC4KLSAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0VNUFRZOwor
ICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE5ldHdvcmtTdGF0ZTo6RW1wdHk7CiAKICAgICAgICAg
Ly8gNi4zIC0gSWYgdGhlIG1lZGlhIGVsZW1lbnTigJlzIGFzc2lnbmVkIG1lZGlhIHByb3ZpZGVy
IG9iamVjdCBpcyBhIE1lZGlhU291cmNlIG9iamVjdCwgdGhlbiBkZXRhY2ggaXQuCiAjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKQEAgLTExOTQsOCArMTE2MCw4IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cHJlcGFyZUZvckxvYWQoKQogICAgICAgICBmb3JnZXRSZXNvdXJjZVNwZWNpZmljVHJh
Y2tzKCk7CiAKICAgICAgICAgLy8gNi41IC0gSWYgcmVhZHlTdGF0ZSBpcyBub3Qgc2V0IHRvIEhB
VkVfTk9USElORywgdGhlbiBzZXQgaXQgdG8gdGhhdCBzdGF0ZS4KLSAgICAgICAgbV9yZWFkeVN0
YXRlID0gSEFWRV9OT1RISU5HOwotICAgICAgICBtX3JlYWR5U3RhdGVNYXhpbXVtID0gSEFWRV9O
T1RISU5HOworICAgICAgICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsK
KyAgICAgICAgbV9yZWFkeVN0YXRlTWF4aW11bSA9IFJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nOwog
CiAgICAgICAgIC8vIDYuNiAtIElmIHRoZSBwYXVzZWQgYXR0cmlidXRlIGlzIGZhbHNlLCB0aGVu
IHNldCBpdCB0byB0cnVlLgogICAgICAgICBzZXRQYXVzZWQodHJ1ZSk7CkBAIC0xMjU0LDcgKzEy
MjAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVsb2FkQW5kUmVzdW1l
UGxheWJhY2tJZk5lZWRlZCgpCiAKICAgICBsb2FkKCk7CiAKLSAgICBpZiAobV92aWRlb0Z1bGxz
Y3JlZW5Nb2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKQorICAgIGlmIChtX3ZpZGVvRnVs
bHNjcmVlbk1vZGUgIT0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUp
CiAgICAgICAgIGVudGVyRnVsbHNjcmVlbihtX3ZpZGVvRnVsbHNjcmVlbk1vZGUpOwogCiAgICAg
aWYgKHByZXZpb3VzTWVkaWFUaW1lKSB7CkBAIC0xMjc0LDcgKzEyNDAsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UoKQogICAgIC8vIFRoZSBSZXNvdXJjZSBT
ZWxlY3Rpb24gQWxnb3JpdGhtCiAKICAgICAvLyAxLiBTZXQgdGhlIGVsZW1lbnTigJlzIG5ldHdv
cmtTdGF0ZSBhdHRyaWJ1dGUgdG8gdGhlIE5FVFdPUktfTk9fU09VUkNFIHZhbHVlLgotICAgIG1f
bmV0d29ya1N0YXRlID0gTkVUV09SS19OT19TT1VSQ0U7CisgICAgbV9uZXR3b3JrU3RhdGUgPSBO
ZXR3b3JrU3RhdGU6Ok5vU291cmNlOwogCiAgICAgLy8gMi4gU2V0IHRoZSBlbGVtZW504oCZcyBz
aG93IHBvc3RlciBmbGFnIHRvIHRydWUuCiAgICAgc2V0U2hvd1Bvc3RlckZsYWcodHJ1ZSk7CkBA
IC0xMzQ3LDE0ICsxMzEzLDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFS
ZXNvdXJjZSgpCiAgICAgICAgICAgICAvLyAgZWxlbWVudCBjaGlsZDogc2V0IHRoZSBuZXR3b3Jr
U3RhdGUgdG8gTkVUV09SS19FTVBUWSwgYW5kIGFib3J0IHRoZXNlIHN0ZXBzOyB0aGUgc3luY2hy
b25vdXMgc2VjdGlvbiBlbmRzLgogICAgICAgICAgICAgbV9sb2FkU3RhdGUgPSBXYWl0aW5nRm9y
U291cmNlOwogICAgICAgICAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoZmFsc2UpOwotICAg
ICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0VNUFRZOworICAgICAgICAgICAgbV9u
ZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGU6OkVtcHR5OwogCiAgICAgICAgICAgICBBTFdBWVNf
TE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibm90aGluZyB0byBsb2FkIik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyA3LiBTZXQgdGhlIG1lZGlhIGVsZW1lbnTi
gJlzIG5ldHdvcmtTdGF0ZSB0byBORVRXT1JLX0xPQURJTkcuCi0gICAgICAgIG1fbmV0d29ya1N0
YXRlID0gTkVUV09SS19MT0FESU5HOworICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE5ldHdvcmtT
dGF0ZTo6SWRsZTsKIAogICAgICAgICAvLyA4LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBs
ZSBldmVudCBuYW1lZCBsb2Fkc3RhcnQgYXQgdGhlIG1lZGlhIGVsZW1lbnQuCiAgICAgICAgIHNj
aGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmxvYWRzdGFydEV2ZW50KTsKQEAgLTE0MDYsNyArMTM3
Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJjZSgpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoIWlz
U2FmZVRvTG9hZFVSTChhYnNvbHV0ZVVSTCwgQ29tcGxhaW4pIHx8ICFkaXNwYXRjaEJlZm9yZUxv
YWRFdmVudChhYnNvbHV0ZVVSTC5zdHJpbmcoKSkpIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZl
VG9Mb2FkVVJMKGFic29sdXRlVVJMLCBJbnZhbGlkVVJMQWN0aW9uOjpDb21wbGFpbikgfHwgIWRp
c3BhdGNoQmVmb3JlTG9hZEV2ZW50KGFic29sdXRlVVJMLnN0cmluZygpKSkgewogICAgICAgICAg
ICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3Jt
YXRFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTQ0
Miw3ICsxNDA4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkTmV4dFNvdXJjZUNoaWxk
KCkKIHsKICAgICBDb250ZW50VHlwZSBjb250ZW50VHlwZTsKICAgICBTdHJpbmcga2V5U3lzdGVt
OwotICAgIFVSTCBtZWRpYVVSTCA9IHNlbGVjdE5leHRTb3VyY2VDaGlsZCgmY29udGVudFR5cGUs
ICZrZXlTeXN0ZW0sIENvbXBsYWluKTsKKyAgICBVUkwgbWVkaWFVUkwgPSBzZWxlY3ROZXh0U291
cmNlQ2hpbGQoJmNvbnRlbnRUeXBlLCAma2V5U3lzdGVtLCBJbnZhbGlkVVJMQWN0aW9uOjpDb21w
bGFpbik7CiAgICAgaWYgKCFtZWRpYVVSTC5pc1ZhbGlkKCkpIHsKICAgICAgICAgd2FpdEZvclNv
dXJjZUNoYW5nZSgpOwogICAgICAgICByZXR1cm47CkBAIC0xNDU3LDcgKzE0MjMsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWROZXh0U291cmNlQ2hpbGQoKQogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBl
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiB7Ci0gICAgQVNTRVJUKGlu
aXRpYWxVUkwuaXNFbXB0eSgpIHx8IGlzU2FmZVRvTG9hZFVSTChpbml0aWFsVVJMLCBDb21wbGFp
bikpOworICAgIEFTU0VSVChpbml0aWFsVVJMLmlzRW1wdHkoKSB8fCBpc1NhZmVUb0xvYWRVUkwo
aW5pdGlhbFVSTCwgSW52YWxpZFVSTEFjdGlvbjo6Q29tcGxhaW4pKTsKIAogICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIsIGluaXRpYWxVUkwsIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pOwogCkBA
IC0xNDkxLDcgKzE0NTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShj
b25zdCBVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VAogI2VuZGlmCiAKICAg
ICAvLyBUaGUgcmVzb3VyY2UgZmV0Y2ggYWxnb3JpdGhtCi0gICAgbV9uZXR3b3JrU3RhdGUgPSBO
RVRXT1JLX0xPQURJTkc7CisgICAgbV9uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGU6OklkbGU7
CiAKICAgICAvLyBJZiB0aGUgVVJMIHNob3VsZCBiZSBsb2FkZWQgZnJvbSB0aGUgYXBwbGljYXRp
b24gY2FjaGUsIHBhc3MgdGhlIFVSTCBvZiB0aGUgY2FjaGVkIGZpbGUgdG8gdGhlIG1lZGlhIGVu
Z2luZS4KICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlID0gbnVsbHB0cjsK
QEAgLTE2NTEsNyArMTYxNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZl
VGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKIAogICAgIC8vIFRoZSB1
c2VyIGFnZW50IG11c3Qgc3luY2hyb25vdXNseSB1bnNldCBbdGhlIHRleHQgdHJhY2sgY3VlIGFj
dGl2ZV0gZmxhZwogICAgIC8vIHdoZW5ldmVyIC4uLiB0aGUgbWVkaWEgZWxlbWVudCdzIHJlYWR5
U3RhdGUgaXMgY2hhbmdlZCBiYWNrIHRvIEhBVkVfTk9USElORy4KLSAgICBpZiAobV9yZWFkeVN0
YXRlICE9IEhBVkVfTk9USElORyAmJiBtX3BsYXllcikgeworICAgIGlmIChtX3JlYWR5U3RhdGUg
IT0gUmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcgJiYgbV9wbGF5ZXIpIHsKICAgICAgICAgY3VycmVu
dEN1ZXMgPSBtX2N1ZURhdGEtPmN1ZVRyZWUuYWxsT3ZlcmxhcHMoeyBtb3ZpZVRpbWUsIG1vdmll
VGltZSB9KTsKICAgICAgICAgaWYgKGN1cnJlbnRDdWVzLnNpemUoKSA+IDEpCiAgICAgICAgICAg
ICBzdGQ6OnNvcnQoY3VycmVudEN1ZXMuYmVnaW4oKSwgY3VycmVudEN1ZXMuZW5kKCksICZjb21w
YXJlQ3VlSW50ZXJ2YWwpOwpAQCAtMTkyMyw3ICsxODg5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogICAgIGlmICh0cmFj
ay5tb2RlKCkgIT0gVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZCAmJiB0cmFja0lzTG9hZGVkKQog
ICAgICAgICB0ZXh0VHJhY2tBZGRDdWVzKHRyYWNrLCAqdHJhY2suY3VlcygpKTsKIAotICAgIGNv
bmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkoQXNzdW1lVGV4dFRyYWNrVmlzaWJpbGl0eUNoYW5nZWQp
OworICAgIGNvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkoVGV4dFRyYWNrVmlzaWJpbGl0eUNoZWNr
VHlwZTo6QXNzdW1lVGV4dFRyYWNrVmlzaWJpbGl0eUNoYW5nZWQpOwogCiAgICAgaWYgKG1fdGV4
dFRyYWNrcyAmJiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKICAgICAgICAgbV90ZXh0
VHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CkBAIC0yMDk5LDcgKzIwNjUsNyBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTChjb25zdCBVUkwmIHVybCwgSW52YWxp
ZFVSTEFjdGlvbiBhY3Rpb25JZgogCiAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGRvY3VtZW50
KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lIHx8ICFkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2lu
KCkuY2FuRGlzcGxheSh1cmwpKSB7Ci0gICAgICAgIGlmIChhY3Rpb25JZkludmFsaWQgPT0gQ29t
cGxhaW4pIHsKKyAgICAgICAgaWYgKGFjdGlvbklmSW52YWxpZCA9PSBJbnZhbGlkVVJMQWN0aW9u
OjpDb21wbGFpbikgewogICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZh
aWxlZChmcmFtZS5nZXQoKSwgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpKTsK
ICAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCB1cmwgLCAiIHdhcyByZWplY3Rl
ZCBieSBTZWN1cml0eU9yaWdpbiIpOwogICAgICAgICB9CkBAIC0yMTA3LDcgKzIwNzMsNyBAQCBi
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTChjb25zdCBVUkwmIHVybCwgSW52
YWxpZFVSTEFjdGlvbiBhY3Rpb25JZgogICAgIH0KIAogICAgIGlmICghcG9ydEFsbG93ZWQodXJs
KSkgewotICAgICAgICBpZiAoYWN0aW9uSWZJbnZhbGlkID09IENvbXBsYWluKSB7CisgICAgICAg
IGlmIChhY3Rpb25JZkludmFsaWQgPT0gSW52YWxpZFVSTEFjdGlvbjo6Q29tcGxhaW4pIHsKICAg
ICAgICAgICAgIGlmIChmcmFtZSkKICAgICAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0
QmxvY2tlZExvYWRGYWlsZWQoKmZyYW1lLCB1cmwpOwogICAgICAgICAgICAgRVJST1JfTE9HKExP
R0lERU5USUZJRVIsIHVybCAsICIgd2FzIHJlamVjdGVkIGJlY2F1c2UgdGhlIHBvcnQgaXMgbm90
IGFsbG93ZWQiKTsKQEAgLTIxNDEsNyArMjEwNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
d2FpdEZvclNvdXJjZUNoYW5nZSgpCiAgICAgbV9sb2FkU3RhdGUgPSBXYWl0aW5nRm9yU291cmNl
OwogCiAgICAgLy8gNi4xNyAtIFdhaXRpbmc6IFNldCB0aGUgZWxlbWVudCdzIG5ldHdvcmtTdGF0
ZSBhdHRyaWJ1dGUgdG8gdGhlIE5FVFdPUktfTk9fU09VUkNFIHZhbHVlCi0gICAgbV9uZXR3b3Jr
U3RhdGUgPSBORVRXT1JLX05PX1NPVVJDRTsKKyAgICBtX25ldHdvcmtTdGF0ZSA9IE5ldHdvcmtT
dGF0ZTo6Tm9Tb3VyY2U7CiAKICAgICAvLyA2LjE4IC0gU2V0IHRoZSBlbGVtZW50J3Mgc2hvdyBw
b3N0ZXIgZmxhZyB0byB0cnVlLgogICAgIHNldFNob3dQb3N0ZXJGbGFnKHRydWUpOwpAQCAtMjE3
Nyw3ICsyMTQzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpub25lU3VwcG9ydGVkKCkKICAg
ICBmb3JnZXRSZXNvdXJjZVNwZWNpZmljVHJhY2tzKCk7CiAKICAgICAvLyA2LjMgLSBTZXQgdGhl
IGVsZW1lbnQncyBuZXR3b3JrU3RhdGUgYXR0cmlidXRlIHRvIHRoZSBORVRXT1JLX05PX1NPVVJD
RSB2YWx1ZS4KLSAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdPUktfTk9fU09VUkNFOworICAgIG1f
bmV0d29ya1N0YXRlID0gTmV0d29ya1N0YXRlOjpOb1NvdXJjZTsKIAogICAgIC8vIDYuNCAtIFNl
dCB0aGUgZWxlbWVudCdzIHNob3cgcG9zdGVyIGZsYWcgdG8gdHJ1ZS4KICAgICBzZXRTaG93UG9z
dGVyRmxhZyh0cnVlKTsKQEAgLTIyMjMsNyArMjE4OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFMb2FkaW5nRmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVy
cm9yCiAjZW5kaWYKIAogICAgIC8vIDMgLSBTZXQgdGhlIGVsZW1lbnQncyBuZXR3b3JrU3RhdGUg
YXR0cmlidXRlIHRvIHRoZSBORVRXT1JLX0lETEUgdmFsdWUuCi0gICAgbV9uZXR3b3JrU3RhdGUg
PSBORVRXT1JLX0lETEU7CisgICAgbV9uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGU6OklkbGU7
CiAKICAgICAvLyA0IC0gU2V0IHRoZSBlbGVtZW50J3MgZGVsYXlpbmctdGhlLWxvYWQtZXZlbnQg
ZmxhZyB0byBmYWxzZS4gVGhpcyBzdG9wcyBkZWxheWluZyB0aGUgbG9hZCBldmVudC4KICAgICBz
ZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CkBAIC0yMjgxLDcgKzIyNDcsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlIGVycm9yKQogCiAgICAgLy8gSWYgd2UgZmFpbGVkIHdoaWxlIHRyeWluZyB0byBsb2Fk
IGEgPHNvdXJjZT4gZWxlbWVudCwgdGhlIG1vdmllIHdhcyBuZXZlciBwYXJzZWQsIGFuZCB0aGVy
ZSBhcmUgbW9yZQogICAgIC8vIDxzb3VyY2U+IGNoaWxkcmVuLCBzY2hlZHVsZSB0aGUgbmV4dCBv
bmUKLSAgICBpZiAobV9yZWFkeVN0YXRlIDwgSEFWRV9NRVRBREFUQSAmJiBtX2xvYWRTdGF0ZSA9
PSBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQpIHsKKyAgICBpZiAobV9yZWFkeVN0YXRlIDwgUmVh
ZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhICYmIG1fbG9hZFN0YXRlID09IExvYWRpbmdGcm9tU291cmNl
RWxlbWVudCkgewogCiAgICAgICAgIC8vIHJlc291cmNlIHNlbGVjdGlvbiBhbGdvcml0aG0KICAg
ICAgICAgLy8gU3RlcCA5Lk90aGVyd2lzZS45IC0gRmFpbGVkIHdpdGggZWxlbWVudHM6IFF1ZXVl
IGEgdGFzaywgdXNpbmcgdGhlIERPTSBtYW5pcHVsYXRpb24gdGFzayBzb3VyY2UsIHRvIGZpcmUg
YSBzaW1wbGUgZXZlbnQgbmFtZWQgZXJyb3IgYXQgdGhlIGNhbmRpZGF0ZSBlbGVtZW50LgpAQCAt
MjMwNiw3ICsyMjcyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUxvYWRpbmdGYWls
ZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBlcnJvcikKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICgoZXJyb3IgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TmV0d29y
a0Vycm9yICYmIG1fcmVhZHlTdGF0ZSA+PSBIQVZFX01FVEFEQVRBKSB8fCBlcnJvciA9PSBNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlOjpEZWNvZGVFcnJvcikKKyAgICBpZiAoKGVycm9yID09IE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtFcnJvciAmJiBtX3JlYWR5U3RhdGUgPj0g
UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKSB8fCBlcnJvciA9PSBNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlOjpEZWNvZGVFcnJvcikKICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkRmF0YWxseShl
cnJvcik7CiAgICAgZWxzZSBpZiAoKGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6
OkZvcm1hdEVycm9yIHx8IGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdv
cmtFcnJvcikgJiYgbV9sb2FkU3RhdGUgPT0gTG9hZGluZ0Zyb21TcmNBdHRyKQogICAgICAgICBu
b25lU3VwcG9ydGVkKCk7CkBAIC0yMzMxLDcgKzIyOTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIHN0YXRlKQogCiAg
ICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5KSB7CiAgICAg
ICAgIC8vIEp1c3QgdXBkYXRlIHRoZSBjYWNoZWQgc3RhdGUgYW5kIGxlYXZlLCB3ZSBjYW4ndCBk
byBhbnl0aGluZy4KLSAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0VNUFRZOworICAg
ICAgICBtX25ldHdvcmtTdGF0ZSA9IE5ldHdvcmtTdGF0ZTo6RW1wdHk7CiAgICAgICAgIGludmFs
aWRhdGVTdHlsZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjM0MiwyMiArMjMwOCwy
MiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6
TmV0d29ya1N0YXRlIHN0YXRlKQogICAgIH0KIAogICAgIGlmIChzdGF0ZSA9PSBNZWRpYVBsYXll
cjo6TmV0d29ya1N0YXRlOjpJZGxlKSB7Ci0gICAgICAgIGlmIChtX25ldHdvcmtTdGF0ZSA+IE5F
VFdPUktfSURMRSkgeworICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPiBOZXR3b3JrU3RhdGU6
OklkbGUpIHsKICAgICAgICAgICAgIGNoYW5nZU5ldHdvcmtTdGF0ZUZyb21Mb2FkaW5nVG9JZGxl
KCk7CiAgICAgICAgICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdPUktfSURMRTsKKyAg
ICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTmV0d29ya1N0YXRlOjpJZGxlOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Okxv
YWRpbmcpIHsKLSAgICAgICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTkVUV09SS19MT0FESU5HIHx8
IG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktfTk9fU09VUkNFKQorICAgICAgICBpZiAobV9uZXR3
b3JrU3RhdGUgPCBOZXR3b3JrU3RhdGU6OklkbGUgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTmV0d29y
a1N0YXRlOjpOb1NvdXJjZSkKICAgICAgICAgICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7
Ci0gICAgICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19MT0FESU5HOworICAgICAgICBtX25l
dHdvcmtTdGF0ZSA9IE5ldHdvcmtTdGF0ZTo6SWRsZTsKICAgICB9CiAKICAgICBpZiAoc3RhdGUg
PT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGVkKSB7Ci0gICAgICAgIGlmIChtX25l
dHdvcmtTdGF0ZSAhPSBORVRXT1JLX0lETEUpCisgICAgICAgIGlmIChtX25ldHdvcmtTdGF0ZSAh
PSBOZXR3b3JrU3RhdGU6OklkbGUpCiAgICAgICAgICAgICBjaGFuZ2VOZXR3b3JrU3RhdGVGcm9t
TG9hZGluZ1RvSWRsZSgpOwogICAgICAgICBtX2NvbXBsZXRlbHlMb2FkZWQgPSB0cnVlOwogICAg
IH0KQEAgLTIzNzMsNyArMjMzOSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2hhbmdlTmV0
d29ya1N0YXRlRnJvbUxvYWRpbmdUb0lkbGUoKQogICAgIC8vIGZvciBmaWxlcyB0aGF0IGxvYWQg
dmVyeSBxdWlja2x5LgogICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnByb2dyZXNzRXZl
bnQpOwogICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnN1c3BlbmRFdmVudCk7Ci0gICAg
bV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0lETEU7CisgICAgbV9uZXR3b3JrU3RhdGUgPSBOZXR3
b3JrU3RhdGU6OklkbGU7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJS
ZWFkeVN0YXRlQ2hhbmdlZCgpCkBAIC0yMzk0LDcgKzIzNjAsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQoKQogCiBFeHBlY3RlZDx2b2lkLCBN
ZWRpYVBsYXliYWNrRGVuaWFsUmVhc29uPiBIVE1MTWVkaWFFbGVtZW50OjpjYW5UcmFuc2l0aW9u
RnJvbUF1dG9wbGF5VG9QbGF5KCkgY29uc3QKIHsKLSAgICBpZiAobV9yZWFkeVN0YXRlICE9IEhB
VkVfRU5PVUdIX0RBVEEpIHsKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IFJlYWR5U3RhdGU6Okhh
dmVFbm91Z2hEYXRhKSB7CiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIm1fcmVh
ZHlTdGF0ZSAhPSBIQVZFX0VOT1VHSF9EQVRBIik7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChNZWRpYVBsYXliYWNrRGVuaWFsUmVhc29uOjpQYWdlQ29uc2VudFJlcXVpcmVkKTsKICAg
ICB9CkBAIC0yNDY2LDI4ICsyNDMyLDI4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVh
ZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKICAgICBlbHNlIHsKICAgICAg
ICAgLy8gSWYgYSBtZWRpYSBmaWxlIGhhcyB0ZXh0IHRyYWNrcyB0aGUgcmVhZHlTdGF0ZSBtYXkg
bm90IHByb2dyZXNzIGJleW9uZCBIQVZFX0ZVVFVSRV9EQVRBIHVudGlsCiAgICAgICAgIC8vIHRo
ZSB0ZXh0IHRyYWNrcyBhcmUgcmVhZHksIHJlZ2FyZGxlc3Mgb2YgdGhlIHN0YXRlIG9mIHRoZSBt
ZWRpYSBmaWxlLgotICAgICAgICBpZiAobmV3U3RhdGUgPD0gSEFWRV9NRVRBREFUQSkKKyAgICAg
ICAgaWYgKG5ld1N0YXRlIDw9IFJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSkKICAgICAgICAgICAg
IG1fcmVhZHlTdGF0ZSA9IG5ld1N0YXRlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jl
YWR5U3RhdGUgPSBIQVZFX0NVUlJFTlRfREFUQTsKKyAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9
IFJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YTsKICAgICB9CiAKICAgICBpZiAob2xkU3RhdGUg
PiBtX3JlYWR5U3RhdGVNYXhpbXVtKQogICAgICAgICBtX3JlYWR5U3RhdGVNYXhpbXVtID0gb2xk
U3RhdGU7CiAKLSAgICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkKKyAgICBp
ZiAobV9uZXR3b3JrU3RhdGUgPT0gTmV0d29ya1N0YXRlOjpFbXB0eSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKG1fc2Vla2luZykgewogICAgICAgICAvLyA0LjguMTAuOSwgc3RlcCAxMQot
ICAgICAgICBpZiAod2FzUG90ZW50aWFsbHlQbGF5aW5nICYmIG1fcmVhZHlTdGF0ZSA8IEhBVkVf
RlVUVVJFX0RBVEEpCisgICAgICAgIGlmICh3YXNQb3RlbnRpYWxseVBsYXlpbmcgJiYgbV9yZWFk
eVN0YXRlIDwgUmVhZHlTdGF0ZTo6SGF2ZUZ1dHVyZURhdGEpCiAgICAgICAgICAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQpOwogCiAgICAgICAgIC8vIDQuOC4xMC4x
MCBzdGVwIDE0ICYgMTUuCi0gICAgICAgIGlmIChtX3NlZWtSZXF1ZXN0ZWQgJiYgIW1fcGxheWVy
LT5zZWVraW5nKCkgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfQ1VSUkVOVF9EQVRBKQorICAgICAg
ICBpZiAobV9zZWVrUmVxdWVzdGVkICYmICFtX3BsYXllci0+c2Vla2luZygpICYmIG1fcmVhZHlT
dGF0ZSA+PSBSZWFkeVN0YXRlOjpIYXZlQ3VycmVudERhdGEpCiAgICAgICAgICAgICBmaW5pc2hT
ZWVrKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHdhc1BvdGVudGlhbGx5UGxheWluZyAm
JiBtX3JlYWR5U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBKSB7CisgICAgICAgIGlmICh3YXNQb3Rl
bnRpYWxseVBsYXlpbmcgJiYgbV9yZWFkeVN0YXRlIDwgUmVhZHlTdGF0ZTo6SGF2ZUZ1dHVyZURh
dGEpIHsKICAgICAgICAgICAgIC8vIDQuOC4xMC44CiAgICAgICAgICAgICBpbnZhbGlkYXRlQ2Fj
aGVkVGltZSgpOwogICAgICAgICAgICAgc2NoZWR1bGVUaW1ldXBkYXRlRXZlbnQoZmFsc2UpOwpA
QCAtMjUwMiw3ICsyNDY4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogICAgICAgICAvLyBpZi9ob3cgdGhpbmdz
IGxpa2UgbG9hZGVkbWV0YWRhdGFFdmVudCBzaG91bGQgaGFwcGVuIGlmCiAgICAgICAgIC8vIHdl
IGdvIGRpcmVjdGx5IGZyb20gYmVsb3cgSEFWRV9NRVRBREFUQSB0byBoaWdoZXIgdGhhbgogICAg
ICAgICAvLyBIQVZFX01FVEFEQVRBLgotICAgICAgICBpZiAobV9yZWFkeVN0YXRlID49IEhBVkVf
TUVUQURBVEEgJiYgb2xkU3RhdGUgPCBIQVZFX01FVEFEQVRBKSB7CisgICAgICAgIGlmIChtX3Jl
YWR5U3RhdGUgPj0gUmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhICYmIG9sZFN0YXRlIDwgUmVhZHlT
dGF0ZTo6SGF2ZU1ldGFkYXRhKSB7CiAgICAgICAgICAgICBwcmVwYXJlTWVkaWFGcmFnbWVudFVS
SSgpOwogICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZHVyYXRpb25jaGFu
Z2VFdmVudCk7CiAgICAgICAgICAgICBzY2hlZHVsZVJlc2l6ZUV2ZW50KCk7CkBAIC0yNTM3LDEx
ICsyNTAzLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKIAogICAgICAgICAgICAgLy8gQXMgdGhlIHNwZWMgb25s
eSBtZW50aW9uZXMgSEFWRV9NRVRBREFUQSwgcnVuIHRoZSBsYXRlcgogICAgICAgICAgICAgLy8g
c3RlcHMgaWYgd2UgYXJlIG1vdmluZyB0byBhIGhpZ2hlciBzdGF0ZS4KLSAgICAgICAgICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gSEFWRV9NRVRBREFUQSkKKyAgICAgICAgICAgIGlmIChtX3JlYWR5
U3RhdGUgPT0gUmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0NVUlJFTlRf
REFUQSAmJiBvbGRTdGF0ZSA8IEhBVkVfQ1VSUkVOVF9EQVRBKSB7CisgICAgICAgIGlmIChtX3Jl
YWR5U3RhdGUgPj0gUmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhICYmIG9sZFN0YXRlIDwgUmVh
ZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhKSB7CiAgICAgICAgICAgICBpZiAoIW1faGF2ZUZpcmVk
TG9hZGVkRGF0YSkgewogICAgICAgICAgICAgICAgIG1faGF2ZUZpcmVkTG9hZGVkRGF0YSA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkubG9hZGVkZGF0
YUV2ZW50KTsKQEAgLTI1NTMsMTQgKzI1MTksMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogICAgICAgICAgICAg
c2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoZmFsc2UpOwogCiAgICAgICAgICAgICAvLyBJZiB0aGUg
bmV3IHJlYWR5IHN0YXRlIGlzIEhBVkVfRlVUVVJFX0RBVEEgb3IgSEFWRV9FTk9VR0hfREFUQSwg
dGhlbiB0aGUgcmVsZXZhbnQgc3RlcHMgYmVsb3cgbXVzdCB0aGVuIGJlIHJ1biBhbHNvLgotICAg
ICAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8IEhBVkVfRlVUVVJFX0RBVEEpCisgICAgICAgICAg
ICBpZiAobV9yZWFkeVN0YXRlIDwgUmVhZHlTdGF0ZTo6SGF2ZUZ1dHVyZURhdGEpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXRyYWNrc0FyZVJlYWR5
KQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBIQVZF
X0ZVVFVSRV9EQVRBICYmIG9sZFN0YXRlIDw9IEhBVkVfQ1VSUkVOVF9EQVRBKSB7CisgICAgICAg
IGlmIChtX3JlYWR5U3RhdGUgPT0gUmVhZHlTdGF0ZTo6SGF2ZUZ1dHVyZURhdGEgJiYgb2xkU3Rh
dGUgPD0gUmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhKSB7CiAgICAgICAgICAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS5jYW5wbGF5RXZlbnQpOwogCiAgICAgICAgICAgICAvLyBJZiB0
aGUgZWxlbWVudOKAmXMgcGF1c2VkIGF0dHJpYnV0ZSBpcyBmYWxzZSwgdGhlIHVzZXIgYWdlbnQg
bXVzdCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBwbGF5aW5nIGF0
IHRoZSBlbGVtZW50LgpAQCAtMjU2OSwxMSArMjUzNSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gSEFW
RV9FTk9VR0hfREFUQSAmJiBvbGRTdGF0ZSA8IEhBVkVfRU5PVUdIX0RBVEEpIHsKKyAgICAgICAg
aWYgKG1fcmVhZHlTdGF0ZSA9PSBSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YSAmJiBvbGRTdGF0
ZSA8IFJlYWR5U3RhdGU6OkhhdmVFbm91Z2hEYXRhKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUg
cHJldmlvdXMgcmVhZHkgc3RhdGUgd2FzIEhBVkVfQ1VSUkVOVF9EQVRBIG9yIGxlc3MsCiAgICAg
ICAgICAgICAvLyB0aGUgdXNlciBhZ2VudCBtdXN0IHF1ZXVlIGEgbWVkaWEgZWxlbWVudCB0YXNr
IGdpdmVuIHRoZSBtZWRpYSBlbGVtZW50IHRvIGZpcmUgYW4gZXZlbnQgbmFtZWQgY2FucGxheSBh
dCB0aGUgZWxlbWVudCwKICAgICAgICAgICAgIC8vIGFuZCwgaWYgdGhlIGVsZW1lbnQncyBwYXVz
ZWQgYXR0cmlidXRlIGlzIGZhbHNlLCBub3RpZnkgYWJvdXQgcGxheWluZyBmb3IgdGhlIGVsZW1l
bnQuCi0gICAgICAgICAgICBpZiAob2xkU3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEpIHsKKyAg
ICAgICAgICAgIGlmIChvbGRTdGF0ZSA8PSBSZWFkeVN0YXRlOjpIYXZlQ3VycmVudERhdGEpIHsK
ICAgICAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5jYW5wbGF5RXZlbnQp
OwogICAgICAgICAgICAgICAgIGlmICghcGF1c2VkKCkpCiAgICAgICAgICAgICAgICAgICAgIHNj
aGVkdWxlTm90aWZ5QWJvdXRQbGF5aW5nKCk7CkBAIC0yNjA2LDcgKzI1NzIsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3Rh
dGUpCiAKICAgICAvLyBJZiB3ZSB0cmFuc2l0aW9uIHRvIHRoZSBGdXR1cmUgRGF0YSBzdGF0ZSBh
bmQgd2UncmUgYWJvdXQgdG8gYmVnaW4gcGxheWluZywgZW5zdXJlIHBsYXliYWNrIGlzIGFjdHVh
bGx5IHBlcm1pdHRlZCBmaXJzdCwKICAgICAvLyBob25vcmluZyBhbnkgcGxheWJhY2sgZGVuaWFs
IHJlYXNvbnMgc3VjaCBhcyB0aGUgcmVxdWlyZW1lbnQgb2YgYSB1c2VyIGdlc3R1cmUuCi0gICAg
aWYgKG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0ZVVFVSRV9EQVRBICYmIG9sZFN0YXRlIDwgSEFWRV9G
VVRVUkVfREFUQSAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiAhbWVkaWFTZXNzaW9uKCkucGxh
eWJhY2tTdGF0ZUNoYW5nZVBlcm1pdHRlZChNZWRpYVBsYXliYWNrU3RhdGU6OlBsYXlpbmcpKSB7
CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBSZWFkeVN0YXRlOjpIYXZlRnV0dXJlRGF0YSAmJiBv
bGRTdGF0ZSA8IFJlYWR5U3RhdGU6OkhhdmVGdXR1cmVEYXRhICYmIHBvdGVudGlhbGx5UGxheWlu
ZygpICYmICFtZWRpYVNlc3Npb24oKS5wbGF5YmFja1N0YXRlQ2hhbmdlUGVybWl0dGVkKE1lZGlh
UGxheWJhY2tTdGF0ZTo6UGxheWluZykpIHsKICAgICAgICAgYXV0byBjYW5UcmFuc2l0aW9uID0g
Y2FuVHJhbnNpdGlvbkZyb21BdXRvcGxheVRvUGxheSgpOwogICAgICAgICBpZiAoIWNhblRyYW5z
aXRpb24gJiYgY2FuVHJhbnNpdGlvbi5lcnJvcigpID09IE1lZGlhUGxheWJhY2tEZW5pYWxSZWFz
b246OlVzZXJHZXN0dXJlUmVxdWlyZWQpCiAgICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsICJBdXRvcGxheSBibG9ja2VkLCB1c2VyIGdlc3R1cmUgcmVxdWlyZWQiKTsKQEAgLTI4
NjUsNyArMjgzMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJXYWl0aW5n
Rm9yS2V5Q2hhbmdlZCgpCiAgICAgLy8gU2V0IHRoZSByZWFkeVN0YXRlIG9mIG1lZGlhIGVsZW1l
bnQgdG8gSEFWRV9DVVJSRU5UX0RBVEEuCiAgICAgLy8gT3RoZXJ3aXNlCiAgICAgLy8gU2V0IHRo
ZSByZWFkeVN0YXRlIG9mIG1lZGlhIGVsZW1lbnQgdG8gSEFWRV9NRVRBREFUQS4KLSAgICBSZWFk
eVN0YXRlIG5leHRSZWFkeVN0YXRlID0gYnVmZmVyZWQoKS0+Y29udGFpbihjdXJyZW50VGltZSgp
KSA/IEhBVkVfQ1VSUkVOVF9EQVRBIDogSEFWRV9NRVRBREFUQTsKKyAgICBSZWFkeVN0YXRlIG5l
eHRSZWFkeVN0YXRlID0gYnVmZmVyZWQoKS0+Y29udGFpbihjdXJyZW50VGltZSgpKSA/IFJlYWR5
U3RhdGU6OkhhdmVDdXJyZW50RGF0YSA6IFJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YTsKICAgICBp
ZiAobmV4dFJlYWR5U3RhdGUgPCBtX3JlYWR5U3RhdGUpCiAgICAgICAgIHNldFJlYWR5U3RhdGUo
c3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU+KG5leHRSZWFkeVN0YXRlKSk7CiAK
QEAgLTI5NDksNyArMjkxNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50VW5y
ZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnByb2dyZXNzRXZlbnRUaW1lckZpcmVkKCkKIHsKICAgICBBU1NFUlQobV9w
bGF5ZXIpOwotICAgIGlmIChtX25ldHdvcmtTdGF0ZSAhPSBORVRXT1JLX0xPQURJTkcpCisgICAg
aWYgKG1fbmV0d29ya1N0YXRlICE9IE5ldHdvcmtTdGF0ZTo6SWRsZSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmICghbV9wbGF5ZXItPnN1cHBvcnRzUHJvZ3Jlc3NNb25pdG9yaW5nKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTMwOTcsMTEgKzMwNjMsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIGluVGltZSwgY29uc3QgTWVkaWFU
aW0KICAgICBzZXRTaG93UG9zdGVyRmxhZyhmYWxzZSk7CiAKICAgICAvLyAyIC0gSWYgdGhlIG1l
ZGlhIGVsZW1lbnQncyByZWFkeVN0YXRlIGlzIEhBVkVfTk9USElORywgYWJvcnQgdGhlc2Ugc3Rl
cHMuCi0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBIQVZFX05PVEhJTkcgfHwgIW1fcGxheWVyKQor
ICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gUmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcgfHwgIW1fcGxh
eWVyKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiB0aGUgbWVkaWEgZW5naW5lIGhhcyBi
ZWVuIHRvbGQgdG8gcG9zdHBvbmUgbG9hZGluZyBkYXRhLCBsZXQgaXQgZ28gYWhlYWQgbm93Lgot
ICAgIGlmIChtX3ByZWxvYWQgPCBNZWRpYVBsYXllcjo6UHJlbG9hZDo6QXV0byAmJiBtX3JlYWR5
U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBKQorICAgIGlmIChtX3ByZWxvYWQgPCBNZWRpYVBsYXll
cjo6UHJlbG9hZDo6QXV0byAmJiBtX3JlYWR5U3RhdGUgPCBSZWFkeVN0YXRlOjpIYXZlRnV0dXJl
RGF0YSkKICAgICAgICAgcHJlcGFyZVRvUGxheSgpOwogCiAgICAgLy8gR2V0IHRoZSBjdXJyZW50
IHRpbWUgYmVmb3JlIHNldHRpbmcgbV9zZWVraW5nLCBtX2xhc3RTZWVrVGltZSBpcyByZXR1cm5l
ZCBvbmNlIGl0IGlzIHNldC4KQEAgLTMxMTgsNyArMzA4NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiBpblRpbWUsIGNvbnN0IE1l
ZGlhVGltCiAgICAgICAgICAgICBub3cgPSBtX3BlbmRpbmdTZWVrLT5ub3c7CiAgICAgICAgICAg
ICBtX3BlbmRpbmdTZWVrID0gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBtX3BlbmRpbmdT
ZWVrVHlwZSA9IE5vU2VlazsKKyAgICAgICAgbV9wZW5kaW5nU2Vla1R5cGUgPSBTZWVrVHlwZTo6
Tm9TZWVrOwogICAgIH0KIAogICAgIC8vIDQgLSBTZXQgdGhlIHNlZWtpbmcgSURMIGF0dHJpYnV0
ZSB0byB0cnVlLgpAQCAtMzE5NCw4ICszMTYwLDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZWVrVGFzaygpCiAgICAgLy8gU2hvcnQgY2lyY3VpdCBzZWVraW5nIHRvIHRoZSBjdXJyZW50IHRp
bWUgYnkganVzdCBmaXJpbmcgdGhlIGV2ZW50cyBpZiBubyBzZWVrIGlzIHJlcXVpcmVkLgogICAg
IC8vIERvbid0IHNraXAgY2FsbGluZyB0aGUgbWVkaWEgZW5naW5lIGlmIDEpIHdlIGFyZSBpbiBw
b3N0ZXIgbW9kZSAoYmVjYXVzZSBhIHNlZWsgc2hvdWxkIGFsd2F5cyBjYW5jZWwKICAgICAvLyBw
b3N0ZXIgZGlzcGxheSksIG9yIDIpIGlmIHRoZXJlIGlzIGEgcGVuZGluZyBmYXN0IHNlZWssIG9y
IDMpIGlmIHRoaXMgc2VlayBpcyBub3QgYW4gZXhhY3Qgc2VlawotICAgIFNlZWtUeXBlIHRoaXNT
ZWVrVHlwZSA9IChuZWdhdGl2ZVRvbGVyYW5jZSA9PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkgJiYg
cG9zaXRpdmVUb2xlcmFuY2UgPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKSA/IFByZWNpc2UgOiBG
YXN0OwotICAgIGlmICghbm9TZWVrUmVxdWlyZWQgJiYgdGltZSA9PSBub3cgJiYgdGhpc1NlZWtU
eXBlID09IFByZWNpc2UgJiYgbV9wZW5kaW5nU2Vla1R5cGUgIT0gRmFzdCAmJiAhc2hvd1Bvc3Rl
ckZsYWcoKSkKKyAgICBTZWVrVHlwZSB0aGlzU2Vla1R5cGUgPSAobmVnYXRpdmVUb2xlcmFuY2Ug
PT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpICYmIHBvc2l0aXZlVG9sZXJhbmNlID09IE1lZGlhVGlt
ZTo6emVyb1RpbWUoKSkgPyBTZWVrVHlwZTo6UHJlY2lzZSA6IFNlZWtUeXBlOjpGYXN0OworICAg
IGlmICghbm9TZWVrUmVxdWlyZWQgJiYgdGltZSA9PSBub3cgJiYgdGhpc1NlZWtUeXBlID09IFNl
ZWtUeXBlOjpQcmVjaXNlICYmIG1fcGVuZGluZ1NlZWtUeXBlICE9IFNlZWtUeXBlOjpGYXN0ICYm
ICFzaG93UG9zdGVyRmxhZygpKQogICAgICAgICBub1NlZWtSZXF1aXJlZCA9IHRydWU7CiAKICNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQpAQCAtMzIxMiw3ICszMTc4LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzZWVrVGFzaygpCiAgICAgICAgICAgICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVu
dChmYWxzZSk7CiAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5zZWVrZWRF
dmVudCk7CiAKLSAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLnF1aXJrcygpLm5lZWRzQ2FuUGxh
eUFmdGVyU2Vla2VkUXVpcmsoKSAmJiBtX3JlYWR5U3RhdGUgPiBIQVZFX0NVUlJFTlRfREFUQSkK
KyAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLnF1aXJrcygpLm5lZWRzQ2FuUGxheUFmdGVyU2Vl
a2VkUXVpcmsoKSAmJiBtX3JlYWR5U3RhdGUgPiBSZWFkeVN0YXRlOjpIYXZlQ3VycmVudERhdGEp
CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuY2FucGxheUV2ZW50
KTsKICAgICAgICAgfQogICAgICAgICBjbGVhclNlZWtpbmcoKTsKQEAgLTMyNDEsNyArMzIwNyw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJTZWVraW5nKCkKIHsKICAgICBtX3NlZWtp
bmcgPSBmYWxzZTsKICAgICBtX3NlZWtSZXF1ZXN0ZWQgPSBmYWxzZTsKLSAgICBtX3BlbmRpbmdT
ZWVrVHlwZSA9IE5vU2VlazsKKyAgICBtX3BlbmRpbmdTZWVrVHlwZSA9IFNlZWtUeXBlOjpOb1Nl
ZWs7CiAgICAgbV93YXNQbGF5aW5nQmVmb3JlU2Vla2luZyA9IGZhbHNlOwogICAgIGludmFsaWRh
dGVDYWNoZWRUaW1lKCk7CiB9CkBAIC0zMjY0LDcgKzMyMzAsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmZpbmlzaFNlZWsoKQogICAgIC8vIDE3IC0gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBz
aW1wbGUgZXZlbnQgbmFtZWQgc2Vla2VkIGF0IHRoZSBlbGVtZW50LgogICAgIHNjaGVkdWxlRXZl
bnQoZXZlbnROYW1lcygpLnNlZWtlZEV2ZW50KTsKIAotICAgIGlmIChkb2N1bWVudCgpLnF1aXJr
cygpLm5lZWRzQ2FuUGxheUFmdGVyU2Vla2VkUXVpcmsoKSAmJiBtX3JlYWR5U3RhdGUgPiBIQVZF
X0NVUlJFTlRfREFUQSkKKyAgICBpZiAoZG9jdW1lbnQoKS5xdWlya3MoKS5uZWVkc0NhblBsYXlB
ZnRlclNlZWtlZFF1aXJrKCkgJiYgbV9yZWFkeVN0YXRlID4gUmVhZHlTdGF0ZTo6SGF2ZUN1cnJl
bnREYXRhKQogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5jYW5wbGF5RXZlbnQp
OwogCiAgICAgaWYgKG1fbWVkaWFTZXNzaW9uKQpAQCAtMzQyNCw3ICszMzkwLDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gSFRNTE1lZGlhRWxlbWVudDo6c2V0Q3VycmVudFRpbWVGb3JCaW5kaW5ncyhk
b3VibGUgdGltZSkKICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCi0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9
PSBIQVZFX05PVEhJTkcgfHwgIW1fcGxheWVyKSB7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBS
ZWFkeVN0YXRlOjpIYXZlTm90aGluZyB8fCAhbV9wbGF5ZXIpIHsKICAgICAgICAgbV9kZWZhdWx0
UGxheWJhY2tTdGFydFBvc2l0aW9uID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHRpbWUp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAgLTM0NDAsNyArMzQwNiw3IEBAIGRvdWJs
ZSBIVE1MTWVkaWFFbGVtZW50OjpkdXJhdGlvbigpIGNvbnN0CiAKIE1lZGlhVGltZSBIVE1MTWVk
aWFFbGVtZW50OjpkdXJhdGlvbk1lZGlhVGltZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcGxheWVy
ICYmIG1fcmVhZHlTdGF0ZSA+PSBIQVZFX01FVEFEQVRBKQorICAgIGlmIChtX3BsYXllciAmJiBt
X3JlYWR5U3RhdGUgPj0gUmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKQogICAgICAgICByZXR1cm4g
bV9wbGF5ZXItPmR1cmF0aW9uKCk7CiAKICAgICByZXR1cm4gTWVkaWFUaW1lOjppbnZhbGlkVGlt
ZSgpOwpAQCAtMzY5Miw3ICszNjU4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50
ZXJuYWwoKQogICAgIH0KIAogICAgIC8vIDQuOC4xMC45LiBQbGF5aW5nIHRoZSBtZWRpYSByZXNv
dXJjZQotICAgIGlmICghbV9wbGF5ZXIgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBU
WSkKKyAgICBpZiAoIW1fcGxheWVyIHx8IG1fbmV0d29ya1N0YXRlID09IE5ldHdvcmtTdGF0ZTo6
RW1wdHkpCiAgICAgICAgIHNlbGVjdE1lZGlhUmVzb3VyY2UoKTsKIAogICAgIGlmIChlbmRlZFBs
YXliYWNrKCkpCkBAIC0zNzE3LDExICszNjgzLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cGxheUludGVybmFsKCkKICAgICAgICAgLy8gcXVldWUgYSBtZWRpYSBlbGVtZW50IHRhc2sgZ2l2
ZW4gdGhlIG1lZGlhIGVsZW1lbnQgdG8gZmlyZSBhbiBldmVudCBuYW1lZCB3YWl0aW5nIGF0IHRo
ZSBlbGVtZW50LgogICAgICAgICAvLyBPdGhlcndpc2UsIHRoZSBtZWRpYSBlbGVtZW50J3MgcmVh
ZHlTdGF0ZSBhdHRyaWJ1dGUgaGFzIHRoZSB2YWx1ZSBIQVZFX0ZVVFVSRV9EQVRBIG9yIEhBVkVf
RU5PVUdIX0RBVEE6CiAgICAgICAgIC8vIG5vdGlmeSBhYm91dCBwbGF5aW5nIGZvciB0aGUgZWxl
bWVudC4KLSAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSkKKyAg
ICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8PSBSZWFkeVN0YXRlOjpIYXZlQ3VycmVudERhdGEpCiAg
ICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBzY2hlZHVsZU5vdGlmeUFib3V0UGxheWluZygpOwotICAg
IH0gZWxzZSBpZiAobV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpCisgICAgfSBlbHNl
IGlmIChtX3JlYWR5U3RhdGUgPj0gUmVhZHlTdGF0ZTo6SGF2ZUZ1dHVyZURhdGEpCiAgICAgICAg
IHNjaGVkdWxlUmVzb2x2ZVBlbmRpbmdQbGF5UHJvbWlzZXMoKTsKIAogICAgIGlmIChwcm9jZXNz
aW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7CkBAIC0zNzc5LDcgKzM3NDUsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwoKQogICAgIH0KIAogICAgIC8vIDQuOC4xMC45
LiBQbGF5aW5nIHRoZSBtZWRpYSByZXNvdXJjZQotICAgIGlmICghbV9wbGF5ZXIgfHwgbV9uZXR3
b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkgeworICAgIGlmICghbV9wbGF5ZXIgfHwgbV9uZXR3
b3JrU3RhdGUgPT0gTmV0d29ya1N0YXRlOjpFbXB0eSkgewogICAgICAgICAvLyBVbmxlc3MgdGhl
IHJlc3RyaWN0aW9uIG9uIG1lZGlhIHJlcXVpcmluZyB1c2VyIGFjdGlvbiBoYXMgYmVlbiBsaWZ0
ZWQKICAgICAgICAgLy8gZG9uJ3QgdHJpZ2dlciBsb2FkaW5nIGlmIGEgc2NyaXB0IGNhbGxzIHBh
dXNlKCkuCiAgICAgICAgIGlmICghbWVkaWFTZXNzaW9uKCkucGxheWJhY2tTdGF0ZUNoYW5nZVBl
cm1pdHRlZChNZWRpYVBsYXliYWNrU3RhdGU6OlBsYXlpbmcpKQpAQCAtMzk1OSw3ICszOTI1LDcg
QEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpidWZmZXJpbmcoKSBjb25zdAogICAgIC8vIGJ1dCBo
YXMgbm90IHlldCBvYnRhaW5lZCBlbm91Z2ggZGF0YSB0byByZXN1bWUgcGxheWJhY2suIChOb3Rl
IHRoYXQgdGhlIGVsZW1lbnQgaXMgc3RpbGwgY29uc2lkZXJlZAogICAgIC8vIHRvIGJlIOKAnHBs
YXlpbmfigJ0gd2hlbiBpdCBpcyDigJxidWZmZXJpbmfigJ0uIFdoZW5ldmVyIDpidWZmZXJpbmcg
bWF0Y2hlcyBhbiBlbGVtZW50LCA6cGxheWluZyBhbHNvCiAgICAgLy8gbWF0Y2hlcyB0aGUgZWxl
bWVudC4pCi0gICAgcmV0dXJuICFwYXVzZWQoKSAmJiBtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JL
X0xPQURJTkcgJiYgbV9yZWFkeVN0YXRlIDw9IEhBVkVfQ1VSUkVOVF9EQVRBOworICAgIHJldHVy
biAhcGF1c2VkKCkgJiYgbV9uZXR3b3JrU3RhdGUgPT0gTmV0d29ya1N0YXRlOjpJZGxlICYmIG1f
cmVhZHlTdGF0ZSA8PSBSZWFkeVN0YXRlOjpIYXZlQ3VycmVudERhdGE7CiB9CiAKIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6c3RhbGxlZCgpIGNvbnN0CkBAIC0zOTc0LDcgKzM5NDAsNyBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OnN0YWxsZWQoKSBjb25zdAogICAgIC8vIHN0YWxsIHRpbWVvdXQu
IFtIVE1MXSAoTm90ZSB0aGF0LCBsaWtlIHdpdGggdGhlIDpidWZmZXJpbmcgcHNldWRvLWNsYXNz
LCB0aGUgZWxlbWVudCBpcyBzdGlsbAogICAgIC8vIGNvbnNpZGVyZWQgdG8gYmUg4oCccGxheWlu
Z+KAnSB3aGVuIGl0IGlzIOKAnHN0YWxsZWTigJ0uIFdoZW5ldmVyIDpzdGFsbGVkIG1hdGNoZXMg
YW4gZWxlbWVudCwgOnBsYXlpbmcKICAgICAvLyBhbHNvIG1hdGNoZXMgdGhlIGVsZW1lbnQuKQot
ICAgIHJldHVybiAhcGF1c2VkKCkgJiYgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19MT0FESU5H
ICYmIG1fcmVhZHlTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSAmJiBtX3NlbnRTdGFsbGVkRXZl
bnQ7CisgICAgcmV0dXJuICFwYXVzZWQoKSAmJiBtX25ldHdvcmtTdGF0ZSA9PSBOZXR3b3JrU3Rh
dGU6OklkbGUgJiYgbV9yZWFkeVN0YXRlIDw9IFJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSAm
JiBtX3NlbnRTdGFsbGVkRXZlbnQ7CiB9CiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExB
VEZPUk0oTUFDKQpAQCAtNDE1NCw3ICs0MTIwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZVRpbWV1cGRhdGVFdmVudChib29sIHBlcmlvZGljRXZlbnQpCiAKIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6Y2FuUGxheSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhdXNlZCgpIHx8IGVu
ZGVkKCkgfHwgbV9yZWFkeVN0YXRlIDwgSEFWRV9NRVRBREFUQTsKKyAgICByZXR1cm4gcGF1c2Vk
KCkgfHwgZW5kZWQoKSB8fCBtX3JlYWR5U3RhdGUgPCBSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGE7
CiB9CiAKIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjpwZXJjZW50TG9hZGVkKCkgY29uc3QKQEAg
LTQ4MDgsNyArNDc3NCw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aGF2ZVBvdGVudGlhbFNv
dXJjZUNoaWxkKCkKICAgICBSZWZQdHI8SFRNTFNvdXJjZUVsZW1lbnQ+IGN1cnJlbnRTb3VyY2VO
b2RlID0gbV9jdXJyZW50U291cmNlTm9kZTsKICAgICBSZWZQdHI8SFRNTFNvdXJjZUVsZW1lbnQ+
IG5leHROb2RlID0gbV9uZXh0Q2hpbGROb2RlVG9Db25zaWRlcjsKIAotICAgIFVSTCBuZXh0VVJM
ID0gc2VsZWN0TmV4dFNvdXJjZUNoaWxkKDAsIDAsIERvTm90aGluZyk7CisgICAgVVJMIG5leHRV
UkwgPSBzZWxlY3ROZXh0U291cmNlQ2hpbGQoMCwgMCwgSW52YWxpZFVSTEFjdGlvbjo6RG9Ob3Ro
aW5nKTsKIAogICAgIG1fY3VycmVudFNvdXJjZU5vZGUgPSBjdXJyZW50U291cmNlTm9kZTsKICAg
ICBtX25leHRDaGlsZE5vZGVUb0NvbnNpZGVyID0gbmV4dE5vZGU7CkBAIC00ODIxLDcgKzQ3ODcs
NyBAQCBVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRU
eXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrZQogICAgIFVOVVNFRF9QQVJBTShrZXlTeXN0ZW0p
OwogCiAgICAgLy8gRG9uJ3QgbG9nIGlmIHRoaXMgd2FzIGp1c3QgY2FsbGVkIHRvIGZpbmQgb3V0
IGlmIHRoZXJlIGFyZSBhbnkgdmFsaWQgPHNvdXJjZT4gZWxlbWVudHMuCi0gICAgYm9vbCBzaG91
bGRMb2cgPSB3aWxsTG9nKFdURkxvZ0xldmVsOjpEZWJ1ZykgJiYgYWN0aW9uSWZJbnZhbGlkICE9
IERvTm90aGluZzsKKyAgICBib29sIHNob3VsZExvZyA9IHdpbGxMb2coV1RGTG9nTGV2ZWw6OkRl
YnVnKSAmJiBhY3Rpb25JZkludmFsaWQgIT0gSW52YWxpZFVSTEFjdGlvbjo6RG9Ob3RoaW5nOwog
ICAgIGlmIChzaG91bGRMb2cpCiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCkBA
IC00OTA0LDcgKzQ4NzAsNyBAQCBVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJj
ZUNoaWxkKENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrZQogICAgICAgICByZXR1
cm4gbWVkaWFVUkw7CiAKIENoZWNrQWdhaW46Ci0gICAgICAgIGlmIChhY3Rpb25JZkludmFsaWQg
PT0gQ29tcGxhaW4pCisgICAgICAgIGlmIChhY3Rpb25JZkludmFsaWQgPT0gSW52YWxpZFVSTEFj
dGlvbjo6Q29tcGxhaW4pCiAgICAgICAgICAgICBzb3VyY2UtPnNjaGVkdWxlRXJyb3JFdmVudCgp
OwogICAgIH0KIApAQCAtNDkzNyw3ICs0OTAzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
b3VyY2VXYXNBZGRlZChIVE1MU291cmNlRWxlbWVudCYgc291cmNlKQogICAgIC8vIDQuOC44IC0g
SWYgYSBzb3VyY2UgZWxlbWVudCBpcyBpbnNlcnRlZCBhcyBhIGNoaWxkIG9mIGEgbWVkaWEgZWxl
bWVudCB0aGF0IGhhcyBubyBzcmMKICAgICAvLyBhdHRyaWJ1dGUgYW5kIHdob3NlIG5ldHdvcmtT
dGF0ZSBoYXMgdGhlIHZhbHVlIE5FVFdPUktfRU1QVFksIHRoZSB1c2VyIGFnZW50IG11c3QgaW52
b2tlCiAgICAgLy8gdGhlIG1lZGlhIGVsZW1lbnQncyByZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3Jp
dGhtLgotICAgIGlmIChtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZKSB7CisgICAgaWYg
KG1fbmV0d29ya1N0YXRlID09IE5ldHdvcmtTdGF0ZTo6RW1wdHkpIHsKICAgICAgICAgbV9uZXh0
Q2hpbGROb2RlVG9Db25zaWRlciA9ICZzb3VyY2U7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAgICAgaWYgKG1lZGlhU2Vzc2lvbigpLmRhdGFMb2FkaW5nUGVybWl0dGVkKCkpCkBAIC00
OTYzLDcgKzQ5MjksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKEhU
TUxTb3VyY2VFbGVtZW50JiBzb3VyY2UpCiAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQodHJ1
ZSk7CiAKICAgICAvLyAyNC4gU2V0IHRoZSBuZXR3b3JrU3RhdGUgYmFjayB0byBORVRXT1JLX0xP
QURJTkcuCi0gICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0xPQURJTkc7CisgICAgbV9uZXR3
b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGU6OklkbGU7CiAKICAgICAvLyAyNS4gSnVtcCBiYWNrIHRv
IHRoZSBmaW5kIG5leHQgY2FuZGlkYXRlIHN0ZXAgYWJvdmUuCiAgICAgbV9uZXh0Q2hpbGROb2Rl
VG9Db25zaWRlciA9ICZzb3VyY2U7CkBAIC01MDA0LDcgKzQ5NzAsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQoKQogICAgIGJvb2wgd2FzU2Vla2luZyA9
IHNlZWtpbmcoKTsKIAogICAgIC8vIDQuOC4xMC45IHN0ZXAgMTQgJiAxNS4gIE5lZWRlZCBpZiBu
byBSZWFkeVN0YXRlIGNoYW5nZSBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNlZWsuCi0gICAgaWYg
KG1fc2Vla1JlcXVlc3RlZCAmJiBtX3JlYWR5U3RhdGUgPj0gSEFWRV9DVVJSRU5UX0RBVEEgJiYg
IW1fcGxheWVyLT5zZWVraW5nKCkpCisgICAgaWYgKG1fc2Vla1JlcXVlc3RlZCAmJiBtX3JlYWR5
U3RhdGUgPj0gUmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhICYmICFtX3BsYXllci0+c2Vla2lu
ZygpKQogICAgICAgICBmaW5pc2hTZWVrKCk7CiAKICAgICAvLyBBbHdheXMgY2FsbCBzY2hlZHVs
ZVRpbWV1cGRhdGVFdmVudCB3aGVuIHRoZSBtZWRpYSBlbmdpbmUgcmVwb3J0cyBhIHRpbWUgZGlz
Y29udGludWl0eSwKQEAgLTUyMzAsNyArNTE5Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJTaXplQ2hhbmdlZCgpCiAgICAgICAgIGRvd25jYXN0PE1lZGlhRG9jdW1lbnQ+
KGRvY3VtZW50KCkpLm1lZGlhRWxlbWVudE5hdHVyYWxTaXplQ2hhbmdlZChleHBhbmRlZEludFNp
emUobV9wbGF5ZXItPm5hdHVyYWxTaXplKCkpKTsKIAogICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlh
UGxheWVyQ2FsbGJhY2soKTsKLSAgICBpZiAobV9yZWFkeVN0YXRlID4gSEFWRV9OT1RISU5HKQor
ICAgIGlmIChtX3JlYWR5U3RhdGUgPiBSZWFkeVN0YXRlOjpIYXZlTm90aGluZykKICAgICAgICAg
c2NoZWR1bGVSZXNpemVFdmVudElmU2l6ZUNoYW5nZWQoKTsKICAgICB1cGRhdGVSZW5kZXJlcigp
OwogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CkBAIC01NDY3LDEwICs1
NDMzLDEwIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cG90ZW50aWFsbHlQbGF5aW5nKCkgY29u
c3QKICAgICBpZiAoIWNvdWxkUGxheUlmRW5vdWdoRGF0YSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAobV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpCisgICAgaWYg
KG1fcmVhZHlTdGF0ZSA+PSBSZWFkeVN0YXRlOjpIYXZlRnV0dXJlRGF0YSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICByZXR1cm4gbV9yZWFkeVN0YXRlTWF4aW11bSA+PSBIQVZFX0ZVVFVS
RV9EQVRBICYmIG1fcmVhZHlTdGF0ZSA8IEhBVkVfRlVUVVJFX0RBVEE7CisgICAgcmV0dXJuIG1f
cmVhZHlTdGF0ZU1heGltdW0gPj0gUmVhZHlTdGF0ZTo6SGF2ZUZ1dHVyZURhdGEgJiYgbV9yZWFk
eVN0YXRlIDwgUmVhZHlTdGF0ZTo6SGF2ZUZ1dHVyZURhdGE7CiB9CiAKIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6Y291bGRQbGF5SWZFbm91Z2hEYXRhKCkgY29uc3QKQEAgLTU1MDAsNyArNTQ2Niw3
IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CiAKICAgICAv
LyBBIG1lZGlhIGVsZW1lbnQgaXMgc2FpZCB0byBoYXZlIGVuZGVkIHBsYXliYWNrIHdoZW4gdGhl
IGVsZW1lbnQncwogICAgIC8vIHJlYWR5U3RhdGUgYXR0cmlidXRlIGlzIEhBVkVfTUVUQURBVEEg
b3IgZ3JlYXRlciwKLSAgICBpZiAobV9yZWFkeVN0YXRlIDwgSEFWRV9NRVRBREFUQSkKKyAgICBp
ZiAobV9yZWFkeVN0YXRlIDwgUmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBhbmQgdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gaXMg
dGhlIGVuZCBvZiB0aGUgbWVkaWEgcmVzb3VyY2UgYW5kIHRoZSBkaXJlY3Rpb24KQEAgLTU1MjAs
NyArNTQ4Niw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0
CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6c3RvcHBlZER1ZVRvRXJyb3JzKCkgY29uc3QKIHsK
LSAgICBpZiAobV9yZWFkeVN0YXRlID49IEhBVkVfTUVUQURBVEEgJiYgbV9lcnJvcikgeworICAg
IGlmIChtX3JlYWR5U3RhdGUgPj0gUmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhICYmIG1fZXJyb3Ip
IHsKICAgICAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlUmFuZ2VzID0gc2Vla2FibGUo
KTsKICAgICAgICAgaWYgKCFzZWVrYWJsZVJhbmdlcy0+Y29udGFpbihjdXJyZW50VGltZSgpKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTc2NiwxMCArNTczMiwxMCBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKCkKIAogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgbG9vayB0byByZWNvbmNpbGUgdGhlIGlPUyBhbmQgbm9uLWlPUyBjb2RlIChiZWxvdyku
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTkVU
V09SS19FTVBUWSB8fCBtX3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSkKKyAgICBpZiAobV9u
ZXR3b3JrU3RhdGUgPT0gTmV0d29ya1N0YXRlOjpFbXB0eSB8fCBtX3JlYWR5U3RhdGUgPj0gUmVh
ZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKQogICAgICAgICByZXR1cm47CiAjZWxzZQotICAgIGlmICht
X25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZIHx8IG1fY29tcGxldGVseUxvYWRlZCkKKyAg
ICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTmV0d29ya1N0YXRlOjpFbXB0eSB8fCBtX2NvbXBsZXRl
bHlMb2FkZWQpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCkBAIC01NzkxLDEzICs1NzU3LDEz
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQoKQogICAgIC8vIDQg
LSBJZiB0aGUgbWVkaWEgZWxlbWVudCdzIHJlYWR5U3RhdGUgYXR0cmlidXRlIGhhcyBhIHZhbHVl
IGVxdWFsIHRvIEhBVkVfTk9USElORywgc2V0IHRoZQogICAgIC8vIGVsZW1lbnQncyBuZXR3b3Jr
U3RhdGUgYXR0cmlidXRlIHRvIHRoZSBORVRXT1JLX0VNUFRZIHZhbHVlLCBzZXQgdGhlIGVsZW1l
bnQncyBzaG93IHBvc3RlcgogICAgIC8vIGZsYWcgdG8gdHJ1ZSwgYW5kIGZpcmUgYW4gZXZlbnQg
bmFtZWQgZW1wdGllZCBhdCB0aGUgZWxlbWVudC4KLSAgICBpZiAobV9yZWFkeVN0YXRlID09IEhB
VkVfTk9USElORykgewotICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdPUktfRU1QVFk7Cisg
ICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBSZWFkeVN0YXRlOjpIYXZlTm90aGluZykgeworICAgICAg
ICBtX25ldHdvcmtTdGF0ZSA9IE5ldHdvcmtTdGF0ZTo6RW1wdHk7CiAgICAgICAgIHNldFNob3dQ
b3N0ZXJGbGFnKHRydWUpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbXB0
aWVkRXZlbnQpOwogICAgIH0KICAgICBlbHNlCi0gICAgICAgIG1fbmV0d29ya1N0YXRlID0gTkVU
V09SS19JRExFOworICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE5ldHdvcmtTdGF0ZTo6SWRsZTsK
IAogICAgIC8vIDUgLSBTZXQgdGhlIGVsZW1lbnQncyBkZWxheWluZy10aGUtbG9hZC1ldmVudCBm
bGFnIHRvIGZhbHNlLiBUaGlzIHN0b3BzIGRlbGF5aW5nIHRoZSBsb2FkIGV2ZW50LgogICAgIHNl
dFNob3VsZERlbGF5TG9hZEV2ZW50KGZhbHNlKTsKQEAgLTU4MDYsNyArNTc3Miw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQoKQogICAgIG1fY3VycmVudFNvdXJj
ZU5vZGUgPSBudWxscHRyOwogCiAgICAgLy8gUmVzZXQgbV9yZWFkeVN0YXRlIHNpbmNlIG1fcGxh
eWVyIGlzIGdvbmUuCi0gICAgbV9yZWFkeVN0YXRlID0gSEFWRV9OT1RISU5HOworICAgIG1fcmVh
ZHlTdGF0ZSA9IFJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nOwogICAgIHVwZGF0ZU1lZGlhQ29udHJv
bGxlcigpOwogCiAgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
QEAgLTU4ODUsNyArNTg1MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3RvcFdpdGhvdXRE
ZXN0cm95aW5nTWVkaWFQbGF5ZXIoKQogewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwog
Ci0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9u
ZSkKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IE1lZGlhUGxheWVyRW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGVOb25lKQogICAgICAgICBleGl0RnVsbHNjcmVlbigpOwogCiAgICAg
c2V0UHJlcGFyZWRUb1JldHVyblZpZGVvTGF5ZXJUb0lubGluZSh0cnVlKTsKQEAgLTU5OTYsNyAr
NTk2Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKCkKIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6aGFzTGl2ZVNvdXJjZSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEhhbmRsZSB0
aGUgY2FzZSBvZiBhbiBlbmRlZCBtZWRpYSBzdHJlYW0gYXMgc3JjT2JqZWN0LgotICAgIHJldHVy
biBtX3BsYXllciAmJiBtX3BsYXllci0+aGFzTWVkaWFFbmdpbmUoKSAmJiAoIWVuZGVkKCkgfHwg
c2Vla2luZygpIHx8IG1fbmV0d29ya1N0YXRlID49IE5FVFdPUktfSURMRSk7CisgICAgcmV0dXJu
IG1fcGxheWVyICYmIG1fcGxheWVyLT5oYXNNZWRpYUVuZ2luZSgpICYmICghZW5kZWQoKSB8fCBz
ZWVraW5nKCkgfHwgbV9uZXR3b3JrU3RhdGUgPj0gTmV0d29ya1N0YXRlOjpJZGxlKTsKIH0KIAog
Ym9vbCBIVE1MTWVkaWFFbGVtZW50Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QK
QEAgLTYwMTcsNyArNTk4Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFWb2x1bWVE
aWRDaGFuZ2UoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQoKQogewotICAgIGJvb2wgZWxlbWVudElzSGlkZGVuID0gZG9jdW1lbnQoKS5oaWRkZW4oKSAm
JiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7CisgICAg
Ym9vbCBlbGVtZW50SXNIaWRkZW4gPSBkb2N1bWVudCgpLmhpZGRlbigpICYmIG1fdmlkZW9GdWxs
c2NyZWVuTW9kZSA9PSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZTsK
ICAgICBpZiAoZWxlbWVudElzSGlkZGVuID09IG1fZWxlbWVudElzSGlkZGVuKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTYwMzIsNyArNTk5OCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dmlz
aWJpbGl0eVN0YXRlQ2hhbmdlZCgpCiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cmVxdWlyZXNU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX3ZpZGVvRnVs
bHNjcmVlbk1vZGUgIT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpICYmIG1fcGxheWVyID8gbV9w
bGF5ZXItPnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSA6IGZhbHNlOworICAgIHJl
dHVybiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGVOb25lKSAmJiBtX3BsYXllciA/IG1fcGxheWVyLT5yZXF1aXJlc1RleHRUcmFj
a1JlcHJlc2VudGF0aW9uKCkgOiBmYWxzZTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiogcmVwcmVz
ZW50YXRpb24pCkBAIC02MTY3LDcgKzYxMzMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRp
c3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIC8vIFdlIG5lZWQgdG8gZmlyZSB0aGUgZW5k
IGZ1bGxzY3JlZW4gZXZlbnQgdG8gbm90aWZ5IHRoZSBwYWdlCiAgICAgLy8gdG8gY2hhbmdlIHRo
ZSBwb3NpdGlvbi9zaXplIGJhY2sgKmJlZm9yZSogZXhpdGluZyBmdWxsc2NyZWVuLgogICAgIC8v
IE90aGVyd2lzZSwgdGhlIGV4aXQgZnVsbHNjcmVlbiBhbmltYXRpb24gd2lsbCBiZSBpbmNvcnJl
Y3QuCi0gICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgJiYgbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lICYmIGV2ZW50LnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KQorICAgIGlmICghbV92aWRlb0Z1bGxz
Y3JlZW5TdGFuZGJ5ICYmIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBNZWRpYVBsYXllckVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSAmJiBldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygp
LndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCkKICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNo
cm9tZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoZG93bmNh
c3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpKTsKIH0KIApAQCAtNjI2NCw3ICs2MjMwLDcgQEAg
Ym9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Z1bGxzY3JlZW4oKSBjb25zdAogICAgICAgICByZXR1
cm4gdHJ1ZTsKICNlbmRpZgogCi0gICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBW
aWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZTsKKyAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
ICE9IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lOwogfQogCiBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmlzU3RhbmRhcmRGdWxsc2NyZWVuKCkgY29uc3QKQEAgLTYyNzQs
NyArNjI0MCw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTdGFuZGFyZEZ1bGxzY3JlZW4o
KSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCi0gICAgcmV0dXJuIG1fdmlk
ZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7CisgICAgcmV0
dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlU3RhbmRhcmQ7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlU3Rh
bmRhcmRGdWxsc2NyZWVuU3RhdGUoKQpAQCAtNjI4OCw3ICs2MjU0LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp0b2dnbGVTdGFuZGFyZEZ1bGxzY3JlZW5TdGF0ZSgpCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbihWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiLCBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgPSAi
LCBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUsICIsIG1vZGUgPSAiLCBtb2RlKTsKLSAgICBBU1NFUlQo
bW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgQVNTRVJUKG1vZGUgIT0gTWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogCiAgICAgaWYgKG1fdmlk
ZW9GdWxsc2NyZWVuTW9kZSA9PSBtb2RlKQogICAgICAgICByZXR1cm47CkBAIC02Mjk5LDcgKzYy
NjUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbihWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIG1vZGUpCiAgICAgbV9jaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUgPSB0cnVl
OwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBFTkFCTEUoVklERU9fVVNFU19FTEVN
RU5UX0ZVTExTQ1JFRU4pCi0gICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5mdWxsU2NyZWVu
RW5hYmxlZCgpICYmIG1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSB7CisgICAg
aWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5mdWxsU2NyZWVuRW5hYmxlZCgpICYmIG1vZGUgPT0g
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSB7CiAgICAgICAg
IG1fdGVtcG9yYXJpbHlBbGxvd2luZ0lubGluZVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuID0gZmFs
c2U7CiAgICAgICAgIG1fd2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuID0gdHJ1ZTsKICAgICAgICAg
ZG9jdW1lbnQoKS5mdWxsc2NyZWVuTWFuYWdlcigpLnJlcXVlc3RGdWxsc2NyZWVuRm9yRWxlbWVu
dCh0aGlzLCBGdWxsc2NyZWVuTWFuYWdlcjo6RXhlbXB0SUZyYW1lQWxsb3dGdWxsc2NyZWVuUmVx
dWlyZW1lbnQpOwpAQCAtNjMyMyw3ICs2Mjg5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpl
bnRlckZ1bGxzY3JlZW4oVmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogICAgICAgICAgICAgICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkVudGVyaW5nIGZ1bGxzY3JlZW4gbW9kZSAiLCBt
b2RlLCAiLCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgPSAiLCBtX3ZpZGVvRnVsbHNjcmVlblN0
YW5kYnkpOwogCiAgICAgICAgICAgICAgICAgbV90ZW1wb3JhcmlseUFsbG93aW5nSW5saW5lUGxh
eWJhY2tBZnRlckZ1bGxzY3JlZW4gPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAobW9kZSA9
PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCisgICAgICAgICAgICAgICAgaWYgKG1vZGUg
PT0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKQogICAgICAg
ICAgICAgICAgICAgICBtX3dhaXRpbmdUb0VudGVyRnVsbHNjcmVlbiA9IHRydWU7CiAKICAgICAg
ICAgICAgICAgICBhdXRvIG9sZE1vZGUgPSBtX3ZpZGVvRnVsbHNjcmVlbk1vZGU7CkBAIC02MzM0
LDkgKzYzMDAsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbihWaWRl
b0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiAgICAgICAgICAgICAgICAgaWYgKG1fdmlkZW9GdWxsc2Ny
ZWVuU3RhbmRieSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICAg
ICAgaWYgKG1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKQorICAgICAgICAgICAg
ICAgIGlmIChtb2RlID09IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFu
ZGFyZCkKICAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Vi
a2l0YmVnaW5mdWxsc2NyZWVuRXZlbnQpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9sZE1v
ZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkICYmICFkb2N1bWVudCgpLnF1aXJrcygp
LnNob3VsZERpc2FibGVFbmRGdWxsc2NyZWVuRXZlbnRXaGVuRW50ZXJpbmdQaWN0dXJlSW5QaWN0
dXJlRnJvbUZ1bGxzY3JlZW5RdWlyaygpKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9sZE1v
ZGUgPT0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkICYmICFk
b2N1bWVudCgpLnF1aXJrcygpLnNob3VsZERpc2FibGVFbmRGdWxsc2NyZWVuRXZlbnRXaGVuRW50
ZXJpbmdQaWN0dXJlSW5QaWN0dXJlRnJvbUZ1bGxzY3JlZW5RdWlyaygpKQogICAgICAgICAgICAg
ICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVuRXZl
bnQpOwogCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjM0OSw3ICs2MzE1LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4oVmlkZW9GdWxsc2NyZWVuTW9kZSBt
b2RlKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbigpCiB7Ci0gICAg
ZW50ZXJGdWxsc2NyZWVuKFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7CisgICAgZW50ZXJG
dWxsc2NyZWVuKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7
CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQpAQCAtNjM2NSwx
MiArNjMzMSwxMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKCkKICAg
ICAgICAgICAgIGRvY3VtZW50KCkuZnVsbHNjcmVlbk1hbmFnZXIoKS5jYW5jZWxGdWxsc2NyZWVu
KCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZp
ZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKKyAgICAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVu
TW9kZSA9PSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKLSAgICBBU1NFUlQobV92aWRlb0Z1
bGxzY3JlZW5Nb2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICBBU1NFUlQobV92
aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVOb25lKTsKICAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlIG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUg
PSBtX3ZpZGVvRnVsbHNjcmVlbk1vZGU7CiAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOyAvLyB1cGRhdGVNZWRpYUNvbnRyb2xzQWZ0ZXJQcmVzZW50YXRpb25N
b2RlQ2hhbmdlIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11
dGF0aW9ucy4KICAgICB1cGRhdGVNZWRpYUNvbnRyb2xzQWZ0ZXJQcmVzZW50YXRpb25Nb2RlQ2hh
bmdlKCk7CkBAIC02MzkwLDExICs2MzU2LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhp
dEZ1bGxzY3JlZW4oKQogICAgIH0KIAogICAgIGlmIChkb2N1bWVudCgpLmFjdGl2ZURPTU9iamVj
dHNBcmVTdXNwZW5kZWQoKSB8fCBkb2N1bWVudCgpLmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVk
KCkpIHsKLSAgICAgICAgc2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUp
OwotICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZXhpdFZpZGVv
RnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVu
dD4oKnRoaXMpLCBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIHNldEZ1bGxzY3Jl
ZW5Nb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAg
ICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1bGxzY3Jl
ZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlz
KSwgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIH0gZWxz
ZSBpZiAoZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnN1cHBvcnRzVmlkZW9G
dWxsc2NyZWVuKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUpKSB7CiAgICAgICAgIGlmIChtX3ZpZGVv
RnVsbHNjcmVlblN0YW5kYnkpIHsKLSAgICAgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVv
RnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKE1lZGlh
UGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICAgICAgICAgIG1fY2hh
bmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gdHJ1ZTsKICAgICAgICAgICAgIGRvY3VtZW50KCku
cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxl
bWVudChkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyksIG1fdmlkZW9GdWxsc2NyZWVu
TW9kZSwgbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTY0MDIsMTQgKzYzNjgsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVl
bigpCiAKICAgICAgICAgbV9jaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUgPSB0cnVlOwogCi0g
ICAgICAgIGlmIChvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVT
dGFuZGFyZCkgewotICAgICAgICAgICAgc2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVu
TW9kZU5vbmUpOworICAgICAgICBpZiAob2xkVmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBNZWRpYVBs
YXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpIHsKKyAgICAgICAgICAgIHNl
dEZ1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25l
KTsKICAgICAgICAgICAgIC8vIFRoZSBleGl0IGZ1bGxzY3JlZW4gcmVxdWVzdCB3aWxsIGJlIHNl
bnQgaW4gZGlzcGF0Y2hFdmVudCgpLgogICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5h
bWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lKTsKKyAgICAgICAgc2V0RnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZU5vbmUpOwogICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCku
cGFnZSgpKQogICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZXhpdFZpZGVvRnVs
bHNjcmVlbkZvclZpZGVvRWxlbWVudChkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykp
OwogICAgIH0KQEAgLTY0NDQsMTEgKzY0MTAsMTEgQEAgV0VCQ09SRV9FWFBPUlQgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KGJvb2wgdmFsdWUpCiAgICAg
ICAgIG1fcGxheWVyLT52aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdlZCgpOwogI2VuZGlmCiAK
LSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVOb25l
KQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgIT0gTWVkaWFQbGF5ZXJFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZU5vbmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3ZpZGVv
RnVsbHNjcmVlblN0YW5kYnkpCi0gICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5j
bGllbnQoKS5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChkb3duY2FzdDxIVE1M
VmlkZW9FbGVtZW50PigqdGhpcyksIFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lLCBtX3ZpZGVvRnVs
bHNjcmVlblN0YW5kYnkpOworICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xp
ZW50KCkuZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoZG93bmNhc3Q8SFRNTFZp
ZGVvRWxlbWVudD4oKnRoaXMpLCBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
Tm9uZSwgbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KTsKICAgICBlbHNlCiAgICAgICAgIGRvY3Vt
ZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlk
ZW9FbGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvIHN1Y2Nlc3MpIG11dGFibGUgewogICAgICAg
ICAgICAgbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5ID0gIXN1Y2Nlc3M7CkBAIC02NDU4LDE1ICs2
NDI0LDE1IEBAIFdFQkNPUkVfRVhQT1JUIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9G
dWxsc2NyZWVuU3RhbmRieShib29sIHZhbHVlKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxs
QmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotICAgIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSBvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlOworICAgIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgb2xkVmlk
ZW9GdWxsc2NyZWVuTW9kZSA9IG1fdmlkZW9GdWxsc2NyZWVuTW9kZTsKICNlbmRpZgogCi0gICAg
aWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQp
Ci0gICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7
CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBNZWRpYVBsYXllckVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKE1lZGlh
UGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7CiAKICNpZiBQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLSAgICBpZiAob2xkVmlk
ZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSAm
JiBpczxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykpCi0gICAgICAgIGRvd25jYXN0PEhUTUxWaWRl
b0VsZW1lbnQ+KCp0aGlzKS5leGl0VG9GdWxsc2NyZWVuTW9kZVdpdGhvdXRBbmltYXRpb25JZlBv
c3NpYmxlKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUsIFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCk7CisgICAgaWYgKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gTWVkaWFQbGF5ZXJFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUgJiYgaXM8SFRNTFZpZGVvRWxlbWVu
dD4oKnRoaXMpKQorICAgICAgICBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykuZXhp
dFRvRnVsbHNjcmVlbk1vZGVXaXRob3V0QW5pbWF0aW9uSWZQb3NzaWJsZShvbGRWaWRlb0Z1bGxz
Y3JlZW5Nb2RlLCBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQp
OwogI2VuZGlmCiAKICAgICBFbGVtZW50Ojp3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKTsK
QEAgLTY0ODIsOCArNjQ0OCw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQmVjb21lRnVs
bHNjcmVlbkVsZW1lbnQoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxTdG9wQmVpbmdG
dWxsc2NyZWVuRWxlbWVudCgpCiB7Ci0gICAgaWYgKGZ1bGxzY3JlZW5Nb2RlKCkgPT0gVmlkZW9G
dWxsc2NyZWVuTW9kZVN0YW5kYXJkKQotICAgICAgICBzZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1
bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgaWYgKGZ1bGxzY3JlZW5Nb2RlKCkgPT0gTWVkaWFQbGF5
ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKQorICAgICAgICBzZXRGdWxsc2Ny
ZWVuTW9kZShNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiB9CiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKQpA
QCAtNjY0OCw3ICs2NjE0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0
VHJhY2tEaXNwbGF5KFRleHRUcmFja1Zpc2liaWxpdHlDaGVja1R5cGUgY2gKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmIChjaGVja1R5cGUgPT0gQ2hlY2tUZXh0VHJhY2tWaXNpYmlsaXR5ICYm
IG1faGF2ZVZpc2libGVUZXh0VHJhY2sgPT0gaGF2ZVZpc2libGVUZXh0VHJhY2spIHsKKyAgICBp
ZiAoY2hlY2tUeXBlID09IFRleHRUcmFja1Zpc2liaWxpdHlDaGVja1R5cGU6OkNoZWNrVGV4dFRy
YWNrVmlzaWJpbGl0eSAmJiBtX2hhdmVWaXNpYmxlVGV4dFRyYWNrID09IGhhdmVWaXNpYmxlVGV4
dFRyYWNrKSB7CiAgICAgICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY3VycmVudE1lZGlh
VGltZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcwNTIsNyArNzAxOCw3IEBAIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkKCkgY29uc3QKIHsKICAgICAvLyBBIG1lZGlh
IGVsZW1lbnQgaXMgYSBibG9ja2VkIG1lZGlhIGVsZW1lbnQgaWYgaXRzIHJlYWR5U3RhdGUgYXR0
cmlidXRlIGlzIGluIHRoZQogICAgIC8vIEhBVkVfTk9USElORyBzdGF0ZSwgdGhlIEhBVkVfTUVU
QURBVEEgc3RhdGUsIG9yIHRoZSBIQVZFX0NVUlJFTlRfREFUQSBzdGF0ZSwKLSAgICBpZiAobV9y
ZWFkeVN0YXRlIDw9IEhBVkVfQ1VSUkVOVF9EQVRBKQorICAgIGlmIChtX3JlYWR5U3RhdGUgPD0g
UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIG9yIGlmIHRoZSBlbGVtZW50IGhhcyBwYXVzZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uCkBA
IC03MTAwLDcgKzcwNjYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVNZWRpYUZy
YWdtZW50VVJJKCkKICAgICB9IGVsc2UKICAgICAgICAgbV9mcmFnbWVudEVuZFRpbWUgPSBNZWRp
YVRpbWU6OmludmFsaWRUaW1lKCk7CiAKLSAgICBpZiAobV9mcmFnbWVudFN0YXJ0VGltZS5pc1Zh
bGlkKCkgJiYgbV9yZWFkeVN0YXRlIDwgSEFWRV9GVVRVUkVfREFUQSkKKyAgICBpZiAobV9mcmFn
bWVudFN0YXJ0VGltZS5pc1ZhbGlkKCkgJiYgbV9yZWFkeVN0YXRlIDwgUmVhZHlTdGF0ZTo6SGF2
ZUZ1dHVyZURhdGEpCiAgICAgICAgIHByZXBhcmVUb1BsYXkoKTsKIH0KIApAQCAtNzgwMiw3ICs3
NzY4LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIEhUTUxNZWRpYUVsZW1lbnQ6OmZpbGVTaXplKCkg
Y29uc3QKIAogUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVR5cGUoKSBjb25zdAogewotICAgIGlmIChtX3BsYXllciAmJiBtX3JlYWR5U3RhdGUg
Pj0gSEFWRV9NRVRBREFUQSkgeworICAgIGlmIChtX3BsYXllciAmJiBtX3JlYWR5U3RhdGUgPj0g
UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKSB7CiAgICAgICAgIGF1dG8gaGFzVmlkZW8gPSB0aGlz
LT5oYXNWaWRlbygpOwogICAgICAgICBpZiAoaGFzVmlkZW8gJiYgaGFzQXVkaW8oKSAmJiAhbXV0
ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBl
OjpWaWRlb0F1ZGlvOwpAQCAtNzgyMiwxMSArNzc4OCwxMSBAQCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6TWVkaWFUeXBlIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXNlbnRhdGlvblR5cGUoKSBjb25zdAog
CiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RGlzcGxheVR5cGUgSFRNTE1lZGlhRWxlbWVudDo6ZGlz
cGxheVR5cGUoKSBjb25zdAogewotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlk
ZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUg
PT0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKQogICAgICAg
ICByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246OkZ1bGxzY3JlZW47Ci0gICAgaWYgKG1fdmlk
ZW9GdWxsc2NyZWVuTW9kZSAmIFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKQor
ICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgJiBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpPcHRpbWl6ZWQ7Ci0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBW
aWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09
IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKQogICAgICAgICByZXR1
cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vcm1hbDsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtNzg0OCw3ICs3ODE0LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjYW5Qcm9k
dWNlQXVkaW8oKSBjb25zdAogICAgIGlmIChtdXRlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAobV9wbGF5ZXIgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfTUVUQURBVEEpCisg
ICAgaWYgKG1fcGxheWVyICYmIG1fcmVhZHlTdGF0ZSA+PSBSZWFkeVN0YXRlOjpIYXZlTWV0YWRh
dGEpCiAgICAgICAgIHJldHVybiBoYXNBdWRpbygpOwogCiAgICAgcmV0dXJuIGhhc0V2ZXJIYWRB
dWRpbygpOwpAQCAtNzk5Nyw3ICs3OTYzLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzaG91
bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWEKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAjaWYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKQotICAgICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVv
RnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKQorICAgICAgICBpZiAobV92aWRlb0Z1bGxz
Y3JlZW5Nb2RlID09IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJl
SW5QaWN0dXJlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQpAQCAtODA5MSw3ICs4MDU3LDcgQEAgTWVkaWFQcm9kdWNlck1lZGlhU3Rh
dGVGbGFncyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVN0YXRlKCkgY29uc3QKICAgICB9CiAKICAg
ICBib29sIHJlcXVpcmVVc2VyR2VzdHVyZSA9IG1fbWVkaWFTZXNzaW9uICYmIG1lZGlhU2Vzc2lv
bigpLmhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVz
ZXJHZXN0dXJlVG9BdXRvcGxheVRvRXh0ZXJuYWxEZXZpY2UpOwotICAgIGlmIChtX3JlYWR5U3Rh
dGUgPj0gSEFWRV9NRVRBREFUQSAmJiAhcmVxdWlyZVVzZXJHZXN0dXJlICYmICFtX2ZhaWxlZFRv
UGxheVRvV2lyZWxlc3NUYXJnZXQpCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBSZWFkeVN0YXRl
OjpIYXZlTWV0YWRhdGEgJiYgIXJlcXVpcmVVc2VyR2VzdHVyZSAmJiAhbV9mYWlsZWRUb1BsYXlU
b1dpcmVsZXNzVGFyZ2V0KQogICAgICAgICBzdGF0ZS5hZGQoTWVkaWFQcm9kdWNlck1lZGlhU3Rh
dGU6OkV4dGVybmFsRGV2aWNlQXV0b1BsYXlDYW5kaWRhdGUpOwogCiAgICAgaWYgKGhhc0FjdGl2
ZVZpZGVvIHx8IGhhc0F1ZGlvKQpAQCAtODM0OCw3ICs4MzE0LDcgQEAgYm9vbCBIVE1MTWVkaWFF
bGVtZW50OjpzaG91bGRPdmVycmlkZUJhY2tncm91bmRMb2FkaW5nUmVzdHJpY3Rpb24oKSBjb25z
dAogICAgIGlmIChpc1BsYXlpbmdUb0V4dGVybmFsVGFyZ2V0KCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlUGljdHVyZUluUGljdHVyZTsKKyAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
ID09IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJl
OwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVs
bHNjcmVlbk1vZGUgbW9kZSkKQEAgLTgzNTgsNyArODMyNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogICAgIHNj
aGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkRXZl
bnQpOwogI2VuZGlmCiAKLSAgICBzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5l
KG1vZGUgIT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVy
ZUluUGljdHVyZSk7CisgICAgc2V0UHJlcGFyZWRUb1JldHVyblZpZGVvTGF5ZXJUb0lubGluZSht
b2RlICE9IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0
dXJlKTsKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBpZiAocGxh
eWVyKCkpCkBAIC04NDA5LDcgKzgzNzUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldElu
QWN0aXZlRG9jdW1lbnQoYm9vbCBpbkFjdGl2ZURvY3VtZW50KQogICAgICAgICBtX21lZGlhU2Vz
c2lvbi0+aW5BY3RpdmVEb2N1bWVudENoYW5nZWQoKTsKIH0KIAotSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpCdWZmZXJpbmdQb2xpY3kgSFRNTE1lZGlhRWxlbWVudDo6YnVmZmVyaW5nUG9saWN5KCkg
Y29uc3QKK01lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeSBIVE1MTWVkaWFFbGVtZW50
OjpidWZmZXJpbmdQb2xpY3koKSBjb25zdAogewogICAgIHJldHVybiBtX2J1ZmZlcmluZ1BvbGlj
eTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNmI0MDRhYTg3
MzUyNzc3YjQ3MTgzNWYxMjBmZjE1N2NlZWQ4NGE2OS4uZGQ4NDQ5MDg2MzNkOWRkNWE4ZGQ4NTBm
ODUxYTJiNWFhZmI1ODljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
QEAgLTE3MCw3ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXR1
cm5Ub1JlYWx0aW1lKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBFdmVudHVhbGx5IG92ZXJsb2FkZWQg
aW4gSFRNTFZpZGVvRWxlbWVudAotICAgIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH07CisgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oTWVkaWFQbGF5ZXJFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH07
CiAKICAgICBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMjIy
LDggKzIyMiwxNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNyb3NzT3Jp
Z2luKCkgY29uc3Q7CiAKIC8vIG5ldHdvcmsgc3RhdGUKLSAgICB1c2luZyBIVE1MTWVkaWFFbGVt
ZW50RW51bXM6Ok5ldHdvcmtTdGF0ZTsKKyAgICB1c2luZyBOZXR3b3JrU3RhdGUgPSBNZWRpYVBs
YXllckVudW1zOjpOZXR3b3JrU3RhdGU7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qg
TkVUV09SS19FTVBUWSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KE5ldHdvcmtTdGF0ZTo6RW1wdHkp
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBORVRXT1JLX0lETEUgPSBzdGF0aWNfY2Fz
dDx1aW50OF90PihOZXR3b3JrU3RhdGU6OklkbGUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDhfdCBORVRXT1JLX0xPQURJTkcgPSBzdGF0aWNfY2FzdDx1aW50OF90PihOZXR3b3JrU3RhdGU6
OkxvYWRpbmcpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBORVRXT1JLX05PX1NPVVJD
RSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KE5ldHdvcmtTdGF0ZTo6Tm9Tb3VyY2UpOworCiAgICAg
V0VCQ09SRV9FWFBPUlQgTmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0OworICAgIHVp
bnQ4X3QgbmV0d29ya1N0YXRlRm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDx1aW50OF90PihuZXR3b3JrU3RhdGUoKSk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBwcmVsb2FkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmVsb2FkKGNv
bnN0IFN0cmluZyYpOwpAQCAtMjMzLDggKzI0MCwxNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGNhblBsYXlUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0Owog
CiAvLyByZWFkeSBzdGF0ZQotICAgIHVzaW5nIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6UmVhZHlT
dGF0ZTsKKyAgICB1c2luZyBSZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgSEFWRV9OT1RISU5HID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4oUmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcpOworICAgIHN0YXRpYyBjb25zdGV4
cHIgdWludDhfdCBIQVZFX01FVEFEQVRBID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oUmVhZHlTdGF0
ZTo6SGF2ZU1ldGFkYXRhKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgSEFWRV9DVVJS
RU5UX0RBVEEgPSBzdGF0aWNfY2FzdDx1aW50OF90PihSZWFkeVN0YXRlOjpIYXZlQ3VycmVudERh
dGEpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBIQVZFX0ZVVFVSRV9EQVRBID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oUmVhZHlTdGF0ZTo6SGF2ZUZ1dHVyZURhdGEpOworICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDhfdCBIQVZFX0VOT1VHSF9EQVRBID0gc3RhdGljX2Nhc3Q8dWludDhf
dD4oUmVhZHlTdGF0ZTo6SGF2ZUVub3VnaERhdGEpOworCiAgICAgUmVhZHlTdGF0ZSByZWFkeVN0
YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdWludDhfdCByZWFkeVN0YXRlRm9yQmluZGluZ3Mo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90PihyZWFkeVN0YXRlKCkpOyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKIC8vIHBsYXliYWNrIHN0
YXRlCkBAIC0yODQsNyArMjk4LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBhdWRpb091dHB1dEhh
c2hlZERldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb091dHB1dEhhc2hlZERldmljZUlk
OyB9CiAjZW5kaWYKIAotICAgIHVzaW5nIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6QnVmZmVyaW5n
UG9saWN5OworICAgIHVzaW5nIEJ1ZmZlcmluZ1BvbGljeSA9IE1lZGlhUGxheWVyRW51bXM6OkJ1
ZmZlcmluZ1BvbGljeTsKICAgICB2b2lkIHNldEJ1ZmZlcmluZ1BvbGljeShCdWZmZXJpbmdQb2xp
Y3kpOwogICAgIFdFQkNPUkVfRVhQT1JUIEJ1ZmZlcmluZ1BvbGljeSBidWZmZXJpbmdQb2xpY3ko
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1cmdlQnVmZmVyZWREYXRhSWZQb3Nz
aWJsZSgpOwpAQCAtNDIyLDcgKzQzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNUZXh0VHJh
Y2tCb3VuZHMoKTsKIAogICAgIHZvaWQgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwotICAg
IHVzaW5nIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VGV4dFRyYWNrVmlzaWJpbGl0eUNoZWNrVHlw
ZTsKKyAgICB1c2luZyBUZXh0VHJhY2tWaXNpYmlsaXR5Q2hlY2tUeXBlID0gSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpUZXh0VHJhY2tWaXNpYmlsaXR5Q2hlY2tUeXBlOwogICAgIHZvaWQgdGV4dFRy
YWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKik7CiAgICAgdm9pZCB1cGRhdGVUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkltYWdlSWZOZWVkZWQoKTsKIApAQCAtNDYxLDcgKzQ3NSw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzU3RhbmRhcmRGdWxsc2NyZWVuKCkgY29uc3Q7CiAgICAgdm9pZCB0
b2dnbGVTdGFuZGFyZEZ1bGxzY3JlZW5TdGF0ZSgpOwogCi0gICAgdXNpbmcgTWVkaWFQbGF5ZXJF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZTsKKyAgICB1c2luZyBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
ID0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZTsKICAgICBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIGZ1bGxzY3JlZW5Nb2RlKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlOyB9CiAKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbihWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KTsKQEAgLTQ5NCw3ICs1MDgsNyBAQCBwdWJsaWM6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciog
YXVkaW9Tb3VyY2VQcm92aWRlcigpOwogI2VuZGlmCiAKLSAgICB1c2luZyBIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OkludmFsaWRVUkxBY3Rpb247CisgICAgdXNpbmcgSW52YWxpZFVSTEFjdGlvbiA9
IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6SW52YWxpZFVSTEFjdGlvbjsKICAgICBib29sIGlzU2Fm
ZVRvTG9hZFVSTChjb25zdCBVUkwmLCBJbnZhbGlkVVJMQWN0aW9uKTsKIAogICAgIGNvbnN0IFN0
cmluZyYgbWVkaWFHcm91cCgpIGNvbnN0OwpAQCAtODI2LDcgKzg0MCw4IEBAIHByaXZhdGU6CiAg
ICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2RlIGNhcHRpb25EaXNw
bGF5TW9kZSgpOwogCiAgICAgYm9vbCB0ZXh0VHJhY2tzQXJlUmVhZHkoKSBjb25zdDsKLSAgICB2
b2lkIGNvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkoVGV4dFRyYWNrVmlzaWJpbGl0eUNoZWNrVHlw
ZSA9IENoZWNrVGV4dFRyYWNrVmlzaWJpbGl0eSk7CisKKyAgICB2b2lkIGNvbmZpZ3VyZVRleHRU
cmFja0Rpc3BsYXkoVGV4dFRyYWNrVmlzaWJpbGl0eUNoZWNrVHlwZSA9IFRleHRUcmFja1Zpc2li
aWxpdHlDaGVja1R5cGU6OkNoZWNrVGV4dFRyYWNrVmlzaWJpbGl0eSk7CiAgICAgdm9pZCB1cGRh
dGVUZXh0VHJhY2tEaXNwbGF5KCk7CiAKICAgICAvLyBUaGVzZSAiaW50ZXJuYWwiIGZ1bmN0aW9u
cyBkbyBub3QgY2hlY2sgdXNlciBnZXN0dXJlIHJlc3RyaWN0aW9ucy4KQEAgLTg4NSw3ICs5MDAs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKSBjb25z
dDsKICAgICB2b2lkIHNldEN1cnJlbnRTcmMoY29uc3QgVVJMJik7CiAgICAgYm9vbCBoYXNDdXJy
ZW50U3JjKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fY3VycmVudFNyYy5pc0VtcHR5KCk7
IH0KLSAgICBib29sIGlzTGl2ZVN0cmVhbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1vdmll
TG9hZFR5cGUoKSA9PSBNb3ZpZUxvYWRUeXBlOjpMaXZlU3RyZWFtOyB9CisgICAgYm9vbCBpc0xp
dmVTdHJlYW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVk
aWFQbGF5ZXJFbnVtczo6TW92aWVMb2FkVHlwZTo6TGl2ZVN0cmVhbTsgfQogCiAgICAgdm9pZCB1
cGRhdGVTbGVlcERpc2FibGluZygpOwogICAgIGVudW0gY2xhc3MgU2xlZXBUeXBlIHsgTm9uZSwg
RGlzcGxheSwgU3lzdGVtIH07CkBAIC05OTksOSArMTAxNCw5IEBAIHByaXZhdGU6CiAgICAgZG91
YmxlIG1fcmVwb3J0ZWRQbGF5YmFja1JhdGUgeyAxIH07CiAgICAgZG91YmxlIG1fZGVmYXVsdFBs
YXliYWNrUmF0ZSB7IDEgfTsKICAgICBib29sIG1fd2Via2l0UHJlc2VydmVzUGl0Y2ggeyB0cnVl
IH07Ci0gICAgTmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBUWSB9Owot
ICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlIHsgSEFWRV9OT1RISU5HIH07Ci0gICAgUmVhZHlT
dGF0ZSBtX3JlYWR5U3RhdGVNYXhpbXVtIHsgSEFWRV9OT1RISU5HIH07CisgICAgTmV0d29ya1N0
YXRlIG1fbmV0d29ya1N0YXRlIHsgTmV0d29ya1N0YXRlOjpFbXB0eSB9OworICAgIFJlYWR5U3Rh
dGUgbV9yZWFkeVN0YXRlIHsgUmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcgfTsKKyAgICBSZWFkeVN0
YXRlIG1fcmVhZHlTdGF0ZU1heGltdW0geyBSZWFkeVN0YXRlOjpIYXZlTm90aGluZyB9OwogICAg
IFVSTCBtX2N1cnJlbnRTcmM7CiAgICAgTWVkaWFVbmlxdWVJZGVudGlmaWVyIG1fY3VycmVudElk
ZW50aWZpZXI7CiAKQEAgLTEwMjIsNyArMTAzNyw5IEBAIHByaXZhdGU6CiAgICAgICAgIE1lZGlh
VGltZSBwb3NpdGl2ZVRvbGVyYW5jZTsKICAgICB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQZW5k
aW5nU2Vlaz4gbV9wZW5kaW5nU2VlazsKLSAgICBTZWVrVHlwZSBtX3BlbmRpbmdTZWVrVHlwZSB7
IE5vU2VlayB9OworCisgICAgdXNpbmcgU2Vla1R5cGUgPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlNlZWtUeXBlOworICAgIFNlZWtUeXBlIG1fcGVuZGluZ1NlZWtUeXBlIHsgU2Vla1R5cGU6Ok5v
U2VlayB9OwogCiAgICAgZG91YmxlIG1fdm9sdW1lIHsgMSB9OwogICAgIGJvb2wgbV92b2x1bWVJ
bml0aWFsaXplZCB7IGZhbHNlIH07CkBAIC0xMDQzLDcgKzEwNjAsNyBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxIVE1MU291cmNlRWxlbWVudD4gbV9jdXJyZW50U291cmNlTm9kZTsKICAgICBSZWZQ
dHI8SFRNTFNvdXJjZUVsZW1lbnQ+IG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXI7CiAKLSAgICBW
aWRlb0Z1bGxzY3JlZW5Nb2RlIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSB7IFZpZGVvRnVsbHNjcmVl
bk1vZGVOb25lIH07CisgICAgVmlkZW9GdWxsc2NyZWVuTW9kZSBtX3ZpZGVvRnVsbHNjcmVlbk1v
ZGUgeyBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OwogICAgIGJv
b2wgbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IHsgZmFsc2UgfTsKICAgICBib29sIG1fcHJlcGFy
ZWRGb3JJbmxpbmU7CiAgICAgRnVuY3Rpb248dm9pZCgpPiBtX3ByZXBhcmVkRm9ySW5saW5lQ29t
cGxldGlvbkhhbmRsZXI7CkBAIC0xMDU5LDcgKzEwNzYsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxNZWRpYVBsYXllcj4gbV9wbGF5ZXI7CiAgICAgYm9vbCBtX2NhY2hlZFN1cHBvcnRzQWNjZWxl
cmF0ZWRSZW5kZXJpbmcgeyBmYWxzZSB9OwogCi0gICAgTWVkaWFQbGF5ZXI6OlByZWxvYWQgbV9w
cmVsb2FkIHsgUHJlbG9hZDo6QXV0byB9OworICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIG1fcHJl
bG9hZCB7IE1lZGlhUGxheWVyOjpQcmVsb2FkOjpBdXRvIH07CiAKICAgICAvLyBDb3VudGVyIGlu
Y3JlbWVudGVkIHdoaWxlIHByb2Nlc3NpbmcgYSBjYWxsYmFjayBmcm9tIHRoZSBtZWRpYSBwbGF5
ZXIsIHNvIHdlIGNhbiBhdm9pZAogICAgIC8vIGNhbGxpbmcgdGhlIG1lZGlhIGVuZ2luZSByZWN1
cnNpdmVseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCmluZGV4IGY0
MGNlZGYyMjkzMDYwNTA3MWY2NzY1ZTNkZDA4Yjg0YmJkM2U4OGMuLmU5NWMzNDc0YTcxN2Q1N2Y4
NTFkNzQzN2QwZDQ5YTc2MTA5ODQxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmlkbApAQCAtNTMsNyArNTMsNyBAQCB0eXBlZGVmICgKICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBORVRXT1JLX0lETEUgPSAxOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5FVFdP
UktfTE9BRElORyA9IDI7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVUV09SS19OT19TT1VS
Q0UgPSAzOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBuZXR3b3JrU3Rh
dGU7CisgICAgW0ltcGxlbWVudGVkQXM9bmV0d29ya1N0YXRlRm9yQmluZGluZ3NdIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBuZXR3b3JrU3RhdGU7CiAgICAgW0NFUmVhY3Rpb25z
PU5vdE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZyBwcmVsb2FkOwogCiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFRpbWVSYW5nZXMgYnVmZmVyZWQ7CkBAIC02Nyw3ICs2Nyw3IEBAIHR5cGVkZWYg
KAogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEhBVkVfQ1VSUkVOVF9EQVRBID0gMjsKICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBIQVZFX0ZVVFVSRV9EQVRBID0gMzsKICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBIQVZFX0VOT1VHSF9EQVRBID0gNDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZWFkeVN0YXRl
Rm9yQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRl
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHNlZWtpbmc7CiAKICAgICAvLyBwbGF5
YmFjayBzdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50RW51bXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudEVudW1zLmgK
aW5kZXggOTVmZTMwZjAxNTJiMWU4MGE1MDIyNDEzNjhjODBhMjlkN2EzNmE2MS4uMGQ1ZWRkM2Vl
NGJhNTkxZDYzN2VjMDBmZjFmN2MyMGU3ZDE4ZGM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50RW51bXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnRFbnVtcy5oCkBAIC0yOSwyNCArMjksMTkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBIVE1MTWVkaWFFbGVtZW50RW51bXMgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJFbnVtcyB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZTsKK25hbWVzcGFjZSBIVE1MTWVkaWFFbGVtZW50RW51bXMgewogCi0gICAg
ZW51bSBSZWFkeVN0YXRlIHsgSEFWRV9OT1RISU5HLCBIQVZFX01FVEFEQVRBLCBIQVZFX0NVUlJF
TlRfREFUQSwgSEFWRV9GVVRVUkVfREFUQSwgSEFWRV9FTk9VR0hfREFUQSB9OwotICAgIGVudW0g
TmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBUWSwgTkVUV09SS19JRExFLCBORVRXT1JLX0xPQURJ
TkcsIE5FVFdPUktfTk9fU09VUkNFIH07Ci0gICAgZW51bSBUZXh0VHJhY2tWaXNpYmlsaXR5Q2hl
Y2tUeXBlIHsgQ2hlY2tUZXh0VHJhY2tWaXNpYmlsaXR5LCBBc3N1bWVUZXh0VHJhY2tWaXNpYmls
aXR5Q2hhbmdlZCB9OwotICAgIGVudW0gSW52YWxpZFVSTEFjdGlvbiB7IERvTm90aGluZywgQ29t
cGxhaW4gfTsKK2VudW0gY2xhc3MgVGV4dFRyYWNrVmlzaWJpbGl0eUNoZWNrVHlwZSA6IGJvb2wg
eyBDaGVja1RleHRUcmFja1Zpc2liaWxpdHksIEFzc3VtZVRleHRUcmFja1Zpc2liaWxpdHlDaGFu
Z2VkIH07CitlbnVtIGNsYXNzIEludmFsaWRVUkxBY3Rpb24gOiBib29sIHsgRG9Ob3RoaW5nLCBD
b21wbGFpbiB9OworCitlbnVtIGNsYXNzIFNlZWtUeXBlIDogdWludDhfdCB7CisgICAgTm9TZWVr
LAorICAgIEZhc3QsCisgICAgUHJlY2lzZQorfTsKIAotICAgIHR5cGVkZWYgZW51bSB7Ci0gICAg
ICAgIE5vU2VlaywKLSAgICAgICAgRmFzdCwKLSAgICAgICAgUHJlY2lzZQotICAgIH0gU2Vla1R5
cGU7CiB9OwogCi1TdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpSZWFkeVN0YXRlKTsKLVN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhIVE1MTWVkaWFFbGVtZW50RW51bXM6Ok5ldHdvcmtTdGF0ZSk7CiBTdHJpbmcgY29udmVydEVu
dW1lcmF0aW9uVG9TdHJpbmcoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpUZXh0VHJhY2tWaXNpYmls
aXR5Q2hlY2tUeXBlKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpAQCAtNTYsMjcgKzUxLDEx
IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIHN0cnVjdCBMb2dB
cmd1bWVudDsKIAotdGVtcGxhdGUgPD4KLXN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlJlYWR5U3RhdGU+IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nKGNvbnN0IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6UmVhZHlTdGF0ZSBzdGF0
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhzdGF0
ZSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50RW51bXM6Ok5ldHdvcmtTdGF0ZT4gewotICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpOZXR3b3Jr
U3RhdGUgc3RhdGUpCi0gICAgewotICAgICAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9T
dHJpbmcoc3RhdGUpOwotICAgIH0KLX07Ci0KIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgTG9nQXJndW1l
bnQ8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpUZXh0VHJhY2tWaXNpYmlsaXR5Q2hl
Y2tUeXBlPiB7CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlRleHRUcmFja1Zpc2liaWxpdHlDaGVja1R5cGUgdHlwZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyh0eXBlKTsKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OmNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHR5cGUpOwog
ICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4
IDk0OGQxZDQxNzQ4ZTlmYWQyOTIyY2FmNzBjZWI2NjhiNDg4ZTk5NDEuLjFkNGVjZWUyZDA4ZDlj
M2E0MDQzM2UyMzJlMmFmNDBiZmEwYWQwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcApAQCAtMTY0LDEyICsxNjQsMTIgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3Ry
aW4KICAgICB9CiB9CiAKLWJvb2wgSFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWVu
KEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3Jl
ZW5Nb2RlKSBjb25zdAorYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW4o
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2Rl
KSBjb25zdAogewogICAgIGlmICghcGxheWVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKLSAgICBpZiAodmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKSB7CisgICAgaWYgKHZpZGVvRnVs
bHNjcmVlbk1vZGUgPT0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1
cmVJblBpY3R1cmUpIHsKICAgICAgICAgaWYgKCFtZWRpYVNlc3Npb24oKS5hbGxvd3NQaWN0dXJl
SW5QaWN0dXJlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghcGxh
eWVyKCktPnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpKQpAQCAtMTkwLDEyICsxOTAsMTIgQEAg
Ym9vbCBIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW4oSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW4KICNlbHNlCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCi0gICAgaWYgKHZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgJiYgIWRvY3VtZW50KCkuc2V0dGluZ3MoKS5m
dWxsU2NyZWVuRW5hYmxlZCgpKQorICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5Nb2RlID09IE1lZGlh
UGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCAmJiAhZG9jdW1lbnQoKS5z
ZXR0aW5ncygpLmZ1bGxTY3JlZW5FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIElmIHRoZSBmdWxsIHNjcmVlbiBBUEkgaXMgZW5hYmxlZCBhbmQgaXMgc3VwcG9ydGVk
IGZvciB0aGUgY3VycmVudCBlbGVtZW50CiAgICAgLy8gZG8gbm90IHJlcXVpcmUgdGhhdCB0aGUg
cGxheWVyIGhhcyBhIHZpZGVvIHRyYWNrIHRvIGVudGVyIGZ1bGwgc2NyZWVuLgotICAgIGlmICh2
aWRlb0Z1bGxzY3JlZW5Nb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZVN0YW5kYXJkICYmIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnN1cHBvcnRzRnVsbFNj
cmVlbkZvckVsZW1lbnQoKnRoaXMsIGZhbHNlKSkKKyAgICBpZiAodmlkZW9GdWxsc2NyZWVuTW9k
ZSA9PSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgJiYgcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCkuc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudCgqdGhpcywg
ZmFsc2UpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCkBAIC0zMzUsNyArMzM1LDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RW50ZXJGdWxsc2Ny
ZWVuKCkKIAogICAgIC8vIEdlbmVyYXRlIGFuIGV4Y2VwdGlvbiBpZiB0aGlzIGlzbid0IGNhbGxl
ZCBpbiByZXNwb25zZSB0byBhIHVzZXIgZ2VzdHVyZSwgb3IgaWYgdGhlIAogICAgIC8vIGVsZW1l
bnQgZG9lcyBub3Qgc3VwcG9ydCBmdWxsc2NyZWVuLCBvciB0aGUgZWxlbWVudCBpcyBjaGFuZ2lu
ZyBmdWxsc2NyZWVuIG1vZGUuCi0gICAgaWYgKCFtZWRpYVNlc3Npb24oKS5mdWxsc2NyZWVuUGVy
bWl0dGVkKCkgfHwgIXN1cHBvcnRzRnVsbHNjcmVlbihIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkgfHwgaXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1v
ZGUoKSkKKyAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmZ1bGxzY3JlZW5QZXJtaXR0ZWQoKSB8fCAh
c3VwcG9ydHNGdWxsc2NyZWVuKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVT
dGFuZGFyZCkgfHwgaXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUoKSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICBlbnRlckZ1bGxzY3Jl
ZW4oKTsKQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdEV4
aXRGdWxsc2NyZWVuKCkKIAogYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTdXBwb3J0c0Z1
bGxzY3JlZW4oKQogewotICAgIHJldHVybiBzdXBwb3J0c0Z1bGxzY3JlZW4oSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOworICAgIHJldHVybiBzdXBw
b3J0c0Z1bGxzY3JlZW4oTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5k
YXJkKTsKIH0KIAogYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXREaXNwbGF5aW5nRnVsbHNj
cmVlbigpCkBAIC0zNjUsMTIgKzM2NSwxMiBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtp
dERpc3BsYXlpbmdGdWxsc2NyZWVuKCkKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6YW5jZXN0b3JX
aWxsRW50ZXJGdWxsc2NyZWVuKCkKIHsKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkKLSAgICBpZiAoZnVsbHNjcmVlbk1vZGUoKSA9PSBWaWRlb0Z1
bGxzY3JlZW5Nb2RlTm9uZSkKKyAgICBpZiAoZnVsbHNjcmVlbk1vZGUoKSA9PSBNZWRpYVBsYXll
ckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gSWYgdGhpcyB2aWRlbyBlbGVtZW50J3MgcHJlc2VudGF0aW9uIG1vZGUgaXMgbm90IGlubGlu
ZSwgYnV0IGl0cyBhbmNlc3RvcgogICAgIC8vIGlzIGVudGVyaW5nIGZ1bGxzY3JlZW4sIGV4aXQg
aXRzIGN1cnJlbnQgZnVsbHNjcmVlbiBtb2RlLgotICAgIGV4aXRUb0Z1bGxzY3JlZW5Nb2RlV2l0
aG91dEFuaW1hdGlvbklmUG9zc2libGUoZnVsbHNjcmVlbk1vZGUoKSwgVmlkZW9GdWxsc2NyZWVu
TW9kZU5vbmUpOworICAgIGV4aXRUb0Z1bGxzY3JlZW5Nb2RlV2l0aG91dEFuaW1hdGlvbklmUG9z
c2libGUoZnVsbHNjcmVlbk1vZGUoKSwgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZU5vbmUpOwogI2VuZGlmCiB9CiAKQEAgLTQyNCwxMyArNDI0LDEzIEBAIFVSTCBIVE1MVmlk
ZW9FbGVtZW50Ojpwb3N0ZXJJbWFnZVVSTCgpIGNvbnN0CiBib29sIEhUTUxWaWRlb0VsZW1lbnQ6
OndlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUgbW9k
ZSkgY29uc3QKIHsKICAgICBpZiAobW9kZSA9PSBWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OkZ1bGxz
Y3JlZW4pCi0gICAgICAgIHJldHVybiBzdXBwb3J0c0Z1bGxzY3JlZW4oSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOworICAgICAgICByZXR1cm4gc3Vw
cG9ydHNGdWxsc2NyZWVuKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFu
ZGFyZCk7CiAKICAgICBpZiAobW9kZSA9PSBWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJ
blBpY3R1cmUpIHsKICAgICAgICAgaWYgKCFzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gc3VwcG9ydHNGdWxsc2Ny
ZWVuKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBp
Y3R1cmUpOworICAgICAgICByZXR1cm4gc3VwcG9ydHNGdWxsc2NyZWVuKE1lZGlhUGxheWVyRW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKICAgICB9CiAKICAgICBp
ZiAobW9kZSA9PSBWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OklubGluZSkKQEAgLTQzOSwyOSArNDM5
LDI5IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0U3VwcG9ydHNQcmVzZW50YXRpb25N
b2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSBtb2RlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGF0aWMgaW5saW5lIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB0
b0Z1bGxzY3JlZW5Nb2RlKEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZSBt
b2RlKQorc3RhdGljIGlubGluZSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
IHRvRnVsbHNjcmVlbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2Rl
IG1vZGUpCiB7CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBIVE1MVmlkZW9FbGVtZW50
OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OkZ1bGxzY3JlZW46Ci0gICAgICAgIHJldHVybiBIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKICAg
ICBjYXNlIEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6UGljdHVyZUlu
UGljdHVyZToKLSAgICAgICAgcmV0dXJuIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmU7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZTsKICAgICBjYXNlIEhUTUxW
aWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6SW5saW5lOgotICAgICAgICByZXR1
cm4gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZTsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZTsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXJF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7CiB9CiAKLUhUTUxWaWRlb0VsZW1lbnQ6OlZp
ZGVvUHJlc2VudGF0aW9uTW9kZSBIVE1MVmlkZW9FbGVtZW50Ojp0b1ByZXNlbnRhdGlvbk1vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCitIVE1MVmlk
ZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGUgSFRNTFZpZGVvRWxlbWVudDo6dG9QcmVz
ZW50YXRpb25Nb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkK
IHsKLSAgICBpZiAobW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGVTdGFuZGFyZCkKKyAgICBpZiAobW9kZSA9PSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCiAgICAgICAgIHJldHVybiBIVE1MVmlkZW9FbGVtZW50OjpW
aWRlb1ByZXNlbnRhdGlvbk1vZGU6OkZ1bGxzY3JlZW47CiAKLSAgICBpZiAobW9kZSAmIEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCisg
ICAgaWYgKG1vZGUgJiBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVy
ZUluUGljdHVyZSkKICAgICAgICAgcmV0dXJuIEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2Vu
dGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZTsKIAotICAgIGlmIChtb2RlID09IEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpCisgICAgaWYgKG1vZGUgPT0g
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpCiAgICAgICAgIHJldHVy
biBIVE1MVmlkZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OklubGluZTsKIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgSFRNTFZpZGVv
RWxlbWVudDo6c2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUgbW9kZSkK
ICAgICBhdXRvIHZpZGVvRnVsbHNjcmVlbk1vZGUgPSB0b0Z1bGxzY3JlZW5Nb2RlKG1vZGUpOwog
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICIsIHZpZGVvRnVsbHNjcmVlbk1vZGUgPSAiLCB2
aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKIAotICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZp
ZGVvRnVsbHNjcmVlbk1vZGVOb25lKSB7CisgICAgaWYgKHZpZGVvRnVsbHNjcmVlbk1vZGUgPT0g
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpIHsKICAgICAgICAgaWYg
KGlzRnVsbHNjcmVlbigpKSB7CiAgICAgICAgICAgICBpZiAodG9QcmVzZW50YXRpb25Nb2RlKGZ1
bGxzY3JlZW5Nb2RlKCkpID09IFZpZGVvUHJlc2VudGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVy
ZSkKICAgICAgICAgICAgICAgICBtX2V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gdHJ1ZTsKQEAg
LTQ5Nyw5ICs0OTcsOSBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldFByZXNlbnRhdGlvbk1v
ZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlIG1vZGUpCiAgICAgaWYgKCFtZWRpYVNlc3Npb24oKS5m
dWxsc2NyZWVuUGVybWl0dGVkKCkgfHwgIXN1cHBvcnRzRnVsbHNjcmVlbih2aWRlb0Z1bGxzY3Jl
ZW5Nb2RlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHZpZGVvRnVsbHNjcmVlbk1vZGUg
PT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCisgICAgaWYgKHZpZGVvRnVs
bHNjcmVlbk1vZGUgPT0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1
cmVJblBpY3R1cmUpCiAgICAgICAgIG1fZW50ZXJpbmdQaWN0dXJlSW5QaWN0dXJlID0gdHJ1ZTsK
LSAgICBlbHNlIGlmIChmdWxsc2NyZWVuTW9kZSgpID09IFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0
dXJlSW5QaWN0dXJlKQorICAgIGVsc2UgaWYgKGZ1bGxzY3JlZW5Nb2RlKCkgPT0gTWVkaWFQbGF5
ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgIG1f
ZXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSB0cnVlOwogCiAgICAgZW50ZXJGdWxsc2NyZWVuKHZp
ZGVvRnVsbHNjcmVlbk1vZGUpOwpAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgSFRNTFZpZGVvRWxl
bWVudDo6c2V0UGljdHVyZUluUGljdHVyZU9ic2VydmVyKFBpY3R1cmVJblBpY3R1cmVPYnNlcnZl
ciogb2JzCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogCiAjaWYg
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi12b2lkIEhU
TUxWaWRlb0VsZW1lbnQ6OmV4aXRUb0Z1bGxzY3JlZW5Nb2RlV2l0aG91dEFuaW1hdGlvbklmUG9z
c2libGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIGZyb21Nb2Rl
LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdG9Nb2RlKQordm9p
ZCBIVE1MVmlkZW9FbGVtZW50OjpleGl0VG9GdWxsc2NyZWVuTW9kZVdpdGhvdXRBbmltYXRpb25J
ZlBvc3NpYmxlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgZnJvbU1vZGUs
IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdG9Nb2RlKQogewogICAgIGlm
IChkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuc3VwcG9ydHNWaWRlb0Z1bGxz
Y3JlZW4oZnJvbU1vZGUpKQogICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xp
ZW50KCkuZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oKnRoaXMsIHRv
TW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IDg1NmFkZWE3
OGZiNzM5OGQ4ZmI0NWY0NDhhMzU5MWJkYTU1Zjk3MmMuLmYzN2ZhNDY4NmYyMjU3OGJjYjI5NDU3
ZDQ4OTVjMTdkYWM4Nzc3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5o
CkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkKICAgICBlbnVtIGNsYXNzIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB7IElubGluZSwg
RnVsbHNjcmVlbiwgUGljdHVyZUluUGljdHVyZSB9OwotICAgIHN0YXRpYyBWaWRlb1ByZXNlbnRh
dGlvbk1vZGUgdG9QcmVzZW50YXRpb25Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSk7CisgICAgc3RhdGljIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB0b1ByZXNl
bnRhdGlvbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCB3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlKSBj
b25zdDsKICAgICBWaWRlb1ByZXNlbnRhdGlvbk1vZGUgd2Via2l0UHJlc2VudGF0aW9uTW9kZSgp
IGNvbnN0OwogICAgIHZvaWQgd2Via2l0U2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRh
dGlvbk1vZGUpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgdm9pZCBl
eGl0VG9GdWxsc2NyZWVuTW9kZVdpdGhvdXRBbmltYXRpb25JZlBvc3NpYmxlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBmcm9tTW9kZSwgSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRvTW9kZSk7CisgICAgdm9pZCBleGl0VG9GdWxs
c2NyZWVuTW9kZVdpdGhvdXRBbmltYXRpb25JZlBvc3NpYmxlKFZpZGVvRnVsbHNjcmVlbk1vZGUg
ZnJvbU1vZGUsIFZpZGVvRnVsbHNjcmVlbk1vZGUgdG9Nb2RlKTsKICNlbmRpZgogCiAgICAgUmVu
ZGVyVmlkZW8qIHJlbmRlcmVyKCkgY29uc3Q7CkBAIC0xMzAsNyArMTMwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYp
IGZpbmFsOwogICAgIGJvb2wgaXNWaWRlbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
ICAgICBib29sIGhhc1ZpZGVvKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcGxheWVyKCkgJiYgcGxh
eWVyKCktPmhhc1ZpZGVvKCk7IH0KLSAgICBib29sIHN1cHBvcnRzRnVsbHNjcmVlbihIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIGNvbnN0IGZpbmFsOworICAgIGJv
b2wgc3VwcG9ydHNGdWxsc2NyZWVuKFZpZGVvRnVsbHNjcmVlbk1vZGUpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgZmluYWw7CiAg
ICAgY29uc3QgQXRvbVN0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBmaW5hbDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAppbmRleCBiODg2Yjc3MDRhMTRkZjU2NzdhNGQxNmJj
YmNlNTg5ZDBhNTIzZWViLi4zNWEyMWZjNGRmYzNiMmUxOWJjMzNkYzAzMmViOTU5M2NhMGE0NmNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcApAQCAtNDgzLDE0ICs0ODMsMTQgQEAg
dm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIC8vIDQuIENoZWNrIHRoZSB1c2FiaWxpdHkgb2Yg
dGhlIGltYWdlIGFyZ3VtZW50LiBJZiB0aGlzIHRocm93cyBhbiBleGNlcHRpb24KICAgICAvLyAg
ICBvciByZXR1cm5zIGJhZCwgdGhlbiByZXR1cm4gcCByZWplY3RlZCB3aXRoIGFuICJJbnZhbGlk
U3RhdGVFcnJvciIKICAgICAvLyAgICBET01FeGNlcHRpb24uCi0gICAgaWYgKHZpZGVvLT5yZWFk
eVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6SEFWRV9OT1RISU5HIHx8IHZpZGVvLT5yZWFk
eVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6SEFWRV9NRVRBREFUQSkgeworICAgIGlmICh2
aWRlby0+cmVhZHlTdGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6OlJlYWR5U3RhdGU6OkhhdmVO
b3RoaW5nIHx8IHZpZGVvLT5yZWFkeVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6UmVhZHlT
dGF0ZTo6SGF2ZU1ldGFkYXRhKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0
ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBiZWZvcmUgdGhlIEhUTUxWaWRlb0Vs
ZW1lbnQgaGFzIGRhdGEiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIDYuMS4g
SWYgaW1hZ2UncyBuZXR3b3JrU3RhdGUgYXR0cmlidXRlIGlzIE5FVFdPUktfRU1QVFksIHRoZW4g
cmV0dXJuIHAKICAgICAvLyAgICAgIHJlamVjdGVkIHdpdGggYW4gIkludmFsaWRTdGF0ZUVycm9y
IiBET01FeGNlcHRpb24uCi0gICAgaWYgKHZpZGVvLT5uZXR3b3JrU3RhdGUoKSA9PSBIVE1MTWVk
aWFFbGVtZW50OjpORVRXT1JLX0VNUFRZKSB7CisgICAgaWYgKHZpZGVvLT5uZXR3b3JrU3RhdGUo
KSA9PSBIVE1MTWVkaWFFbGVtZW50OjpOZXR3b3JrU3RhdGU6OkVtcHR5KSB7CiAgICAgICAgIHBy
b21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1h
cCBiZWZvcmUgdGhlIEhUTUxWaWRlb0VsZW1lbnQgaGFzIGRhdGEiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAppbmRleCA3NTMz
NTBjODA3YzNjNjYwMmEyMzA1YWEyYjNiZjc0OGE1MGU0N2MzLi5kYmU3ZWJhZmU2MWFhNTU2MWMy
MjcxMzM2MTY5NTk4Yzk3MWE2NTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xs
ZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIE1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX3ZvbHVtZSgxKQogICAg
ICwgbV9wb3NpdGlvbihNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSkKICAgICAsIG1fbXV0ZWQo
ZmFsc2UpCi0gICAgLCBtX3JlYWR5U3RhdGUoSEFWRV9OT1RISU5HKQorICAgICwgbV9yZWFkeVN0
YXRlKE1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nKQogICAgICwgbV9w
bGF5YmFja1N0YXRlKFdBSVRJTkcpCiAgICAgLCBtX2FzeW5jRXZlbnRUaW1lcigqdGhpcywgJk1l
ZGlhQ29udHJvbGxlcjo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX2NsZWFyUG9zaXRp
b25UaW1lcigqdGhpcywgJk1lZGlhQ29udHJvbGxlcjo6Y2xlYXJQb3NpdGlvblRpbWVyRmlyZWQp
CkBAIC0zMjYsMTggKzMyNiwxOCBAQCB2b2lkIE1lZGlhQ29udHJvbGxlcjo6cmVwb3J0Q29udHJv
bGxlclN0YXRlKCkKICAgICB1cGRhdGVQbGF5YmFja1N0YXRlKCk7CiB9CiAKLXN0YXRpYyBBdG9t
U3RyaW5nIGV2ZW50TmFtZUZvclJlYWR5U3RhdGUoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlOjpS
ZWFkeVN0YXRlIHN0YXRlKQorc3RhdGljIEF0b21TdHJpbmcgZXZlbnROYW1lRm9yUmVhZHlTdGF0
ZShNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlIHN0YXRlKQogewogICAgIHN3aXRjaCAoc3Rh
dGUpIHsKLSAgICBjYXNlIE1lZGlhQ29udHJvbGxlckludGVyZmFjZTo6SEFWRV9OT1RISU5HOgor
ICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc6CiAgICAg
ICAgIHJldHVybiBldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50OwotICAgIGNhc2UgTWVkaWFDb250
cm9sbGVySW50ZXJmYWNlOjpIQVZFX01FVEFEQVRBOgorICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVt
czo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhOgogICAgICAgICByZXR1cm4gZXZlbnROYW1lcygp
LmxvYWRlZG1ldGFkYXRhRXZlbnQ7Ci0gICAgY2FzZSBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6
OkhBVkVfQ1VSUkVOVF9EQVRBOgorICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0
ZTo6SGF2ZUN1cnJlbnREYXRhOgogICAgICAgICByZXR1cm4gZXZlbnROYW1lcygpLmxvYWRlZGRh
dGFFdmVudDsKLSAgICBjYXNlIE1lZGlhQ29udHJvbGxlckludGVyZmFjZTo6SEFWRV9GVVRVUkVf
REFUQToKKyAgICBjYXNlIE1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGU6OkhhdmVGdXR1cmVE
YXRhOgogICAgICAgICByZXR1cm4gZXZlbnROYW1lcygpLmNhbnBsYXlFdmVudDsKLSAgICBjYXNl
IE1lZGlhQ29udHJvbGxlckludGVyZmFjZTo6SEFWRV9FTk9VR0hfREFUQToKKyAgICBjYXNlIE1l
ZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGU6OkhhdmVFbm91Z2hEYXRhOgogICAgICAgICByZXR1
cm4gZXZlbnROYW1lcygpLmNhbnBsYXl0aHJvdWdoRXZlbnQ7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBNZWRpYUNv
bnRyb2xsZXI6OnVwZGF0ZVJlYWR5U3RhdGUoKQogICAgIAogICAgIGlmIChtX21lZGlhRWxlbWVu
dHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaGFzIG5v
IG1lZGlhZ3JvdXAgZWxlbWVudHMsIGxldCBuZXcgcmVhZGluZXNzIHN0YXRlIGJlIDAuCi0gICAg
ICAgIG5ld1JlYWR5U3RhdGUgPSBIQVZFX05PVEhJTkc7CisgICAgICAgIG5ld1JlYWR5U3RhdGUg
PSBSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBPdGhl
cndpc2UsIGxldCBpdCBoYXZlIHRoZSBsb3dlc3QgdmFsdWUgb2YgdGhlIHJlYWR5U3RhdGUgSURM
IGF0dHJpYnV0ZXMgb2YgYWxsIG9mIGl0cwogICAgICAgICAvLyBtZWRpYWdyb3VwIGVsZW1lbnRz
LgpAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgTWVkaWFDb250cm9sbGVyOjp1cGRhdGVSZWFkeVN0
YXRlKCkKICAgICBSZWFkeVN0YXRlIG5leHRTdGF0ZSA9IG9sZFJlYWR5U3RhdGU7CiAgICAgZG8g
ewogICAgICAgICAvLyAyLiBMb29wOiBJbmNyZW1lbnQgbmV4dCBzdGF0ZSBieSBvbmUuCi0gICAg
ICAgIG5leHRTdGF0ZSA9IHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KG5leHRTdGF0ZSArIDEpOwor
ICAgICAgICBuZXh0U3RhdGUgPSBzdGF0aWNfY2FzdDxSZWFkeVN0YXRlPihzdGF0aWNfY2FzdDx1
aW50OF90PihuZXh0U3RhdGUpICsgMSk7CiAgICAgICAgIC8vIDMuIFF1ZXVlIGEgdGFzayB0byBm
aXJlIGEgc2ltcGxlIGV2ZW50IGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIgb2JqZWN0LCB3aG9zZSBu
YW1lIGlzIHRoZQogICAgICAgICAvLyBldmVudCBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZh
bHVlIG9mIG5leHQgc3RhdGUgZ2l2ZW4gaW4gdGhlIHRhYmxlIGJlbG93LiBbb21pdHRlZF0KICAg
ICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVGb3JSZWFkeVN0YXRlKG5leHRTdGF0ZSkpOyAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaAppbmRleCA1MzhkYzJlNzgy
Mjk0NDdkOTc2MWE4MzdmNWUyOTY0OWM4MTBkYWViLi5kNWQ4ZGY4Y2VhZjdkZDRkYWQyMmI2ZDNj
ZTQzZTkyYjk0OGMwZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKQEAg
LTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3Vw
KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUdyb3VwOyB9CiAKLSAgICBib29sIHN1cHBvcnRzRnVs
bHNjcmVlbihIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oTWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgKaW5kZXggZDUzNDc0MTRj
YzUyMGY2NjZkZGRlYjAwYWRmODk2YTBiNjY1NWMxMi4uMmE2Njc5NGJkZWVkNDFjNWUwMTQ4ZjE2
ZWFhZGIxMTQ4YTJhOTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNv
bnRyb2xsZXJJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJv
bGxlckludGVyZmFjZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgVGltZVJhbmdlczsKIAotY2xhc3MgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlIDogcHVi
bGljIEhUTUxNZWRpYUVsZW1lbnRFbnVtcyB7CitjbGFzcyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhQ29udHJvbGxlckludGVyZmFjZSgpIHsg
fTsKICAgICAKQEAgLTYzLDExICs2MywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG11
dGVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKSA9IDA7CiAK
LSAgICB1c2luZyBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlJlYWR5U3RhdGU7CisgICAgdXNpbmcg
UmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGU7CiAgICAgdmlydHVhbCBS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCA9IDA7CiAKICAgICAvLyBNZWRpYUNvbnRyb2xF
bGVtZW50czoKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpID0gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5kZXggYTg5Yjg0ODgwNGY1Zjc1
YzQ0NWMwZWJlNTdkZDJmYTYxMWJkZGE0NC4uM2U5MDJmNzlkOTU1NzZlYWIxYjUzODM3NDk5ZjA0
MmIxMGE3M2M2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24u
Y3BwCkBAIC0zOTMsNyArMzkzLDcgQEAgRXhwZWN0ZWQ8dm9pZCwgTWVkaWFQbGF5YmFja0Rlbmlh
bFJlYXNvbj4gTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGxheWJhY2tTdGF0ZUNoYW4KICAgICAvLyBG
SVhNRTogV2h5IGFyZSB3ZSBjaGVja2luZyB0b3AtbGV2ZWwgZG9jdW1lbnQgb25seSBmb3IgUGVy
RG9jdW1lbnRBdXRvcGxheUJlaGF2aW9yPwogICAgIGNvbnN0IGF1dG8mIHRvcERvY3VtZW50ID0g
ZG9jdW1lbnQudG9wRG9jdW1lbnQoKTsKICAgICBpZiAodG9wRG9jdW1lbnQucXVpcmtzKCkucmVx
dWlyZXNVc2VyR2VzdHVyZVRvUGF1c2VJblBpY3R1cmVJblBpY3R1cmUoKQotICAgICAgICAmJiBt
X2VsZW1lbnQuZnVsbHNjcmVlbk1vZGUoKSAmIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUKKyAgICAgICAgJiYgbV9lbGVtZW50LmZ1bGxz
Y3JlZW5Nb2RlKCkgJiBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVy
ZUluUGljdHVyZQogICAgICAgICAmJiAhbV9lbGVtZW50LnBhdXNlZCgpICYmIHN0YXRlID09IE1l
ZGlhUGxheWJhY2tTdGF0ZTo6UGF1c2VkCiAgICAgICAgICYmICFkb2N1bWVudC5wcm9jZXNzaW5n
VXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7CiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
UiwgIlJldHVybmluZyBGQUxTRSBiZWNhdXNlIGEgcXVpcmsgcmVxdWlyZXMgYSB1c2VyIGdlc3R1
cmUgdG8gcGF1c2Ugd2hpbGUgaW4gUGljdHVyZS1pbi1QaWN0dXJlIik7CkBAIC02NzksNyArNjc5
LDcgQEAgdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIo
KQogICAgIH0KIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmIChtX2VsZW1lbnQu
cmVhZHlTdGF0ZSgpIDwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpIQVZFX01FVEFEQVRBKSB7Cisg
ICAgaWYgKG1fZWxlbWVudC5yZWFkeVN0YXRlKCkgPCBIVE1MTWVkaWFFbGVtZW50OjpSZWFkeVN0
YXRlOjpIYXZlTWV0YWRhdGEpIHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJl
dHVybmluZyBlYXJseSBiZWNhdXNlIGVsZW1lbnQgaXMgbm90IHBsYXlhYmxlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC04NDEsNyArODQxLDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNz
aW9uOjpyZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkgY29uc3QKICAgICBpZiAo
bV9lbGVtZW50LmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkpIHsKICAgICAgICAgQVNTRVJU
KGlzPEhUTUxWaWRlb0VsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgICAgICBjb25zdCBIVE1MVmlk
ZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQgPSAqZG93bmNhc3Q8Y29uc3QgSFRNTFZpZGVvRWxlbWVu
dD4oJm1fZWxlbWVudCk7Ci0gICAgICAgIGlmIChtX2VsZW1lbnQucmVhZHlTdGF0ZSgpIDwgSFRN
TFZpZGVvRWxlbWVudDo6SEFWRV9NRVRBREFUQSB8fCAhdmlkZW9FbGVtZW50Lmhhc0V2ZXJIYWRW
aWRlbygpKQorICAgICAgICBpZiAobV9lbGVtZW50LnJlYWR5U3RhdGUoKSA8IEhUTUxWaWRlb0Vs
ZW1lbnQ6OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSB8fCAhdmlkZW9FbGVtZW50Lmhhc0V2ZXJI
YWRWaWRlbygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcAppbmRleCA2ZGVmZWI4MTJjMzcyMmMzOGVhMmZjOGQwNzkxZmFlMjliMTYwZDZl
Li4yNDg3ZGU3YjBmMTVhZjliMmY2NmEwMzM2Y2ZjMmJlMGEwZmI2ZjVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcApAQCAtMTYzMiw3ICsxNjMyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKENhbnZhc0Jhc2UmIHNvdXJjZUNhbnYK
IAogRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0lt
YWdlKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKIHsKLSAgICBpZiAodmlkZW8ucmVhZHlTdGF0ZSgpID09
IEhUTUxNZWRpYUVsZW1lbnQ6OkhBVkVfTk9USElORyB8fCB2aWRlby5yZWFkeVN0YXRlKCkgPT0g
SFRNTE1lZGlhRWxlbWVudDo6SEFWRV9NRVRBREFUQSkKKyAgICBpZiAodmlkZW8ucmVhZHlTdGF0
ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nIHx8IHZpZGVv
LnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRh
dGEpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBGbG9hdFJlY3QgdmlkZW9SZWN0ID0gRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSh2aWRlbykpOwpAQCAtMTk3Niw3ICsxOTc2LDcgQEAg
RXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEMKIAogRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRl
cm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEhUTUxWaWRl
b0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCiB7Ci0g
ICAgaWYgKHZpZGVvRWxlbWVudC5yZWFkeVN0YXRlKCkgPCBIVE1MTWVkaWFFbGVtZW50OjpIQVZF
X0NVUlJFTlRfREFUQSkKKyAgICBpZiAodmlkZW9FbGVtZW50LnJlYWR5U3RhdGUoKSA8IEhUTUxN
ZWRpYUVsZW1lbnQ6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgCiAgICAgY2hlY2tPcmlnaW4oJnZpZGVvRWxlbWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAwZjhkNWM1ZTRiZGY0YWJiMjU0OWNlMTY5ZTUxN2U0
YjQyMmEzNzkyLi5lMWYzY2EyY2U5YjFmMzFjNjhlOGJkYmZlMTUxM2NhM2JmZWEzNzY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTQwOCw3ICs0MDgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRhcHRlcigp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCBib29sIHN1
cHBvcnRzVmlkZW9GdWxsc2NyZWVuKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNWaWRl
b0Z1bGxzY3JlZW4oTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFu
ZGJ5KCkgeyByZXR1cm4gZmFsc2U7IH0KIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkKQEAgLTQxNiw3ICs0MTYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShW
SURFTykKLSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1l
bnQoSFRNTFZpZGVvRWxlbWVudCYsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSwgYm9vbCBzdGFuZGJ5KSB7IFVOVVNFRF9QQVJBTShzdGFuZGJ5KTsgfQorICAgIHZp
cnR1YWwgdm9pZCBlbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9F
bGVtZW50JiwgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBzdGFu
ZGJ5KSB7IFVOVVNFRF9QQVJBTShzdGFuZGJ5KTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRVcFBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyKEhUTUxNZWRpYUVsZW1lbnQmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBwbGF5YmFja0NvbnRyb2xzTWVkaWFFbmdpbmVDaGFuZ2VkKCkgeyB9CkBAIC00MjksNyArNDI5
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZXhpdFZpZGVvRnVsbHNj
cmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdKGJvb2wpIHsgfSkgeyBjb21wbGV0
aW9uSGFuZGxlcih0cnVlKTsgfQotICAgIHZpcnR1YWwgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVu
VG9Nb2RlV2l0aG91dEFuaW1hdGlvbihIVE1MVmlkZW9FbGVtZW50JiwgSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhpdFZp
ZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oSFRNTFZpZGVvRWxlbWVudCYsIE1l
ZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkgeyByZXR1cm4gZmFsc2U7IH0g
CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50Lm1tCmluZGV4IGJmMDEzNGQ4NzY2MDhiNjUyZWU1Mzg0MzZmYmEwZGY5YzJhY2E4YzMuLjE5
ZGZiZTQ2OTQzOTFlYmYzOGJmY2ViZjAwYjc5OGRiNzFiMjc4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Lm1tCkBAIC00NzYsNyArNDc2LDcgQEAgYm9vbCBQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6aXNQbGF5aW5nKCkgY29uc3QKIAogYm9vbCBQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6aXNTdGFsbGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9tZWRpYUVsZW1lbnQgJiYgbV9tZWRpYUVsZW1lbnQtPnJlYWR5U3RhdGUoKSA8PSBIVE1MTWVk
aWFFbGVtZW50OjpIQVZFX0NVUlJFTlRfREFUQTsKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQg
JiYgbV9tZWRpYUVsZW1lbnQtPnJlYWR5U3RhdGUoKSA8PSBNZWRpYVBsYXllckVudW1zOjpSZWFk
eVN0YXRlOjpIYXZlQ3VycmVudERhdGE7CiB9CiAKIGRvdWJsZSBQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudDo6ZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0CkBAIC02MzgsNyArNjM4
LDcgQEAgYm9vbCBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6aXNQaWN0dXJlSW5Q
aWN0dXJlQWN0aXZlKCkgY29uc3QKICAgICBpZiAoIW1fbWVkaWFFbGVtZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gKG1fbWVkaWFFbGVtZW50LT5mdWxsc2NyZWVuTW9k
ZSgpICYgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUlu
UGljdHVyZSkgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGlj
dHVyZUluUGljdHVyZTsKKyAgICByZXR1cm4gKG1fbWVkaWFFbGVtZW50LT5mdWxsc2NyZWVuTW9k
ZSgpICYgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1
cmUpID09IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0
dXJlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTW9kZWwuaAppbmRleCBmODFjMjgxMTJiMzFjYmVhNDVlNThhNmFhYmViNmRm
ZDRkODhkN2U2Li42ZjliM2ZhNTE3Mjg5NDVlYmNhOTFlMGFjYzAwZTY2YWZlMTI5ZDgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2Rl
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsLmgKQEAgLTUxLDEwICs1MSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFkZENs
aWVudChWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlQ2xpZW50KFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jik9IDA7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSA9IGZhbHNlKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllckVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhID0gZmFsc2UpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShNZWRpYVBsYXllckVudW1zOjpWaWRl
b0dyYXZpdHkpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSkgPSAwOwogCiAgICAgdmlydHVhbCBGbG9hdFNpemUgdmlkZW9EaW1lbnNpb25z
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0ID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IGQ5MjVkMDVmYTFkYzBhMGNkYWZlYjdj
NjZiMTdjZjMwODk0OWNmOWQuLmU0YmM2ZGVmYjU0OTQ1NzUxOTM2NjlkODgzNTQ0YTY0MjY0ZWVl
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApAQCAtNjYsMTAgKzY2LDEwIEBA
IHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2xpZW50KFZpZGVvRnVsbHNj
cmVlbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1v
dmVDbGllbnQoVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmKSBvdmVycmlkZTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEgPSBmYWxzZSkg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUo
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhN
ZWRpYSA9IGZhbHNlKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVv
TGF5ZXJGcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VmlkZW9MYXllckdyYXZpdHkoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5KSBvdmVy
cmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKE1lZGlhUGxheWVyRW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIEZsb2F0U2l6ZSB2aWRlb0RpbWVu
c2lvbnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ZpZGVvRGltZW5zaW9uczsgfQogICAg
IGJvb2wgaGFzVmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc1ZpZGVvOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggMWE1MjZjODMzZjM4YTNjMjA2
MzY5ZGM5N2JjYzc3NmVlMzVhMDVlMC4uZTMxYjYyNWIwMjY0MWJmYWIyZTYxZjUxY2YxNWVjMTAy
MzdjYmFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTE1MSwxMiAr
MTUxLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OndhaXRGb3JQ
cmVwYXJlZEZvcklubGluZVRoZW4oV1RGOjpGdW5jdGlvCiAgICAgbV92aWRlb0VsZW1lbnQtPndh
aXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0RnVsbHNj
cmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUs
IGJvb2wgZmluaXNoZWRXaXRoTWVkaWEpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQogewogICAgIGlmIChtX3Zp
ZGVvRWxlbWVudCkKICAgICAgICAgbV92aWRlb0VsZW1lbnQtPnNldFByZXNlbnRhdGlvbk1vZGUo
SFRNTFZpZGVvRWxlbWVudDo6dG9QcmVzZW50YXRpb25Nb2RlKG1vZGUpKTsKIAotICAgIGlmICht
X3ZpZGVvRWxlbWVudCAmJiBmaW5pc2hlZFdpdGhNZWRpYSAmJiBtb2RlID09IE1lZGlhUGxheWVy
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkgeworICAgIGlmIChtX3ZpZGVvRWxlbWVudCAmJiBm
aW5pc2hlZFdpdGhNZWRpYSAmJiBtb2RlID09IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGVOb25lKSB7CiAgICAgICAgIGlmIChtX3ZpZGVvRWxlbWVudC0+ZG9jdW1lbnQoKS5p
c01lZGlhRG9jdW1lbnQoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IG1fdmlk
ZW9FbGVtZW50LT5kb2N1bWVudCgpLmRvbVdpbmRvdygpKQogICAgICAgICAgICAgICAgIHdpbmRv
dy0+aGlzdG9yeSgpLmJhY2soKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBjb25zdCBBdG9tU3RyaW5n
JiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxsKCkKICAgICBy
ZXR1cm4gc0V2ZW50TmFtZUFsbDsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQordm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKE1lZGlhUGxheWVyRW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKIHsKICAgICBpZiAo
bV92aWRlb0VsZW1lbnQpIHsKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUlu
ZGljYXRvcihQcm9jZXNzaW5nVXNlckdlc3R1cmUsICZtX3ZpZGVvRWxlbWVudC0+ZG9jdW1lbnQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKaW5kZXggNzVkNDk1MzRmNGQxYjc5ZGI2ZGU3MGRiZDgzMDZhNzQyN2NkNDIwZS4uNDc5NjNi
ODE4YjYxNjkzZTg5NDQyZjdiN2Y2ZWEwMGU1MDZiYzJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTgxMiwxMCArMTgxMiwx
MSBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZSBlbnVtZXJhdGlvblZhbHVlKQogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8
c2l6ZV90PihNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eSkgPT0gMCwgIk1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5IGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6
OklkbGUpID09IDEsICJNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpJZGxlIGlzIG5vdCAxIGFz
IGV4cGVjdGVkIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlh
UGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRpbmcpID09IDIsICJNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlOjpMb2FkaW5nIGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRlZCkg
PT0gMywgIk1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRlZCBpcyBub3QgMyBhcyBleHBl
Y3RlZCIpOwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXll
cjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcikgPT0gNCwgIk1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGU6OkZvcm1hdEVycm9yIGlzIG5vdCA0IGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdv
cmtFcnJvcikgPT0gNSwgIk1lZGlhUGxheWVyOjpOZXR3b3JrRXJyb3IgaXMgbm90IDUgYXMgZXhw
ZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5
ZXI6Ok5ldHdvcmtTdGF0ZTo6RGVjb2RlRXJyb3IpID09IDYsICJNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlOjpEZWNvZGVFcnJvciBpcyBub3QgNiBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpOb1Nv
dXJjZSkgPT0gMywgIk1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Ok5vU291cmNlIGlzIG5vdCAz
IGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRlZCkgPT0gNCwgIk1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGU6OkxvYWRlZCBpcyBub3QgMyBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRF
cnJvcikgPT0gNSwgIk1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yIGlzIG5v
dCA0IGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+
KE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtFcnJvcikgPT0gNiwgIk1lZGlhUGxh
eWVyOjpOZXR3b3JrRXJyb3IgaXMgbm90IDUgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RGVjb2Rl
RXJyb3IpID09IDcsICJNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpEZWNvZGVFcnJvciBpcyBu
b3QgNiBhcyBleHBlY3RlZCIpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1l
cmF0aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4gdmFs
dWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggMDA0NWI1NGY1
MDQ4MjAzM2Q0ZjhmMzRjNmNkNjVlM2Q5MDlhNzMxMC4uNWE3OTQ5MzQwMTQyMjBhMWU3ZjI3MGQ5
Zjc3ZDBkMTU5MTZkMzlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCkBAIC0yOTYsNyArMjk2LDcgQEAgcHVibGljOgogI2VuZGlmCiB9Owog
Ci1jbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVBsYXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVu
dW1zLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVkaWFQbGF5ZXIsIFdURjo6RGVzdHJ1
Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFQbGF5ZXI+IHsK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhUGxheWVyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPE1lZGlhUGxheWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPE1lZGlhUGxheWVyPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TWVkaWFQbGF5ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPE1lZGlhUGxheWVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJDbGllbnQmKTsKQEAgLTMwNSw4
ICszMDUsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKKyAgICB1c2lu
ZyBOZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU7CisgICAgdXNp
bmcgUmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGU7CisgICAgdXNpbmcg
TW92aWVMb2FkVHlwZSA9IE1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGU7CisgICAgdXNp
bmcgUHJlbG9hZCA9IE1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQ7CisgICAgdXNpbmcgVmlkZW9H
cmF2aXR5ID0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5OworICAgIHVzaW5nIFN1cHBv
cnRzVHlwZSA9IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTsKKyAgICB1c2luZyBCdWZm
ZXJpbmdQb2xpY3kgPSBNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3k7CisgICAgdXNp
bmcgTWVkaWFFbmdpbmVJZGVudGlmaWVyID0gTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyOworICAgIHVzaW5nIFdpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlID0gTWVkaWFQ
bGF5ZXJFbnVtczo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGU7CisgICAgdXNpbmcgUGl0Y2hD
b3JyZWN0aW9uQWxnb3JpdGhtID0gTWVkaWFQbGF5ZXJFbnVtczo6UGl0Y2hDb3JyZWN0aW9uQWxn
b3JpdGhtOworICAgIHVzaW5nIFZpZGVvRnVsbHNjcmVlbk1vZGUgPSBNZWRpYVBsYXllckVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlOworCiAgICAgLy8gTWVkaWEgZW5naW5lIHN1cHBvcnQuCi0g
ICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOwogICAgIHN0YXRpYyBjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIG1lZGlhRW5naW5lKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllcik7CiAgICAgc3RhdGljIFN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUo
Y29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwogICAgIHN0YXRpYyB2b2lkIGdl
dFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
Jik7CkBAIC0zMzIsNyArMzQzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlciA9IFtdIHsgfSk7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJl
Y3QpOwogICAgIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKTsKLSAgICB1
c2luZyBNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHk7CiAgICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5HcmF2aXR5KFZpZGVvR3Jhdml0eSk7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIFZpZGVvRnVsbHNjcmVlbk1vZGUgZnVs
bHNjcmVlbk1vZGUoKSBjb25zdDsKQEAgLTM3Miw3ICszODIsNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBwbGF5KCk7CiAgICAgdm9pZCBwYXVzZSgpOwogCi0gICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVt
czo6QnVmZmVyaW5nUG9saWN5OwogICAgIHZvaWQgc2V0QnVmZmVyaW5nUG9saWN5KEJ1ZmZlcmlu
Z1BvbGljeSk7CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAgLTQ3Niwx
NiArNDg1LDEyIEBAIHB1YmxpYzoKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKTsKICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgp
OwogCi0gICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlOwogICAgIE5ldHdv
cmtTdGF0ZSBuZXR3b3JrU3RhdGUoKTsKIAotICAgIHVzaW5nIE1lZGlhUGxheWVyRW51bXM6OlJl
YWR5U3RhdGU7CiAgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCk7CiAKLSAgICB1c2luZyBNZWRp
YVBsYXllckVudW1zOjpNb3ZpZUxvYWRUeXBlOwogICAgIE1vdmllTG9hZFR5cGUgbW92aWVMb2Fk
VHlwZSgpIGNvbnN0OwogCi0gICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZDsKICAg
ICBQcmVsb2FkIHByZWxvYWQoKSBjb25zdDsKICAgICB2b2lkIHNldFByZWxvYWQoUHJlbG9hZCk7
CiAKQEAgLTUwNiw3ICs1MTEsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNBdmFpbGFibGVWaWRl
b0ZyYW1lKCkgY29uc3Q7CiAgICAgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiAKLSAgICB1
c2luZyBNZWRpYVBsYXllckVudW1zOjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZTsKICNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIFdpcmVsZXNzUGxheWJhY2tUYXJn
ZXRUeXBlIHdpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaAppbmRleCA0
MDhhMDFjZjMyOWI2YzI5M2FlODFkNGMyNGY1MGJjZDRjYjkyY2I4Li40MTZiM2FkOTJlMzM3NWZl
M2ZjN2IyMWQyOWE3NDllMzQ4YzFkNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCkBAIC0yOSw5MCArMjksOTIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRpYVBsYXllckVudW1zIHsKLXB1YmxpYzoK
LSAgICBlbnVtIGNsYXNzIE5ldHdvcmtTdGF0ZSA6IHVpbnQ4X3QgewotICAgICAgICBFbXB0eSwK
LSAgICAgICAgSWRsZSwKLSAgICAgICAgTG9hZGluZywKLSAgICAgICAgTG9hZGVkLAotICAgICAg
ICBGb3JtYXRFcnJvciwKLSAgICAgICAgTmV0d29ya0Vycm9yLAotICAgICAgICBEZWNvZGVFcnJv
cgotICAgIH07CituYW1lc3BhY2UgTWVkaWFQbGF5ZXJFbnVtcyB7CisKK2VudW0gY2xhc3MgTmV0
d29ya1N0YXRlIDogdWludDhfdCB7CisgICAgRW1wdHksCisgICAgSWRsZSwKKyAgICBMb2FkaW5n
LAorICAgIE5vU291cmNlLAorICAgIExvYWRlZCwKKyAgICBGb3JtYXRFcnJvciwKKyAgICBOZXR3
b3JrRXJyb3IsCisgICAgRGVjb2RlRXJyb3IKK307CiAKLSAgICBlbnVtIGNsYXNzIFJlYWR5U3Rh
dGUgOiB1aW50OF90IHsKLSAgICAgICAgSGF2ZU5vdGhpbmcsCi0gICAgICAgIEhhdmVNZXRhZGF0
YSwKLSAgICAgICAgSGF2ZUN1cnJlbnREYXRhLAotICAgICAgICBIYXZlRnV0dXJlRGF0YSwKLSAg
ICAgICAgSGF2ZUVub3VnaERhdGEKLSAgICB9OworZW51bSBjbGFzcyBSZWFkeVN0YXRlIDogdWlu
dDhfdCB7CisgICAgSGF2ZU5vdGhpbmcsCisgICAgSGF2ZU1ldGFkYXRhLAorICAgIEhhdmVDdXJy
ZW50RGF0YSwKKyAgICBIYXZlRnV0dXJlRGF0YSwKKyAgICBIYXZlRW5vdWdoRGF0YQorfTsKIAot
ICAgIGVudW0gY2xhc3MgTW92aWVMb2FkVHlwZSA6IHVpbnQ4X3QgewotICAgICAgICBVbmtub3du
LAotICAgICAgICBEb3dubG9hZCwKLSAgICAgICAgU3RvcmVkU3RyZWFtLAotICAgICAgICBMaXZl
U3RyZWFtCi0gICAgfTsKK2VudW0gY2xhc3MgTW92aWVMb2FkVHlwZSA6IHVpbnQ4X3QgeworICAg
IFVua25vd24sCisgICAgRG93bmxvYWQsCisgICAgU3RvcmVkU3RyZWFtLAorICAgIExpdmVTdHJl
YW0KK307CiAKLSAgICBlbnVtIGNsYXNzIFByZWxvYWQgOiB1aW50OF90IHsKLSAgICAgICAgTm9u
ZSwKLSAgICAgICAgTWV0YURhdGEsCi0gICAgICAgIEF1dG8KLSAgICB9OworZW51bSBjbGFzcyBQ
cmVsb2FkIDogdWludDhfdCB7CisgICAgTm9uZSwKKyAgICBNZXRhRGF0YSwKKyAgICBBdXRvCit9
OwogCi0gICAgZW51bSBjbGFzcyBWaWRlb0dyYXZpdHkgOiB1aW50OF90IHsKLSAgICAgICAgUmVz
aXplLAotICAgICAgICBSZXNpemVBc3BlY3QsCi0gICAgICAgIFJlc2l6ZUFzcGVjdEZpbGwKLSAg
ICB9OworZW51bSBjbGFzcyBWaWRlb0dyYXZpdHkgOiB1aW50OF90IHsKKyAgICBSZXNpemUsCisg
ICAgUmVzaXplQXNwZWN0LAorICAgIFJlc2l6ZUFzcGVjdEZpbGwKK307CiAKLSAgICBlbnVtIGNs
YXNzIFN1cHBvcnRzVHlwZSA6IHVpbnQ4X3QgewotICAgICAgICBJc05vdFN1cHBvcnRlZCwKLSAg
ICAgICAgSXNTdXBwb3J0ZWQsCi0gICAgICAgIE1heUJlU3VwcG9ydGVkCi0gICAgfTsKK2VudW0g
Y2xhc3MgU3VwcG9ydHNUeXBlIDogdWludDhfdCB7CisgICAgSXNOb3RTdXBwb3J0ZWQsCisgICAg
SXNTdXBwb3J0ZWQsCisgICAgTWF5QmVTdXBwb3J0ZWQKK307CiAKLSAgICBlbnVtIHsKLSAgICAg
ICAgVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgPSAwLAotICAgICAgICBWaWRlb0Z1bGxzY3JlZW5N
b2RlU3RhbmRhcmQgPSAxIDw8IDAsCi0gICAgICAgIFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJl
SW5QaWN0dXJlID0gMSA8PCAxLAotICAgIH07Ci0gICAgdHlwZWRlZiB1aW50MzJfdCBWaWRlb0Z1
bGxzY3JlZW5Nb2RlOworZW51bSB7CisgICAgVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgPSAwLAor
ICAgIFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCA9IDEgPDwgMCwKKyAgICBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSA9IDEgPDwgMSwKK307Cit0eXBlZGVmIHVpbnQzMl90
IFZpZGVvRnVsbHNjcmVlbk1vZGU7CiAKLSAgICBlbnVtIGNsYXNzIEJ1ZmZlcmluZ1BvbGljeSA6
IHVpbnQ4X3QgewotICAgICAgICBEZWZhdWx0LAotICAgICAgICBMaW1pdFJlYWRBaGVhZCwKLSAg
ICAgICAgTWFrZVJlc291cmNlc1B1cmdlYWJsZSwKLSAgICAgICAgUHVyZ2VSZXNvdXJjZXMsCi0g
ICAgfTsKK2VudW0gY2xhc3MgQnVmZmVyaW5nUG9saWN5IDogdWludDhfdCB7CisgICAgRGVmYXVs
dCwKKyAgICBMaW1pdFJlYWRBaGVhZCwKKyAgICBNYWtlUmVzb3VyY2VzUHVyZ2VhYmxlLAorICAg
IFB1cmdlUmVzb3VyY2VzLAorfTsKIAotICAgIGVudW0gY2xhc3MgTWVkaWFFbmdpbmVJZGVudGlm
aWVyIDogdWludDhfdCB7Ci0gICAgICAgIEFWRm91bmRhdGlvbiwKLSAgICAgICAgQVZGb3VuZGF0
aW9uTVNFLAotICAgICAgICBBVkZvdW5kYXRpb25NZWRpYVN0cmVhbSwKLSAgICAgICAgQVZGb3Vu
ZGF0aW9uQ0YsCi0gICAgICAgIEdTdHJlYW1lciwKLSAgICAgICAgR1N0cmVhbWVyTVNFLAotICAg
ICAgICBIb2xlUHVuY2gsCi0gICAgICAgIE1lZGlhRm91bmRhdGlvbiwKLSAgICAgICAgTW9ja01T
RSwKLSAgICB9OworZW51bSBjbGFzcyBNZWRpYUVuZ2luZUlkZW50aWZpZXIgOiB1aW50OF90IHsK
KyAgICBBVkZvdW5kYXRpb24sCisgICAgQVZGb3VuZGF0aW9uTVNFLAorICAgIEFWRm91bmRhdGlv
bk1lZGlhU3RyZWFtLAorICAgIEFWRm91bmRhdGlvbkNGLAorICAgIEdTdHJlYW1lciwKKyAgICBH
U3RyZWFtZXJNU0UsCisgICAgSG9sZVB1bmNoLAorICAgIE1lZGlhRm91bmRhdGlvbiwKKyAgICBN
b2NrTVNFLAorfTsKIAotICAgIGVudW0gY2xhc3MgV2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUg
OiB1aW50OF90IHsKLSAgICAgICAgVGFyZ2V0VHlwZU5vbmUsCi0gICAgICAgIFRhcmdldFR5cGVB
aXJQbGF5LAotICAgICAgICBUYXJnZXRUeXBlVFZPdXQKLSAgICB9OworZW51bSBjbGFzcyBXaXJl
bGVzc1BsYXliYWNrVGFyZ2V0VHlwZSA6IHVpbnQ4X3QgeworICAgIFRhcmdldFR5cGVOb25lLAor
ICAgIFRhcmdldFR5cGVBaXJQbGF5LAorICAgIFRhcmdldFR5cGVUVk91dAorfTsKIAotICAgIGVu
dW0gY2xhc3MgUGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtIDogdWludDhfdCB7Ci0gICAgICAgIEJl
c3RBbGxBcm91bmQsCi0gICAgICAgIEJlc3RGb3JNdXNpYywKLSAgICAgICAgQmVzdEZvclNwZWVj
aCwKLSAgICB9OworZW51bSBjbGFzcyBQaXRjaENvcnJlY3Rpb25BbGdvcml0aG0gOiB1aW50OF90
IHsKKyAgICBCZXN0QWxsQXJvdW5kLAorICAgIEJlc3RGb3JNdXNpYywKKyAgICBCZXN0Rm9yU3Bl
ZWNoLAogfTsKIAorfQorCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9u
VG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSk7CiBTdHJpbmcgY29udmVydEVu
dW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlKTsKIFN0cmlu
ZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkKTsK
QEAgLTEzMSw3ICsxMzMsNyBAQCB0ZW1wbGF0ZSA8Pgogc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGU+IHsKICAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUgc3RhdGUp
CiAgICAgewotICAgICAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoc3RhdGUp
OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoc3Rh
dGUpOwogICAgIH0KIH07CiAKQEAgLTEzOSw3ICsxNDEsNyBAQCB0ZW1wbGF0ZSA8Pgogc3RydWN0
IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZT4gewog
ICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TmV0d29ya1N0YXRlIHN0YXRlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRFbnVt
ZXJhdGlvblRvU3RyaW5nKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmNvbnZlcnRF
bnVtZXJhdGlvblRvU3RyaW5nKHN0YXRlKTsKICAgICB9CiB9OwogCkBAIC0xNDcsNyArMTQ5LDcg
QEAgdGVtcGxhdGUgPD4KIHN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpCdWZmZXJpbmdQb2xpY3k+IHsKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0
IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeSBwb2xpY3kpCiAgICAg
ewotICAgICAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcocG9saWN5KTsKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OmNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHBvbGljeSk7
CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAppbmRleCBjYTE0ZTdhYjFmY2ZmNmY5
YmIxYzQxYmE5NjJkNTQ4OTFkYzU3N2UwLi4xMjZkZjM5MWQ1OGU0NjNhOGQ4MGU4ZTkzMzM5Y2Jk
NWJlYjQ3MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtODAsNyArODAsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGJvb2wgZW5hYmxlZCwgUGxheWJhY2tTZXNz
aW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBjb25zdCBTdHJpbmcmIGxvY2Fs
aXplZERldmljZU5hbWUpIGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXR1cEZ1
bGxzY3JlZW4oVUlWaWV3JiB2aWRlb1ZpZXcsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbFJlY3Qs
IGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25zLCBVSVZpZXcqIHBhcmVudFZpZXcsIEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0
dXJlSW5QaWN0dXJlUGxheWJhY2ssIGJvb2wgc3RhbmRieSwgYm9vbCBibG9ja3NSZXR1cm5Ub0Z1
bGxzY3JlZW5Gcm9tUGljdHVyZUluUGljdHVyZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiB2aWRlb1ZpZXcsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlh
bFJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25zLCBVSVZpZXcqIHBhcmVudFZp
ZXcsIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgYWxsb3dzUGlj
dHVyZUluUGljdHVyZVBsYXliYWNrLCBib29sIHN0YW5kYnksIGJvb2wgYmxvY2tzUmV0dXJuVG9G
dWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1cmUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGl0RnVsbHNjcmVl
bihjb25zdCBGbG9hdFJlY3QmIGZpbmFsUmVjdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
bGVhbnVwRnVsbHNjcmVlbigpOwpAQCAtMTAyLDMwICsxMDIsMzAgQEAgcHVibGljOgogICAgIH07
CiAKICAgICBjbGFzcyBNb2RlIHsKLSAgICAgICAgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlIG1fbW9kZSB7IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZU5vbmUgfTsKKyAgICAgICAgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSBtX21vZGUgeyBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9u
ZSB9OwogCiAgICAgcHVibGljOgogICAgICAgICBNb2RlKCkgPSBkZWZhdWx0OwogICAgICAgICBN
b2RlKGNvbnN0IE1vZGUmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIE1vZGUoSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpIDogbV9tb2RlKG1vZGUpIHsgfQotICAg
ICAgICB2b2lkIG9wZXJhdG9yPShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgbW9kZSkgeyBtX21vZGUgPSBtb2RlOyB9Ci0gICAgICAgIEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9
CisgICAgICAgIE1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
KSA6IG1fbW9kZShtb2RlKSB7IH0KKyAgICAgICAgdm9pZCBvcGVyYXRvcj0oTWVkaWFQbGF5ZXJF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKSB7IG1fbW9kZSA9IG1vZGU7IH0KKyAgICAg
ICAgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2RlOyB9CiAKLSAgICAgICAgdm9pZCBzZXRNb2RlVmFsdWUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgdmFsdWUpIHsgdmFsdWUg
PyBzZXRNb2RlKG1vZGUpIDogY2xlYXJNb2RlKG1vZGUpOyB9Ci0gICAgICAgIHZvaWQgc2V0TW9k
ZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkgeyBtX21v
ZGUgfD0gbW9kZTsgfQotICAgICAgICB2b2lkIGNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkgeyBtX21vZGUgJj0gfm1vZGU7IH0KLSAgICAg
ICAgYm9vbCBoYXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSBtb2RlKSBjb25zdCB7IHJldHVybiBtX21vZGUgJiBtb2RlOyB9CisgICAgICAgIHZvaWQgc2V0
TW9kZVZhbHVlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9v
bCB2YWx1ZSkgeyB2YWx1ZSA/IHNldE1vZGUobW9kZSkgOiBjbGVhck1vZGUobW9kZSk7IH0KKyAg
ICAgICAgdm9pZCBzZXRNb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
bW9kZSkgeyBtX21vZGUgfD0gbW9kZTsgfQorICAgICAgICB2b2lkIGNsZWFyTW9kZShNZWRpYVBs
YXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpIHsgbV9tb2RlICY9IH5tb2RlOyB9
CisgICAgICAgIGJvb2wgaGFzTW9kZShNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlIG1vZGUpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSAmIG1vZGU7IH0KIAotICAgICAgICBib29s
IGlzUGljdHVyZUluUGljdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlOyB9Ci0gICAg
ICAgIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkOyB9CisgICAgICAgIGJv
b2wgaXNQaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IE1lZGlhUGxh
eWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlOyB9CisgICAgICAg
IGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IE1lZGlhUGxheWVy
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsgfQogCi0gICAgICAgIHZvaWQgc2V0
UGljdHVyZUluUGljdHVyZShib29sIHZhbHVlKSB7IHNldE1vZGVWYWx1ZShIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlLCB2YWx1ZSk7IH0K
LSAgICAgICAgdm9pZCBzZXRGdWxsc2NyZWVuKGJvb2wgdmFsdWUpIHsgc2V0TW9kZVZhbHVlKEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkLCB2YWx1ZSk7
IH0KKyAgICAgICAgdm9pZCBzZXRQaWN0dXJlSW5QaWN0dXJlKGJvb2wgdmFsdWUpIHsgc2V0TW9k
ZVZhbHVlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0
dXJlLCB2YWx1ZSk7IH0KKyAgICAgICAgdm9pZCBzZXRGdWxsc2NyZWVuKGJvb2wgdmFsdWUpIHsg
c2V0TW9kZVZhbHVlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCwgdmFsdWUpOyB9CiAKLSAgICAgICAgYm9vbCBoYXNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1
cm4gaGFzTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFu
ZGFyZCk7IH0KLSAgICAgICAgYm9vbCBoYXNQaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gaGFzTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0
dXJlSW5QaWN0dXJlKTsgfQorICAgICAgICBib29sIGhhc0Z1bGxzY3JlZW4oKSBjb25zdCB7IHJl
dHVybiBoYXNNb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCk7IH0KKyAgICAgICAgYm9vbCBoYXNQaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
aGFzTW9kZShNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGlj
dHVyZSk7IH0KIAotICAgICAgICBib29sIGhhc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gbV9tb2Rl
ICYgKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkIHwg
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVy
ZSk7IH0KKyAgICAgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSAmIChN
ZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgfCBNZWRpYVBsYXll
ckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7IH0KICAgICB9Owog
CiAgICAgTW9kZSBtX2N1cnJlbnRNb2RlOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKIAog
ICAgIFZpZGVvRnVsbHNjcmVlbk1vZGVsKiB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpIGNvbnN0IHsg
cmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWw7IH0KICAgICBib29sIHNob3VsZEV4aXRGdWxs
c2NyZWVuV2l0aFJlYXNvbihFeGl0RnVsbFNjcmVlblJlYXNvbik7Ci0gICAgSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRNb2RlLm1vZGUoKTsgfQorICAgIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudE1vZGUubW9kZSgpOyB9CiAgICAg
Ym9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2soKSBjb25zdCB7IHJldHVybiBtX2Fs
bG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdDsKICAgICB2
b2lkIHByZXBhcmVGb3JQaWN0dXJlSW5QaWN0dXJlU3RvcChGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNhbGxiYWNrKTsKQEAgLTE1MCw5ICsxNTAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwYXJl
Rm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIodm9pZCAoXikoQk9P
TCkpOwogICAgIGJvb2wgaXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbigpIGNvbnN0
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBzaG91bGROb3RpZnlNb2RlbCk7Ci0gICAgdm9p
ZCBjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBi
b29sIHNob3VsZE5vdGlmeU1vZGVsKTsKLSAgICBib29sIGhhc01vZGUoSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dE1vZGUuaGFzTW9kZShtb2RlKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9kZShN
ZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIHNob3VsZE5vdGlmeU1v
ZGVsKTsKKyAgICB2b2lkIGNsZWFyTW9kZShNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlLCBib29sIHNob3VsZE5vdGlmeU1vZGVsKTsKKyAgICBib29sIGhhc01vZGUoTWVkaWFQ
bGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRNb2RlLmhhc01vZGUobW9kZSk7IH0KIAogICAgIFVJVmlld0NvbnRyb2xsZXIgKnByZXNl
bnRpbmdWaWV3Q29udHJvbGxlcigpOwogICAgIFVJVmlld0NvbnRyb2xsZXIgKmZ1bGxzY3JlZW5W
aWV3Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0NvbnRyb2xsZXIuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCBmZjFmMjRlNDk3YTNlZGViOTcxZjI0MjMwMTBl
NGM3NGQzYjY0NDk0Li5iN2I4MTkwMzY0YjM5YjIxODIxYjkyMmU5MWQyYjA4ZjI1MTQ5Mjg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC05MjEsMTIgKzkyMSwxMiBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAg
ICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6YXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUoJXApIiwgdGhpcyk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihVSVZpZXcmIHZpZGVvVmlldywgY29u
c3QgRmxvYXRSZWN0JiBpbml0aWFsUmVjdCwgY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lv
bnMsIFVJVmlldyogcGFyZW50VmlldywgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIG1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrLCBib29s
IHN0YW5kYnksIGJvb2wgYmxvY2tzUmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1
cmUpCit2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4o
VUlWaWV3JiB2aWRlb1ZpZXcsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbFJlY3QsIGNvbnN0IEZs
b2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25zLCBVSVZpZXcqIHBhcmVudFZpZXcsIE1lZGlhUGxheWVy
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0
dXJlUGxheWJhY2ssIGJvb2wgc3RhbmRieSwgYm9vbCBibG9ja3NSZXR1cm5Ub0Z1bGxzY3JlZW5G
cm9tUGljdHVyZUluUGljdHVyZSkKIHsKLSAgICBBU1NFUlQoc3RhbmRieSB8fCBtb2RlICE9IEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgIEFTU0VS
VChzdGFuZGJ5IHx8IG1vZGUgIT0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZU5vbmUpOwogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OnNldHVwRnVsbHNjcmVlbiglcCkiLCB0aGlzKTsKIAotICAgIG1fY2hhbmdpbmdTdGFuZGJ5
T25seSA9IG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
Tm9uZSAmJiBzdGFuZGJ5OworICAgIG1fY2hhbmdpbmdTdGFuZGJ5T25seSA9IG1vZGUgPT0gTWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgJiYgc3RhbmRieTsKIAogICAg
IFtwbGF5ZXJDb250cm9sbGVyKCkgc2V0SGFzRW5hYmxlZFZpZGVvOnRydWVdOwogICAgIFtwbGF5
ZXJDb250cm9sbGVyKCkgc2V0SGFzVmlkZW86dHJ1ZV07CkBAIC05NjIsNyArOTYyLDcgQEAgYm9v
bCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4oY29uc3QgRmxv
YXRSZWN0JiBmaW5hbFJlY3QpCiAKICAgICBtX2NoYW5naW5nU3RhbmRieU9ubHkgPSAhbV9jdXJy
ZW50TW9kZS5oYXNWaWRlbygpICYmIG1fc3RhbmRieTsKIAotICAgIG1fdGFyZ2V0TW9kZSA9IEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7CisgICAgbV90YXJn
ZXRNb2RlID0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7CiAKICAg
ICBzZXRJbmxpbmVSZWN0KGZpbmFsUmVjdCwgdHJ1ZSk7CiAgICAgZG9FeGl0RnVsbHNjcmVlbigp
OwpAQCAtMTA1Nyw3ICsxMDU3LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpCiAKICAgICBpZiAocGxheWJhY2tTZXNz
aW9uTW9kZWwoKSAmJiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKSB7CiAgICAgICAgIHBsYXliYWNr
U2Vzc2lvbk1vZGVsKCktPnBhdXNlKCk7Ci0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwt
PnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGVOb25lKTsKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsK
ICAgICB9CiB9CiAKQEAgLTEwODIsNyArMTA4Miw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OnByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbigpCiAgICAgbV93YWl0aW5nRm9y
UHJlcGFyZWRUb0V4aXQgPSBmYWxzZTsKICAgICBBU1NFUlQobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCk7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCi0gICAgICAgIG1fdmlkZW9GdWxs
c2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lLCB0cnVlKTsKKyAgICAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGVOb25lLCB0cnVlKTsKICNlbmRpZgogfQogCkBAIC0xMTE3LDcgKzExMTcsNyBA
QCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3aWxsU3RhcnRQaWN0dXJlSW5Q
aWN0dXJlKCkKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGlj
dHVyZUluUGljdHVyZSgpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCVwKSIsIHRoaXMpOwotICAg
IHNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVy
ZUluUGljdHVyZSwgIW1fZW50ZXJGdWxsc2NyZWVuTmVlZHNFbnRlclBpY3R1cmVJblBpY3R1cmUp
OworICAgIHNldE1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1
cmVJblBpY3R1cmUsICFtX2VudGVyRnVsbHNjcmVlbk5lZWRzRW50ZXJQaWN0dXJlSW5QaWN0dXJl
KTsKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6
WUVTXTsKICAgICBbbV92aWV3Q29udHJvbGxlciBfc2V0SWdub3JlQXBwU3VwcG9ydGVkT3JpZW50
YXRpb25zOk5PXTsKIApAQCAtMTE1MCw3ICsxMTUwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6ZmFpbGVkVG9TdGFydFBpY3R1cmVJblBpY3R1cmUoKQogCiAgICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpIHsKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bC0+ZmFpbGVkVG9FbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKLSAgICAgICAgbV92aWRlb0Z1bGxz
Y3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
LT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZU5vbmUpOwogICAgIH0KIH0KIApAQCAtMTE4NCw3ICsxMTg0LDcgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoKQogICAgIH0K
IAogICAgIGlmIChtX2N1cnJlbnRNb2RlLmhhc0Z1bGxzY3JlZW4oKSkgewotICAgICAgICBjbGVh
ck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUlu
UGljdHVyZSwgIW1fZXhpdEZ1bGxzY3JlZW5OZWVkc0V4aXRQaWN0dXJlSW5QaWN0dXJlKTsKKyAg
ICAgICAgY2xlYXJNb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0
dXJlSW5QaWN0dXJlLCAhbV9leGl0RnVsbHNjcmVlbk5lZWRzRXhpdFBpY3R1cmVJblBpY3R1cmUp
OwogICAgICAgICBbbV93aW5kb3cgbWFrZUtleVdpbmRvd107CiAgICAgICAgIFttX3BsYXllclZp
ZXdDb250cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9sczpZRVNdOwogCkBAIC0xMjAxLDcg
KzEyMDEsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGlj
dHVyZUluUGljdHVyZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjbGVhck1vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVy
ZSwgIW1fZXhpdEZ1bGxzY3JlZW5OZWVkc0V4aXRQaWN0dXJlSW5QaWN0dXJlKTsKKyAgICBjbGVh
ck1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1
cmUsICFtX2V4aXRGdWxsc2NyZWVuTmVlZHNFeGl0UGljdHVyZUluUGljdHVyZSk7CiAKICAgICBb
bV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOmNsZWFyVUlDb2xvcigpXTsKICAg
ICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOmNsZWFy
VUlDb2xvcigpXTsKQEAgLTEyNzQsNyArMTI3NCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OnNob3VsZEV4aXRGdWxsc2NyZWVuV2l0aFJlYXNvbihWaWRlb0Z1bGxzY3Jl
CiAgICAgQk9PTCBmaW5pc2hlZCA9IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6RG9u
ZUJ1dHRvblRhcHBlZCB8fCByZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OlBpbmNoR2Vz
dHVyZUhhbmRsZWQ7CiAgICAgQVNTRVJUKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpOwogICAgIGlm
IChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
LT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSwgZmluaXNoZWQpOworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
LT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZU5vbmUsIGZpbmlzaGVkKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTE0MDksNyAr
MTQwOSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVkVG9S
ZXR1cm5Ub1N0YW5kYnkoKQogICAgIGlmICghbV9yZXR1cm5pbmdUb1N0YW5kYnkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlLCB0cnVlKTsKKyAgICBjbGVhck1vZGUoTWVkaWFQ
bGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUsIHRydWUpOwog
fQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpmaW5hbGl6ZVNldHVwKCkK
QEAgLTE1MDMsMTQgKzE1MDMsMTQgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6ZG9FeGl0RnVsbHNjcmVlbigpCiAgICAgfQogICAgIG1fZXhpdEZ1bGxzY3JlZW5OZWVkSW5s
aW5lUmVjdCA9IGZhbHNlOwogCi0gICAgaWYgKG1fY3VycmVudE1vZGUuaGFzTW9kZShIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkpIHsKKyAgICBpZiAo
bV9jdXJyZW50TW9kZS5oYXNNb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVTdGFuZGFyZCkpIHsKICAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxT
Y3JlZW5BbmltYXRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCB0aGlzXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICplcnJvcikgewogICAgICAg
ICAgICAgZXhpdEZ1bGxzY3JlZW5IYW5kbGVyKHN1Y2Nlc3MsIGVycm9yLCBOZXh0QWN0aW9uOjpO
ZWVkc0V4aXRGdWxsU2NyZWVuKTsKICAgICAgICAgfV07CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAobV9jdXJyZW50TW9kZS5oYXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpKSB7CisgICAgaWYgKG1fY3VycmVu
dE1vZGUuaGFzTW9kZShNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVy
ZUluUGljdHVyZSkpIHsKICAgICAgICAgbV9leGl0RnVsbHNjcmVlbk5lZWRzRXhpdFBpY3R1cmVJ
blBpY3R1cmUgPSB0cnVlOwogICAgICAgICBtX3Nob3VsZFJldHVyblRvRnVsbHNjcmVlbldoZW5T
dG9wcGluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKICAgICAgICAgW21fd2luZG93IHNldEhp
ZGRlbjpOT107CkBAIC0xNTQyLDkgKzE1NDIsOSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbkhhbmRsZXIoQk9PTCBzdWNjZXNzLCBOU0Vycm9yKgog
CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlk
RXhpdEZ1bGxzY3JlZW4oJXApIC0gJWQiLCB0aGlzLCBzdWNjZXNzKTsKIAotICAgIGNsZWFyTW9k
ZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCwgZmFs
c2UpOworICAgIGNsZWFyTW9kZShNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
U3RhbmRhcmQsIGZhbHNlKTsKIAotICAgIGlmIChoYXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpKSB7CisgICAgaWYgKGhhc01v
ZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUp
KSB7CiAgICAgICAgIFttX3dpbmRvdyBzZXRIaWRkZW46WUVTXTsKICAgICAgICAgW1ttX3BsYXll
clZpZXdDb250cm9sbGVyIHZpZXddIHNldEhpZGRlbjpZRVNdOwogICAgIH0gZWxzZSB7CkBAIC0x
NTcyLDcgKzE1NzIsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRl
ckZ1bGxzY3JlZW5IYW5kbGVyKEJPT0wgc3VjY2VzcywgTlNFcnJvcgogCiAgICAgTE9HKEZ1bGxz
Y3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuU3Rh
bmRhcmQgLSBsYW1iZGEoJXApIiwgdGhpcyk7CiAgICAgaWYgKCFtX3N0YW5kYnkpIHsKLSAgICAg
ICAgc2V0TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFu
ZGFyZCwgIW5leHRBY3Rpb25zLmNvbnRhaW5zKE5leHRBY3Rpb246Ok5lZWRzRW50ZXJGdWxsU2Ny
ZWVuKSk7CisgICAgICAgIHNldE1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZVN0YW5kYXJkLCAhbmV4dEFjdGlvbnMuY29udGFpbnMoTmV4dEFjdGlvbjo6TmVlZHNFbnRl
ckZ1bGxTY3JlZW4pKTsKICAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0U2hvd3NQ
bGF5YmFja0NvbnRyb2xzOllFU107CiAgICAgfSBlbHNlCiAgICAgICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9sczpOT107CkBAIC0xNTk5LDcgKzE1OTks
NyBAQCBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Ojp3YXRjaGRvZ1RpbWVyRmlyZWQoKQogICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxl
ciB2aWV3XSBzZXRIaWRkZW46WUVTXTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6c2V0TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUgbW9kZSwgYm9vbCBzaG91bGROb3RpZnlNb2RlbCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OnNldE1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSBtb2RlLCBib29sIHNob3VsZE5vdGlmeU1vZGVsKQogewogICAgIGlmICgobV9jdXJyZW50TW9k
ZS5tb2RlKCkgJiBtb2RlKSA9PSBtb2RlKQogICAgICAgICByZXR1cm47CkBAIC0xNjExLDcgKzE2
MTEsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRNb2RlKEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsLT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQobW9kZSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBzaG91bGROb3RpZnlNb2RlbCkKK3ZvaWQgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNsZWFyTW9kZShNZWRpYVBsYXllckVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgc2hvdWxkTm90aWZ5TW9kZWwpCiB7CiAgICAg
aWYgKCh+bV9jdXJyZW50TW9kZS5tb2RlKCkgJiBtb2RlKSA9PSBtb2RlKQogICAgICAgICByZXR1
cm47CkBAIC0xNjIzLDcgKzE2MjMsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzYwogCiBib29s
IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojppc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRG
dWxsc2NyZWVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzTW9kZShXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKSAmJiBb
cGxheWVyQ29udHJvbGxlcigpIGlzUGxheWluZ107CisgICAgcmV0dXJuIGhhc01vZGUoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUp
ICYmIFtwbGF5ZXJDb250cm9sbGVyKCkgaXNQbGF5aW5nXTsKIH0KIAogc3RhdGljIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gaXNQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktp
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5oCmluZGV4IGI0ZTFhYjdhNzFjNGQyZGU2MzdkYmRjYWU0YTI0MWEzNmZmYjVj
ZjYuLmI3NDNhNDgyNDU3ZTE5MDU2NmNhZDJhYjU2YTA1N2Y2YmIwNDczMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0LmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgSFRNTFZpZGVvRWxl
bWVudDsKIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlciA6IE5TT2JqZWN0CiAtICh2b2lkKXNldFZpZGVvRWxlbWVudDooTmFrZWRQdHI8V2ViQ29y
ZTo6SFRNTFZpZGVvRWxlbWVudD4pdmlkZW9FbGVtZW50OwogLSAoTmFrZWRQdHI8V2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudD4pdmlkZW9FbGVtZW50OwotLSAodm9pZCllbnRlckZ1bGxzY3JlZW46
KFVJVmlldyAqKXZpZXcgbW9kZTooV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlKW1vZGU7CistICh2b2lkKWVudGVyRnVsbHNjcmVlbjooVUlWaWV3ICop
dmlldyBtb2RlOihXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KW1vZGU7CiAtICh2b2lkKWV4aXRGdWxsc2NyZWVuOwogLSAodm9pZClyZXF1ZXN0SGlkZUFuZEV4
aXRGdWxsc2NyZWVuOwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXgg
MTE3Mjg5NGZlZDI1YjhmNGY1YzMzMzBhZjMyZTI0Mjg4YTdjNTg2My4uNzU1ZWU2MjA5NDc4YThk
NWFhODcxNzFhMzU3NTA2YWQzOGU0NDg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0
Lm1tCkBAIC02Miw3ICs2Miw3IEBAIC0gKE5ha2VkUHRyPFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
bnQ+KXZpZGVvRWxlbWVudAogICAgIHJldHVybiBudWxscHRyOwogfQogCi0tICh2b2lkKWVudGVy
RnVsbHNjcmVlbjooVUlWaWV3ICopdmlldyBtb2RlOihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpbW9kZQorLSAodm9pZCllbnRlckZ1bGxzY3JlZW46
KFVJVmlldyAqKXZpZXcgbW9kZTooV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSltb2RlCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZpZXcpOwogICAgIFVOVVNFRF9Q
QVJBTShtb2RlKTsKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgflZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0KCk7CiAKICAgICB2b2lkIHNldENvbnRyb2xsZXIoV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlciogY29udHJvbGxlcikgeyBtX2NvbnRyb2xsZXIgPSBjb250
cm9sbGVyOyB9Ci0gICAgdm9pZCBzZXRVcEZ1bGxzY3JlZW4oSFRNTFZpZGVvRWxlbWVudCYsIFVJ
VmlldyAqLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOworICAg
IHZvaWQgc2V0VXBGdWxsc2NyZWVuKEhUTUxWaWRlb0VsZW1lbnQmLCBVSVZpZXcgKiwgTWVkaWFQ
bGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAgICAgdm9pZCBleGl0RnVsbHNjcmVl
bigpOwogICAgIHZvaWQgcmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpOwogICAgIHZvaWQg
aW52YWxpZGF0ZSgpOwpAQCAtMTk3LDEwICsxOTcsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBWaWRl
b0Z1bGxzY3JlZW5Nb2RlbAogICAgIHZvaWQgYWRkQ2xpZW50KFZpZGVvRnVsbHNjcmVlbk1vZGVs
Q2xpZW50Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVDbGllbnQoVmlkZW9GdWxsc2NyZWVu
TW9kZWxDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgZmluaXNoZWRX
aXRoTWVkaWEgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1v
ZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBmaW5pc2hlZFdp
dGhNZWRpYSA9IGZhbHNlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShG
bG9hdFJlY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHkoTWVkaWFQ
bGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKLSAgICB2b2lkIGZ1bGxzY3JlZW5N
b2RlQ2hhbmdlZChIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92
ZXJyaWRlOworICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKE1lZGlhUGxheWVyRW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgaGFzVmlkZW8oKSBjb25z
dCBvdmVycmlkZTsKICAgICBGbG9hdFNpemUgdmlkZW9EaW1lbnNpb25zKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc011dGVkKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC01ODUsNyArNTg1LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVtb3ZlQ2xpZW50KFZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50JgogICAgIG1fZnVsbHNjcmVlbkNsaWVudHMucmVtb3Zl
KCZjbGllbnQpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpy
ZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEpCit2b2lkIFZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXJFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQogewog
ICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlhXSB7CkBAIC02
MjIsNyArNjIyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0
VmlkZW9MYXllckdyYXZpdHkoTWVkaWFQbGF5ZXJFbnVtczo6VmkKICAgICB9KTsKIH0KIAotdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
KEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQordm9pZCBW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKE1l
ZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQo
aXNVSVRocmVhZCgpKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCB0aGlzLCBtb2RlXSB7CkBAIC05OTgsNyArOTk4LDcgQEAgYm9vbCBWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBj
b25zdAogCiAjcHJhZ21hIG1hcmsgT3RoZXIKIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVu
dCwgVUlWaWV3ICp2aWV3LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUgbW9kZSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFVwRnVs
bHNjcmVlbihIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIFVJVmlldyAqdmlldywgTWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgUmV0YWluUHRyPFVJVmlldz4gdmlld1JlZiA9IHZpZXc7CkBA
IC0xMDczLDcgKzEwNzMsNyBAQCAtIChOYWtlZFB0cjxIVE1MVmlkZW9FbGVtZW50Pil2aWRlb0Vs
ZW1lbnQKICAgICByZXR1cm4gX3ZpZGVvRWxlbWVudC5nZXQoKTsKIH0KIAotLSAodm9pZCllbnRl
ckZ1bGxzY3JlZW46KFVJVmlldyAqKXZpZXcgbW9kZTooSFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlKW1vZGUKKy0gKHZvaWQpZW50ZXJGdWxsc2NyZWVuOihVSVZpZXcg
Kil2aWV3IG1vZGU6KE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpbW9kZQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgX2NvbnRleHQgPSBWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmgKaW5kZXgg
ODZlMDRiYjI2YTE1NDQzYjM3MzEwYjRkOTNkMmQwNDdiYTBmYTA3OC4uNzgyZWU2MWNhZWVkMjNh
ZTU3NjdlYzM5MzE5ZjUzMWY4MTQ0NzBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaApAQCAtNzEsMjEg
KzcxLDIxIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhc1ZpZGVvQ2hhbmdl
ZChib29sKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHZpZGVvRGltZW5zaW9uc0No
YW5nZWQoY29uc3QgRmxvYXRTaXplJikgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldHVwRnVsbHNjcmVlbihOU1ZpZXcmIGxheWVySG9zdGVkVmlldywgY29uc3QgSW50UmVjdCYg
aW5pdGlhbFJlY3QsIE5TV2luZG93ICpwYXJlbnRXaW5kb3csIEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJh
Y2spOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0dXBGdWxsc2NyZWVuKE5TVmlldyYgbGF5
ZXJIb3N0ZWRWaWV3LCBjb25zdCBJbnRSZWN0JiBpbml0aWFsUmVjdCwgTlNXaW5kb3cgKnBhcmVu
dFdpbmRvdywgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxv
d3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2spOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW50
ZXJGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGl0RnVsbHNjcmVlbihj
b25zdCBJbnRSZWN0JiBmaW5hbFJlY3QsIE5TV2luZG93ICpwYXJlbnRXaW5kb3cpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoTWVkaWFQbGF5
ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
bGVhbnVwRnVsbHNjcmVlbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgp
OwogICAgIHZvaWQgcmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpIHsgfQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY29u
c3QgSW50UmVjdCYgaW5saW5lUmVjdCwgTlNXaW5kb3cgKnBhcmVudFdpbmRvdyk7CiAgICAgdm9p
ZCBwcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4oKSB7IH0KIAotICAgIEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9
Ci0gICAgYm9vbCBoYXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSBtb2RlKSBjb25zdCB7IHJldHVybiBtX21vZGUgJiBtb2RlOyB9Ci0gICAgYm9vbCBpc01v
ZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kZSA9PSBtb2RlOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRN
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCk7Ci0g
ICAgdm9pZCBjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlKTsKKyAgICAgICAgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CisgICAgYm9vbCBoYXNNb2RlKE1lZGlhUGxheWVy
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkgY29uc3QgeyByZXR1cm4gbV9tb2RlICYg
bW9kZTsgfQorICAgIGJvb2wgaXNNb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgbW9kZSkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IG1vZGU7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldE1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSwgYm9vbCk7CisgICAgdm9pZCBjbGVhck1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUGxheWluZ1ZpZGVvSW5F
bmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25zdDsKIApAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6
CiAgICAgUmVmPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYz4gbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2U7CiAgICAgV2Vha1B0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbD4gbV92aWRlb0Z1bGxz
Y3JlZW5Nb2RlbDsKICAgICBXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyPiBt
X2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcjsKLSAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgbV9tb2RlIHsgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlTm9uZSB9OworICAgIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgbV9tb2RlIHsgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUg
fTsKICAgICBSZXRhaW5QdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQz4gbV93
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VPYmpDOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0K
aW5kZXggNmQ2MGIzMTcxMjc4M2IyNTQ2OWJmOTE4YmY1OGFlM2VkOTA0NDZiNS4uZDYxZjUxMjhh
MGNhYWUyZjJhODFhOWRjNWU1MWU4YjBlMmU2MzExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCkBA
IC02MCw4ICs2MCw2IEBAIC0gKHZvaWQpc3VwZXJ2aWV3RGlkQ2hhbmdlRm9yVmlkZW9WaWV3Q29u
dGFpbmVyOihXZWJWaWRlb1ZpZXdDb250YWluZXIgKil2aWRlb1ZpCiBAZW5kCiAKIHVzaW5nIFdl
YkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsOwotdXNpbmcgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVudW1zOwotdXNpbmcgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczsKIHVzaW5nIFdlYkNv
cmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzsKIHVzaW5nIFdlYkNvcmU6OlZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyOwogdXNpbmcgV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9k
ZWw7CkBAIC0xOTcsNyArMTk1LDcgQEAgLSAodm9pZClzZXRVcFBJUEZvclZpZGVvVmlldzooTlNW
aWV3ICopdmlkZW9WaWV3IHdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGluV2luZG8KICAgICBbX3Bp
cFZpZXdDb250cm9sbGVyIHNldFBsYXlpbmc6X3BsYXlpbmddOwogICAgIFtzZWxmIHNldFZpZGVv
RGltZW5zaW9uczpOU0VxdWFsU2l6ZXMoX3ZpZGVvRGltZW5zaW9ucywgTlNaZXJvU2l6ZSkgPyBm
cmFtZS5zaXplIDogX3ZpZGVvRGltZW5zaW9uc107CiAgICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWMgJiYgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2Ny
ZWVuTW9kZWwoKSkKLSAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9G
dWxsc2NyZWVuTW9kZWwoKS0+c2V0VmlkZW9MYXllckdyYXZpdHkoTWVkaWFQbGF5ZXJFbnVtczo6
VmlkZW9HcmF2aXR5OjpSZXNpemVBc3BlY3RGaWxsKTsKKyAgICAgICAgX3ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2V0VmlkZW9MYXllckdyYXZp
dHkoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5OjpSZXNpemVBc3BlY3RG
aWxsKTsKIAogICAgIF92aWRlb1ZpZXdDb250YWluZXIgPSBhZG9wdE5TKFtbV2ViVmlkZW9WaWV3
Q29udGFpbmVyIGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lXSk7CiAgICAgW192aWRlb1ZpZXdD
b250YWluZXIgc2V0VmlkZW9WaWV3Q29udGFpbmVyRGVsZWdhdGU6c2VsZl07CkBAIC0zMjEsNyAr
MzE5LDcgQEAgLSAodm9pZClwaXBEaWRDbG9zZTooUElQVmlld0NvbnRyb2xsZXIgKilwaXAKICAg
ICAgICAgICAgIGNvbnRleHQuYWxsb3dzSW1wbGljaXRBbmltYXRpb24gPSBOTzsKICAgICAgICAg
ICAgIFtfdmlkZW9WaWV3Q29udGFpbmVyIHNldEZyYW1lOl9yZXR1cm5pbmdSZWN0XTsKICAgICAg
ICAgICAgIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVs
KCktPnNldFZpZGVvTGF5ZXJGcmFtZShbX3ZpZGVvVmlld0NvbnRhaW5lciBib3VuZHNdKTsKLSAg
ICAgICAgICAgIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1v
ZGVsKCktPnNldFZpZGVvTGF5ZXJHcmF2aXR5KE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0
eTo6UmVzaXplQXNwZWN0KTsKKyAgICAgICAgICAgIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eTo6UmVzaXplQXNwZWN0KTsKIAogICAgICAg
ICAgICAgW1tfcmV0dXJuaW5nV2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3Ol92aWRlb1Zp
ZXdDb250YWluZXIuZ2V0KCkgcG9zaXRpb25lZDpOU1dpbmRvd0Fib3ZlIHJlbGF0aXZlVG86bmls
XTsKICAgICAgICAgfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwpAQCAtMzMwLDE0ICszMjgsMTQg
QEAgLSAodm9pZClwaXBEaWRDbG9zZTooUElQVmlld0NvbnRyb2xsZXIgKilwaXAKICAgICBpZiAo
IXNlbGYuaXNFeGl0aW5nVG9TdGFuZGFyZEZ1bGxzY3JlZW4pIHsKICAgICAgICAgaWYgKFZpZGVv
RnVsbHNjcmVlbk1vZGVsKiB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCA9IF92aWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpIHsKICAgICAgICAgICAgIHZpZGVv
RnVsbHNjcmVlbk1vZGVsLT5kaWRFeGl0UGljdHVyZUluUGljdHVyZSgpOwotICAgICAgICAgICAg
dmlkZW9GdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvTGF5ZXJHcmF2aXR5KE1lZGlhUGxheWVyRW51
bXM6OlZpZGVvR3Jhdml0eTo6UmVzaXplQXNwZWN0KTsKKyAgICAgICAgICAgIHZpZGVvRnVsbHNj
cmVlbk1vZGVsLT5zZXRWaWRlb0xheWVyR3Jhdml0eShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpWaWRlb0dyYXZpdHk6OlJlc2l6ZUFzcGVjdCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBp
ZiAoVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqIGZ1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
ciA9IF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbkNoYW5nZU9i
c2VydmVyKCkpCiAgICAgICAgIGZ1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRXhpdEZ1bGxz
Y3JlZW4oKTsKIAotICAgIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPmNsZWFyTW9kZShI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJl
KTsKKyAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT5jbGVhck1vZGUoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOwog
fQogCiAtICh2b2lkKXBpcEFjdGlvblBsYXk6KFBJUFZpZXdDb250cm9sbGVyICopcGlwCkBAIC00
MDUsOSArNDAzLDkgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKFZpZGVvRnVsbHNjcmUKICAgICBtX2Z1bGxzY3JlZW5D
aGFuZ2VPYnNlcnZlciA9IG9ic2VydmVyOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYzo6c2V0TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUgbW9kZSwgYm9vbCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRNb2Rl
KE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCkKIHsKLSAg
ICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbmV3TW9kZSA9IG1f
bW9kZSB8IG1vZGU7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBu
ZXdNb2RlID0gbV9tb2RlIHwgbW9kZTsKICAgICBpZiAobV9tb2RlID09IG5ld01vZGUpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNDE2LDkgKzQxNCw5IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjOjpzZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
CiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCht
X21vZGUpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6Y2xlYXJNb2Rl
KEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQordm9pZCBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmNsZWFyTW9kZShNZWRpYVBsYXllckVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7Ci0gICAgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIG5ld01vZGUgPSBtX21vZGUgJiB+bW9kZTsKKyAgICBNZWRpYVBs
YXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG5ld01vZGUgPSBtX21vZGUgJiB+bW9kZTsK
ICAgICBpZiAobV9tb2RlID09IG5ld01vZGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDQ1LDEy
ICs0NDMsMTIgQEAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQyAqVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjOjp2aWRlb0Z1bGxzY3JlZW4KICAgICByZXR1cm4gbV93ZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VPYmpDLmdldCgpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYzo6c2V0dXBGdWxsc2NyZWVuKE5TVmlldyYgbGF5ZXJIb3N0ZWRWaWV3LCBj
b25zdCBJbnRSZWN0JiBpbml0aWFsUmVjdCwgTlNXaW5kb3cgKnBhcmVudFdpbmRvdywgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgYWxsb3dzUGlj
dHVyZUluUGljdHVyZVBsYXliYWNrKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6
OnNldHVwRnVsbHNjcmVlbihOU1ZpZXcmIGxheWVySG9zdGVkVmlldywgY29uc3QgSW50UmVjdCYg
aW5pdGlhbFJlY3QsIE5TV2luZG93ICpwYXJlbnRXaW5kb3csIE1lZGlhUGxheWVyRW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJh
Y2spCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6
OnNldHVwRnVsbHNjcmVlbiglcCksIGluaXRpYWxSZWN0OnslZCwgJWQsICVkLCAlZH0sIHBhcmVu
dFdpbmRvdzolcCwgbW9kZTolZCIsIHRoaXMsIGluaXRpYWxSZWN0LngoKSwgaW5pdGlhbFJlY3Qu
eSgpLCBpbml0aWFsUmVjdC53aWR0aCgpLCBpbml0aWFsUmVjdC5oZWlnaHQoKSwgcGFyZW50V2lu
ZG93LCBtb2RlKTsKIAogICAgIFVOVVNFRF9QQVJBTShhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxh
eWJhY2spOwotICAgIEFTU0VSVChtb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOworICAgIEFTU0VSVChtb2RlID09IE1lZGlh
UGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKIAogICAg
IG1fbW9kZSA9IG1vZGU7CiAKQEAgLTQ2Nyw3ICs0NjUsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYzo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBMT0coRnVsbHNjcmVlbiwgIlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6ZW50ZXJGdWxsc2NyZWVuKCVwKSIsIHRoaXMpOwog
CiAgICAgUkVMRUFTRV9BU1NFUlQobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCk7Ci0gICAgaWYgKG1v
ZGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJl
SW5QaWN0dXJlKSB7CisgICAgaWYgKG1vZGUoKSA9PSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkgewogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsLT53aWxsRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiAgICAgICAgIFttX3dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU9iakMgZW50ZXJQSVBdOwogCkBAIC00OTMsNyArNDkxLDcgQEAg
Ym9vbCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmV4aXRGdWxsc2NyZWVuKGNvbnN0IElu
dFJlY3QmIGZpbmFsUmVjdCwgTlNXaW4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRv
TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKK3Zv
aWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpleGl0RnVsbHNjcmVlbldpdGhvdXRBbmlt
YXRpb25Ub01vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQog
ewogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpleGl0
RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoJXApLCBtb2RlOiVkIiwgdGhpcywgbW9k
ZSk7CiAKQEAgLTUwMSwxMiArNDk5LDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjpleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoSFRNTE1lZGlhCiAgICAg
W21fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5wbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpIHNl
dFBpY3R1cmVJblBpY3R1cmVBY3RpdmU6Tk9dOwogI2VuZGlmCiAKLSAgICBib29sIGlzRXhpdGlu
Z1RvU3RhbmRhcmRGdWxsc2NyZWVuID0gbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKKyAgICBib29sIGlzRXhpdGluZ1RvU3RhbmRhcmRG
dWxsc2NyZWVuID0gbW9kZSA9PSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
U3RhbmRhcmQ7CiAgICAgLy8gT24gTWFjLCBzdGFuZGFyZCBmdWxsc2NyZWVuIGlzIGhhbmRsZWQg
YnkgdGhlIEZ1bGxzY3JlZW4gQVBJIGFuZCBub3QgYnkgVmlkZW9GdWxsc2NyZWVuTWFuYWdlci4K
LSAgICAvLyBKdXN0IHVwZGF0ZSBtX21vZGUgZGlyZWN0bHkgdG8gSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgaW4gdGhhdCBjYXNlIHRvIGtlZXAKKyAg
ICAvLyBKdXN0IHVwZGF0ZSBtX21vZGUgZGlyZWN0bHkgdG8gTWVkaWFQbGF5ZXJFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkIGluIHRoYXQgY2FzZSB0byBrZWVwCiAgICAgLy8gbV9t
b2RlIGluIHN5bmMgd2l0aCB0aGUgZnVsbHNjcmVlbiBtb2RlIGluIEhUTUxNZWRpYUVsZW1lbnQu
CiAgICAgaWYgKGlzRXhpdGluZ1RvU3RhbmRhcmRGdWxsc2NyZWVuKQotICAgICAgICBtX21vZGUg
PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKKyAg
ICAgICAgbV9tb2RlID0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5k
YXJkOwogCiAgICAgW21fd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlT2JqQyBzZXRFeGl0aW5n
VG9TdGFuZGFyZEZ1bGxzY3JlZW46aXNFeGl0aW5nVG9TdGFuZGFyZEZ1bGxzY3JlZW5dOwogICAg
IFttX3dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU9iakMgZXhpdFBJUF07CkBAIC01NDEsNyAr
NTM5LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnJlcXVlc3RIaWRlQW5k
RXhpdFBpUCgpCiAgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgbV92
aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyRW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
LT53aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKIH0KIApAQCAtNTYzLDcgKzU2MSw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChi
b29sIGVuYWJsZWQsIFBsYXliYWNrCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWM6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKCVwKSwgZW5hYmxlZDol
cyIsIHRoaXMsIGJvb2xTdHJpbmcoZW5hYmxlZCkpOwogCi0gICAgaWYgKGVuYWJsZWQgJiYgbV9t
b2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJ
blBpY3R1cmUpCisgICAgaWYgKGVuYWJsZWQgJiYgbV9tb2RlID09IE1lZGlhUGxheWVyRW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKQogICAgICAgICBleGl0RnVsbHNj
cmVlbihJbnRSZWN0KCksIG5pbCk7CiB9CiAKQEAgLTU3Miw3ICs1NzAsNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU1hYzo6aGFzVmlkZW9DaGFuZ2VkKGJvb2wgaGFzVmlkZW8pCiAg
ICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6Omhhc1ZpZGVv
Q2hhbmdlZCglcCk6JXMiLCB0aGlzLCBib29sU3RyaW5nKGhhc1ZpZGVvKSk7CiAKICAgICBpZiAo
IWhhc1ZpZGVvKQotICAgICAgICBleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAg
IGV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShNZWRpYVBsYXllckVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjOjp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1l
bnNpb25zKQpAQCAtNTg2LDcgKzU4NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9ECiAKIGJv
b2wgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjppc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRG
dWxsc2NyZWVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzTW9kZShXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKSAmJiBb
bV93ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VPYmpDIGlzUGxheWluZ107CisgICAgcmV0dXJu
IGhhc01vZGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBp
Y3R1cmVJblBpY3R1cmUpICYmIFttX3dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU9iakMgaXNQ
bGF5aW5nXTsKIH0KIAogYm9vbCBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGY2YjExZDlkNjI5YWNmYmZi
ODc4NjBjYjdiOGNkMjhjZWJjMWIxOGIuLmM2NjdjY2JiYjViMWUwMDliZmU3ODRmYTliNzU4Y2Jh
YzU5ODc5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAK
QEAgLTQxOSw3ICs0MTksNyBAQCBib29sIEhpdFRlc3RSZXN1bHQ6Om1lZGlhU3VwcG9ydHNGdWxs
c2NyZWVuKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgSFRNTE1lZGlhRWxlbWVu
dCogbWVkaWFFbHQobWVkaWFFbGVtZW50KCkpOwotICAgIHJldHVybiBpczxIVE1MVmlkZW9FbGVt
ZW50PihtZWRpYUVsdCkgJiYgbWVkaWFFbHQtPnN1cHBvcnRzRnVsbHNjcmVlbihIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7CisgICAgcmV0dXJuIGlz
PEhUTUxWaWRlb0VsZW1lbnQ+KG1lZGlhRWx0KSAmJiBtZWRpYUVsdC0+c3VwcG9ydHNGdWxsc2Ny
ZWVuKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7CiAjZWxz
ZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgSGl0
VGVzdFJlc3VsdDo6dG9nZ2xlTWVkaWFGdWxsc2NyZWVuU3RhdGUoKSBjb25zdAogewogI2lmIEVO
QUJMRShWSURFTykKICAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gdGhp
cy0+bWVkaWFFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+aXNWaWRlbygp
ICYmIG1lZGlhRWxlbWVudC0+c3VwcG9ydHNGdWxsc2NyZWVuKEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkgeworICAgICAgICBpZiAobWVkaWFFbGVt
ZW50LT5pc1ZpZGVvKCkgJiYgbWVkaWFFbGVtZW50LT5zdXBwb3J0c0Z1bGxzY3JlZW4oTWVkaWFQ
bGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkgewogICAgICAgICAgICAg
VXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgJm1l
ZGlhRWxlbWVudC0+ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICBtZWRpYUVsZW1lbnQtPnRvZ2ds
ZVN0YW5kYXJkRnVsbHNjcmVlblN0YXRlKCk7CiAgICAgICAgIH0KQEAgLTQ4Myw3ICs0ODMsNyBA
QCB2b2lkIEhpdFRlc3RSZXN1bHQ6OmVudGVyRnVsbHNjcmVlbkZvclZpZGVvKCkgY29uc3QKICAg
ICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQodGhpcy0+bWVkaWFFbGVtZW50KCkpOwog
ICAgIGlmIChpczxIVE1MVmlkZW9FbGVtZW50PihtZWRpYUVsZW1lbnQpKSB7CiAgICAgICAgIEhU
TUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+
KCptZWRpYUVsZW1lbnQpOwotICAgICAgICBpZiAoIXZpZGVvRWxlbWVudC5pc0Z1bGxzY3JlZW4o
KSAmJiBtZWRpYUVsZW1lbnQtPnN1cHBvcnRzRnVsbHNjcmVlbihIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkpIHsKKyAgICAgICAgaWYgKCF2aWRlb0Vs
ZW1lbnQuaXNGdWxsc2NyZWVuKCkgJiYgbWVkaWFFbGVtZW50LT5zdXBwb3J0c0Z1bGxzY3JlZW4o
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkgewogICAgICAg
ICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSwgJm1lZGlhRWxlbWVudC0+ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICB2aWRlb0VsZW1lbnQu
d2Via2l0RW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAgIH0KQEAgLTc3MSw3ICs3NzEsNyBAQCBi
b29sIEhpdFRlc3RSZXN1bHQ6Om1lZGlhU3VwcG9ydHNFbmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25z
dAogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpCiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbHQobWVkaWFF
bGVtZW50KCkpOwotICAgIHJldHVybiBpczxIVE1MVmlkZW9FbGVtZW50PihtZWRpYUVsdCkgJiYg
bWVkaWFFbHQtPnN1cHBvcnRzRnVsbHNjcmVlbihIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKKyAgICByZXR1cm4gaXM8SFRNTFZpZGVv
RWxlbWVudD4obWVkaWFFbHQpICYmIG1lZGlhRWx0LT5zdXBwb3J0c0Z1bGxzY3JlZW4oTWVkaWFQ
bGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOwogI2Vsc2UK
ICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTc4MSw3ICs3ODEsNyBAQCBib29sIEhpdFRl
c3RSZXN1bHQ6Om1lZGlhSXNJbkVuaGFuY2VkRnVsbHNjcmVlbigpIGNvbnN0CiB7CiAjaWYgUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsdChtZWRpYUVsZW1lbnQoKSk7Ci0g
ICAgcmV0dXJuIGlzPEhUTUxWaWRlb0VsZW1lbnQ+KG1lZGlhRWx0KSAmJiBtZWRpYUVsdC0+ZnVs
bHNjcmVlbk1vZGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVQaWN0dXJlSW5QaWN0dXJlOworICAgIHJldHVybiBpczxIVE1MVmlkZW9FbGVtZW50PihtZWRp
YUVsdCkgJiYgbWVkaWFFbHQtPmZ1bGxzY3JlZW5Nb2RlKCkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmU7CiAjZWxzZQogICAgIHJldHVybiBm
YWxzZTsKICNlbmRpZgpAQCAtNzkxLDcgKzc5MSw3IEBAIHZvaWQgSGl0VGVzdFJlc3VsdDo6dG9n
Z2xlRW5oYW5jZWRGdWxsc2NyZWVuRm9yVmlkZW8oKSBjb25zdAogewogI2lmIFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAg
ICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KHRoaXMtPm1lZGlhRWxlbWVudCgpKTsK
LSAgICBpZiAoIWlzPEhUTUxWaWRlb0VsZW1lbnQ+KG1lZGlhRWxlbWVudCkgfHwgIW1lZGlhRWxl
bWVudC0+c3VwcG9ydHNGdWxsc2NyZWVuKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpKQorICAgIGlmICghaXM8SFRNTFZpZGVvRWxlbWVu
dD4obWVkaWFFbGVtZW50KSB8fCAhbWVkaWFFbGVtZW50LT5zdXBwb3J0c0Z1bGxzY3JlZW4oTWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQgPSBkb3du
Y2FzdDxIVE1MVmlkZW9FbGVtZW50PigqbWVkaWFFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlkZW8uY3BwCmluZGV4IGYwYjYzNDAwOGE1NTZjNWQ5NmI4Yjg0ZDY1MWY4
NThlYmZjNzYzMWIuLjVmMGI4ZWJkNjRkNTYyZWI5MzZiNjM0OGZlNDFkZmVkZTIxNTk2NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcApAQCAtMTA5LDcgKzEwOSw3
IEBAIGJvb2wgUmVuZGVyVmlkZW86OnVwZGF0ZUludHJpbnNpY1NpemUoKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBUcmVhdCB0aGUgbWVkaWEgcGxheWVyJ3MgbmF0dXJhbCBzaXpl
IGFzIHZpc3VhbGx5IG5vbi1lbXB0eS4KLSAgICBpZiAodmlkZW9FbGVtZW50KCkucmVhZHlTdGF0
ZSgpID49IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6SEFWRV9NRVRBREFUQSkKKyAgICBpZiAodmlk
ZW9FbGVtZW50KCkucmVhZHlTdGF0ZSgpID49IEhUTUxNZWRpYUVsZW1lbnQ6OlJlYWR5U3RhdGU6
OkhhdmVNZXRhZGF0YSkKICAgICAgICAgaW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291
bnRJZk5lZWRlZChyb3VuZGVkSW50U2l6ZShzaXplKSk7CiAKICAgICBpZiAoc2l6ZSA9PSBpbnRy
aW5zaWNTaXplKCkpCkBAIC0xMzYsNyArMTM2LDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJWaWRlbzo6
Y2FsY3VsYXRlSW50cmluc2ljU2l6ZSgpCiAgICAgLy8gb2YgdGhlIHZpZGVvIHJlc291cmNlLCBp
ZiB0aGF0IGlzIGF2YWlsYWJsZTsgb3RoZXJ3aXNlIGl0IGlzIHRoZSBpbnRyaW5zaWMgCiAgICAg
Ly8gaGVpZ2h0IG9mIHRoZSBwb3N0ZXIgZnJhbWUsIGlmIHRoYXQgaXMgYXZhaWxhYmxlOyBvdGhl
cndpc2UgaXQgaXMgMTUwIENTUyBwaXhlbHMuCiAgICAgYXV0byBwbGF5ZXIgPSB2aWRlb0VsZW1l
bnQoKS5wbGF5ZXIoKTsKLSAgICBpZiAocGxheWVyICYmIHZpZGVvRWxlbWVudCgpLnJlYWR5U3Rh
dGUoKSA+PSBIVE1MVmlkZW9FbGVtZW50OjpIQVZFX01FVEFEQVRBKSB7CisgICAgaWYgKHBsYXll
ciAmJiB2aWRlb0VsZW1lbnQoKS5yZWFkeVN0YXRlKCkgPj0gSFRNTFZpZGVvRWxlbWVudDo6UmVh
ZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKSB7CiAgICAgICAgIExheW91dFNpemUgc2l6ZShwbGF5ZXIt
Pm5hdHVyYWxTaXplKCkpOwogICAgICAgICBpZiAoIXNpemUuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcmV0dXJuIHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCAzMmYzYTQ2YWEwZjA5YjEzYjAyNGU0
MTY0MDc4YTVkYWRkZWRjNTRlLi44N2IwZGQ2NjYwZGI2MTAzOGFmYTc0Nzg1Yjg0MGFjOTdhNDdj
ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmgKQEAgLTM2NCw3ICszNjQsNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBtX2J1ZmZlcmVkQ2hhbmdlZCB7IHRydWUgfTsKICAgICBib29sIG1fcmVuZGVyaW5nQ2Fu
QmVBY2NlbGVyYXRlZCB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlZpZGVv
RnVsbHNjcmVlbk1vZGUgbV9mdWxsc2NyZWVuTW9kZSB7IFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OworICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlIG1fZnVsbHNjcmVlbk1vZGUgeyBXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OwogICAgIGJvb2wgbV92aWRlb0Z1bGxzY3Jl
ZW5TdGFuZGJ5IHsgZmFsc2UgfTsKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzRlZTUyNTA3NjQyZGI0ZTU0Y2ZhZGY3ZmVl
M2JmMWI3YzBkM2QzYy4uOWYwMmM0NDUyMmU3MTI0ZDg2OTAxMzUzNzdjMTExMWY1YzE5ODM2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC0yODUxLDggKzI4NTEsOCBAQCAtIChCT09MKV9hbGxNZWRpYVByZXNlbnRhdGlvbnNDbG9zZWQK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9vbCBoYXNPcGVuTWVkaWFQcmVzZW50
YXRpb25zID0gZmFsc2U7CiAgICAgaWYgKGF1dG8gdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IF9w
YWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkpIHsKLSAgICAgICAgaGFzT3Blbk1lZGlhUHJl
c2VudGF0aW9ucyA9IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmhhc01vZGUoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkK
LSAgICAgICAgICAgIHx8IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmhhc01vZGUoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOworICAg
ICAgICBoYXNPcGVuTWVkaWFQcmVzZW50YXRpb25zID0gdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+
aGFzTW9kZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGlj
dHVyZUluUGljdHVyZSkKKyAgICAgICAgICAgIHx8IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmhh
c01vZGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5k
YXJkKTsKICAgICB9CiAKICAgICBpZiAoIWhhc09wZW5NZWRpYVByZXNlbnRhdGlvbnMgJiYgX3Bh
Z2UtPmZ1bGxTY3JlZW5NYW5hZ2VyKCkgJiYgX3BhZ2UtPmZ1bGxTY3JlZW5NYW5hZ2VyKCktPmlz
RnVsbFNjcmVlbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lv
cy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld0lPUy5tbQppbmRleCAzZWVkMDZkNzJmZDcxMjJhNGRhMTc2ZWZjYjhmYTUyYzYzMWNjMzk1
Li5mZDFjYTM1ZDQxZjMzNTM4ZWRmZTYxNzEyZmQ3YjE2MGJkZmM3ZjYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpAQCAtMTkxLDcgKzE5
MSw3IEBAIC0gKEJPT0wpX2lzU2hvd2luZ1ZpZGVvUGljdHVyZUluUGljdHVyZQogICAgIGlmICgh
X3BhZ2UgfHwgIV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHJldHVybiBfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLT5o
YXNNb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZVBpY3R1cmVJblBpY3R1cmUpOworICAgIHJldHVybiBfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpLT5oYXNNb2RlKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IGM3ZTBhMGFkMTg1ODcyZjU1ZjhlNGViNTQ3ZTdk
MDIxZjkyYzg2ZGYuLmVmZDMxOTRhN2YxNTNiMDVlNGUwZTY0MTg5OGY3OGExOWIzMTI2ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC04OCwxMCArODgsMTAgQEAgcHJpdmF0ZToKICAgICAv
LyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbAogICAgIHZvaWQgYWRkQ2xpZW50KFdlYkNvcmU6OlZpZGVv
RnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVDbGllbnQo
V2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHJlcXVlc3RGdWxsc2NyZWVuTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEgPSBmYWxzZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSA9IGZhbHNl
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpGbG9hdFJl
Y3QpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHkoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKLSAgICB2b2lkIGZ1bGxzY3Jl
ZW5Nb2RlQ2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAg
IGJvb2wgaGFzVmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc1ZpZGVvOyB9CiAg
ICAgV2ViQ29yZTo6RmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fdmlkZW9EaW1lbnNpb25zOyB9CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAg
LTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICB2
b2lkIHJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKTsKLSAgICBib29sIGhhc01vZGUoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBjb25zdDsK
KyAgICBib29sIGhhc01vZGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSkgY29uc3Q7CiAgICAgYm9vbCBtYXlBdXRvbWF0aWNhbGx5U2hvd1ZpZGVvUGljdHVy
ZUluUGljdHVyZSgpIGNvbnN0OwogICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUo
KTsKICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0OwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZShib29sKTsK
IAogICAgIC8vIE1lc3NhZ2VzIGZyb20gVmlkZW9GdWxsc2NyZWVuTWFuYWdlcgotICAgIHZvaWQg
c2V0dXBGdWxsc2NyZWVuV2l0aElEKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBX
ZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCB2aWRlb0xheWVySUQsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgaW5pdGlhbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgdmlkZW9E
aW1lbnNpb25zLCBmbG9hdCBob3N0aW5nU2NhbGVGYWN0b3IsIFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0
dXJlLCBib29sIHN0YW5kYnksIGJvb2wgYmxvY2tzUmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1
cmVJblBpY3R1cmUpOworICAgIHZvaWQgc2V0dXBGdWxsc2NyZWVuV2l0aElEKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCB2aWRl
b0xheWVySUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgaW5pdGlhbFJlY3QsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25zLCBmbG9hdCBob3N0aW5nU2NhbGVGYWN0
b3IsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wg
YWxsb3dzUGljdHVyZUluUGljdHVyZSwgYm9vbCBzdGFuZGJ5LCBib29sIGJsb2Nrc1JldHVyblRv
RnVsbHNjcmVlbkZyb21QaWN0dXJlSW5QaWN0dXJlKTsKICAgICB2b2lkIHNldElubGluZVJlY3Qo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgaW5saW5lUmVjdCwgYm9vbCB2aXNpYmxlKTsKICAgICB2b2lkIHNldEhhc1ZpZGVvQ29udGVu
dExheWVyKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBib29sIHZhbHVlKTsKICAg
ICB2b2lkIHNldEhhc1ZpZGVvKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBib29s
KTsKQEAgLTE3OSwxMCArMTc5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhbnVwRnVsbHNj
cmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCBwcmVwYXJl
ZFRvUmV0dXJuVG9JbmxpbmUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGJvb2wg
dmlzaWJsZSwgV2ViQ29yZTo6RmxvYXRSZWN0IGlubGluZVJlY3QpOwogICAgIHZvaWQgcHJlcGFy
ZWRUb0V4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKLSAg
ICB2b2lkIGV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlKTsKKyAgICB2b2lkIGV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlv
blRvTW9kZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAKICAgICAvLyBNZXNzYWdlcyB0byBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCi0gICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSA9IGZhbHNl
KTsKKyAgICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSA9IGZhbHNlKTsKICAgICB2b2lkIHJlcXVlc3RVcGRh
dGVJbmxpbmVSZWN0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lk
IHJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
cik7CiAgICAgdm9pZCByZXR1cm5WaWRlb0NvbnRlbnRMYXllcihQbGF5YmFja1Nlc3Npb25Db250
ZXh0SWRlbnRpZmllcik7CkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZENsZWFudXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAg
ICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
ciwgV2ViQ29yZTo6RmxvYXRSZWN0KTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpWaWRlb0dyYXZpdHkpOwotICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGUpOworICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lu
bGluZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAKICAgICB2b2lkIHJlcXVl
c3RDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucyhQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkZGY4NTA2
NDQ2ODNiZDI2YTJmYjFiMjVmMWU1MTE3YjJlNzVhYWMyLi4yNTAzZDY2YmEzZjNiNzkxNTMzZjY5
NDQ1MjFmZjBjNGRmN2I3YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiBtZXNzYWdlcyAtPiBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkgewogICAgIFNldEhhc1ZpZGVvKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIGhhc1ZpZGVvKQogICAgIFNldFZpZGVvRGltZW5z
aW9ucyhXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwg
V2ViQ29yZTo6RmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucykKLSAgICBTZXR1cEZ1bGxzY3JlZW5X
aXRoSUQoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQs
IFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEIHZpZGVvTGF5ZXJJRCwgV2ViQ29yZTo6Rmxv
YXRSZWN0IGluaXRpYWxSZWN0LCBXZWJDb3JlOjpGbG9hdFNpemUgdmlkZW9EaW1lbnNpb25zLCBm
bG9hdCBob3N0aW5nU2NhbGVGYWN0b3IsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1
cmVJblBpY3R1cmUsIGJvb2wgc3RhbmRieSwgYm9vbCBibG9ja3NSZXR1cm5Ub0Z1bGxzY3JlZW5G
cm9tUGljdHVyZUluUGljdHVyZSkKKyAgICBTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoV2ViS2l0OjpQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYktpdDo6TGF5ZXJI
b3N0aW5nQ29udGV4dElEIHZpZGVvTGF5ZXJJRCwgV2ViQ29yZTo6RmxvYXRSZWN0IGluaXRpYWxS
ZWN0LCBXZWJDb3JlOjpGbG9hdFNpemUgdmlkZW9EaW1lbnNpb25zLCBmbG9hdCBob3N0aW5nU2Nh
bGVGYWN0b3IsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
dmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBib29sIHN0
YW5kYnksIGJvb2wgYmxvY2tzUmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1cmUp
CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRW50ZXJGdWxsc2NyZWVuKFdlYktpdDo6
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogI2VuZGlmCkBAIC0z
NCw2ICszNCw2IEBAIG1lc3NhZ2VzIC0+IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSB7CiAg
ICAgQ2xlYW51cEZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQpCiAgICAgUHJlcGFyZWRUb1JldHVyblRvSW5saW5lKFdlYktpdDo6UGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIHZpc2libGUsIFdl
YkNvcmU6OkZsb2F0UmVjdCBpbmxpbmVSZWN0KQogICAgIFByZXBhcmVkVG9FeGl0RnVsbHNjcmVl
bihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKLSAg
ICBFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQorICAgIEV4
aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShXZWJLaXQ6OlBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggMzlhMGRlZTc4NDliZDBjMmZkNTk3NTYwMTJiM2IwNWI5
YzU3M2M4ZC4uMzBlNmM4ZmQ4NWNlNTE1OTZhNWFlNjg4ZGFmODM4NmJhNWM4NTg4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKCkKIHsKIH0KIAotYm9vbCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlKSBjb25zdAorYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01v
ZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgY29uc3QKIHsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
b2RlbENvbnRleHQ6OnJlcXVlc3RDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucyhib29sIGZpbmlz
aGUKICAgICBtX21hbmFnZXItPnJlcXVlc3RDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucyhtX2Nv
bnRleHRJZCwgZmluaXNoZWRXaXRoTWVkaWEsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVu
TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9v
bCBmaW5pc2hlZFdpdGhNZWRpYSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojpy
ZXF1ZXN0RnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQogewogICAgIGlmIChtX21hbmFnZXIpCiAg
ICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKG1fY29udGV4dElkLCBtb2Rl
LCBmaW5pc2hlZFdpdGhNZWRpYSk7CkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENvbnRleHQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXMKICAgICAgICAgbV9tYW5hZ2VyLT5zZXRWaWRlb0xheWVyR3Jhdml0eShtX2NvbnRl
eHRJZCwgZ3Jhdml0eSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojpm
dWxsc2NyZWVuTW9kZUNoYW5nZWQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6
ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBpZiAobV9tYW5hZ2VyKQogICAgICAgICBtX21hbmFn
ZXItPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtX2NvbnRleHRJZCwgbW9kZSk7CkBAIC0zNjYsNyAr
MzY2LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RIaWRlQW5k
RXhpdEZ1bGxzY3JlZW4oKQogICAgICAgICBpbnRlcmZhY2UtPnJlcXVlc3RIaWRlQW5kRXhpdEZ1
bGxzY3JlZW4oKTsKIH0KIAotYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01v
ZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpIGNvbnN0
Citib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6aGFzTW9kZShNZWRpYVBsYXllckVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBb
bW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKICAgICAgICAgaWYg
KGludGVyZmFjZS0+aGFzTW9kZShtb2RlKSkKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6aGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFu
Z2UoYm9vbCB2YWx1ZQogCiAjcHJhZ21hIG1hcmsgTWVzc2FnZXMgZnJvbSBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyCiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXR1cEZ1bGxz
Y3JlZW5XaXRoSUQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBX
ZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCB2aWRlb0xheWVySUQsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgaW5pdGlhbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgdmlkZW9E
aW1lbnNpb25zLCBmbG9hdCBob3N0aW5nRGV2aWNlU2NhbGVGYWN0b3IsIEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFs
bG93c1BpY3R1cmVJblBpY3R1cmUsIGJvb2wgc3RhbmRieSwgYm9vbCBibG9ja3NSZXR1cm5Ub0Z1
bGxzY3JlZW5Gcm9tUGljdHVyZUluUGljdHVyZSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpzZXR1cEZ1bGxzY3JlZW5XaXRoSUQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIgY29udGV4dElkLCBXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCB2aWRlb0xheWVy
SUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgaW5pdGlhbFJlY3QsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25zLCBmbG9hdCBob3N0aW5nRGV2aWNlU2NhbGVGYWN0
b3IsIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVu
TW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBib29sIHN0YW5kYnksIGJvb2wgYmxv
Y2tzUmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1cmUpCiB7CiAgICAgTUVTU0FH
RV9DSEVDSyh2aWRlb0xheWVySUQpOwogCkBAIC02MzEsNyArNjMxLDcgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWUKICAgICBJbnRSZWN0IGZpbmFsV2luZG93UmVjdDsKICAgICBtX3BhZ2UtPnJv
b3RWaWV3VG9XaW5kb3coZW5jbG9zaW5nSW50UmVjdChmaW5hbFJlY3QpLCBmaW5hbFdpbmRvd1Jl
Y3QpOwogI2Vsc2UKLSAgICBpZiAoaGFzTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkpCisgICAgaWYgKGhhc01vZGUoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkKICAgICAg
ICAgbV9wYWdlLT5mdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKTsKICNlbmRpZgogCkBAIC02
NTIsNyArNjUyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxs
c2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWUKICNlbmRpZgogfQogCi12b2lk
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0
aW9uVG9Nb2RlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1v
ZGUpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW5XaXRo
b3V0QW5pbWF0aW9uVG9Nb2RlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB0YXJn
ZXRNb2RlKQogewogICAgIGlmIChtX21vY2tWaWRlb1ByZXNlbnRhdGlvbk1vZGVFbmFibGVkKSB7
CiAgICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChjb250ZXh0SWQsIHRhcmdldE1vZGUpOwpA
QCAtNzU4LDE3ICs3NTgsMTcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNh
bGxDbG9zZUNvbXBsZXRpb25IYW5kbGVycygpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpyZXF1ZXN0Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFo
YXNNb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZVBpY3R1cmVJblBpY3R1cmUpCi0gICAgICAgICYmICFoYXNNb2RlKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkgeworICAgIGlmICgh
aGFzTW9kZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGlj
dHVyZUluUGljdHVyZSkKKyAgICAgICAgJiYgIWhhc01vZGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jbG9zZUNvbXBsZXRp
b25IYW5kbGVycy5hcHBlbmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIHJlcXVl
c3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUsIGZpbmlzaGVkV2l0aE1lZGlhKTsKKyAgICByZXF1
ZXN0RnVsbHNjcmVlbk1vZGUoY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSwgZmluaXNoZWRXaXRoTWVkaWEpOwogfQogCi12b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVk
aWEpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVk
V2l0aE1lZGlhKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6UmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRX
aXRoTWVkaWEpKTsKIH0KQEAgLTg0MCw3ICs4NDAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZQogICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KG51bGxwdHIpOwogICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkQ2xlYW51cEZ1bGxzY3JlZW4o
Y29udGV4dElkKSk7CiAKLSAgICBpbnRlcmZhY2UtPnNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSwgZmFsc2UpOworICAgIGludGVyZmFjZS0+c2V0
TW9kZShNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSwgZmFsc2UpOwog
ICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQoY29udGV4dElkKTsKIH0KIApAQCAtODYyLDcgKzg2
Miw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyR3Jh
dml0eShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oY29udGV4
dElkLCAodW5zaWduZWQpZ3Jhdml0eSkpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlIG1vZGUpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
KQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
RnVsbHNjcmVlbk1vZGVDaGFuZ2VkKGNvbnRleHRJZCwgbW9kZSkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYWE0N2IxNzQyYWIxZmI5MTJhNDNiNWNi
MmYxMTg1Zjg5MDE1MTZhYy4uNjExYTI5MmIzMmZmZTY4MDcyNTc5YWE1NGM1M2ZjNDBmOWVkZmRh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMTYwLDcg
KzIxNjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0RpZExlYXZlV2luZG93KCkKICAgICBj
bG9zZU92ZXJsYXllZFZpZXdzKCk7CiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KQogICAgIC8vIFdoZW4gbGVhdmluZyB0aGUgY3VycmVudCBwYWdlLCBjbG9zZSB0aGUgdmlkZW8g
ZnVsbHNjcmVlbi4KLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyICYmIG1fdmlkZW9G
dWxsc2NyZWVuTWFuYWdlci0+aGFzTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkpCisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVu
TWFuYWdlciAmJiBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmhhc01vZGUoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkKICAgICAgICAgbV92
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLT5yZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKCk7CiAj
ZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2Ny
ZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1t
CmluZGV4IGUxOWZmNWNiMjRmMDFlOTMxMDgyZDU1OGYzM2VkZDJhZTBkM2JmMGQuLmZkMGQ1MmFk
MGVmMThiZDc2NjdlYzU0NDRmYTkxMWFlMmVjZjJkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQpAQCAtNjkwLDcgKzY5MCw3IEBAIC0gKHZvaWQp
YmVnYW5FbnRlckZ1bGxTY3JlZW5XaXRoSW5pdGlhbEZyYW1lOihDR1JlY3QpaW5pdGlhbEZyYW1l
IGZpbmFsRnJhbWU6KENHCiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZS0+aW5QaWN0dXJlSW5QaWN0dXJlKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBtb2RlbCA9IHZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+dmlkZW9G
dWxsc2NyZWVuTW9kZWwoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9lbnRlckZ1
bGxzY3JlZW5OZWVkc0V4aXRQaWN0dXJlSW5QaWN0dXJlID0gWUVTOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCmluZGV4IDNmMjg2MmNmYjY3Y2YxZDJlZmZmNzM0MDE2NmJkNDViNTUy
YjVhNGQuLjFmNjhiODVjYTI4NjJjMjliYWY5NzYwMGY2OGJmYzNiYWEwODk4NWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCkBAIC0xMDQyLDcgKzEwNDIsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVu
dDo6cHJlcGFyZUZvclZpZGVvRnVsbHNjcmVlbigpCiAgICAgbV9wYWdlLnZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIoKTsKIH0KIAotYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnN1cHBvcnRzVmlkZW9GdWxs
c2NyZWVuKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQor
Ym9vbCBXZWJDaHJvbWVDbGllbnQ6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKE1lZGlhUGxheWVy
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICByZXR1cm4gbV9wYWdlLnZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS5zdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihtb2RlKTsKIH0K
QEAgLTEwNTcsMTIgKzEwNTcsMTIgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tWaWRl
b1ByZXNlbnRhdGlvbk1vZGVFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3BhZ2Uuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRNb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxl
ZChlbmFibGVkKSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbnRlclZpZGVvRnVsbHNj
cmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIHN0YW5kYnkp
Cit2b2lkIFdlYkNocm9tZUNsaWVudDo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1l
bnQoSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBNZWRpYVBsYXllckVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgc3RhbmRieSkKIHsKICNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgQVNTRVJUKHN0YW5kYnkgfHwg
bW9kZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsK
KyAgICBBU1NFUlQoc3RhbmRieSB8fCBtb2RlICE9IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGVOb25lKTsKICNlbHNlCi0gICAgQVNTRVJUKG1vZGUgIT0gSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgQVNTRVJUKG1vZGUgIT0g
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogI2VuZGlmCiAgICAg
bV9wYWdlLnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZp
ZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQsIG1vZGUsIHN0YW5kYnkpOwogfQpAQCAtMTEwOCw3ICsx
MTA4LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlbW92ZU1lZGlhVXNhZ2VNYW5hZ2VyU2Vz
c2lvbihNZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW4KIAogI2lmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkKIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4aXRWaWRlb0Z1bGxzY3Jl
ZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwg
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1vZGUpCit2
b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmlt
YXRpb24oSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBNZWRpYVBsYXllckVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1vZGUpCiB7CiAgICAgbV9wYWdlLnZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIoKS5leGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbih2
aWRlb0VsZW1lbnQsIHRhcmdldE1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGQwMmVk
ZjFiMmRjZDllYzllNWZjZmIyODUzNmUxODY5ZDZjNjQ2YjQuLjFiOTY2ZGY1N2IxMWZlNDI2N2Y4
YzUwZDU1NzdkODhjMzk5MjNiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI3OCwxMCArMjc4
LDEwIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAg
ICAgdm9pZCBwcmVwYXJlRm9yVmlkZW9GdWxsc2NyZWVuKCkgZmluYWw7Ci0gICAgYm9vbCBzdXBw
b3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4o
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgZmluYWw7CiAg
ICAgYm9vbCBzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBmaW5hbDsKICAgICB2b2lk
IHNldE1vY2tWaWRlb1ByZXNlbnRhdGlvbk1vZGVFbmFibGVkKGJvb2wpIGZpbmFsOwotICAgIHZv
aWQgZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVv
RWxlbWVudCYsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSwgYm9vbCBzdGFuZGJ5KSBmaW5hbDsKKyAgICB2b2lkIGVudGVyVmlkZW9GdWxsc2NyZWVu
Rm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmLCBXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIHN0YW5kYnkpIGZpbmFsOwog
ICAgIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50JiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmID0gW10o
Ym9vbCkgeyB9KSBmaW5hbDsKICAgICB2b2lkIHNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXIo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlcigpIGZpbmFsOwpAQCAtMjk1LDcgKzI5NSw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLSAgICB2b2lkIGV4
aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRl
b0VsZW1lbnQmLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUpIGZpbmFsOworICAgIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRB
bmltYXRpb24oV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYsIFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCAwMzhmM2Y4YjA3NzgwOWZmZmJiMzAz
MjIxYzQ4ZGY4M2FiMjBkNjY5Li41YmU2Y2I1YzlhMTEyZmRiMTA4N2FhZjBjOTE3OWUyZDlkOGMx
ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLmgKQEAgLTg1LDggKzg1LDggQEAgcHVibGljOgogICAgIGJvb2wg
dGFyZ2V0SXNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRJc0Z1bGxzY3JlZW47
IH0KICAgICB2b2lkIHNldFRhcmdldElzRnVsbHNjcmVlbihib29sIGZsYWcpIHsgbV90YXJnZXRJ
c0Z1bGxzY3JlZW4gPSBmbGFnOyB9CiAKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgZnVsbHNjcmVlbk1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2Z1bGxzY3JlZW5Nb2RlOyB9Ci0gICAgdm9pZCBzZXRGdWxsc2NyZWVuTW9kZShXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkgeyBtX2Z1bGxz
Y3JlZW5Nb2RlID0gbW9kZTsgfQorICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUgZnVsbHNjcmVlbk1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxzY3Jl
ZW5Nb2RlOyB9CisgICAgdm9pZCBzZXRGdWxsc2NyZWVuTW9kZShXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpIHsgbV9mdWxsc2NyZWVuTW9kZSA9IG1v
ZGU7IH0KIAogICAgIGJvb2wgZnVsbHNjcmVlblN0YW5kYnkoKSBjb25zdCB7IHJldHVybiBtX2Z1
bGxzY3JlZW5TdGFuZGJ5OyB9CiAgICAgdm9pZCBzZXRGdWxsc2NyZWVuU3RhbmRieShib29sIHZh
bHVlKSB7IG1fZnVsbHNjcmVlblN0YW5kYnkgPSB2YWx1ZTsgfQpAQCAtMTA2LDcgKzEwNiw3IEBA
IHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5
ZXJIb3N0aW5nQ29udGV4dDsKICAgICBBbmltYXRpb25UeXBlIG1fYW5pbWF0aW9uVHlwZSB7IEFu
aW1hdGlvblR5cGU6Ok5vbmUgfTsKICAgICBib29sIG1fdGFyZ2V0SXNGdWxsc2NyZWVuIHsgZmFs
c2UgfTsKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgbV9mdWxsc2NyZWVuTW9kZSB7IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgfTsKKyAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1fZnVsbHNjcmVlbk1vZGUgeyBXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OwogICAgIGJvb2wgbV9mdWxsc2Ny
ZWVuU3RhbmRieSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzRnVsbHNjcmVlbiB7IGZhbHNlIH07
CiB9OwpAQCAtMTIzLDExICsxMjMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAv
LyBJbnRlcmZhY2UgdG8gV2ViQ2hyb21lQ2xpZW50Ci0gICAgYm9vbCBzdXBwb3J0c1ZpZGVvRnVs
bHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgY29uc3Q7CiAgICAgYm9vbCBzdXBw
b3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBjb25zdDsKLSAgICB2b2lkIGVudGVyVmlkZW9G
dWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmLCBXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgc3Rh
bmRieSk7CisgICAgdm9pZCBlbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50JiwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSwgYm9vbCBzdGFuZGJ5KTsKICAgICB2b2lkIGV4aXRWaWRlb0Z1bGxzY3Jl
ZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiA9IFtdKGJvb2wpIHsgfSk7Ci0gICAgdm9pZCBleGl0
VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50JiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlKTsKKyAgICB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9u
KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHZpZGVvRGltZW5zaW9uc0NoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogCiAgICAgLy8gTWVzc2Fn
ZXMgZnJvbSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkKLSAgICB2b2lkIHJlcXVlc3RGdWxs
c2NyZWVuTW9kZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0
aE1lZGlhKTsKKyAgICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSk7CiAgICAgdm9pZCByZXF1ZXN0VXBkYXRl
SW5saW5lUmVjdChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCBy
ZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIp
OwogICAgIHZvaWQgcmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRp
ZENsZWFudXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAg
ICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgY29uc3QgV1RGOjpNYWNoU2VuZFJp
Z2h0Jik7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIsIHVuc2lnbmVkIGdyYXZpdHkpOwotICAgIHZvaWQgZnVsbHNjcmVl
bk1vZGVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOworICAgIHZvaWQgZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB2b2lkIGZ1
bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
ciwgYm9vbCBpc1BhZ2VWaXNpYmxlKTsKICAgICB2b2lkIHJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xp
Y3lBbmRDb250ZXh0VUlEKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENv
bnRleHRVSURBc3luY1JlcGx5JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmlu
CmluZGV4IDdkZWIyNTJiODM0MjM4MzczMTY5NGI1NThkYWUxZjkzODg2MjZiOTAuLmEwZjAzMWJl
ZjlmYWE3Y2NlZTljYWQ0MDZkM2E2NTk2YWFkNDM5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpCiBtZXNzYWdlcyAtPiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIHsKLSAgICBS
ZXF1ZXN0RnVsbHNjcmVlbk1vZGUoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQor
ICAgIFJlcXVlc3RGdWxsc2NyZWVuTW9kZShXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQog
ICAgIFJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIFJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihXZWJL
aXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKICAgICBSZXR1
cm5WaWRlb0NvbnRlbnRMYXllcihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyIGNvbnRleHRJZCkKQEAgLTM1LDcgKzM1LDcgQEAgbWVzc2FnZXMgLT4gVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlciB7CiAgICAgRGlkQ2xlYW51cEZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgU2V0VmlkZW9MYXllckZyYW1l
RmVuY2VkKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElk
LCBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRzLCBNYWNoU2VuZFJpZ2h0IG1hY2hTZW5kUmlnaHQp
CiAgICAgU2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgY29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5KQotICAgIEZ1bGxzY3Jl
ZW5Nb2RlQ2hhbmdlZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUpCisgICAgRnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFdlYktp
dDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUp
CiAgICAgRnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFdlYktpdDo6UGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIGlzUGFnZVZpc2libGUpCiAgICAgUmVx
dWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
Um91dGVTaGFyaW5nUG9saWN5IHJvdXRlU2hhcmluZ1BvbGljeSwgU3RyaW5nIHJvdXRpbmdDb250
ZXh0VUlEKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3M2Ey
YTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5kNzZiZTg0MmE1YjViZWVjZWIyYWUyNzNhYzUxMmZmNjdj
OGZjZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjIzLDEzICsyMjMsMTMgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGkKIAogI3ByYWdtYSBtYXJrIEludGVyZmFjZSB0byBDaHJvbWVDbGllbnQ6
CiAKLWJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4o
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUp
IGNvbnN0Citib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2Ny
ZWVuKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkg
Y29uc3QKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVOVVNFRF9QQVJBTShtb2Rl
KTsKICNpZiBIQVZFKEFWS0lUKQogI2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLSAg
ICByZXR1cm4gbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVTdGFuZGFyZDsKKyAgICByZXR1cm4gbW9kZSA9PSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7CiAjZWxzZQogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCkBA
IC0yMzcsNyArMjM3LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1Zp
ZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KICAgICByZXR1cm4gZmFs
c2U7CiAjZW5kaWYKICNlbHNlCi0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgfHwgKG1vZGUgPT0gSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSAmJiBzdXBwb3J0
c1BpY3R1cmVJblBpY3R1cmUoKSk7CisgICAgcmV0dXJuIG1vZGUgPT0gTWVkaWFQbGF5ZXJFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkIHx8IChtb2RlID09IE1lZGlhUGxheWVyRW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlICYmIHN1cHBvcnRzUGljdHVy
ZUluUGljdHVyZSgpKTsKICNlbmRpZgogfQogCkBAIC0yNTAsMTAgKzI1MCwxMCBAQCBib29sIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNv
bnN0CiAjZW5kaWYKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVv
RnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQs
IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIHN0
YW5kYnkpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVu
Rm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgTWVkaWFQbGF5
ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIHN0YW5kYnkpCiB7CiAgICAg
QVNTRVJUKG1fcGFnZSk7Ci0gICAgQVNTRVJUKHN0YW5kYnkgfHwgbW9kZSAhPSBIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICBBU1NFUlQoc3RhbmRi
eSB8fCBtb2RlICE9IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsK
ICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9G
dWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KCVwKSIsIHRoaXMpOwogCiAgICAgYXV0byBjb250ZXh0
SWQgPSBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXItPmNvbnRleHRJZEZvck1lZGlhRWxlbWVudCh2
aWRlb0VsZW1lbnQpOwpAQCAtMjYyLDkgKzI2Miw5IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVu
CiAgICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPT0gY29udGV4dElkKTsKIAog
ICAgIGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29u
dGV4dElkKTsKLSAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
b2xkTW9kZSA9IGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKTsKKyAgICBNZWRpYVBsYXllckVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG9sZE1vZGUgPSBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5N
b2RlKCk7CiAKLSAgICBpZiAob2xkTW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGVOb25lKQorICAgIGlmIChvbGRNb2RlID09IE1lZGlhUGxheWVyRW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKQogICAgICAgICBhZGRDbGllbnRGb3JDb250ZXh0KGNv
bnRleHRJZCk7CiAKICAgICBpZiAoIWludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpKQpA
QCAtMjczLDE4ICsyNzMsMTggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW4KICAgICBhdXRvIHZp
ZGVvUmVjdCA9IGlubGluZVZpZGVvRnJhbWUodmlkZW9FbGVtZW50KTsKICAgICBGbG9hdFJlY3Qg
dmlkZW9MYXllckZyYW1lID0gRmxvYXRSZWN0KDAsIDAsIHZpZGVvUmVjdC53aWR0aCgpLCB2aWRl
b1JlY3QuaGVpZ2h0KCkpOwogCi0gICAgaWYgKG1vZGUgIT0gSFRNTE1lZGlhRWxlbWVudEVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkKKyAgICBpZiAobW9kZSAhPSBNZWRpYVBsYXllckVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkKICAgICAgICAgaW50ZXJmYWNlLT5zZXRUYXJn
ZXRJc0Z1bGxzY3JlZW4odHJ1ZSk7CiAgICAgZWxzZQogICAgICAgICBpbnRlcmZhY2UtPnNldFRh
cmdldElzRnVsbHNjcmVlbihmYWxzZSk7CiAKLSAgICBpZiAobW9kZSA9PSBIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKQorICAgIGlmICht
b2RlID09IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0
dXJlKQogICAgICAgICBtX3ZpZGVvRWxlbWVudEluUGljdHVyZUluUGljdHVyZSA9IHZpZGVvRWxl
bWVudDsKIAogICAgIGludGVyZmFjZS0+c2V0RnVsbHNjcmVlbk1vZGUobW9kZSk7CiAgICAgaW50
ZXJmYWNlLT5zZXRGdWxsc2NyZWVuU3RhbmRieShzdGFuZGJ5KTsKICAgICBtb2RlbC0+c2V0Vmlk
ZW9FbGVtZW50KCZ2aWRlb0VsZW1lbnQpOwotICAgIGlmIChvbGRNb2RlID09IEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgJiYgbW9kZSAhPSBIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKQorICAgIGlmIChvbGRNb2RlID09
IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lICYmIG1vZGUgIT0gTWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpCiAgICAgICAgIG1vZGVsLT5z
ZXRWaWRlb0xheWVyRnJhbWUodmlkZW9MYXllckZyYW1lKTsKIAogICAgIGlmIChpbnRlcmZhY2Ut
PmFuaW1hdGlvblN0YXRlKCkgIT0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6QW5p
bWF0aW9uVHlwZTo6Tm9uZSkKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxl
bWVudAogICAgIH0pOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRl
b0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVv
RWxlbWVudCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlIHRhcmdldE1vZGUpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1
bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxl
bWVudCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB0YXJn
ZXRNb2RlKQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oJXApIiwgdGhpcyk7CiAK
QEAgLTM3OSwxMiArMzc5LDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6dmlkZW9E
aW1lbnNpb25zQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpCiAKICNwcmFnbWEg
bWFyayBNZXNzYWdlcyBmcm9tIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eToKIAotdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSkK
K3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlh
KQogewogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkucmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKG1v
ZGUsIGZpbmlzaGVkV2l0aE1lZGlhKTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2
aWRlb0Z1bGxzY3JlZW5Nb2RlKQogewogICAgIGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5z
dXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKICAgICBtb2RlbC0+ZnVsbHNjcmVlbk1v
ZGVDaGFuZ2VkKHZpZGVvRnVsbHNjcmVlbk1vZGUpOwpAQCAtNTM3LDcgKzUzNyw3IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpCiAKICAgICBpbnRlcmZhY2UtPnNldEFuaW1hdGlvblN0YXRlKFZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OkFuaW1hdGlvblR5cGU6Ok5vbmUpOwogICAg
IGludGVyZmFjZS0+c2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsKLSAgICBIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSA9IGludGVyZmFjZS0+ZnVsbHNjcmVlbk1v
ZGUoKTsKKyAgICBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUgPSBp
bnRlcmZhY2UtPmZ1bGxzY3JlZW5Nb2RlKCk7CiAgICAgYm9vbCBzdGFuZGJ5ID0gaW50ZXJmYWNl
LT5mdWxsc2NyZWVuU3RhbmRieSgpOwogICAgIGJvb2wgdGFyZ2V0SXNGdWxsc2NyZWVuID0gaW50
ZXJmYWNlLT50YXJnZXRJc0Z1bGxzY3JlZW4oKTsKIApAQCAtNTQ2LDExICs1NDYsMTEgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmkKICAgICBpZiAodmlkZW9FbGVtZW50KQogICAgICAgICB2aWRl
b0VsZW1lbnQtPmRpZEV4aXRGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKCk7CiAKLSAgICBp
bnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZU5vbmUpOworICAgIGludGVyZmFjZS0+c2V0RnVsbHNjcmVlbk1vZGUoTWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIGludGVyZmFjZS0+
c2V0RnVsbHNjcmVlblN0YW5kYnkoZmFsc2UpOwogICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQo
Y29udGV4dElkKTsKIAotICAgIGlmICghdmlkZW9FbGVtZW50IHx8ICF0YXJnZXRJc0Z1bGxzY3Jl
ZW4gfHwgbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lKQorICAgIGlmICghdmlkZW9FbGVtZW50IHx8ICF0YXJnZXRJc0Z1bGxzY3JlZW4gfHwgbW9k
ZSA9PSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgdmlkZW9FbGVtZW50LCBtb2RlLCBzdGFuZGJ5XSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1lZGlhRWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tCmluZGV4IDlh
ZTE3Y2IxNTBkOTgwZWY4YjZmZTgyOWYxNGNiZTVjYzg0YTU3ZWQuLjMyYmFjZWM1ZDgzNGQyZjky
ZDhkYWEyODhmNzZiNGQ5Zjk5OGYwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tCkBAIC04Niw3ICs4Niw3IEBAIC0gKHZvaWQp
c2V0Q3Jvc3NPcmlnaW46KE5TU3RyaW5nICopbmV3Q3Jvc3NPcmlnaW4KIC0gKHVuc2lnbmVkIHNo
b3J0KW5ldHdvcmtTdGF0ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+bmV0d29ya1N0YXRlKCk7CisgICAgcmV0dXJuIElNUEwt
Pm5ldHdvcmtTdGF0ZUZvckJpbmRpbmdzKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopcHJlbG9hZApA
QCAtMTEwLDcgKzExMCw3IEBAIC0gKERPTVRpbWVSYW5nZXMgKilidWZmZXJlZAogLSAodW5zaWdu
ZWQgc2hvcnQpcmVhZHlTdGF0ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+cmVhZHlTdGF0ZSgpOworICAgIHJldHVybiBJTVBM
LT5yZWFkeVN0YXRlRm9yQmluZGluZ3MoKTsKIH0KIAogLSAoQk9PTClzZWVraW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCmluZGV4IDQ0OTEzMDY0NDc0ZDEzYzJiOTM5YmI4NDBhMTQ5ZmM2NzUyYWY5YzQuLjQ0
MmJhZTcxYTVmNDM1MjkyZGYxMjc0OWRiNzkyYjlkOGQ5ZGYwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CkBAIC0yMDcsMTIgKzIwNywxMiBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklE
RU8pCi0gICAgYm9vbCBzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIGZpbmFsOworICAgIGJvb2wgc3VwcG9y
dHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSkgZmluYWw7CiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAg
IHZvaWQgc2V0TW9ja1ZpZGVvUHJlc2VudGF0aW9uTW9kZUVuYWJsZWQoYm9vbCkgZmluYWw7Ci0g
ICAgdm9pZCBlbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50JiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlLCBib29sIHN0YW5kYnkpIGZpbmFsOworICAgIHZvaWQgZW50ZXJWaWRlb0Z1bGxz
Y3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYsIFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgc3RhbmRieSkgZmlu
YWw7CiAgICAgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
PSBbXShib29sKSB7IH0pIGZpbmFsOwotICAgIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9k
ZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYsIFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgZmluYWw7CisgICAgdm9p
ZCBleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50JiwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSkgZmluYWw7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggMGQ0
YjQ4OTkwMDI5NDg1OTAxYTBhM2VhNWU4MjQ1OGZkNTJlNzNkMS4uNTQzYzcxNWNmMmY3NzMzYTMx
NjQ3YTRkOWYxZjdlMGE1NThhZGRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtOTQxLDcgKzk0
MSw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp0cmlnZ2VyUmVuZGVyaW5nVXBkYXRlKCkKIAog
I2lmIEVOQUJMRShWSURFTykKIAotYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnN1cHBvcnRzVmlkZW9G
dWxsc2NyZWVuKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkKK2Jv
b2wgV2ViQ2hyb21lQ2xpZW50OjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihNZWRpYVBsYXllckVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKSB8
fCBIQVZFKEFWS0lUKQogICAgIHJldHVybiB0cnVlOwpAQCAtOTU3LDEwICs5NTcsMTAgQEAgdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tWaWRlb1ByZXNlbnRhdGlvbk1vZGVFbmFibGVkKGJv
b2wgZW5hYmxlZCkKICAgICBtX21vY2tWaWRlb1ByZXNlbnRhdGlvbk1vZGVFbmFibGVkID0gZW5h
YmxlZDsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9y
VmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgc3RhbmRieSkKK3ZvaWQg
V2ViQ2hyb21lQ2xpZW50OjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1M
VmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGUgbW9kZSwgYm9vbCBzdGFuZGJ5KQogewogICAgIEFTU0VSVF9VTlVTRUQoc3RhbmRi
eSwgIXN0YW5kYnkpOwotICAgIEFTU0VSVChtb2RlICE9IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgIEFTU0VSVChtb2RlICE9IE1lZGlhUGxheWVy
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKICAgICBpZiAobV9tb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxlZCkKICAg
ICAgICAgdmlkZW9FbGVtZW50LmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7CkBAIC05ODAs
NyArOTgwLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JW
aWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWUKICAgICBjb21wbGV0aW9uSGFuZGxl
cih0cnVlKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4aXRWaWRlb0Z1bGxzY3JlZW5U
b01vZGVXaXRob3V0QW5pbWF0aW9uKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1vZGUpCit2b2lk
IFdlYkNocm9tZUNsaWVudDo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRp
b24oSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBNZWRpYVBsYXllckVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1vZGUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCiAgICAgaWYgKG1fbW9ja1ZpZGVvUHJlc2VudGF0aW9uTW9kZUVuYWJsZWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNTY2NDJjMjIyZDZi
YzU0M2FmOWU3NTliNjM5MzJhYTZlZDgzODY4NC4uMmNmOWI4YWJiZWM2MjBjNmI4OTc1NjgwYjFh
MzI5ZjVkNjlmZWY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQpAQCAtODkyNSw3ICs4OTI1LDcgQEAgLSAodm9pZClfc2NoZWR1bGVSZW5kZXJpbmdVcGRh
dGVGb3JQZW5kaW5nVGlsZUNhY2hlUmVwYWludAogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKQogCi0tICh2b2lkKV9lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVu
dDooTmFrZWRQdHI8V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudD4pdmlkZW9FbGVtZW50IG1vZGU6
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSltb2Rl
CistICh2b2lkKV9lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudDooTmFrZWRQdHI8
V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudD4pdmlkZW9FbGVtZW50IG1vZGU6KFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpbW9kZQogewogICAgIGlmIChfcHJp
dmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIpIHsKICAgICAgICAgaWYgKFtfcHJpdmF0ZS0+ZnVs
bHNjcmVlbkNvbnRyb2xsZXIgdmlkZW9FbGVtZW50XSA9PSB2aWRlb0VsZW1lbnQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4
IGNjZDhjZDczYTQxZTM5YTFhNzNlZjE5NDE1NGYxOTI5NGQyMWU5NzkuLjA0NmIzNDJmYjJiY2Zh
Y2JlY2E4ZWI2OWVlMzVlN2M5ZjQyYjMxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMjk2LDcgKzI5Niw3IEBAIFdlYkxh
eW91dE1pbGVzdG9uZXMga2l0TGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5
b3V0TWlsZXN0b25lPik7CiAKICNpZiBFTkFCTEUoVklERU8pICYmIGRlZmluZWQoX19jcGx1c3Bs
dXMpCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotLSAodm9pZClfZW50ZXJW
aWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQ6KE5ha2VkUHRyPFdlYkNvcmU6OkhUTUxWaWRl
b0VsZW1lbnQ+KXZpZGVvRWxlbWVudCBtb2RlOihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpbW9kZTsKKy0gKHZvaWQpX2VudGVyVmlkZW9GdWxsc2Ny
ZWVuRm9yVmlkZW9FbGVtZW50OihOYWtlZFB0cjxXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Pil2
aWRlb0VsZW1lbnQgbW9kZTooV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSltb2RlOwogLSAodm9pZClfZXhpdFZpZGVvRnVsbHNjcmVlbjsKICNpZiBQTEFURk9S
TShNQUMpCiAtIChCT09MKV9oYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzSW50ZXJmYWNlOwo=
</data>
<flag name="review"
          id="471833"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="471849"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>