<?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>227771</bug_id>
          
          <creation_ts>2021-07-07 14:13:49 -0700</creation_ts>
          <short_desc>Return error for statement if the transaction it belongs to is rolled back</short_desc>
          <delta_ts>2021-07-14 14:14:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>
          
          <blocked>227887</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1775456</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-07 14:13:49 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775470</commentid>
    <comment_count>1</comment_count>
      <attachid>433080</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-07 14:45:14 -0700</bug_when>
    <thetext>Created attachment 433080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775636</commentid>
    <comment_count>2</comment_count>
      <attachid>433125</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-08 01:03:32 -0700</bug_when>
    <thetext>Created attachment 433125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775760</commentid>
    <comment_count>3</comment_count>
      <attachid>433156</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-08 12:56:08 -0700</bug_when>
    <thetext>Created attachment 433156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775914</commentid>
    <comment_count>4</comment_count>
      <attachid>433196</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-08 20:32:02 -0700</bug_when>
    <thetext>Created attachment 433196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775926</commentid>
    <comment_count>5</comment_count>
      <attachid>433200</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-08 23:22:42 -0700</bug_when>
    <thetext>Created attachment 433200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776008</commentid>
    <comment_count>6</comment_count>
      <attachid>433200</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-09 09:40:48 -0700</bug_when>
    <thetext>Comment on attachment 433200
Patch

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

I don&apos;t really understand the purpose of this patch and there is no test to show the usefulness either. Here are some random comments though.

&gt; Source/WebCore/Modules/webdatabase/SQLTransaction.cpp:-209
&gt; -        m_sqliteTransaction-&gt;stop();

Why is this no longer stopping the transaction? I am assuming it is not needed because the destructor already takes care of stopping the transaction? Either way, I think a comment in the changelog for this function would be helpful understand such changes.

&gt; Source/WebCore/platform/sql/SQLiteDatabase.cpp:739
&gt; +    return !m_writeTransactionInProgress || !m_writeTransactionInProgress-&gt;rolledBackBySQLite();

I don&apos;t understand this logic. So if `!m_writeTransactionInProgress` (meaning there is no write transaction in progress), then I have a valid transaction?

I would have expected:
return m_writeTransactionInProgress &amp;&amp; !m_writeTransactionInProgress-&gt;rolledBackBySQLite();

Either there is a bug or at the very least, this code is confusing.

&gt; Source/WebCore/platform/sql/SQLiteDatabase.h:163
&gt; +    SQLiteTransaction* writeTransactionInProgress() const { return m_writeTransactionInProgress; }

Having a getter start with &quot;write&quot; seems a bit confusing to me.

&gt; Source/WebCore/platform/sql/SQLiteDatabase.h:179
&gt; +    SQLiteTransaction* m_writeTransactionInProgress { nullptr };

We store store raw pointers as data members anymore. This is a security bug waiting to happen. If you really need a pointer, it should probably be a WeakPtr.

&gt; Source/WebCore/platform/sql/SQLiteTransaction.h:47
&gt; +    bool rolledBackBySQLite() const;

How is this new name a progression? Seems to go against WebKit coding style that states we should use prefixes for booleans.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776009</commentid>
    <comment_count>7</comment_count>
      <attachid>433200</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-09 09:42:15 -0700</bug_when>
    <thetext>Comment on attachment 433200
Patch

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

&gt;&gt; Source/WebCore/platform/sql/SQLiteDatabase.h:179
&gt;&gt; +    SQLiteTransaction* m_writeTransactionInProgress { nullptr };
&gt; 
&gt; We store store raw pointers as data members anymore. This is a security bug waiting to happen. If you really need a pointer, it should probably be a WeakPtr.

I meant: we avoid storing raw pointers as data members nowadays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776047</commentid>
    <comment_count>8</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-09 11:36:21 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Comment on attachment 433200 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=433200&amp;action=review
&gt; 
&gt; I don&apos;t really understand the purpose of this patch and there is no test to
&gt; show the usefulness either. Here are some random comments though.

For a explicit transaction, we usually begin the transaction, run some statements, and commit/abort the transaction. Currently we rely on the caller of SQLiteTransaction to track the state. If the caller fails to check the state, the statements may run as separate transactions . This patch aims to ensure the statements inside a write transaction are executed together. It does not handle read transactions as the consequences are not as bad if read statements are run separately.

This will help us to implement aborting all SQLiteTransactions synchronously on suspension: all subsequent statements in the same transaction scope will fail.

&gt; 
&gt; &gt; Source/WebCore/Modules/webdatabase/SQLTransaction.cpp:-209
&gt; &gt; -        m_sqliteTransaction-&gt;stop();
&gt; 
&gt; Why is this no longer stopping the transaction? I am assuming it is not
&gt; needed because the destructor already takes care of stopping the
&gt; transaction? Either way, I think a comment in the changelog for this
&gt; function would be helpful understand such changes.

Will add.

&gt; 
&gt; &gt; Source/WebCore/platform/sql/SQLiteDatabase.cpp:739
&gt; &gt; +    return !m_writeTransactionInProgress || !m_writeTransactionInProgress-&gt;rolledBackBySQLite();
&gt; 
&gt; I don&apos;t understand this logic. So if `!m_writeTransactionInProgress`
&gt; (meaning there is no write transaction in progress), then I have a valid
&gt; transaction?
&gt; 
&gt; I would have expected:
&gt; return m_writeTransactionInProgress &amp;&amp;
&gt; !m_writeTransactionInProgress-&gt;rolledBackBySQLite();
&gt; 
&gt; Either there is a bug or at the very least, this code is confusing.

This is for checking in step(); the statement cannot be stepped if you are in a state where you begin a write transaction and the transaction is invalid.
The statement can be executed if you don&apos;t start explicit transaction, or it&apos;s a read transaction.

&gt; 
&gt; &gt; Source/WebCore/platform/sql/SQLiteDatabase.h:163
&gt; &gt; +    SQLiteTransaction* writeTransactionInProgress() const { return m_writeTransactionInProgress; }
&gt; 
&gt; Having a getter start with &quot;write&quot; seems a bit confusing to me.

Will rename it to hasWriteTransactionInProgress.

&gt; 
&gt; &gt; Source/WebCore/platform/sql/SQLiteDatabase.h:179
&gt; &gt; +    SQLiteTransaction* m_writeTransactionInProgress { nullptr };
&gt; 
&gt; We store store raw pointers as data members anymore. This is a security bug
&gt; waiting to happen. If you really need a pointer, it should probably be a
&gt; WeakPtr.

Will update.

&gt; 
&gt; &gt; Source/WebCore/platform/sql/SQLiteTransaction.h:47
&gt; &gt; +    bool rolledBackBySQLite() const;
&gt; 
&gt; How is this new name a progression? Seems to go against WebKit coding style
&gt; that states we should use prefixes for booleans.

Will revert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776048</commentid>
    <comment_count>9</comment_count>
      <attachid>433230</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-09 12:02:18 -0700</bug_when>
    <thetext>Created attachment 433230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776049</commentid>
    <comment_count>10</comment_count>
      <attachid>433231</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-09 12:09:45 -0700</bug_when>
    <thetext>Created attachment 433231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776051</commentid>
    <comment_count>11</comment_count>
      <attachid>433232</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-09 12:27:24 -0700</bug_when>
    <thetext>Created attachment 433232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776824</commentid>
    <comment_count>12</comment_count>
      <attachid>433465</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-13 17:43:40 -0700</bug_when>
    <thetext>Created attachment 433465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777035</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-14 14:14:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/80596229&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433080</attachid>
            <date>2021-07-07 14:45:14 -0700</date>
            <delta_ts>2021-07-08 01:03:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227771-20210707144513.patch</filename>
            <type>text/plain</type>
            <size>14279</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM5MjYxMTdlODIyYzU4
ZjcxMTFkNGNhNjgxYjg2ZjI0ZWFhNDMyMy4uNmNmODg0ZGQxOWY4NTI3ZmRkNjg2NjZhYjYyMDNl
YWRjOTM2MmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTA3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJldHVybiBlcnJvciBmb3Ig
c3RhdGVtZW50IGlmIHRoZSB0cmFuc2FjdGlvbiBpdCBiZWxvbmdzIHRvIGlzIHJvbGxlZCBiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3NzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIFNR
TGl0ZVRyYW5zYWN0aW9uIGluLXByb2dyZXNzIGJldHdlZW4gZXhwbGljaXQgYmVnaW4oKSBhbmQg
Y29tbWl0KCkvcm9sbGJhY2soKS4gQW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24KKyAgICAgICAg
aXMgbWFya2VkIHZhbGlkIGlmIGl0J3Mgbm90IGFib3J0ZWQgYnkgU1FMaXRlIChhdXRvLWNvbW1p
dCBmb3IgZGF0YWJhc2UgaXMgb2ZmKS4gRm9yIHN0YXRlbWVudHMgZXhlY3V0ZWQgZHVyaW5nIAor
ICAgICAgICBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiwgd2UgdXN1YWxseSB3YW50IHRoZW0gdG8g
YmUgcGFydCBvZiB0cmFuc2FjdGlvbiwgc28gd2Ugc2hvdWxkIGF2b2lkIGV4ZWN1dGluZyB0aGVt
IGlmIAorICAgICAgICB0cmFuc2FjdGlvbiBpcyBhbHJlYWR5IGludmFsaWQuIE90aGVyd2lzZSwg
dGhleSBtYXkgYmUgZXhlY3V0ZWQgaW4gYSBzZXBhcmF0ZSBpbXBsaWNpdCB0cmFuc2FjdGlvbi4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmNoZWNrQW5kSGFuZGxlQ2xvc2VkRGF0YWJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OnJ1blN0YXRlbWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmhhbmRsZUN1cnJlbnRTdGF0ZW1lbnRF
cnJvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpjb21wdXRl
TmV4dFN0YXRlQW5kQ2xlYW51cElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Omhhc1Zh
bGlkVHJhbnNhY3Rpb24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnRyYW5zYWN0aW9uSW5Q
cm9ncmVzcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXApOgorICAgICAgICAq
IHBsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVUcmFuc2FjdGlvbjo6U1FMaXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5z
YWN0aW9uOjpjb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OnJv
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xsZWRCYWNr
QnlTUUxpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OnN0
b3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246Ondhc1Jv
bGxlZEJhY2tCeVNxbGl0ZSBjb25zdCk6IFJlbmFtZWQgdG8gcm9sbGVkQmFja0J5U1FMaXRlLgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5oOgorCiAyMDIxLTA3LTA3
ICBUaW0gTmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHNldEJvb2xlYW5B
dHRyaWJ1dGUgaW5zdGVhZCBvZiBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFgs
IFkgPyBlbXB0eUF0b20oKSA6IG51bGxBdG9tKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAppbmRleCA3YTJjOWE3MzQ2
YWYxMGI3ZmVhNzE1NjU5OTE5MTMxMTUzODg4Yjc3Li4wM2M1ZjFhZTAxNTNjYmViOGVjOGIwYTQ0
MzA3NDQzNTk5ZWYyOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAtMjA1LDEwICsyMDUsNyBAQCB2b2lkIFNR
TFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FMaXRlIHRyYW5zYWN0aW9uIHNob3VsZCBiZSBz
dG9wcGVkLCBhcyB3ZWxsCi0gICAgaWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAg
bV9zcWxpdGVUcmFuc2FjdGlvbi0+c3RvcCgpOwotICAgICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9u
ID0gbnVsbHB0cjsKLSAgICB9CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG51bGxwdHI7CiAK
ICAgICBpZiAobV9sb2NrQWNxdWlyZWQpCiAgICAgICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IoKS0+cmVsZWFzZUxvY2soKnRoaXMpOwpAQCAtMzEzLDcgKzMxMCw3IEBAIHZv
aWQgU1FMVHJhbnNhY3Rpb246OnJ1blN0YXRlbWVudHMoKQogICAgIC8vIElmIHRoZXJlIGlzIGEg
c2VyaWVzIG9mIHN0YXRlbWVudHMgcXVldWVkIHVwIHRoYXQgYXJlIGFsbCBzdWNjZXNzZnVsIGFu
ZCBoYXZlIG5vIGFzc29jaWF0ZWQKICAgICAvLyBTUUxTdGF0ZW1lbnRDYWxsYmFjayBvYmplY3Rz
LCB0aGVuIHdlIGNhbiBidXJuIHRocm91Z2ggdGhlIHF1ZXVlCiAgICAgZG8gewotICAgICAgICBp
ZiAobV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQgJiYgIW1fc3FsaXRlVHJhbnNhY3Rpb24t
Pndhc1JvbGxlZEJhY2tCeVNxbGl0ZSgpKSB7CisgICAgICAgIGlmIChtX3Nob3VsZFJldHJ5Q3Vy
cmVudFN0YXRlbWVudCAmJiAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+cm9sbGVkQmFja0J5U1FMaXRl
KCkpIHsKICAgICAgICAgICAgIG1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50ID0gZmFsc2U7
CiAgICAgICAgICAgICAvLyBGSVhNRSAtIEFub3RoZXIgcGxhY2UgdGhhdCBuZWVkcyBmaXhpbmcg
dXAgYWZ0ZXIgPHJkYXI6Ly9wcm9ibGVtLzU2Mjg0Njg+IGlzIGFkZHJlc3NlZC4KICAgICAgICAg
ICAgIC8vIFNlZSA6Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCgpIGZvciBkaXNjdXNzaW9u
CkBAIC01NjEsNyArNTU4LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6aGFuZGxlQ3VycmVudFN0
YXRlbWVudEVycm9yKCkKIHsKICAgICAvLyBTcGVjIDQuMy4yLjYuNjogZXJyb3IgLSBDYWxsIHRo
ZSBzdGF0ZW1lbnQncyBlcnJvciBjYWxsYmFjaywgYnV0IGlmIHRoZXJlIHdhcyBubyBlcnJvciBj
YWxsYmFjaywKICAgICAvLyBvciB0aGUgdHJhbnNhY3Rpb24gd2FzIHJvbGxlZCBiYWNrLCBqdW1w
IHRvIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjawotICAgIGlmIChtX2N1cnJlbnRTdGF0
ZW1lbnQtPmhhc1N0YXRlbWVudEVycm9yQ2FsbGJhY2soKSAmJiAhbV9zcWxpdGVUcmFuc2FjdGlv
bi0+d2FzUm9sbGVkQmFja0J5U3FsaXRlKCkpIHsKKyAgICBpZiAobV9jdXJyZW50U3RhdGVtZW50
LT5oYXNTdGF0ZW1lbnRFcnJvckNhbGxiYWNrKCkgJiYgIW1fc3FsaXRlVHJhbnNhY3Rpb24tPnJv
bGxlZEJhY2tCeVNRTGl0ZSgpKSB7CiAgICAgICAgIHNjaGVkdWxlQ2FsbGJhY2soJlNRTFRyYW5z
YWN0aW9uOjpkZWxpdmVyU3RhdGVtZW50Q2FsbGJhY2spOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDYyYjI3Y2RiMzMyNTE0ZDZhNDk3MTBhMDcx
ZDQxMTc1YTcwZGJkZGUuLjg4ZjU4ZmNlZDM5MWFmZGRiMGE4ODc4Yjk1MjA0YjQyMDRlMzM5NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKQEAgLTQ0OSwxMCArNDQ5LDcgQEAgdm9pZCBTUUxU
cmFuc2FjdGlvbkJhY2tlbmQ6OmNvbXB1dGVOZXh0U3RhdGVBbmRDbGVhbnVwSWZOZWVkZWQoKQog
ICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2Ugd2FzIHN0b3BwZWQgb3IgaW50ZXJydXB0ZWQg
LSBjYW5jZWxsaW5nIHdvcmsgZm9yIHRoaXMgdHJhbnNhY3Rpb24iKTsKIAogICAgIC8vIFRoZSBj
dXJyZW50IFNRTGl0ZSB0cmFuc2FjdGlvbiBzaG91bGQgYmUgc3RvcHBlZCwgYXMgd2VsbAotICAg
IGlmIChtX2Zyb250ZW5kLm1fc3FsaXRlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgbV9mcm9udGVu
ZC5tX3NxbGl0ZVRyYW5zYWN0aW9uLT5zdG9wKCk7Ci0gICAgICAgIG1fZnJvbnRlbmQubV9zcWxp
dGVUcmFuc2FjdGlvbiA9IG51bGxwdHI7Ci0gICAgfQorICAgIG1fZnJvbnRlbmQubV9zcWxpdGVU
cmFuc2FjdGlvbiA9IG51bGxwdHI7CiAKICAgICAvLyBUZXJtaW5hdGUgdGhlIGZyb250ZW5kIHN0
YXRlIG1hY2hpbmUuIFRoaXMgYWxzbyBnZXRzIHRoZSBmcm9udGVuZCB0bwogICAgIC8vIGNhbGwg
Y29tcHV0ZU5leHRTdGF0ZUFuZENsZWFudXBJZk5lZWRlZCgpIGFuZCBjbGVhciBpdHMgd3JhcHBl
cnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmlu
ZGV4IGExMTEwMjU2ODFlNDY5MzEyM2ZiYzhjYjQ5MGE4MzcwZGIzOWMxODMuLmE1ODRhOTQzYTQ3
YmFhYzQ0YzkwM2E3NGJlMjI0MjgyMDZmMzRlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlv
bi5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHNxbGl0ZTMuaD4KICNpbmNsdWRlIDx0
aHJlYWQ+CkBAIC03MzMsNCArNzM0LDkgQEAgRXhwZWN0ZWQ8VW5pcXVlUmVmPFNRTGl0ZVN0YXRl
bWVudD4sIGludD4gU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVIZWFwU3RhdGVtZW50KEEKICAgICBy
ZXR1cm4gVW5pcXVlUmVmPFNRTGl0ZVN0YXRlbWVudD4oKm5ldyBTUUxpdGVTdGF0ZW1lbnQoKnRo
aXMsIHNxbFN0YXRlbWVudC52YWx1ZSgpKSk7CiB9CiAKK2Jvb2wgU1FMaXRlRGF0YWJhc2U6Omhh
c1ZhbGlkVHJhbnNhY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAhbV90cmFuc2FjdGlvbklu
UHJvZ3Jlc3MgfHwgIW1fdHJhbnNhY3Rpb25JblByb2dyZXNzLT5yb2xsZWRCYWNrQnlTUUxpdGUo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCA0YjIyYzhmZTY4ZTM1ZmJkZDA5NzI1ODY4YzRj
OWEwZTVjYWIyY2YwLi5lZWU5ZjZlZWIwMzlhMDdhYTVkNDY1NTljMmIxZTliMDg0MzdhMzQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApAQCAtNzEs
OCArNzEsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbFRhYmxl
cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBydW5WYWN1dW1Db21tYW5kKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgaW50IHJ1bkluY3JlbWVudGFsVmFjdXVtQ29tbWFuZCgpOwotICAgIAotICAg
IGJvb2wgdHJhbnNhY3Rpb25JblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3M7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFNRTGl0ZVN0YXRl
bWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50U2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5KTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gcHJlcGFyZVN0
YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlcnkpOwpAQCAtMTYyLDYgKzE2MCw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGluY3JlbWVudFN0YXRlbWVudENvdW50KCk7CiAgICAgdm9pZCBkZWNyZW1lbnRT
dGF0ZW1lbnRDb3VudCgpOwogCisgICAgU1FMaXRlVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uSW5Q
cm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzOyB9CisgICAg
Ym9vbCBoYXNWYWxpZFRyYW5zYWN0aW9uKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgc3RhdGlj
IGludCBhdXRob3JpemVyRnVuY3Rpb24odm9pZCosIGludCwgY29uc3QgY2hhciosIGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwogCkBAIC0xNzUsNyArMTc2LDcgQEAgcHJp
dmF0ZToKICAgICBzcWxpdGUzKiBtX2RiIHsgbnVsbHB0ciB9OwogICAgIGludCBtX3BhZ2VTaXpl
IHsgLTEgfTsKICAgICAKLSAgICBib29sIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzIHsgZmFsc2Ug
fTsKKyAgICBTUUxpdGVUcmFuc2FjdGlvbiogbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3M7CiAjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1fc2hhcmFibGUgeyBmYWxzZSB9OwogICAgIHN0ZDo6
YXRvbWljPHVuc2lnbmVkPiBtX3N0YXRlbWVudENvdW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBiMDg0OWU2ZjgwOGNh
MzgwYjA4YzYyNzRiMDRkMTQ5Y2MwMzNjMDg3Li4zYWFmYWYxZjk4MjhkZDFhNDQ2ZTk4NGMxNmZi
NzMxMjFhYzZlYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlU3RhdGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
U3RhdGVtZW50LmNwcApAQCAtNjYsNiArNjYsMTEgQEAgaW50IFNRTGl0ZVN0YXRlbWVudDo6c3Rl
cCgpCiB7CiAgICAgTG9ja2VyIGRhdGFiYXNlTG9jayB7IG1fZGF0YWJhc2UuZGF0YWJhc2VNdXRl
eCgpIH07CiAKKyAgICBpZiAoIW1fZGF0YWJhc2UuaGFzVmFsaWRUcmFuc2FjdGlvbigpKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNRTERhdGFiYXNlLCAiU1FMaXRlU3RhdGVtZW50Ojpz
dGVwOiBDYW5ub3Qgc3RlcCAle3B1YmxpY31zIGJlY2F1c2UgdHJhbnNhY3Rpb24gaXMgaW52YWxp
ZCIsIHNxbGl0ZTNfc3FsKG1fc3RhdGVtZW50KSk7CisgICAgICAgIHJldHVybiBTUUxJVEVfQUJP
UlQ7CisgICAgfQorCiAgICAgaW50IGVycm9yID0gc3FsaXRlM19zdGVwKG1fc3RhdGVtZW50KTsK
ICAgICBpZiAoZXJyb3IgIT0gU1FMSVRFX0RPTkUgJiYgZXJyb3IgIT0gU1FMSVRFX1JPVykKICAg
ICAgICAgTE9HKFNRTERhdGFiYXNlLCAic3FsaXRlM19zdGVwIGZhaWxlZCAoJWkpXG5FcnJvciAt
ICVzIiwgZXJyb3IsIHNxbGl0ZTNfZXJybXNnKG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNw
cAppbmRleCAwOGU5ZWI3M2RiMjRhMDkwYTdhMDgwYzFhODE1NjkzMThlNWEyODU5Li4xNWIyZWIy
ZjZlYmM0N2M0N2YyYmFiZGU4MjVlOTg1MDJjNWRkZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAKQEAgLTM2LDcgKzM2LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBTUUxpdGVUcmFuc2FjdGlvbjo6U1FMaXRlVHJhbnNhY3Rp
b24oU1FMaXRlRGF0YWJhc2UmIGRiLCBib29sIHJlYWRPbmx5KQogICAgIDogbV9kYihkYikKLSAg
ICAsIG1faW5Qcm9ncmVzcyhmYWxzZSkKICAgICAsIG1fcmVhZE9ubHkocmVhZE9ubHkpCiB7CiB9
CkBAIC00Nyw3NCArNDYsNjkgQEAgU1FMaXRlVHJhbnNhY3Rpb246On5TUUxpdGVUcmFuc2FjdGlv
bigpCiAgICAgICAgIHJvbGxiYWNrKCk7CiB9CiAKLXZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OmJl
Z2luKCkKK2ludCBTUUxpdGVUcmFuc2FjdGlvbjo6YmVnaW4oKQogewotICAgIGlmICghbV9pblBy
b2dyZXNzKSB7Ci0gICAgICAgIEFTU0VSVCghbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk7
Ci0gICAgICAgIC8vIENhbGwgQkVHSU4gSU1NRURJQVRFIGZvciBhIHdyaXRlIHRyYW5zYWN0aW9u
IHRvIGFjcXVpcmUKLSAgICAgICAgLy8gYSBSRVNFUlZFRCBsb2NrIG9uIHRoZSBEQiBmaWxlLiBP
dGhlcndpc2UsIGFub3RoZXIgd3JpdGUKLSAgICAgICAgLy8gdHJhbnNhY3Rpb24gKG9uIGFub3Ro
ZXIgY29ubmVjdGlvbikgY291bGQgbWFrZSBjaGFuZ2VzCi0gICAgICAgIC8vIHRvIHRoZSBzYW1l
IERCIGZpbGUgYmVmb3JlIHRoaXMgdHJhbnNhY3Rpb24gZ2V0cyB0byBleGVjdXRlCi0gICAgICAg
IC8vIGFueSBzdGF0ZW1lbnRzLiBJZiB0aGF0IGhhcHBlbnMsIHRoaXMgdHJhbnNhY3Rpb24gd2ls
bCBmYWlsLgotICAgICAgICAvLyBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvbGFuZ190cmFuc2FjdGlv
bi5odG1sCi0gICAgICAgIC8vIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sb2NraW5ndjMuaHRtbCNs
b2NraW5nCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgU1FMaXRlRGF0YWJhc2VU
cmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwotI2VuZGlmCi0g
ICAgICAgIGlmIChtX3JlYWRPbmx5KQotICAgICAgICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5l
eGVjdXRlQ29tbWFuZCgiQkVHSU4iX3MpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2lu
UHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21tYW5kKCJCRUdJTiBJTU1FRElBVEUiX3MpOwotICAg
ICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gbV9pblByb2dyZXNzOwotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIGlmICghbV9pblByb2dyZXNzKQotICAgICAgICAg
ICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3ND
b3VudCgpOwotI2VuZGlmCi0gICAgfQotfQorICAgIGlmIChtX2luUHJvZ3Jlc3MpCisgICAgICAg
IHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAgICBBU1NFUlQoIW1fZGIubV90cmFuc2FjdGlvbklu
UHJvZ3Jlc3MpOworICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSB0aGlzOwogCi12
b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpjb21taXQoKQotewotICAgIGlmIChtX2luUHJvZ3Jlc3Mp
IHsKLSAgICAgICAgQVNTRVJUKG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MpOwotICAgICAg
ICBtX2luUHJvZ3Jlc3MgPSAhbV9kYi5leGVjdXRlQ29tbWFuZCgiQ09NTUlUIl9zKTsKLSAgICAg
ICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IG1faW5Qcm9ncmVzczsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgICAgICBpZiAoIW1faW5Qcm9ncmVzcykKLSAgICAgICAgICAg
IFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291
bnQoKTsKKyAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmluY3JlbWVudFRyYW5zYWN0aW9uSW5Q
cm9ncmVzc0NvdW50KCk7CiAjZW5kaWYKLSAgICB9CisKKyAgICAvLyBDYWxsIEJFR0lOIElNTUVE
SUFURSBmb3IgYSB3cml0ZSB0cmFuc2FjdGlvbiB0byBhY3F1aXJlCisgICAgLy8gYSBSRVNFUlZF
RCBsb2NrIG9uIHRoZSBEQiBmaWxlLiBPdGhlcndpc2UsIGFub3RoZXIgd3JpdGUKKyAgICAvLyB0
cmFuc2FjdGlvbiAob24gYW5vdGhlciBjb25uZWN0aW9uKSBjb3VsZCBtYWtlIGNoYW5nZXMKKyAg
ICAvLyB0byB0aGUgc2FtZSBEQiBmaWxlIGJlZm9yZSB0aGlzIHRyYW5zYWN0aW9uIGdldHMgdG8g
ZXhlY3V0ZQorICAgIC8vIGFueSBzdGF0ZW1lbnRzLiBJZiB0aGF0IGhhcHBlbnMsIHRoaXMgdHJh
bnNhY3Rpb24gd2lsbCBmYWlsLgorICAgIC8vIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3Ry
YW5zYWN0aW9uLmh0bWwKKyAgICAvLyBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvbG9ja2luZ3YzLmh0
bWwjbG9ja2luZworICAgIEFTQ0lJTGl0ZXJhbCBzcWxTdHJpbmcgPSBtX3JlYWRPbmx5ID8gIkJF
R0lOIl9zIDogIkJFR0lOIElNTUVESUFURSJfczsKKyAgICBhdXRvIHNxbCA9IG1fZGIucHJlcGFy
ZVN0YXRlbWVudChzcWxTdHJpbmcpOworICAgIHJldHVybiBzcWwgPyBzcWwtPnN0ZXAoKSA6IHNx
bC5lcnJvcigpOwogfQogCi12b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xsYmFjaygpCitpbnQg
U1FMaXRlVHJhbnNhY3Rpb246OmNvbW1pdCgpCiB7Ci0gICAgLy8gV2UgZG8gbm90IHVzZSB0aGUg
J21faW5Qcm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIlJPTExCQUNLIiknIGNvbnN0cnVj
dCBoZXJlLAotICAgIC8vIGJlY2F1c2UgbV9pblByb2dyZXNzIHNob3VsZCBhbHdheXMgYmUgc2V0
IHRvIGZhbHNlIGFmdGVyIGEgUk9MTEJBQ0ssIGFuZAotICAgIC8vIG1fZGIuZXhlY3V0ZUNvbW1h
bmQoIlJPTExCQUNLIikgY2FuIHNvbWV0aW1lcyBoYXJtbGVzc2x5IGZhaWwsIHRodXMgcmV0dXJu
aW5nCi0gICAgLy8gYSBub24temVyby90cnVlIHJlc3VsdCAoaHR0cDovL3d3dy5zcWxpdGUub3Jn
L2xhbmdfdHJhbnNhY3Rpb24uaHRtbCkuCi0gICAgaWYgKG1faW5Qcm9ncmVzcykgewotICAgICAg
ICBBU1NFUlQobV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk7Ci0gICAgICAgIG1fZGIuZXhl
Y3V0ZUNvbW1hbmQoIlJPTExCQUNLIl9zKTsKLSAgICAgICAgbV9pblByb2dyZXNzID0gZmFsc2U7
Ci0gICAgICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBpZiAo
IW1faW5Qcm9ncmVzcykKKyAgICAgICAgcmV0dXJuIFNRTElURV9FUlJPUjsKKworICAgIEFTU0VS
VChtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gdGhpcyk7CisgICAgbV9kYi5tX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzcyA9IG51bGxwdHI7CisgICAgbV9pblByb2dyZXNzID0gZmFsc2U7CisK
KyAgICBhdXRvIHNxbCA9IG1fZGIucHJlcGFyZVN0YXRlbWVudCgiQ09NTUlUIl9zKTsKKyAgICBp
bnQgcmVzdWx0ID0gIHNxbCA/IHNxbC0+c3RlcCgpIDogc3FsLmVycm9yKCk7CisKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVu
dFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7CisgICAgU1FMaXRlRGF0YWJhc2VUcmFja2Vy
OjpkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwogI2VuZGlmCi0gICAgfQor
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6c3RvcCgp
CitpbnQgU1FMaXRlVHJhbnNhY3Rpb246OnJvbGxiYWNrKCkKIHsKLSAgICBpZiAobV9pblByb2dy
ZXNzKSB7Ci0gICAgICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgICAgICBtX2RiLm1fdHJh
bnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7CisgICAgaWYgKCFtX2luUHJvZ3Jlc3MpCisgICAg
ICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAgICBBU1NFUlQobV9kYi5tX3RyYW5zYWN0aW9u
SW5Qcm9ncmVzcyA9IHRoaXMpOworICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBu
dWxscHRyOworICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOworCisgICAgYXV0byBzcWwgPSBtX2Ri
LnByZXBhcmVTdGF0ZW1lbnQoIlJPTExCQUNLIl9zKTsKKyAgICBpbnQgcmVzdWx0ID0gIHNxbCA/
IHNxbC0+c3RlcCgpIDogc3FsLmVycm9yKCk7CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9n
cmVzc0NvdW50KCk7CisgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRUcmFuc2Fj
dGlvbkluUHJvZ3Jlc3NDb3VudCgpOwogI2VuZGlmCi0gICAgfQorCisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotYm9vbCBTUUxpdGVUcmFuc2FjdGlvbjo6d2FzUm9sbGVkQmFja0J5U3FsaXRlKCkg
Y29uc3QKK2Jvb2wgU1FMaXRlVHJhbnNhY3Rpb246OnJvbGxlZEJhY2tCeVNRTGl0ZSgpIGNvbnN0
CiB7CiAgICAgLy8gQWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9jM3JlZi9nZXRf
YXV0b2NvbW1pdC5odG1sLAogICAgIC8vIHRoZSBhdXRvLWNvbW1pdCBmbGFnIHNob3VsZCBiZSBv
ZmYgaW4gdGhlIG1pZGRsZSBvZiBhIHRyYW5zYWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5oCmluZGV4IGI5ZDFmNzk0MGNjYjYyYWJmNDNm
OTc1ZjMxNmU3ODFhMjY4NzJiNzMuLjc5ZTVjNjI5ZjJhNzQzM2U3YTg2Y2U5YjQ2Yjg0M2RjNDM3
ZGI1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFu
c2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2Fj
dGlvbi5oCkBAIC0zOSwxOSArMzksMTggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFNR
TGl0ZVRyYW5zYWN0aW9uKFNRTGl0ZURhdGFiYXNlJiBkYiwgYm9vbCByZWFkT25seSA9IGZhbHNl
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlVHJhbnNhY3Rpb24oKTsKICAgICAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21t
aXQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJvbGxiYWNrKCk7Ci0gICAgdm9pZCBzdG9w
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJlZ2luKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
aW50IGNvbW1pdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCByb2xsYmFjaygpOwogICAgIAog
ICAgIGJvb2wgaW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1faW5Qcm9ncmVzczsgfQotICAg
IGJvb2wgd2FzUm9sbGVkQmFja0J5U3FsaXRlKCkgY29uc3Q7CisgICAgYm9vbCByb2xsZWRCYWNr
QnlTUUxpdGUoKSBjb25zdDsKIAogICAgIFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGI7IH0KIAogcHJpdmF0ZToKICAgICBTUUxpdGVEYXRhYmFzZSYgbV9kYjsK
LSAgICBib29sIG1faW5Qcm9ncmVzczsKKyAgICBib29sIG1faW5Qcm9ncmVzcyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3JlYWRPbmx5OwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433125</attachid>
            <date>2021-07-08 01:03:32 -0700</date>
            <delta_ts>2021-07-08 12:56:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227771-20210708010332.patch</filename>
            <type>text/plain</type>
            <size>14358</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM5MjYxMTdlODIyYzU4
ZjcxMTFkNGNhNjgxYjg2ZjI0ZWFhNDMyMy4uMDY5YTg4YjkyMzEwMDE2ZTEwMmE4YmE4MzI0MWYy
OGViN2Q5NjQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJldHVybiBlcnJvciBmb3Ig
c3RhdGVtZW50IGlmIHRoZSB0cmFuc2FjdGlvbiBpdCBiZWxvbmdzIHRvIGlzIHJvbGxlZCBiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3NzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIFNR
TGl0ZVRyYW5zYWN0aW9uIGluLXByb2dyZXNzIGJldHdlZW4gZXhwbGljaXQgYmVnaW4oKSBhbmQg
Y29tbWl0KCkvcm9sbGJhY2soKS4gQW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24KKyAgICAgICAg
aXMgbWFya2VkIHZhbGlkIGlmIGl0J3Mgbm90IGFib3J0ZWQgYnkgU1FMaXRlIChhdXRvLWNvbW1p
dCBmb3IgZGF0YWJhc2UgaXMgb2ZmKS4gRm9yIHN0YXRlbWVudHMgZXhlY3V0ZWQgZHVyaW5nIAor
ICAgICAgICBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiwgd2UgdXN1YWxseSB3YW50IHRoZW0gdG8g
YmUgcGFydCBvZiB0cmFuc2FjdGlvbiwgc28gd2Ugc2hvdWxkIGF2b2lkIGV4ZWN1dGluZyB0aGVt
IGlmIAorICAgICAgICB0cmFuc2FjdGlvbiBpcyBhbHJlYWR5IGludmFsaWQuIE90aGVyd2lzZSwg
dGhleSBtYXkgYmUgZXhlY3V0ZWQgaW4gYSBzZXBhcmF0ZSBpbXBsaWNpdCB0cmFuc2FjdGlvbi4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmNoZWNrQW5kSGFuZGxlQ2xvc2VkRGF0YWJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OnJ1blN0YXRlbWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmhhbmRsZUN1cnJlbnRTdGF0ZW1lbnRF
cnJvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpjb21wdXRl
TmV4dFN0YXRlQW5kQ2xlYW51cElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Omhhc1Zh
bGlkVHJhbnNhY3Rpb24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnRyYW5zYWN0aW9uSW5Q
cm9ncmVzcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXApOgorICAgICAgICAq
IHBsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVUcmFuc2FjdGlvbjo6U1FMaXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5z
YWN0aW9uOjpjb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OnJv
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xsZWRCYWNr
QnlTUUxpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OnN0
b3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246Ondhc1Jv
bGxlZEJhY2tCeVNxbGl0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3Fs
L1NRTGl0ZVRyYW5zYWN0aW9uLmg6CisKIDIwMjEtMDctMDcgIFRpbSBOZ3V5ZW4gIDxudGltQGFw
cGxlLmNvbT4KIAogICAgICAgICBVc2Ugc2V0Qm9vbGVhbkF0dHJpYnV0ZSBpbnN0ZWFkIG9mIHNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oWCwgWSA/IGVtcHR5QXRvbSgpIDogbnVs
bEF0b20oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb24uY3BwCmluZGV4IDdhMmM5YTczNDZhZjEwYjdmZWE3MTU2NTk5MTkxMzEx
NTM4ODhiNzcuLjAzYzVmMWFlMDE1M2NiZWI4ZWM4YjBhNDQzMDc0NDM1OTllZjI5YTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b24uY3BwCkBAIC0yMDUsMTAgKzIwNSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmNoZWNrQW5k
SGFuZGxlQ2xvc2VkRGF0YWJhc2UoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGUgY3Vy
cmVudCBTUUxpdGUgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIHN0b3BwZWQsIGFzIHdlbGwKLSAgICBp
ZiAobV9zcWxpdGVUcmFuc2FjdGlvbikgewotICAgICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uLT5z
dG9wKCk7Ci0gICAgICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBudWxscHRyOwotICAgIH0KKyAg
ICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsKIAogICAgIGlmIChtX2xvY2tBY3F1aXJl
ZCkKICAgICAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25Db29yZGluYXRvcigpLT5yZWxlYXNl
TG9jaygqdGhpcyk7CkBAIC0zMTMsNyArMzEwLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6cnVu
U3RhdGVtZW50cygpCiAgICAgLy8gSWYgdGhlcmUgaXMgYSBzZXJpZXMgb2Ygc3RhdGVtZW50cyBx
dWV1ZWQgdXAgdGhhdCBhcmUgYWxsIHN1Y2Nlc3NmdWwgYW5kIGhhdmUgbm8gYXNzb2NpYXRlZAog
ICAgIC8vIFNRTFN0YXRlbWVudENhbGxiYWNrIG9iamVjdHMsIHRoZW4gd2UgY2FuIGJ1cm4gdGhy
b3VnaCB0aGUgcXVldWUKICAgICBkbyB7Ci0gICAgICAgIGlmIChtX3Nob3VsZFJldHJ5Q3VycmVu
dFN0YXRlbWVudCAmJiAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+d2FzUm9sbGVkQmFja0J5U3FsaXRl
KCkpIHsKKyAgICAgICAgaWYgKG1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50ICYmICFtX3Nx
bGl0ZVRyYW5zYWN0aW9uLT5yb2xsZWRCYWNrQnlTUUxpdGUoKSkgewogICAgICAgICAgICAgbV9z
aG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQgPSBmYWxzZTsKICAgICAgICAgICAgIC8vIEZJWE1F
IC0gQW5vdGhlciBwbGFjZSB0aGF0IG5lZWRzIGZpeGluZyB1cCBhZnRlciA8cmRhcjovL3Byb2Js
ZW0vNTYyODQ2OD4gaXMgYWRkcmVzc2VkLgogICAgICAgICAgICAgLy8gU2VlIDo6b3BlblRyYW5z
YWN0aW9uQW5kUHJlZmxpZ2h0KCkgZm9yIGRpc2N1c3Npb24KQEAgLTU2MSw3ICs1NTgsNyBAQCB2
b2lkIFNRTFRyYW5zYWN0aW9uOjpoYW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3IoKQogewogICAg
IC8vIFNwZWMgNC4zLjIuNi42OiBlcnJvciAtIENhbGwgdGhlIHN0YXRlbWVudCdzIGVycm9yIGNh
bGxiYWNrLCBidXQgaWYgdGhlcmUgd2FzIG5vIGVycm9yIGNhbGxiYWNrLAogICAgIC8vIG9yIHRo
ZSB0cmFuc2FjdGlvbiB3YXMgcm9sbGVkIGJhY2ssIGp1bXAgdG8gdGhlIHRyYW5zYWN0aW9uIGVy
cm9yIGNhbGxiYWNrCi0gICAgaWYgKG1fY3VycmVudFN0YXRlbWVudC0+aGFzU3RhdGVtZW50RXJy
b3JDYWxsYmFjaygpICYmICFtX3NxbGl0ZVRyYW5zYWN0aW9uLT53YXNSb2xsZWRCYWNrQnlTcWxp
dGUoKSkgeworICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1lbnQtPmhhc1N0YXRlbWVudEVycm9yQ2Fs
bGJhY2soKSAmJiAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+cm9sbGVkQmFja0J5U1FMaXRlKCkpIHsK
ICAgICAgICAgc2NoZWR1bGVDYWxsYmFjaygmU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJTdGF0ZW1l
bnRDYWxsYmFjayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5j
cHAKaW5kZXggNjJiMjdjZGIzMzI1MTRkNmE0OTcxMGEwNzFkNDExNzVhNzBkYmRkZS4uODhmNThm
Y2VkMzkxYWZkZGIwYTg4NzhiOTUyMDRiNDIwNGUzMzk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5k
LmNwcApAQCAtNDQ5LDEwICs0NDksNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6Y29t
cHV0ZU5leHRTdGF0ZUFuZENsZWFudXBJZk5lZWRlZCgpCiAgICAgTE9HKFN0b3JhZ2VBUEksICJE
YXRhYmFzZSB3YXMgc3RvcHBlZCBvciBpbnRlcnJ1cHRlZCAtIGNhbmNlbGxpbmcgd29yayBmb3Ig
dGhpcyB0cmFuc2FjdGlvbiIpOwogCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FMaXRlIHRyYW5zYWN0
aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCi0gICAgaWYgKG1fZnJvbnRlbmQubV9zcWxp
dGVUcmFuc2FjdGlvbikgewotICAgICAgICBtX2Zyb250ZW5kLm1fc3FsaXRlVHJhbnNhY3Rpb24t
PnN0b3AoKTsKLSAgICAgICAgbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uID0gbnVsbHB0
cjsKLSAgICB9CisgICAgbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsK
IAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgZnJvbnRlbmQgc3RhdGUgbWFjaGluZS4gVGhpcyBhbHNv
IGdldHMgdGhlIGZyb250ZW5kIHRvCiAgICAgLy8gY2FsbCBjb21wdXRlTmV4dFN0YXRlQW5kQ2xl
YW51cElmTmVlZGVkKCkgYW5kIGNsZWFyIGl0cyB3cmFwcGVycwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggYTExMTAyNTY4MWU0NjkzMTIz
ZmJjOGNiNDkwYTgzNzBkYjM5YzE4My4uYTU4NGE5NDNhNDdiYWFjNDRjOTAzYTc0YmUyMjQyODIw
NmYzNGVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2Vy
LmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRl
bWVudC5oIgorI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8bXV0ZXg+
CiAjaW5jbHVkZSA8c3FsaXRlMy5oPgogI2luY2x1ZGUgPHRocmVhZD4KQEAgLTczMyw0ICs3MzQs
OSBAQCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50PiBTUUxpdGVEYXRh
YmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnQoQQogICAgIHJldHVybiBVbmlxdWVSZWY8U1FMaXRl
U3RhdGVtZW50PigqbmV3IFNRTGl0ZVN0YXRlbWVudCgqdGhpcywgc3FsU3RhdGVtZW50LnZhbHVl
KCkpKTsKIH0KIAorYm9vbCBTUUxpdGVEYXRhYmFzZTo6aGFzVmFsaWRUcmFuc2FjdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuICFtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyB8fCAhbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3MtPnJvbGxlZEJhY2tCeVNRTGl0ZSgpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5o
CmluZGV4IDRiMjJjOGZlNjhlMzVmYmRkMDk3MjU4NjhjNGM5YTBlNWNhYjJjZjAuLmVlZTlmNmVl
YjAzOWEwN2FhNWQ0NjU1OWMyYjFlOWIwODQzN2EzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCkBAIC03MSw4ICs3MSw2IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQWxsVGFibGVzKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgaW50IHJ1blZhY3V1bUNvbW1hbmQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcnVuSW5j
cmVtZW50YWxWYWN1dW1Db21tYW5kKCk7Ci0gICAgCi0gICAgYm9vbCB0cmFuc2FjdGlvbkluUHJv
Z3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzczsgfQogCiAgICAg
V0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IHByZXBhcmVTdGF0
ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYgcXVlcnkpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVj
dGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCBx
dWVyeSk7CkBAIC0xNjIsNiArMTYwLDkgQEAgcHVibGljOgogICAgIHZvaWQgaW5jcmVtZW50U3Rh
dGVtZW50Q291bnQoKTsKICAgICB2b2lkIGRlY3JlbWVudFN0YXRlbWVudENvdW50KCk7CiAKKyAg
ICBTUUxpdGVUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb25JblByb2dyZXNzKCkgY29uc3QgeyByZXR1
cm4gbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3M7IH0KKyAgICBib29sIGhhc1ZhbGlkVHJhbnNhY3Rp
b24oKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgaW50IGF1dGhvcml6ZXJGdW5jdGlv
bih2b2lkKiwgaW50LCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25z
dCBjaGFyKik7CiAKQEAgLTE3NSw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIHNxbGl0ZTMqIG1f
ZGIgeyBudWxscHRyIH07CiAgICAgaW50IG1fcGFnZVNpemUgeyAtMSB9OwogICAgIAotICAgIGJv
b2wgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgeyBmYWxzZSB9OworICAgIFNRTGl0ZVRyYW5zYWN0
aW9uKiBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzczsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJv
b2wgbV9zaGFyYWJsZSB7IGZhbHNlIH07CiAgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG1fc3Rh
dGVtZW50Q291bnQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVTdGF0ZW1lbnQuY3BwCmluZGV4IGIwODQ5ZTZmODA4Y2EzODBiMDhjNjI3NGIwNGQxNDljYzAz
M2MwODcuLjNhYWZhZjFmOTgyOGRkMWE0NDZlOTg0YzE2ZmI3MzEyMWFjNmVhMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC02Niw2
ICs2NiwxMSBAQCBpbnQgU1FMaXRlU3RhdGVtZW50OjpzdGVwKCkKIHsKICAgICBMb2NrZXIgZGF0
YWJhc2VMb2NrIHsgbV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkgfTsKIAorICAgIGlmICghbV9k
YXRhYmFzZS5oYXNWYWxpZFRyYW5zYWN0aW9uKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU1FMRGF0YWJhc2UsICJTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXA6IENhbm5vdCBzdGVwICV7cHVi
bGljfXMgYmVjYXVzZSB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkIiwgc3FsaXRlM19zcWwobV9zdGF0
ZW1lbnQpKTsKKyAgICAgICAgcmV0dXJuIFNRTElURV9BQk9SVDsKKyAgICB9CisKICAgICBpbnQg
ZXJyb3IgPSBzcWxpdGUzX3N0ZXAobV9zdGF0ZW1lbnQpOwogICAgIGlmIChlcnJvciAhPSBTUUxJ
VEVfRE9ORSAmJiBlcnJvciAhPSBTUUxJVEVfUk9XKQogICAgICAgICBMT0coU1FMRGF0YWJhc2Us
ICJzcWxpdGUzX3N0ZXAgZmFpbGVkICglaSlcbkVycm9yIC0gJXMiLCBlcnJvciwgc3FsaXRlM19l
cnJtc2cobV9kYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCmluZGV4IDA4ZTllYjczZGIyNGEw
OTBhN2EwODBjMWE4MTU2OTMxOGU1YTI4NTkuLjdjMDM1NmQ2MWZmYTYxMzY0NGNjNjcwYWQ0MDQ1
MWJjYzA5N2JmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZVRyYW5zYWN0aW9uLmNwcApAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFNRTGl0ZVRyYW5zYWN0aW9uOjpTUUxpdGVUcmFuc2FjdGlvbihTUUxpdGVEYXRhYmFzZSYgZGIs
IGJvb2wgcmVhZE9ubHkpCiAgICAgOiBtX2RiKGRiKQotICAgICwgbV9pblByb2dyZXNzKGZhbHNl
KQogICAgICwgbV9yZWFkT25seShyZWFkT25seSkKIHsKIH0KQEAgLTQ3LDc0ICs0Niw3NiBAQCBT
UUxpdGVUcmFuc2FjdGlvbjo6flNRTGl0ZVRyYW5zYWN0aW9uKCkKICAgICAgICAgcm9sbGJhY2so
KTsKIH0KIAotdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6YmVnaW4oKQoraW50IFNRTGl0ZVRyYW5z
YWN0aW9uOjpiZWdpbigpCiB7Ci0gICAgaWYgKCFtX2luUHJvZ3Jlc3MpIHsKLSAgICAgICAgQVNT
RVJUKCFtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzKTsKLSAgICAgICAgLy8gQ2FsbCBCRUdJ
TiBJTU1FRElBVEUgZm9yIGEgd3JpdGUgdHJhbnNhY3Rpb24gdG8gYWNxdWlyZQotICAgICAgICAv
LyBhIFJFU0VSVkVEIGxvY2sgb24gdGhlIERCIGZpbGUuIE90aGVyd2lzZSwgYW5vdGhlciB3cml0
ZQotICAgICAgICAvLyB0cmFuc2FjdGlvbiAob24gYW5vdGhlciBjb25uZWN0aW9uKSBjb3VsZCBt
YWtlIGNoYW5nZXMKLSAgICAgICAgLy8gdG8gdGhlIHNhbWUgREIgZmlsZSBiZWZvcmUgdGhpcyB0
cmFuc2FjdGlvbiBnZXRzIHRvIGV4ZWN1dGUKLSAgICAgICAgLy8gYW55IHN0YXRlbWVudHMuIElm
IHRoYXQgaGFwcGVucywgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGZhaWwuCi0gICAgICAgIC8vIGh0
dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwKLSAgICAgICAgLy8gaHR0
cDovL3d3dy5zcWxpdGUub3JnL2xvY2tpbmd2My5odG1sI2xvY2tpbmcKLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmluY3JlbWVudFRyYW5z
YWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7Ci0jZW5kaWYKLSAgICAgICAgaWYgKG1fcmVhZE9ubHkp
Ci0gICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21tYW5kKCJCRUdJTiJf
cyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1faW5Qcm9ncmVzcyA9IG1fZGIuZXhlY3V0
ZUNvbW1hbmQoIkJFR0lOIElNTUVESUFURSJfcyk7Ci0gICAgICAgIG1fZGIubV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3MgPSBtX2luUHJvZ3Jlc3M7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICAgICAgaWYgKCFtX2luUHJvZ3Jlc3MpCi0gICAgICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNr
ZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7Ci0jZW5kaWYKLSAgICB9
Ci19CisgICAgaWYgKG1faW5Qcm9ncmVzcykKKyAgICAgICAgcmV0dXJuIFNRTElURV9FUlJPUjsK
KworICAgIEFTU0VSVCghbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk7CisgICAgbV9kYi5t
X3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRoaXM7CisgICAgbV9pblByb2dyZXNzID0gdHJ1ZTsK
IAotdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6Y29tbWl0KCkKLXsKLSAgICBpZiAobV9pblByb2dy
ZXNzKSB7Ci0gICAgICAgIEFTU0VSVChtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzKTsKLSAg
ICAgICAgbV9pblByb2dyZXNzID0gIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNPTU1JVCJfcyk7Ci0g
ICAgICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBtX2luUHJvZ3Jlc3M7CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgaWYgKCFtX2luUHJvZ3Jlc3MpCi0gICAgICAg
ICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVz
c0NvdW50KCk7CisgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlv
bkluUHJvZ3Jlc3NDb3VudCgpOwogI2VuZGlmCi0gICAgfQorCisgICAgLy8gQ2FsbCBCRUdJTiBJ
TU1FRElBVEUgZm9yIGEgd3JpdGUgdHJhbnNhY3Rpb24gdG8gYWNxdWlyZQorICAgIC8vIGEgUkVT
RVJWRUQgbG9jayBvbiB0aGUgREIgZmlsZS4gT3RoZXJ3aXNlLCBhbm90aGVyIHdyaXRlCisgICAg
Ly8gdHJhbnNhY3Rpb24gKG9uIGFub3RoZXIgY29ubmVjdGlvbikgY291bGQgbWFrZSBjaGFuZ2Vz
CisgICAgLy8gdG8gdGhlIHNhbWUgREIgZmlsZSBiZWZvcmUgdGhpcyB0cmFuc2FjdGlvbiBnZXRz
IHRvIGV4ZWN1dGUKKyAgICAvLyBhbnkgc3RhdGVtZW50cy4gSWYgdGhhdCBoYXBwZW5zLCB0aGlz
IHRyYW5zYWN0aW9uIHdpbGwgZmFpbC4KKyAgICAvLyBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvbGFu
Z190cmFuc2FjdGlvbi5odG1sCisgICAgLy8gaHR0cDovL3d3dy5zcWxpdGUub3JnL2xvY2tpbmd2
My5odG1sI2xvY2tpbmcKKyAgICBBU0NJSUxpdGVyYWwgc3FsU3RyaW5nID0gbV9yZWFkT25seSA/
ICJCRUdJTiJfcyA6ICJCRUdJTiBJTU1FRElBVEUiX3M7CisgICAgYXV0byBzcWwgPSBtX2RiLnBy
ZXBhcmVTdGF0ZW1lbnQoc3FsU3RyaW5nKTsKKyAgICBpZiAoIXNxbCkKKyAgICAgICAgcmV0dXJu
IHNxbC5lcnJvcigpOworICAgIHJldHVybiBzcWwtPnN0ZXAoKTsKIH0KIAotdm9pZCBTUUxpdGVU
cmFuc2FjdGlvbjo6cm9sbGJhY2soKQoraW50IFNRTGl0ZVRyYW5zYWN0aW9uOjpjb21taXQoKQog
ewotICAgIC8vIFdlIGRvIG5vdCB1c2UgdGhlICdtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVD
b21tYW5kKCJST0xMQkFDSyIpJyBjb25zdHJ1Y3QgaGVyZSwKLSAgICAvLyBiZWNhdXNlIG1faW5Q
cm9ncmVzcyBzaG91bGQgYWx3YXlzIGJlIHNldCB0byBmYWxzZSBhZnRlciBhIFJPTExCQUNLLCBh
bmQKLSAgICAvLyBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyIpIGNhbiBzb21ldGltZXMg
aGFybWxlc3NseSBmYWlsLCB0aHVzIHJldHVybmluZwotICAgIC8vIGEgbm9uLXplcm8vdHJ1ZSBy
ZXN1bHQgKGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwpLgotICAg
IGlmIChtX2luUHJvZ3Jlc3MpIHsKLSAgICAgICAgQVNTRVJUKG1fZGIubV90cmFuc2FjdGlvbklu
UHJvZ3Jlc3MpOwotICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyJfcyk7Ci0g
ICAgICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25J
blByb2dyZXNzID0gZmFsc2U7CisgICAgaWYgKCFtX2luUHJvZ3Jlc3MpCisgICAgICAgIHJldHVy
biBTUUxJVEVfRVJST1I7CisKKyAgICBBU1NFUlQobV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVz
cyA9IHRoaXMpOworICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBudWxscHRyOwor
ICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOworCisgICAgaW50IHJlc3VsdDsKKyAgICBhdXRvIHNx
bCA9IG1fZGIucHJlcGFyZVN0YXRlbWVudCgiQ09NTUlUIl9zKTsKKyAgICBpZiAoc3FsKQorICAg
ICAgICByZXN1bHQgPSBzcWwtPnN0ZXAoKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IHNx
bC5lcnJvcigpOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgU1FMaXRlRGF0
YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOworICAg
IFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291
bnQoKTsKICNlbmRpZgotICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgU1FM
aXRlVHJhbnNhY3Rpb246OnN0b3AoKQoraW50IFNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xsYmFjaygp
CiB7Ci0gICAgaWYgKG1faW5Qcm9ncmVzcykgewotICAgICAgICBtX2luUHJvZ3Jlc3MgPSBmYWxz
ZTsKLSAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIGlm
ICghbV9pblByb2dyZXNzKQorICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOworCisgICAgQVNT
RVJUKG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSB0aGlzKTsKKyAgICBtX2RiLm1fdHJh
bnNhY3Rpb25JblByb2dyZXNzID0gbnVsbHB0cjsKKyAgICBtX2luUHJvZ3Jlc3MgPSBmYWxzZTsK
KworICAgIGF1dG8gc3FsID0gbV9kYi5wcmVwYXJlU3RhdGVtZW50KCJST0xMQkFDSyJfcyk7Cisg
ICAgaW50IHJlc3VsdCA9ICBzcWwgPyBzcWwtPnN0ZXAoKSA6IHNxbC5lcnJvcigpOworCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNy
ZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOworICAgIFNRTGl0ZURhdGFiYXNlVHJh
Y2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKICNlbmRpZgotICAg
IH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgU1FMaXRlVHJhbnNhY3Rpb246Ondh
c1JvbGxlZEJhY2tCeVNxbGl0ZSgpIGNvbnN0Citib29sIFNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xs
ZWRCYWNrQnlTUUxpdGUoKSBjb25zdAogewogICAgIC8vIEFjY29yZGluZyB0byBodHRwOi8vd3d3
LnNxbGl0ZS5vcmcvYzNyZWYvZ2V0X2F1dG9jb21taXQuaHRtbCwKICAgICAvLyB0aGUgYXV0by1j
b21taXQgZmxhZyBzaG91bGQgYmUgb2ZmIGluIHRoZSBtaWRkbGUgb2YgYSB0cmFuc2FjdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaAppbmRl
eCBiOWQxZjc5NDBjY2I2MmFiZjQzZjk3NWYzMTZlNzgxYTI2ODcyYjczLi43OWU1YzYyOWYyYTc0
MzNlN2E4NmNlOWI0NmI4NDNkYzQzN2RiNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaApAQCAtMzksMTkgKzM5LDE4IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBTUUxpdGVUcmFuc2FjdGlvbihTUUxpdGVEYXRhYmFzZSYgZGIs
IGJvb2wgcmVhZE9ubHkgPSBmYWxzZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZVRyYW5z
YWN0aW9uKCk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBiZWdpbigpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByb2xs
YmFjaygpOwotICAgIHZvaWQgc3RvcCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiZWdpbigp
OworICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb21taXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBp
bnQgcm9sbGJhY2soKTsKICAgICAKICAgICBib29sIGluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVy
biBtX2luUHJvZ3Jlc3M7IH0KLSAgICBib29sIHdhc1JvbGxlZEJhY2tCeVNxbGl0ZSgpIGNvbnN0
OworICAgIGJvb2wgcm9sbGVkQmFja0J5U1FMaXRlKCkgY29uc3Q7CiAKICAgICBTUUxpdGVEYXRh
YmFzZSYgZGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2RiOyB9CiAKIHByaXZhdGU6CiAgICAg
U1FMaXRlRGF0YWJhc2UmIG1fZGI7Ci0gICAgYm9vbCBtX2luUHJvZ3Jlc3M7CisgICAgYm9vbCBt
X2luUHJvZ3Jlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZWFkT25seTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433156</attachid>
            <date>2021-07-08 12:56:08 -0700</date>
            <delta_ts>2021-07-08 20:32:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227771-20210708125607.patch</filename>
            <type>text/plain</type>
            <size>14463</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBkYWUwYmM5NWUwMWVm
NjBmMjJjYjFkZGFjYTZhZWVkMDI1MjBjZS4uNTM0NTkxMmIyNTBhMjgzNWY1ZmFhNmJmOGRkMzdh
NTM4ZWVhOGJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJldHVybiBlcnJvciBmb3Ig
c3RhdGVtZW50IGlmIHRoZSB0cmFuc2FjdGlvbiBpdCBiZWxvbmdzIHRvIGlzIHJvbGxlZCBiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3NzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIFNR
TGl0ZVRyYW5zYWN0aW9uIGluLXByb2dyZXNzIGJldHdlZW4gZXhwbGljaXQgYmVnaW4oKSBhbmQg
Y29tbWl0KCkvcm9sbGJhY2soKS4gQW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24KKyAgICAgICAg
aXMgbWFya2VkIHZhbGlkIGlmIGl0J3Mgbm90IGFib3J0ZWQgYnkgU1FMaXRlIChhdXRvLWNvbW1p
dCBmb3IgZGF0YWJhc2UgaXMgb2ZmKS4gRm9yIHN0YXRlbWVudHMgZXhlY3V0ZWQgZHVyaW5nIAor
ICAgICAgICBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiwgd2UgdXN1YWxseSB3YW50IHRoZW0gdG8g
YmUgcGFydCBvZiB0cmFuc2FjdGlvbiwgc28gd2Ugc2hvdWxkIGF2b2lkIGV4ZWN1dGluZyB0aGVt
IGlmIAorICAgICAgICB0cmFuc2FjdGlvbiBpcyBhbHJlYWR5IGludmFsaWQuIE90aGVyd2lzZSwg
dGhleSBtYXkgYmUgZXhlY3V0ZWQgaW4gYSBzZXBhcmF0ZSBpbXBsaWNpdCB0cmFuc2FjdGlvbi4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmNoZWNrQW5kSGFuZGxlQ2xvc2VkRGF0YWJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OnJ1blN0YXRlbWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmhhbmRsZUN1cnJlbnRTdGF0ZW1lbnRF
cnJvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpjb21wdXRl
TmV4dFN0YXRlQW5kQ2xlYW51cElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Omhhc1Zh
bGlkVHJhbnNhY3Rpb24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnRyYW5zYWN0aW9uSW5Q
cm9ncmVzcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXApOgorICAgICAgICAq
IHBsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVUcmFuc2FjdGlvbjo6U1FMaXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5z
YWN0aW9uOjpjb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OnJv
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xsZWRCYWNr
QnlTUUxpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OnN0
b3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246Ondhc1Jv
bGxlZEJhY2tCeVNxbGl0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3Fs
L1NRTGl0ZVRyYW5zYWN0aW9uLmg6CisKIDIwMjEtMDctMDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgSlNDOjpZYXJyOjpmbGFnc1N0cmluZyB0byBn
ZXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIFJlZ0V4cCBmbGFncwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAppbmRleCA3
YTJjOWE3MzQ2YWYxMGI3ZmVhNzE1NjU5OTE5MTMxMTUzODg4Yjc3Li4wM2M1ZjFhZTAxNTNjYmVi
OGVjOGIwYTQ0MzA3NDQzNTk5ZWYyOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAtMjA1LDEwICsyMDUsNyBA
QCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FMaXRlIHRyYW5zYWN0aW9uIHNo
b3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCi0gICAgaWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24pIHsK
LSAgICAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+c3RvcCgpOwotICAgICAgICBtX3NxbGl0ZVRy
YW5zYWN0aW9uID0gbnVsbHB0cjsKLSAgICB9CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG51
bGxwdHI7CiAKICAgICBpZiAobV9sb2NrQWNxdWlyZWQpCiAgICAgICAgIG1fZGF0YWJhc2UtPnRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IoKS0+cmVsZWFzZUxvY2soKnRoaXMpOwpAQCAtMzEzLDcgKzMx
MCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OnJ1blN0YXRlbWVudHMoKQogICAgIC8vIElmIHRo
ZXJlIGlzIGEgc2VyaWVzIG9mIHN0YXRlbWVudHMgcXVldWVkIHVwIHRoYXQgYXJlIGFsbCBzdWNj
ZXNzZnVsIGFuZCBoYXZlIG5vIGFzc29jaWF0ZWQKICAgICAvLyBTUUxTdGF0ZW1lbnRDYWxsYmFj
ayBvYmplY3RzLCB0aGVuIHdlIGNhbiBidXJuIHRocm91Z2ggdGhlIHF1ZXVlCiAgICAgZG8gewot
ICAgICAgICBpZiAobV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQgJiYgIW1fc3FsaXRlVHJh
bnNhY3Rpb24tPndhc1JvbGxlZEJhY2tCeVNxbGl0ZSgpKSB7CisgICAgICAgIGlmIChtX3Nob3Vs
ZFJldHJ5Q3VycmVudFN0YXRlbWVudCAmJiAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+cm9sbGVkQmFj
a0J5U1FMaXRlKCkpIHsKICAgICAgICAgICAgIG1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50
ID0gZmFsc2U7CiAgICAgICAgICAgICAvLyBGSVhNRSAtIEFub3RoZXIgcGxhY2UgdGhhdCBuZWVk
cyBmaXhpbmcgdXAgYWZ0ZXIgPHJkYXI6Ly9wcm9ibGVtLzU2Mjg0Njg+IGlzIGFkZHJlc3NlZC4K
ICAgICAgICAgICAgIC8vIFNlZSA6Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCgpIGZvciBk
aXNjdXNzaW9uCkBAIC01NjEsNyArNTU4LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6aGFuZGxl
Q3VycmVudFN0YXRlbWVudEVycm9yKCkKIHsKICAgICAvLyBTcGVjIDQuMy4yLjYuNjogZXJyb3Ig
LSBDYWxsIHRoZSBzdGF0ZW1lbnQncyBlcnJvciBjYWxsYmFjaywgYnV0IGlmIHRoZXJlIHdhcyBu
byBlcnJvciBjYWxsYmFjaywKICAgICAvLyBvciB0aGUgdHJhbnNhY3Rpb24gd2FzIHJvbGxlZCBi
YWNrLCBqdW1wIHRvIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjawotICAgIGlmIChtX2N1
cnJlbnRTdGF0ZW1lbnQtPmhhc1N0YXRlbWVudEVycm9yQ2FsbGJhY2soKSAmJiAhbV9zcWxpdGVU
cmFuc2FjdGlvbi0+d2FzUm9sbGVkQmFja0J5U3FsaXRlKCkpIHsKKyAgICBpZiAobV9jdXJyZW50
U3RhdGVtZW50LT5oYXNTdGF0ZW1lbnRFcnJvckNhbGxiYWNrKCkgJiYgIW1fc3FsaXRlVHJhbnNh
Y3Rpb24tPnJvbGxlZEJhY2tCeVNRTGl0ZSgpKSB7CiAgICAgICAgIHNjaGVkdWxlQ2FsbGJhY2so
JlNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyU3RhdGVtZW50Q2FsbGJhY2spOwogICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDYyYjI3Y2RiMzMyNTE0ZDZh
NDk3MTBhMDcxZDQxMTc1YTcwZGJkZGUuLjg4ZjU4ZmNlZDM5MWFmZGRiMGE4ODc4Yjk1MjA0YjQy
MDRlMzM5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKQEAgLTQ0OSwxMCArNDQ5LDcgQEAg
dm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmNvbXB1dGVOZXh0U3RhdGVBbmRDbGVhbnVwSWZO
ZWVkZWQoKQogICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2Ugd2FzIHN0b3BwZWQgb3IgaW50
ZXJydXB0ZWQgLSBjYW5jZWxsaW5nIHdvcmsgZm9yIHRoaXMgdHJhbnNhY3Rpb24iKTsKIAogICAg
IC8vIFRoZSBjdXJyZW50IFNRTGl0ZSB0cmFuc2FjdGlvbiBzaG91bGQgYmUgc3RvcHBlZCwgYXMg
d2VsbAotICAgIGlmIChtX2Zyb250ZW5kLm1fc3FsaXRlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAg
bV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uLT5zdG9wKCk7Ci0gICAgICAgIG1fZnJvbnRl
bmQubV9zcWxpdGVUcmFuc2FjdGlvbiA9IG51bGxwdHI7Ci0gICAgfQorICAgIG1fZnJvbnRlbmQu
bV9zcWxpdGVUcmFuc2FjdGlvbiA9IG51bGxwdHI7CiAKICAgICAvLyBUZXJtaW5hdGUgdGhlIGZy
b250ZW5kIHN0YXRlIG1hY2hpbmUuIFRoaXMgYWxzbyBnZXRzIHRoZSBmcm9udGVuZCB0bwogICAg
IC8vIGNhbGwgY29tcHV0ZU5leHRTdGF0ZUFuZENsZWFudXBJZk5lZWRlZCgpIGFuZCBjbGVhciBp
dHMgd3JhcHBlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuY3BwCmluZGV4IGExMTEwMjU2ODFlNDY5MzEyM2ZiYzhjYjQ5MGE4MzcwZGIzOWMxODMuLmE1
ODRhOTQzYTQ3YmFhYzQ0YzkwM2E3NGJlMjI0MjgyMDZmMzRlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlNRTGl0ZUZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJTUUxpdGVU
cmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHNxbGl0ZTMuaD4KICNp
bmNsdWRlIDx0aHJlYWQ+CkBAIC03MzMsNCArNzM0LDkgQEAgRXhwZWN0ZWQ8VW5pcXVlUmVmPFNR
TGl0ZVN0YXRlbWVudD4sIGludD4gU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVIZWFwU3RhdGVtZW50
KEEKICAgICByZXR1cm4gVW5pcXVlUmVmPFNRTGl0ZVN0YXRlbWVudD4oKm5ldyBTUUxpdGVTdGF0
ZW1lbnQoKnRoaXMsIHNxbFN0YXRlbWVudC52YWx1ZSgpKSk7CiB9CiAKK2Jvb2wgU1FMaXRlRGF0
YWJhc2U6Omhhc1ZhbGlkVHJhbnNhY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAhbV90cmFu
c2FjdGlvbkluUHJvZ3Jlc3MgfHwgIW1fdHJhbnNhY3Rpb25JblByb2dyZXNzLT5yb2xsZWRCYWNr
QnlTUUxpdGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCA0YjIyYzhmZTY4ZTM1ZmJkZDA5
NzI1ODY4YzRjOWEwZTVjYWIyY2YwLi5lZWU5ZjZlZWIwMzlhMDdhYTVkNDY1NTljMmIxZTliMDg0
MzdhMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
aApAQCAtNzEsOCArNzEsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVh
ckFsbFRhYmxlcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBydW5WYWN1dW1Db21tYW5kKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHJ1bkluY3JlbWVudGFsVmFjdXVtQ29tbWFuZCgpOwot
ICAgIAotICAgIGJvb2wgdHJhbnNhY3Rpb25JblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV90
cmFuc2FjdGlvbkluUHJvZ3Jlc3M7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFNR
TGl0ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50U2xvdyhjb25zdCBTdHJpbmcmIHF1
ZXJ5KTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4g
cHJlcGFyZVN0YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlcnkpOwpAQCAtMTYyLDYgKzE2MCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGluY3JlbWVudFN0YXRlbWVudENvdW50KCk7CiAgICAgdm9pZCBk
ZWNyZW1lbnRTdGF0ZW1lbnRDb3VudCgpOwogCisgICAgU1FMaXRlVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JblByb2dyZXNz
OyB9CisgICAgYm9vbCBoYXNWYWxpZFRyYW5zYWN0aW9uKCkgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgc3RhdGljIGludCBhdXRob3JpemVyRnVuY3Rpb24odm9pZCosIGludCwgY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwogCkBAIC0xNzUsNyArMTc2
LDcgQEAgcHJpdmF0ZToKICAgICBzcWxpdGUzKiBtX2RiIHsgbnVsbHB0ciB9OwogICAgIGludCBt
X3BhZ2VTaXplIHsgLTEgfTsKICAgICAKLSAgICBib29sIG1fdHJhbnNhY3Rpb25JblByb2dyZXNz
IHsgZmFsc2UgfTsKKyAgICBTUUxpdGVUcmFuc2FjdGlvbiogbV90cmFuc2FjdGlvbkluUHJvZ3Jl
c3M7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1fc2hhcmFibGUgeyBmYWxzZSB9Owog
ICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBtX3N0YXRlbWVudENvdW50IHsgMCB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBiMDg0
OWU2ZjgwOGNhMzgwYjA4YzYyNzRiMDRkMTQ5Y2MwMzNjMDg3Li4zYWFmYWYxZjk4MjhkZDFhNDQ2
ZTk4NGMxNmZiNzMxMjFhYzZlYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtNjYsNiArNjYsMTEgQEAgaW50IFNRTGl0ZVN0YXRl
bWVudDo6c3RlcCgpCiB7CiAgICAgTG9ja2VyIGRhdGFiYXNlTG9jayB7IG1fZGF0YWJhc2UuZGF0
YWJhc2VNdXRleCgpIH07CiAKKyAgICBpZiAoIW1fZGF0YWJhc2UuaGFzVmFsaWRUcmFuc2FjdGlv
bigpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNRTERhdGFiYXNlLCAiU1FMaXRlU3Rh
dGVtZW50OjpzdGVwOiBDYW5ub3Qgc3RlcCAle3B1YmxpY31zIGJlY2F1c2UgdHJhbnNhY3Rpb24g
aXMgaW52YWxpZCIsIHNxbGl0ZTNfc3FsKG1fc3RhdGVtZW50KSk7CisgICAgICAgIHJldHVybiBT
UUxJVEVfQUJPUlQ7CisgICAgfQorCiAgICAgaW50IGVycm9yID0gc3FsaXRlM19zdGVwKG1fc3Rh
dGVtZW50KTsKICAgICBpZiAoZXJyb3IgIT0gU1FMSVRFX0RPTkUgJiYgZXJyb3IgIT0gU1FMSVRF
X1JPVykKICAgICAgICAgTE9HKFNRTERhdGFiYXNlLCAic3FsaXRlM19zdGVwIGZhaWxlZCAoJWkp
XG5FcnJvciAtICVzIiwgZXJyb3IsIHNxbGl0ZTNfZXJybXNnKG1fZGF0YWJhc2Uuc3FsaXRlM0hh
bmRsZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
VHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5z
YWN0aW9uLmNwcAppbmRleCAwOGU5ZWI3M2RiMjRhMDkwYTdhMDgwYzFhODE1NjkzMThlNWEyODU5
Li5mMjJlNjY2MjQ3YTJmNGRlOWI0NzdlNzMyOWU2MWZmZjJkNzYzZjk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgogCiAjaW5jbHVkZSAiU1FM
aXRlRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCkBAIC0z
Niw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1FMaXRlVHJhbnNhY3Rpb246OlNR
TGl0ZVRyYW5zYWN0aW9uKFNRTGl0ZURhdGFiYXNlJiBkYiwgYm9vbCByZWFkT25seSkKICAgICA6
IG1fZGIoZGIpCi0gICAgLCBtX2luUHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBtX3JlYWRPbmx5KHJl
YWRPbmx5KQogewogfQpAQCAtNDcsNzQgKzQ3LDcyIEBAIFNRTGl0ZVRyYW5zYWN0aW9uOjp+U1FM
aXRlVHJhbnNhY3Rpb24oKQogICAgICAgICByb2xsYmFjaygpOwogfQogCi12b2lkIFNRTGl0ZVRy
YW5zYWN0aW9uOjpiZWdpbigpCitpbnQgU1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKCkKIHsKLSAg
ICBpZiAoIW1faW5Qcm9ncmVzcykgewotICAgICAgICBBU1NFUlQoIW1fZGIubV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3MpOwotICAgICAgICAvLyBDYWxsIEJFR0lOIElNTUVESUFURSBmb3IgYSB3cml0
ZSB0cmFuc2FjdGlvbiB0byBhY3F1aXJlCi0gICAgICAgIC8vIGEgUkVTRVJWRUQgbG9jayBvbiB0
aGUgREIgZmlsZS4gT3RoZXJ3aXNlLCBhbm90aGVyIHdyaXRlCi0gICAgICAgIC8vIHRyYW5zYWN0
aW9uIChvbiBhbm90aGVyIGNvbm5lY3Rpb24pIGNvdWxkIG1ha2UgY2hhbmdlcwotICAgICAgICAv
LyB0byB0aGUgc2FtZSBEQiBmaWxlIGJlZm9yZSB0aGlzIHRyYW5zYWN0aW9uIGdldHMgdG8gZXhl
Y3V0ZQotICAgICAgICAvLyBhbnkgc3RhdGVtZW50cy4gSWYgdGhhdCBoYXBwZW5zLCB0aGlzIHRy
YW5zYWN0aW9uIHdpbGwgZmFpbC4KLSAgICAgICAgLy8gaHR0cDovL3d3dy5zcWxpdGUub3JnL2xh
bmdfdHJhbnNhY3Rpb24uaHRtbAotICAgICAgICAvLyBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvbG9j
a2luZ3YzLmh0bWwjbG9ja2luZwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIFNR
TGl0ZURhdGFiYXNlVHJhY2tlcjo6aW5jcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQo
KTsKLSNlbmRpZgotICAgICAgICBpZiAobV9yZWFkT25seSkKLSAgICAgICAgICAgIG1faW5Qcm9n
cmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIl9zKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVHSU4gSU1NRURJ
QVRFIl9zKTsKLSAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IG1faW5Qcm9n
cmVzczsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBpZiAoIW1faW5Qcm9ncmVz
cykKLSAgICAgICAgICAgIFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rp
b25JblByb2dyZXNzQ291bnQoKTsKLSNlbmRpZgotICAgIH0KLX0KKyAgICBpZiAobV9pblByb2dy
ZXNzKQorICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOwogCi12b2lkIFNRTGl0ZVRyYW5zYWN0
aW9uOjpjb21taXQoKQotewotICAgIGlmIChtX2luUHJvZ3Jlc3MpIHsKLSAgICAgICAgQVNTRVJU
KG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MpOwotICAgICAgICBtX2luUHJvZ3Jlc3MgPSAh
bV9kYi5leGVjdXRlQ29tbWFuZCgiQ09NTUlUIl9zKTsKLSAgICAgICAgbV9kYi5tX3RyYW5zYWN0
aW9uSW5Qcm9ncmVzcyA9IG1faW5Qcm9ncmVzczsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgICAgICBpZiAoIW1faW5Qcm9ncmVzcykKLSAgICAgICAgICAgIFNRTGl0ZURhdGFiYXNlVHJh
Y2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKKyAgICBTUUxpdGVE
YXRhYmFzZVRyYWNrZXI6OmluY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7CiAj
ZW5kaWYKLSAgICB9CisKKyAgICAvLyBDYWxsIEJFR0lOIElNTUVESUFURSBmb3IgYSB3cml0ZSB0
cmFuc2FjdGlvbiB0byBhY3F1aXJlCisgICAgLy8gYSBSRVNFUlZFRCBsb2NrIG9uIHRoZSBEQiBm
aWxlLiBPdGhlcndpc2UsIGFub3RoZXIgd3JpdGUKKyAgICAvLyB0cmFuc2FjdGlvbiAob24gYW5v
dGhlciBjb25uZWN0aW9uKSBjb3VsZCBtYWtlIGNoYW5nZXMKKyAgICAvLyB0byB0aGUgc2FtZSBE
QiBmaWxlIGJlZm9yZSB0aGlzIHRyYW5zYWN0aW9uIGdldHMgdG8gZXhlY3V0ZQorICAgIC8vIGFu
eSBzdGF0ZW1lbnRzLiBJZiB0aGF0IGhhcHBlbnMsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBmYWls
LgorICAgIC8vIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwKKyAg
ICAvLyBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvbG9ja2luZ3YzLmh0bWwjbG9ja2luZworICAgIEFT
Q0lJTGl0ZXJhbCBzcWxTdHJpbmcgPSBtX3JlYWRPbmx5ID8gIkJFR0lOIl9zIDogIkJFR0lOIElN
TUVESUFURSJfczsKKyAgICBhdXRvIHNxbCA9IG1fZGIucHJlcGFyZVN0YXRlbWVudChzcWxTdHJp
bmcpOworICAgIGludCByZXN1bHQgPSBzcWwgPyBzcWwtPnN0ZXAoKSA6IHNxbC5lcnJvcigpOwor
CisgICAgQVNTRVJUKCFtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzKTsKKyAgICBtX2RiLm1f
dHJhbnNhY3Rpb25JblByb2dyZXNzID0gdGhpczsKKyAgICBtX2luUHJvZ3Jlc3MgPSB0cnVlOwor
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6cm9sbGJh
Y2soKQoraW50IFNRTGl0ZVRyYW5zYWN0aW9uOjpjb21taXQoKQogewotICAgIC8vIFdlIGRvIG5v
dCB1c2UgdGhlICdtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyIp
JyBjb25zdHJ1Y3QgaGVyZSwKLSAgICAvLyBiZWNhdXNlIG1faW5Qcm9ncmVzcyBzaG91bGQgYWx3
YXlzIGJlIHNldCB0byBmYWxzZSBhZnRlciBhIFJPTExCQUNLLCBhbmQKLSAgICAvLyBtX2RiLmV4
ZWN1dGVDb21tYW5kKCJST0xMQkFDSyIpIGNhbiBzb21ldGltZXMgaGFybWxlc3NseSBmYWlsLCB0
aHVzIHJldHVybmluZwotICAgIC8vIGEgbm9uLXplcm8vdHJ1ZSByZXN1bHQgKGh0dHA6Ly93d3cu
c3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwpLgotICAgIGlmIChtX2luUHJvZ3Jlc3Mp
IHsKLSAgICAgICAgQVNTRVJUKG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MpOwotICAgICAg
ICBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyJfcyk7Ci0gICAgICAgIG1faW5Qcm9ncmVz
cyA9IGZhbHNlOwotICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7
CisgICAgaWYgKCFtX2luUHJvZ3Jlc3MpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7Cisg
ICAgCisgICAgYXV0byBzcWwgPSBtX2RiLnByZXBhcmVTdGF0ZW1lbnQoIkNPTU1JVCJfcyk7Cisg
ICAgaW50IHJlc3VsdCA9IHNxbCA/IHNxbC0+c3RlcCgpIDogc3FsLmVycm9yKCk7CisKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3Jl
bWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7CisgICAgU1FMaXRlRGF0YWJhc2VUcmFj
a2VyOjpkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwogI2VuZGlmCi0gICAg
fQorCisgICAgQVNTRVJUKG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSB0aGlzKTsKKyAg
ICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gbnVsbHB0cjsKKyAgICBtX2luUHJvZ3Jl
c3MgPSBmYWxzZTsKKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgU1FMaXRlVHJhbnNh
Y3Rpb246OnN0b3AoKQoraW50IFNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xsYmFjaygpCiB7Ci0gICAg
aWYgKG1faW5Qcm9ncmVzcykgewotICAgICAgICBtX2luUHJvZ3Jlc3MgPSBmYWxzZTsKLSAgICAg
ICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIGlmICghbV9pblBy
b2dyZXNzKQorICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOworCisgICAgYXV0byBzcWwgPSBt
X2RiLnByZXBhcmVTdGF0ZW1lbnQoIlJPTExCQUNLIl9zKTsKKyAgICBpbnQgcmVzdWx0ID0gIHNx
bCA/IHNxbC0+c3RlcCgpIDogc3FsLmVycm9yKCk7CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Q
cm9ncmVzc0NvdW50KCk7CisgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRUcmFu
c2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwogI2VuZGlmCi0gICAgfQorCisgICAgQVNTRVJUKG1f
ZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSB0aGlzKTsKKyAgICBtX2RiLm1fdHJhbnNhY3Rp
b25JblByb2dyZXNzID0gbnVsbHB0cjsKKyAgICBtX2luUHJvZ3Jlc3MgPSBmYWxzZTsKKworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgU1FMaXRlVHJhbnNhY3Rpb246Ondhc1JvbGxlZEJh
Y2tCeVNxbGl0ZSgpIGNvbnN0Citib29sIFNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xsZWRCYWNrQnlT
UUxpdGUoKSBjb25zdAogewogICAgIC8vIEFjY29yZGluZyB0byBodHRwOi8vd3d3LnNxbGl0ZS5v
cmcvYzNyZWYvZ2V0X2F1dG9jb21taXQuaHRtbCwKICAgICAvLyB0aGUgYXV0by1jb21taXQgZmxh
ZyBzaG91bGQgYmUgb2ZmIGluIHRoZSBtaWRkbGUgb2YgYSB0cmFuc2FjdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaAppbmRleCBiOWQxZjc5
NDBjY2I2MmFiZjQzZjk3NWYzMTZlNzgxYTI2ODcyYjczLi43OWU1YzYyOWYyYTc0MzNlN2E4NmNl
OWI0NmI4NDNkYzQzN2RiNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlVHJhbnNhY3Rpb24uaApAQCAtMzksMTkgKzM5LDE4IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBTUUxpdGVUcmFuc2FjdGlvbihTUUxpdGVEYXRhYmFzZSYgZGIsIGJvb2wgcmVh
ZE9ubHkgPSBmYWxzZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZVRyYW5zYWN0aW9uKCk7
CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBiZWdpbigpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29tbWl0KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByb2xsYmFjaygpOwot
ICAgIHZvaWQgc3RvcCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiZWdpbigpOworICAgIFdF
QkNPUkVfRVhQT1JUIGludCBjb21taXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcm9sbGJh
Y2soKTsKICAgICAKICAgICBib29sIGluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX2luUHJv
Z3Jlc3M7IH0KLSAgICBib29sIHdhc1JvbGxlZEJhY2tCeVNxbGl0ZSgpIGNvbnN0OworICAgIGJv
b2wgcm9sbGVkQmFja0J5U1FMaXRlKCkgY29uc3Q7CiAKICAgICBTUUxpdGVEYXRhYmFzZSYgZGF0
YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2RiOyB9CiAKIHByaXZhdGU6CiAgICAgU1FMaXRlRGF0
YWJhc2UmIG1fZGI7Ci0gICAgYm9vbCBtX2luUHJvZ3Jlc3M7CisgICAgYm9vbCBtX2luUHJvZ3Jl
c3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZWFkT25seTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433196</attachid>
            <date>2021-07-08 20:32:02 -0700</date>
            <delta_ts>2021-07-08 23:22:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227771-20210708203202.patch</filename>
            <type>text/plain</type>
            <size>14568</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I1YmFiNjNhNTQ1MzVl
OTIzYmYwNjU0ODlhMmY1Y2Q4Mzk5YTk2My4uNTk3Nzc1MDAyZmY3MWRiNzY1OWZmYjM4NTY3MWFk
NmZlZmEyZDFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJldHVybiBlcnJvciBmb3Ig
c3RhdGVtZW50IGlmIHRoZSB0cmFuc2FjdGlvbiBpdCBiZWxvbmdzIHRvIGlzIHJvbGxlZCBiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3NzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIFNR
TGl0ZVRyYW5zYWN0aW9uIGluLXByb2dyZXNzIGJldHdlZW4gZXhwbGljaXQgYmVnaW4oKSBhbmQg
Y29tbWl0KCkvcm9sbGJhY2soKS4gQW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24KKyAgICAgICAg
aXMgbWFya2VkIHZhbGlkIGlmIGl0J3Mgbm90IGFib3J0ZWQgYnkgU1FMaXRlIChhdXRvLWNvbW1p
dCBmb3IgZGF0YWJhc2UgaXMgb2ZmKS4gRm9yIHN0YXRlbWVudHMgZXhlY3V0ZWQgZHVyaW5nIAor
ICAgICAgICBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiwgd2UgdXN1YWxseSB3YW50IHRoZW0gdG8g
YmUgcGFydCBvZiB0cmFuc2FjdGlvbiwgc28gd2Ugc2hvdWxkIGF2b2lkIGV4ZWN1dGluZyB0aGVt
IGlmIAorICAgICAgICB0cmFuc2FjdGlvbiBpcyBhbHJlYWR5IGludmFsaWQuIE90aGVyd2lzZSwg
dGhleSBtYXkgYmUgZXhlY3V0ZWQgaW4gYSBzZXBhcmF0ZSBpbXBsaWNpdCB0cmFuc2FjdGlvbi4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmNoZWNrQW5kSGFuZGxlQ2xvc2VkRGF0YWJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OnJ1blN0YXRlbWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmhhbmRsZUN1cnJlbnRTdGF0ZW1lbnRF
cnJvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpjb21wdXRl
TmV4dFN0YXRlQW5kQ2xlYW51cElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Omhhc1Zh
bGlkVHJhbnNhY3Rpb24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnRyYW5zYWN0aW9uSW5Q
cm9ncmVzcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXApOgorICAgICAgICAq
IHBsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVUcmFuc2FjdGlvbjo6U1FMaXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5z
YWN0aW9uOjpjb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OnJv
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xsZWRCYWNr
QnlTUUxpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OnN0
b3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246Ondhc1Jv
bGxlZEJhY2tCeVNxbGl0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3Fs
L1NRTGl0ZVRyYW5zYWN0aW9uLmg6CisKIDIwMjEtMDctMDggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgU1ZHIFNNSUwgYW5pbWF0aW9ucyBkbyBu
b3QgcnVuIGluIHByb2Nlc3NlcyB3aXRob3V0IGFueSBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAppbmRleCA3YTJj
OWE3MzQ2YWYxMGI3ZmVhNzE1NjU5OTE5MTMxMTUzODg4Yjc3Li4wM2M1ZjFhZTAxNTNjYmViOGVj
OGIwYTQ0MzA3NDQzNTk5ZWYyOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAtMjA1LDEwICsyMDUsNyBAQCB2
b2lkIFNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FMaXRlIHRyYW5zYWN0aW9uIHNob3Vs
ZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCi0gICAgaWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24pIHsKLSAg
ICAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+c3RvcCgpOwotICAgICAgICBtX3NxbGl0ZVRyYW5z
YWN0aW9uID0gbnVsbHB0cjsKLSAgICB9CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG51bGxw
dHI7CiAKICAgICBpZiAobV9sb2NrQWNxdWlyZWQpCiAgICAgICAgIG1fZGF0YWJhc2UtPnRyYW5z
YWN0aW9uQ29vcmRpbmF0b3IoKS0+cmVsZWFzZUxvY2soKnRoaXMpOwpAQCAtMzEzLDcgKzMxMCw3
IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OnJ1blN0YXRlbWVudHMoKQogICAgIC8vIElmIHRoZXJl
IGlzIGEgc2VyaWVzIG9mIHN0YXRlbWVudHMgcXVldWVkIHVwIHRoYXQgYXJlIGFsbCBzdWNjZXNz
ZnVsIGFuZCBoYXZlIG5vIGFzc29jaWF0ZWQKICAgICAvLyBTUUxTdGF0ZW1lbnRDYWxsYmFjayBv
YmplY3RzLCB0aGVuIHdlIGNhbiBidXJuIHRocm91Z2ggdGhlIHF1ZXVlCiAgICAgZG8gewotICAg
ICAgICBpZiAobV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQgJiYgIW1fc3FsaXRlVHJhbnNh
Y3Rpb24tPndhc1JvbGxlZEJhY2tCeVNxbGl0ZSgpKSB7CisgICAgICAgIGlmIChtX3Nob3VsZFJl
dHJ5Q3VycmVudFN0YXRlbWVudCAmJiAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+cm9sbGVkQmFja0J5
U1FMaXRlKCkpIHsKICAgICAgICAgICAgIG1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50ID0g
ZmFsc2U7CiAgICAgICAgICAgICAvLyBGSVhNRSAtIEFub3RoZXIgcGxhY2UgdGhhdCBuZWVkcyBm
aXhpbmcgdXAgYWZ0ZXIgPHJkYXI6Ly9wcm9ibGVtLzU2Mjg0Njg+IGlzIGFkZHJlc3NlZC4KICAg
ICAgICAgICAgIC8vIFNlZSA6Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCgpIGZvciBkaXNj
dXNzaW9uCkBAIC01NjEsNyArNTU4LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6aGFuZGxlQ3Vy
cmVudFN0YXRlbWVudEVycm9yKCkKIHsKICAgICAvLyBTcGVjIDQuMy4yLjYuNjogZXJyb3IgLSBD
YWxsIHRoZSBzdGF0ZW1lbnQncyBlcnJvciBjYWxsYmFjaywgYnV0IGlmIHRoZXJlIHdhcyBubyBl
cnJvciBjYWxsYmFjaywKICAgICAvLyBvciB0aGUgdHJhbnNhY3Rpb24gd2FzIHJvbGxlZCBiYWNr
LCBqdW1wIHRvIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjawotICAgIGlmIChtX2N1cnJl
bnRTdGF0ZW1lbnQtPmhhc1N0YXRlbWVudEVycm9yQ2FsbGJhY2soKSAmJiAhbV9zcWxpdGVUcmFu
c2FjdGlvbi0+d2FzUm9sbGVkQmFja0J5U3FsaXRlKCkpIHsKKyAgICBpZiAobV9jdXJyZW50U3Rh
dGVtZW50LT5oYXNTdGF0ZW1lbnRFcnJvckNhbGxiYWNrKCkgJiYgIW1fc3FsaXRlVHJhbnNhY3Rp
b24tPnJvbGxlZEJhY2tCeVNRTGl0ZSgpKSB7CiAgICAgICAgIHNjaGVkdWxlQ2FsbGJhY2soJlNR
TFRyYW5zYWN0aW9uOjpkZWxpdmVyU3RhdGVtZW50Q2FsbGJhY2spOwogICAgICAgICByZXR1cm47
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDYyYjI3Y2RiMzMyNTE0ZDZhNDk3
MTBhMDcxZDQxMTc1YTcwZGJkZGUuLjg4ZjU4ZmNlZDM5MWFmZGRiMGE4ODc4Yjk1MjA0YjQyMDRl
MzM5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKQEAgLTQ0OSwxMCArNDQ5LDcgQEAgdm9p
ZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmNvbXB1dGVOZXh0U3RhdGVBbmRDbGVhbnVwSWZOZWVk
ZWQoKQogICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2Ugd2FzIHN0b3BwZWQgb3IgaW50ZXJy
dXB0ZWQgLSBjYW5jZWxsaW5nIHdvcmsgZm9yIHRoaXMgdHJhbnNhY3Rpb24iKTsKIAogICAgIC8v
IFRoZSBjdXJyZW50IFNRTGl0ZSB0cmFuc2FjdGlvbiBzaG91bGQgYmUgc3RvcHBlZCwgYXMgd2Vs
bAotICAgIGlmIChtX2Zyb250ZW5kLm1fc3FsaXRlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgbV9m
cm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uLT5zdG9wKCk7Ci0gICAgICAgIG1fZnJvbnRlbmQu
bV9zcWxpdGVUcmFuc2FjdGlvbiA9IG51bGxwdHI7Ci0gICAgfQorICAgIG1fZnJvbnRlbmQubV9z
cWxpdGVUcmFuc2FjdGlvbiA9IG51bGxwdHI7CiAKICAgICAvLyBUZXJtaW5hdGUgdGhlIGZyb250
ZW5kIHN0YXRlIG1hY2hpbmUuIFRoaXMgYWxzbyBnZXRzIHRoZSBmcm9udGVuZCB0bwogICAgIC8v
IGNhbGwgY29tcHV0ZU5leHRTdGF0ZUFuZENsZWFudXBJZk5lZWRlZCgpIGFuZCBjbGVhciBpdHMg
d3JhcHBlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwCmluZGV4IGExMTEwMjU2ODFlNDY5MzEyM2ZiYzhjYjQ5MGE4MzcwZGIzOWMxODMuLmE1ODRh
OTQzYTQ3YmFhYzQ0YzkwM2E3NGJlMjI0MjgyMDZmMzRlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJTUUxpdGVUcmFu
c2FjdGlvbi5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHNxbGl0ZTMuaD4KICNpbmNs
dWRlIDx0aHJlYWQ+CkBAIC03MzMsNCArNzM0LDkgQEAgRXhwZWN0ZWQ8VW5pcXVlUmVmPFNRTGl0
ZVN0YXRlbWVudD4sIGludD4gU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVIZWFwU3RhdGVtZW50KEEK
ICAgICByZXR1cm4gVW5pcXVlUmVmPFNRTGl0ZVN0YXRlbWVudD4oKm5ldyBTUUxpdGVTdGF0ZW1l
bnQoKnRoaXMsIHNxbFN0YXRlbWVudC52YWx1ZSgpKSk7CiB9CiAKK2Jvb2wgU1FMaXRlRGF0YWJh
c2U6Omhhc1ZhbGlkVHJhbnNhY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAhbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3MgfHwgIW1fdHJhbnNhY3Rpb25JblByb2dyZXNzLT5yb2xsZWRCYWNrQnlT
UUxpdGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCA0YjIyYzhmZTY4ZTM1ZmJkZDA5NzI1
ODY4YzRjOWEwZTVjYWIyY2YwLi42ZTZhNmJkOWY4MWRiNzhiZTFlYzJiNmYxNWQ3MjczNGNjNjI5
NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApA
QCAtNzEsOCArNzEsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFs
bFRhYmxlcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBydW5WYWN1dW1Db21tYW5kKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgaW50IHJ1bkluY3JlbWVudGFsVmFjdXVtQ29tbWFuZCgpOwotICAg
IAotICAgIGJvb2wgdHJhbnNhY3Rpb25JblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV90cmFu
c2FjdGlvbkluUHJvZ3Jlc3M7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFNRTGl0
ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50U2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gcHJl
cGFyZVN0YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlcnkpOwpAQCAtMTYyLDYgKzE2MCw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIGluY3JlbWVudFN0YXRlbWVudENvdW50KCk7CiAgICAgdm9pZCBkZWNy
ZW1lbnRTdGF0ZW1lbnRDb3VudCgpOwogCisgICAgU1FMaXRlVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzOyB9
CisgICAgYm9vbCBoYXNWYWxpZFRyYW5zYWN0aW9uKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
c3RhdGljIGludCBhdXRob3JpemVyRnVuY3Rpb24odm9pZCosIGludCwgY29uc3QgY2hhciosIGNv
bnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwogCkBAIC0xNzUsNyArMTc2LDcg
QEAgcHJpdmF0ZToKICAgICBzcWxpdGUzKiBtX2RiIHsgbnVsbHB0ciB9OwogICAgIGludCBtX3Bh
Z2VTaXplIHsgLTEgfTsKICAgICAKLSAgICBib29sIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzIHsg
ZmFsc2UgfTsKKyAgICBTUUxpdGVUcmFuc2FjdGlvbiogbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3Mg
eyBudWxscHRyIH07CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1fc2hhcmFibGUgeyBm
YWxzZSB9OwogICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBtX3N0YXRlbWVudENvdW50IHsgMCB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApp
bmRleCBiMDg0OWU2ZjgwOGNhMzgwYjA4YzYyNzRiMDRkMTQ5Y2MwMzNjMDg3Li4zYWFmYWYxZjk4
MjhkZDFhNDQ2ZTk4NGMxNmZiNzMxMjFhYzZlYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtNjYsNiArNjYsMTEgQEAgaW50IFNR
TGl0ZVN0YXRlbWVudDo6c3RlcCgpCiB7CiAgICAgTG9ja2VyIGRhdGFiYXNlTG9jayB7IG1fZGF0
YWJhc2UuZGF0YWJhc2VNdXRleCgpIH07CiAKKyAgICBpZiAoIW1fZGF0YWJhc2UuaGFzVmFsaWRU
cmFuc2FjdGlvbigpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNRTERhdGFiYXNlLCAi
U1FMaXRlU3RhdGVtZW50OjpzdGVwOiBDYW5ub3Qgc3RlcCAle3B1YmxpY31zIGJlY2F1c2UgdHJh
bnNhY3Rpb24gaXMgaW52YWxpZCIsIHNxbGl0ZTNfc3FsKG1fc3RhdGVtZW50KSk7CisgICAgICAg
IHJldHVybiBTUUxJVEVfQUJPUlQ7CisgICAgfQorCiAgICAgaW50IGVycm9yID0gc3FsaXRlM19z
dGVwKG1fc3RhdGVtZW50KTsKICAgICBpZiAoZXJyb3IgIT0gU1FMSVRFX0RPTkUgJiYgZXJyb3Ig
IT0gU1FMSVRFX1JPVykKICAgICAgICAgTE9HKFNRTERhdGFiYXNlLCAic3FsaXRlM19zdGVwIGZh
aWxlZCAoJWkpXG5FcnJvciAtICVzIiwgZXJyb3IsIHNxbGl0ZTNfZXJybXNnKG1fZGF0YWJhc2Uu
c3FsaXRlM0hhbmRsZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZVRyYW5zYWN0aW9uLmNwcAppbmRleCAwOGU5ZWI3M2RiMjRhMDkwYTdhMDgwYzFhODE1Njkz
MThlNWEyODU5Li41NmZmYjFhY2Q0YzVkNjk0ZjBmNDZjMjEwY2NkNDc1Njg5NmRhMmU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgogCiAjaW5j
bHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2Vy
LmgiCkBAIC0zNiw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1FMaXRlVHJhbnNh
Y3Rpb246OlNRTGl0ZVRyYW5zYWN0aW9uKFNRTGl0ZURhdGFiYXNlJiBkYiwgYm9vbCByZWFkT25s
eSkKICAgICA6IG1fZGIoZGIpCi0gICAgLCBtX2luUHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBtX3Jl
YWRPbmx5KHJlYWRPbmx5KQogewogfQpAQCAtNDcsNzQgKzQ3LDc4IEBAIFNRTGl0ZVRyYW5zYWN0
aW9uOjp+U1FMaXRlVHJhbnNhY3Rpb24oKQogICAgICAgICByb2xsYmFjaygpOwogfQogCi12b2lk
IFNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbigpCitpbnQgU1FMaXRlVHJhbnNhY3Rpb246OmJlZ2lu
KCkKIHsKLSAgICBpZiAoIW1faW5Qcm9ncmVzcykgewotICAgICAgICBBU1NFUlQoIW1fZGIubV90
cmFuc2FjdGlvbkluUHJvZ3Jlc3MpOwotICAgICAgICAvLyBDYWxsIEJFR0lOIElNTUVESUFURSBm
b3IgYSB3cml0ZSB0cmFuc2FjdGlvbiB0byBhY3F1aXJlCi0gICAgICAgIC8vIGEgUkVTRVJWRUQg
bG9jayBvbiB0aGUgREIgZmlsZS4gT3RoZXJ3aXNlLCBhbm90aGVyIHdyaXRlCi0gICAgICAgIC8v
IHRyYW5zYWN0aW9uIChvbiBhbm90aGVyIGNvbm5lY3Rpb24pIGNvdWxkIG1ha2UgY2hhbmdlcwot
ICAgICAgICAvLyB0byB0aGUgc2FtZSBEQiBmaWxlIGJlZm9yZSB0aGlzIHRyYW5zYWN0aW9uIGdl
dHMgdG8gZXhlY3V0ZQotICAgICAgICAvLyBhbnkgc3RhdGVtZW50cy4gSWYgdGhhdCBoYXBwZW5z
LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgZmFpbC4KLSAgICAgICAgLy8gaHR0cDovL3d3dy5zcWxp
dGUub3JnL2xhbmdfdHJhbnNhY3Rpb24uaHRtbAotICAgICAgICAvLyBodHRwOi8vd3d3LnNxbGl0
ZS5vcmcvbG9ja2luZ3YzLmh0bWwjbG9ja2luZwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgICAgIFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aW5jcmVtZW50VHJhbnNhY3Rpb25JblByb2dy
ZXNzQ291bnQoKTsKLSNlbmRpZgotICAgICAgICBpZiAobV9yZWFkT25seSkKLSAgICAgICAgICAg
IG1faW5Qcm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIl9zKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVH
SU4gSU1NRURJQVRFIl9zKTsKLSAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9
IG1faW5Qcm9ncmVzczsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBpZiAoIW1f
aW5Qcm9ncmVzcykKLSAgICAgICAgICAgIFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6ZGVjcmVtZW50
VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKLSNlbmRpZgotICAgIH0KLX0KKyAgICBpZiAo
bV9pblByb2dyZXNzKQorICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOworICAgIG1faW5Qcm9n
cmVzcyA9IHRydWU7CiAKLXZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OmNvbW1pdCgpCi17Ci0gICAg
aWYgKG1faW5Qcm9ncmVzcykgewotICAgICAgICBBU1NFUlQobV9kYi5tX3RyYW5zYWN0aW9uSW5Q
cm9ncmVzcyk7Ci0gICAgICAgIG1faW5Qcm9ncmVzcyA9ICFtX2RiLmV4ZWN1dGVDb21tYW5kKCJD
T01NSVQiX3MpOwotICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gbV9pblBy
b2dyZXNzOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIGlmICghbV9pblByb2dy
ZXNzKQotICAgICAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRUcmFuc2Fj
dGlvbkluUHJvZ3Jlc3NDb3VudCgpOworICAgIFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aW5jcmVt
ZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKICNlbmRpZgorCisgICAgLy8gQ2FsbCBC
RUdJTiBJTU1FRElBVEUgZm9yIGEgd3JpdGUgdHJhbnNhY3Rpb24gdG8gYWNxdWlyZQorICAgIC8v
IGEgUkVTRVJWRUQgbG9jayBvbiB0aGUgREIgZmlsZS4gT3RoZXJ3aXNlLCBhbm90aGVyIHdyaXRl
CisgICAgLy8gdHJhbnNhY3Rpb24gKG9uIGFub3RoZXIgY29ubmVjdGlvbikgY291bGQgbWFrZSBj
aGFuZ2VzCisgICAgLy8gdG8gdGhlIHNhbWUgREIgZmlsZSBiZWZvcmUgdGhpcyB0cmFuc2FjdGlv
biBnZXRzIHRvIGV4ZWN1dGUKKyAgICAvLyBhbnkgc3RhdGVtZW50cy4gSWYgdGhhdCBoYXBwZW5z
LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgZmFpbC4KKyAgICAvLyBodHRwOi8vd3d3LnNxbGl0ZS5v
cmcvbGFuZ190cmFuc2FjdGlvbi5odG1sCisgICAgLy8gaHR0cDovL3d3dy5zcWxpdGUub3JnL2xv
Y2tpbmd2My5odG1sI2xvY2tpbmcKKyAgICBBU0NJSUxpdGVyYWwgc3FsU3RyaW5nID0gbV9yZWFk
T25seSA/ICJCRUdJTiJfcyA6ICJCRUdJTiBJTU1FRElBVEUiX3M7CisgICAgYXV0byBzcWwgPSBt
X2RiLnByZXBhcmVTdGF0ZW1lbnQoc3FsU3RyaW5nKTsKKyAgICBpbnQgcmVzdWx0ID0gc3FsID8g
c3FsLT5zdGVwKCkgOiBzcWwuZXJyb3IoKTsKKworICAgIGlmICghbV9yZWFkT25seSkgeworICAg
ICAgICBBU1NFUlQoIW1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MpOworICAgICAgICBtX2Ri
Lm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gdGhpczsKICAgICB9CisKKyAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xsYmFjaygpCitpbnQgU1FMaXRl
VHJhbnNhY3Rpb246OmNvbW1pdCgpCiB7Ci0gICAgLy8gV2UgZG8gbm90IHVzZSB0aGUgJ21faW5Q
cm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIlJPTExCQUNLIiknIGNvbnN0cnVjdCBoZXJl
LAotICAgIC8vIGJlY2F1c2UgbV9pblByb2dyZXNzIHNob3VsZCBhbHdheXMgYmUgc2V0IHRvIGZh
bHNlIGFmdGVyIGEgUk9MTEJBQ0ssIGFuZAotICAgIC8vIG1fZGIuZXhlY3V0ZUNvbW1hbmQoIlJP
TExCQUNLIikgY2FuIHNvbWV0aW1lcyBoYXJtbGVzc2x5IGZhaWwsIHRodXMgcmV0dXJuaW5nCi0g
ICAgLy8gYSBub24temVyby90cnVlIHJlc3VsdCAoaHR0cDovL3d3dy5zcWxpdGUub3JnL2xhbmdf
dHJhbnNhY3Rpb24uaHRtbCkuCi0gICAgaWYgKG1faW5Qcm9ncmVzcykgewotICAgICAgICBBU1NF
UlQobV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk7Ci0gICAgICAgIG1fZGIuZXhlY3V0ZUNv
bW1hbmQoIlJPTExCQUNLIl9zKTsKLSAgICAgICAgbV9pblByb2dyZXNzID0gZmFsc2U7Ci0gICAg
ICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBpZiAoIW1faW5Q
cm9ncmVzcykKKyAgICAgICAgcmV0dXJuIFNRTElURV9FUlJPUjsKKyAgICBtX2luUHJvZ3Jlc3Mg
PSBmYWxzZTsKKyAgICAKKyAgICBhdXRvIHNxbCA9IG1fZGIucHJlcGFyZVN0YXRlbWVudCgiQ09N
TUlUIl9zKTsKKyAgICBpbnQgcmVzdWx0ID0gc3FsID8gc3FsLT5zdGVwKCkgOiBzcWwuZXJyb3Io
KTsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIFNRTGl0ZURhdGFiYXNlVHJh
Y2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKKyAgICBTUUxpdGVE
YXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7CiAj
ZW5kaWYKKworICAgIGlmICghbV9yZWFkT25seSkgeworICAgICAgICBBU1NFUlQobV9kYi5tX3Ry
YW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRoaXMpOworICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25J
blByb2dyZXNzID0gbnVsbHB0cjsKICAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi12
b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpzdG9wKCkKK2ludCBTUUxpdGVUcmFuc2FjdGlvbjo6cm9s
bGJhY2soKQogewotICAgIGlmIChtX2luUHJvZ3Jlc3MpIHsKLSAgICAgICAgbV9pblByb2dyZXNz
ID0gZmFsc2U7Ci0gICAgICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsK
KyAgICBpZiAoIW1faW5Qcm9ncmVzcykKKyAgICAgICAgcmV0dXJuIFNRTElURV9FUlJPUjsKKyAg
ICBtX2luUHJvZ3Jlc3MgPSBmYWxzZTsKKworICAgIGF1dG8gc3FsID0gbV9kYi5wcmVwYXJlU3Rh
dGVtZW50KCJST0xMQkFDSyJfcyk7CisgICAgaW50IHJlc3VsdCA9ICBzcWwgPyBzcWwtPnN0ZXAo
KSA6IHNxbC5lcnJvcigpOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgU1FM
aXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgp
OworICAgIFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dy
ZXNzQ291bnQoKTsKICNlbmRpZgorCisgICAgaWYgKCFtX3JlYWRPbmx5KSB7CisgICAgICAgIEFT
U0VSVChtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gdGhpcyk7CisgICAgICAgIG1fZGIu
bV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBudWxscHRyOwogICAgIH0KKworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLWJvb2wgU1FMaXRlVHJhbnNhY3Rpb246Ondhc1JvbGxlZEJhY2tCeVNxbGl0
ZSgpIGNvbnN0Citib29sIFNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xsZWRCYWNrQnlTUUxpdGUoKSBj
b25zdAogewogICAgIC8vIEFjY29yZGluZyB0byBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvYzNyZWYv
Z2V0X2F1dG9jb21taXQuaHRtbCwKICAgICAvLyB0aGUgYXV0by1jb21taXQgZmxhZyBzaG91bGQg
YmUgb2ZmIGluIHRoZSBtaWRkbGUgb2YgYSB0cmFuc2FjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaAppbmRleCBiOWQxZjc5NDBjY2I2MmFi
ZjQzZjk3NWYzMTZlNzgxYTI2ODcyYjczLi43OWU1YzYyOWYyYTc0MzNlN2E4NmNlOWI0NmI4NDNk
YzQzN2RiNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
VHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJh
bnNhY3Rpb24uaApAQCAtMzksMTkgKzM5LDE4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBTUUxpdGVUcmFuc2FjdGlvbihTUUxpdGVEYXRhYmFzZSYgZGIsIGJvb2wgcmVhZE9ubHkgPSBm
YWxzZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZVRyYW5zYWN0aW9uKCk7CiAgICAgCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBiZWdpbigpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y29tbWl0KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByb2xsYmFjaygpOwotICAgIHZvaWQg
c3RvcCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiZWdpbigpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBjb21taXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcm9sbGJhY2soKTsKICAg
ICAKICAgICBib29sIGluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX2luUHJvZ3Jlc3M7IH0K
LSAgICBib29sIHdhc1JvbGxlZEJhY2tCeVNxbGl0ZSgpIGNvbnN0OworICAgIGJvb2wgcm9sbGVk
QmFja0J5U1FMaXRlKCkgY29uc3Q7CiAKICAgICBTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UoKSBj
b25zdCB7IHJldHVybiBtX2RiOyB9CiAKIHByaXZhdGU6CiAgICAgU1FMaXRlRGF0YWJhc2UmIG1f
ZGI7Ci0gICAgYm9vbCBtX2luUHJvZ3Jlc3M7CisgICAgYm9vbCBtX2luUHJvZ3Jlc3MgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9yZWFkT25seTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433200</attachid>
            <date>2021-07-08 23:22:42 -0700</date>
            <delta_ts>2021-07-09 12:02:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227771-20210708232241.patch</filename>
            <type>text/plain</type>
            <size>25349</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I1YmFiNjNhNTQ1MzVl
OTIzYmYwNjU0ODlhMmY1Y2Q4Mzk5YTk2My4uYzdiNmNkMWM4NzIzZjM1MzRkYzdlNjE1ZjY0YTUw
ODUwMmE2YjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTA3LTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJldHVybiBlcnJvciBmb3Ig
c3RhdGVtZW50IGlmIHRoZSB0cmFuc2FjdGlvbiBpdCBiZWxvbmdzIHRvIGlzIHJvbGxlZCBiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3NzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIFNR
TGl0ZVRyYW5zYWN0aW9uIGluLXByb2dyZXNzIGJldHdlZW4gZXhwbGljaXQgYmVnaW4oKSBhbmQg
Y29tbWl0KCkvcm9sbGJhY2soKS4gQW4gaW4tcHJvZ3Jlc3Mgd3JpdGUgCisgICAgICAgIHRyYW5z
YWN0aW9uIGlzIG1hcmtlZCB2YWxpZCBpZiBpdCdzIG5vdCBhYm9ydGVkIGJ5IFNRTGl0ZSAoYXV0
by1jb21taXQgZm9yIGRhdGFiYXNlIGlzIG9mZikuIEZvciBzdGF0ZW1lbnRzIAorICAgICAgICBl
eGVjdXRlZCBkdXJpbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24sIHdlIHVzdWFsbHkgd2FudCB0
aGVtIHRvIGJlIHBhcnQgb2YgdHJhbnNhY3Rpb24sIHNvIHdlIHNob3VsZCBhdm9pZCAKKyAgICAg
ICAgZXhlY3V0aW5nIHRoZW0gaWYgdHJhbnNhY3Rpb24gaXMgYWxyZWFkeSBpbnZhbGlkLiBPdGhl
cndpc2UsIHRoZXkgbWF5IGJlIGV4ZWN1dGVkIGluIGEgc2VwYXJhdGUgaW1wbGljaXQgCisgICAg
ICAgIHRyYW5zYWN0aW9uLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Z2V0QWN0dWFsVmVyc2lvbkZvclRy
YW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNs
b3NlZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJh
bnNhY3Rpb25BbmRQcmVmbGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246
OnJ1blN0YXRlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmNsZWFu
dXBBbmRUZXJtaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmNsZWFu
dXBBZnRlclRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxU
cmFuc2FjdGlvbjo6aGFuZGxlQ3VycmVudFN0YXRlbWVudEVycm9yKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmNvbXB1dGVOZXh0U3RhdGVBbmRDbGVhbnVwSWZO
ZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6aGFzVmFsaWRUcmFuc2FjdGlvbiBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6d3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnRyYW5zYWN0aW9uSW5Qcm9ncmVzcyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXApOgorICAgICAgICAq
IHBsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVUcmFuc2FjdGlvbjo6U1FMaXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5z
YWN0aW9uOjpjb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OnJv
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xsZWRCYWNr
QnlTUUxpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OnN0
b3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246Ondhc1Jv
bGxlZEJhY2tCeVNxbGl0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3Fs
L1NRTGl0ZVRyYW5zYWN0aW9uLmg6CisKIDIwMjEtMDctMDggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgU1ZHIFNNSUwgYW5pbWF0aW9ucyBkbyBu
b3QgcnVuIGluIHByb2Nlc3NlcyB3aXRob3V0IGFueSBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzNTRiMTZj
NGU1YWIzZTUxOTc4M2FkMzUyNzU1YTlmYjRmNzFjNDRkLi5hOGQ0MjE0YTEwYmE3ZmZlMjJlM2Q3
YTc1Y2FlMzQ5MTNkZDgxODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA3LTA4
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJldHVybiBlcnJv
ciBmb3Igc3RhdGVtZW50IGlmIHRoZSB0cmFuc2FjdGlvbiBpdCBiZWxvbmdzIHRvIGlzIHJvbGxl
ZCBiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjc3NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6ZW5zdXJlQW5kTWFrZURvbWFpbkxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlw
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjptZXJnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpo
YXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpzZXRJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFZlcnlQcmV2YWxl
bnRSZXNvdXJjZSk6CisKIDIwMjEtMDctMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1NdIFRhcHBpbmcgIkRvbmUiIGluIFNjcmliYmxl
IHdoZW4gZm9jdXNpbmcgYW4gZWRpdGFibGUgZWxlbWVudCBzaG91bGQgZGlzbWlzcyBRdWlja2Jv
YXJkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3Bw
CmluZGV4IDlhZDExZDQwODhmNjYzNzdkYjFkYmMwOWRjNTEwNWUzZjkxNjgwYzkuLjUyODNmNjAw
OWFhNTYxMTgxY2EyZTVjMjA1NDU5MmVhYzg4OGUyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC01MDksNyArNTA5LDcgQEAgdm9p
ZCBEYXRhYmFzZTo6c2V0Q2FjaGVkVmVyc2lvbihjb25zdCBTdHJpbmcmIGFjdHVhbFZlcnNpb24p
CiAKIGJvb2wgRGF0YWJhc2U6OmdldEFjdHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihTdHJpbmcg
JmFjdHVhbFZlcnNpb24pCiB7Ci0gICAgQVNTRVJUKG1fc3FsaXRlRGF0YWJhc2UudHJhbnNhY3Rp
b25JblByb2dyZXNzKCkpOworICAgIEFTU0VSVChtX3NxbGl0ZURhdGFiYXNlLmhhc1ZhbGlkVHJh
bnNhY3Rpb24oKSk7CiAKICAgICAvLyBOb3RlOiBJbiBtdWx0aS1wcm9jZXNzIGJyb3dzZXJzIHRo
ZSBjYWNoZWQgdmFsdWUgbWF5IGJlIGluYWNjdXJhdGUuCiAgICAgLy8gU28gd2UgcmV0cmlldmUg
dGhlIHZhbHVlIGZyb20gdGhlIGRhdGFiYXNlIGFuZCB1cGRhdGUgdGhlIGNhY2hlZCB2YWx1ZSBo
ZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uLmNwcAppbmRleCA3YTJjOWE3MzQ2YWYxMGI3ZmVhNzE1NjU5OTE5MTMxMTUzODg4
Yjc3Li4yZTg1ZWFiM2VlOGE3MjJlY2ZkYjk2ZWI2NDcxMzg5ZDNlNjBkZmM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cApAQCAtMjA1LDEwICsyMDUsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRs
ZUNsb3NlZERhdGFiYXNlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGN1cnJlbnQg
U1FMaXRlIHRyYW5zYWN0aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCi0gICAgaWYgKG1f
c3FsaXRlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+c3RvcCgp
OwotICAgICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsKLSAgICB9CisgICAgbV9z
cWxpdGVUcmFuc2FjdGlvbiA9IG51bGxwdHI7CiAKICAgICBpZiAobV9sb2NrQWNxdWlyZWQpCiAg
ICAgICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKS0+cmVsZWFzZUxvY2so
KnRoaXMpOwpAQCAtMjI5LDcgKzIyNiw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmFjcXVpcmVM
b2NrKCkKIAogdm9pZCBTUUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0
KCkKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkudHJhbnNhY3Rp
b25JblByb2dyZXNzKCkpOworICAgIEFTU0VSVCghbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2Uo
KS53cml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKICAgICBBU1NFUlQobV9sb2NrQWNxdWly
ZWQpOwogCiAgICAgTE9HKFN0b3JhZ2VBUEksICJPcGVuaW5nIGFuZCBwcmVmbGlnaHRpbmcgdHJh
bnNhY3Rpb24gJXAiLCB0aGlzKTsKQEAgLTI1OCw3ICsyNTUsNyBAQCB2b2lkIFNRTFRyYW5zYWN0
aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQogCiAgICAgLy8gU3BlYyA0LjMuMi4x
KzI6IE9wZW4gYSB0cmFuc2FjdGlvbiB0byB0aGUgZGF0YWJhc2UsIGp1bXBpbmcgdG8gdGhlIGVy
cm9yIGNhbGxiYWNrIGlmIHRoYXQgZmFpbHMKICAgICBpZiAoIW1fc3FsaXRlVHJhbnNhY3Rpb24t
PmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPnNxbGl0ZURhdGFi
YXNlKCkudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOworICAgICAgICBBU1NFUlQoIW1fZGF0YWJh
c2UtPnNxbGl0ZURhdGFiYXNlKCkud3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAgICAg
ICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OkRBVEFC
QVNFX0VSUiwgInVuYWJsZSB0byBiZWdpbiB0cmFuc2FjdGlvbiIsIG1fZGF0YWJhc2UtPnNxbGl0
ZURhdGFiYXNlKCkubGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsKIApA
QCAtMzEzLDcgKzMxMCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OnJ1blN0YXRlbWVudHMoKQog
ICAgIC8vIElmIHRoZXJlIGlzIGEgc2VyaWVzIG9mIHN0YXRlbWVudHMgcXVldWVkIHVwIHRoYXQg
YXJlIGFsbCBzdWNjZXNzZnVsIGFuZCBoYXZlIG5vIGFzc29jaWF0ZWQKICAgICAvLyBTUUxTdGF0
ZW1lbnRDYWxsYmFjayBvYmplY3RzLCB0aGVuIHdlIGNhbiBidXJuIHRocm91Z2ggdGhlIHF1ZXVl
CiAgICAgZG8gewotICAgICAgICBpZiAobV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQgJiYg
IW1fc3FsaXRlVHJhbnNhY3Rpb24tPndhc1JvbGxlZEJhY2tCeVNxbGl0ZSgpKSB7CisgICAgICAg
IGlmIChtX3Nob3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudCAmJiAhbV9zcWxpdGVUcmFuc2FjdGlv
bi0+cm9sbGVkQmFja0J5U1FMaXRlKCkpIHsKICAgICAgICAgICAgIG1fc2hvdWxkUmV0cnlDdXJy
ZW50U3RhdGVtZW50ID0gZmFsc2U7CiAgICAgICAgICAgICAvLyBGSVhNRSAtIEFub3RoZXIgcGxh
Y2UgdGhhdCBuZWVkcyBmaXhpbmcgdXAgYWZ0ZXIgPHJkYXI6Ly9wcm9ibGVtLzU2Mjg0Njg+IGlz
IGFkZHJlc3NlZC4KICAgICAgICAgICAgIC8vIFNlZSA6Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZs
aWdodCgpIGZvciBkaXNjdXNzaW9uCkBAIC0zNDksNyArMzQ2LDcgQEAgdm9pZCBTUUxUcmFuc2Fj
dGlvbjo6Y2xlYW51cEFuZFRlcm1pbmF0ZSgpCiAKICAgICAvLyBTcGVjIDQuMy4yLjk6IEVuZCB0
cmFuc2FjdGlvbiBzdGVwcy4gVGhlcmUgaXMgbm8gbmV4dCBzdGVwLgogICAgIExPRyhTdG9yYWdl
QVBJLCAiVHJhbnNhY3Rpb24gJXAgaXMgY29tcGxldGVcbiIsIHRoaXMpOwotICAgIEFTU0VSVCgh
bV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7Cisg
ICAgQVNTRVJUKCFtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLndyaXRlVHJhbnNhY3Rpb25J
blByb2dyZXNzKCkpOwogCiAgICAgLy8gUGhhc2UgNSBjbGVhbnVwLiBTZWUgY29tbWVudCBvbiB0
aGUgU1FMVHJhbnNhY3Rpb24gbGlmZS1jeWNsZSBhYm92ZS4KICAgICBtX2JhY2tlbmQuZG9DbGVh
bnVwKCk7CkBAIC0zNjYsMTQgKzM2MywxNCBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjbGVhbnVw
QWZ0ZXJUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2soKQogICAgICAgICAvLyBTcGVjIDQuMy4yLjEw
OiBSb2xsYmFjayB0aGUgdHJhbnNhY3Rpb24uCiAgICAgICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24t
PnJvbGxiYWNrKCk7CiAKLSAgICAgICAgQVNTRVJUKCFtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFz
ZSgpLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICAgICAgQVNTRVJUKCFtX2RhdGFiYXNl
LT5zcWxpdGVEYXRhYmFzZSgpLndyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwogICAgICAg
ICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsKICAgICB9CiAgICAgbV9kYXRhYmFzZS0+
ZW5hYmxlQXV0aG9yaXplcigpOwogCiAgICAgcmVsZWFzZU9yaWdpbkxvY2tJZk5lZWRlZCgpOwog
Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLnRyYW5zYWN0aW9uSW5Q
cm9ncmVzcygpKTsKKyAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkud3Jp
dGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICBjbGVhbnVwQW5kVGVybWluYXRlKCk7
CiB9CkBAIC01NjEsNyArNTU4LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6aGFuZGxlQ3VycmVu
dFN0YXRlbWVudEVycm9yKCkKIHsKICAgICAvLyBTcGVjIDQuMy4yLjYuNjogZXJyb3IgLSBDYWxs
IHRoZSBzdGF0ZW1lbnQncyBlcnJvciBjYWxsYmFjaywgYnV0IGlmIHRoZXJlIHdhcyBubyBlcnJv
ciBjYWxsYmFjaywKICAgICAvLyBvciB0aGUgdHJhbnNhY3Rpb24gd2FzIHJvbGxlZCBiYWNrLCBq
dW1wIHRvIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjawotICAgIGlmIChtX2N1cnJlbnRT
dGF0ZW1lbnQtPmhhc1N0YXRlbWVudEVycm9yQ2FsbGJhY2soKSAmJiAhbV9zcWxpdGVUcmFuc2Fj
dGlvbi0+d2FzUm9sbGVkQmFja0J5U3FsaXRlKCkpIHsKKyAgICBpZiAobV9jdXJyZW50U3RhdGVt
ZW50LT5oYXNTdGF0ZW1lbnRFcnJvckNhbGxiYWNrKCkgJiYgIW1fc3FsaXRlVHJhbnNhY3Rpb24t
PnJvbGxlZEJhY2tCeVNRTGl0ZSgpKSB7CiAgICAgICAgIHNjaGVkdWxlQ2FsbGJhY2soJlNRTFRy
YW5zYWN0aW9uOjpkZWxpdmVyU3RhdGVtZW50Q2FsbGJhY2spOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDYyYjI3Y2RiMzMyNTE0ZDZhNDk3MTBh
MDcxZDQxMTc1YTcwZGJkZGUuLjg4ZjU4ZmNlZDM5MWFmZGRiMGE4ODc4Yjk1MjA0YjQyMDRlMzM5
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKQEAgLTQ0OSwxMCArNDQ5LDcgQEAgdm9pZCBT
UUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmNvbXB1dGVOZXh0U3RhdGVBbmRDbGVhbnVwSWZOZWVkZWQo
KQogICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2Ugd2FzIHN0b3BwZWQgb3IgaW50ZXJydXB0
ZWQgLSBjYW5jZWxsaW5nIHdvcmsgZm9yIHRoaXMgdHJhbnNhY3Rpb24iKTsKIAogICAgIC8vIFRo
ZSBjdXJyZW50IFNRTGl0ZSB0cmFuc2FjdGlvbiBzaG91bGQgYmUgc3RvcHBlZCwgYXMgd2VsbAot
ICAgIGlmIChtX2Zyb250ZW5kLm1fc3FsaXRlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgbV9mcm9u
dGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uLT5zdG9wKCk7Ci0gICAgICAgIG1fZnJvbnRlbmQubV9z
cWxpdGVUcmFuc2FjdGlvbiA9IG51bGxwdHI7Ci0gICAgfQorICAgIG1fZnJvbnRlbmQubV9zcWxp
dGVUcmFuc2FjdGlvbiA9IG51bGxwdHI7CiAKICAgICAvLyBUZXJtaW5hdGUgdGhlIGZyb250ZW5k
IHN0YXRlIG1hY2hpbmUuIFRoaXMgYWxzbyBnZXRzIHRoZSBmcm9udGVuZCB0bwogICAgIC8vIGNh
bGwgY29tcHV0ZU5leHRTdGF0ZUFuZENsZWFudXBJZk5lZWRlZCgpIGFuZCBjbGVhciBpdHMgd3Jh
cHBlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3Bw
CmluZGV4IGExMTEwMjU2ODFlNDY5MzEyM2ZiYzhjYjQ5MGE4MzcwZGIzOWMxODMuLjRhN2QyYzZm
OWFhMjhiZjA1ZDUzYzM1YmRjYTQyNGJkMGQ2ZTJiYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0u
aCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJTUUxpdGVUcmFuc2Fj
dGlvbi5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHNxbGl0ZTMuaD4KICNpbmNsdWRl
IDx0aHJlYWQ+CkBAIC03MzMsNCArNzM0LDkgQEAgRXhwZWN0ZWQ8VW5pcXVlUmVmPFNRTGl0ZVN0
YXRlbWVudD4sIGludD4gU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVIZWFwU3RhdGVtZW50KEEKICAg
ICByZXR1cm4gVW5pcXVlUmVmPFNRTGl0ZVN0YXRlbWVudD4oKm5ldyBTUUxpdGVTdGF0ZW1lbnQo
KnRoaXMsIHNxbFN0YXRlbWVudC52YWx1ZSgpKSk7CiB9CiAKK2Jvb2wgU1FMaXRlRGF0YWJhc2U6
Omhhc1ZhbGlkVHJhbnNhY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAhbV93cml0ZVRyYW5z
YWN0aW9uSW5Qcm9ncmVzcyB8fCAhbV93cml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcy0+cm9sbGVk
QmFja0J5U1FMaXRlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKaW5kZXggNGIyMmM4ZmU2OGUzNWZi
ZGQwOTcyNTg2OGM0YzlhMGU1Y2FiMmNmMC4uNWY1ZjM0NzlhZTk5NzhmMjVjNjE3Zjg2MTBiZjVk
NTU3MGM3OThhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmgKQEAgLTcxLDggKzcxLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2xlYXJBbGxUYWJsZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcnVuVmFjdXVtQ29tbWFu
ZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQo
KTsKLSAgICAKLSAgICBib29sIHRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3Rl
ZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gcHJlcGFyZVN0YXRlbWVudFNsb3coY29uc3QgU3RyaW5n
JiBxdWVyeSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBp
bnQ+IHByZXBhcmVTdGF0ZW1lbnQoQVNDSUlMaXRlcmFsIHF1ZXJ5KTsKQEAgLTE2Miw2ICsxNjAs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmNyZW1lbnRTdGF0ZW1lbnRDb3VudCgpOwogICAgIHZv
aWQgZGVjcmVtZW50U3RhdGVtZW50Q291bnQoKTsKIAorICAgIFNRTGl0ZVRyYW5zYWN0aW9uKiB3
cml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVUcmFuc2Fj
dGlvbkluUHJvZ3Jlc3M7IH0KKyAgICBib29sIGhhc1ZhbGlkVHJhbnNhY3Rpb24oKSBjb25zdDsK
KwogcHJpdmF0ZToKICAgICBzdGF0aWMgaW50IGF1dGhvcml6ZXJGdW5jdGlvbih2b2lkKiwgaW50
LCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7CiAK
QEAgLTE3NSw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIHNxbGl0ZTMqIG1fZGIgeyBudWxscHRy
IH07CiAgICAgaW50IG1fcGFnZVNpemUgeyAtMSB9OwogICAgIAotICAgIGJvb2wgbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3MgeyBmYWxzZSB9OworICAgIFNRTGl0ZVRyYW5zYWN0aW9uKiBtX3dyaXRl
VHJhbnNhY3Rpb25JblByb2dyZXNzIHsgbnVsbHB0ciB9OwogI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgYm9vbCBtX3NoYXJhYmxlIHsgZmFsc2UgfTsKICAgICBzdGQ6OmF0b21pYzx1bnNpZ25lZD4g
bV9zdGF0ZW1lbnRDb3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZVN0YXRlbWVudC5jcHAKaW5kZXggYjA4NDllNmY4MDhjYTM4MGIwOGM2Mjc0YjA0ZDE0
OWNjMDMzYzA4Ny4uM2FhZmFmMWY5ODI4ZGQxYTQ0NmU5ODRjMTZmYjczMTIxYWM2ZWExOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAg
LTY2LDYgKzY2LDExIEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXAoKQogewogICAgIExvY2tl
ciBkYXRhYmFzZUxvY2sgeyBtX2RhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSB9OwogCisgICAgaWYg
KCFtX2RhdGFiYXNlLmhhc1ZhbGlkVHJhbnNhY3Rpb24oKSkgeworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0ZVN0YXRlbWVudDo6c3RlcDogQ2Fubm90IHN0ZXAg
JXtwdWJsaWN9cyBiZWNhdXNlIHRyYW5zYWN0aW9uIGlzIGludmFsaWQiLCBzcWxpdGUzX3NxbCht
X3N0YXRlbWVudCkpOworICAgICAgICByZXR1cm4gU1FMSVRFX0FCT1JUOworICAgIH0KKwogICAg
IGludCBlcnJvciA9IHNxbGl0ZTNfc3RlcChtX3N0YXRlbWVudCk7CiAgICAgaWYgKGVycm9yICE9
IFNRTElURV9ET05FICYmIGVycm9yICE9IFNRTElURV9ST1cpCiAgICAgICAgIExPRyhTUUxEYXRh
YmFzZSwgInNxbGl0ZTNfc3RlcCBmYWlsZWQgKCVpKVxuRXJyb3IgLSAlcyIsIGVycm9yLCBzcWxp
dGUzX2Vycm1zZyhtX2RhdGFiYXNlLnNxbGl0ZTNIYW5kbGUoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAKaW5kZXggMDhlOWViNzNk
YjI0YTA5MGE3YTA4MGMxYTgxNTY5MzE4ZTVhMjg1OS4uNzQyODc4ZmFhMmZlNzAyOWZlZjY2MThh
NDZlMmIxZDAyOGM0YjMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlVHJhbnNhY3Rpb24uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU1FMaXRl
VHJhbnNhY3Rpb24uaCIKIAogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSAi
U1FMaXRlU3RhdGVtZW50LmgiCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUg
IlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgpAQCAtMzYsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFNRTGl0ZVRyYW5zYWN0aW9uOjpTUUxpdGVUcmFuc2FjdGlvbihTUUxpdGVEYXRh
YmFzZSYgZGIsIGJvb2wgcmVhZE9ubHkpCiAgICAgOiBtX2RiKGRiKQotICAgICwgbV9pblByb2dy
ZXNzKGZhbHNlKQogICAgICwgbV9yZWFkT25seShyZWFkT25seSkKIHsKIH0KQEAgLTQ3LDc0ICs0
Nyw3OCBAQCBTUUxpdGVUcmFuc2FjdGlvbjo6flNRTGl0ZVRyYW5zYWN0aW9uKCkKICAgICAgICAg
cm9sbGJhY2soKTsKIH0KIAotdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6YmVnaW4oKQoraW50IFNR
TGl0ZVRyYW5zYWN0aW9uOjpiZWdpbigpCiB7Ci0gICAgaWYgKCFtX2luUHJvZ3Jlc3MpIHsKLSAg
ICAgICAgQVNTRVJUKCFtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzKTsKLSAgICAgICAgLy8g
Q2FsbCBCRUdJTiBJTU1FRElBVEUgZm9yIGEgd3JpdGUgdHJhbnNhY3Rpb24gdG8gYWNxdWlyZQot
ICAgICAgICAvLyBhIFJFU0VSVkVEIGxvY2sgb24gdGhlIERCIGZpbGUuIE90aGVyd2lzZSwgYW5v
dGhlciB3cml0ZQotICAgICAgICAvLyB0cmFuc2FjdGlvbiAob24gYW5vdGhlciBjb25uZWN0aW9u
KSBjb3VsZCBtYWtlIGNoYW5nZXMKLSAgICAgICAgLy8gdG8gdGhlIHNhbWUgREIgZmlsZSBiZWZv
cmUgdGhpcyB0cmFuc2FjdGlvbiBnZXRzIHRvIGV4ZWN1dGUKLSAgICAgICAgLy8gYW55IHN0YXRl
bWVudHMuIElmIHRoYXQgaGFwcGVucywgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGZhaWwuCi0gICAg
ICAgIC8vIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwKLSAgICAg
ICAgLy8gaHR0cDovL3d3dy5zcWxpdGUub3JnL2xvY2tpbmd2My5odG1sI2xvY2tpbmcKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmluY3Jl
bWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7Ci0jZW5kaWYKLSAgICAgICAgaWYgKG1f
cmVhZE9ubHkpCi0gICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21tYW5k
KCJCRUdJTiJfcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1faW5Qcm9ncmVzcyA9IG1f
ZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIElNTUVESUFURSJfcyk7Ci0gICAgICAgIG1fZGIubV90
cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBtX2luUHJvZ3Jlc3M7Ci0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICAgICAgaWYgKCFtX2luUHJvZ3Jlc3MpCi0gICAgICAgICAgICBTUUxpdGVEYXRh
YmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7Ci0jZW5k
aWYKLSAgICB9Ci19CisgICAgaWYgKG1faW5Qcm9ncmVzcykKKyAgICAgICAgcmV0dXJuIFNRTElU
RV9FUlJPUjsKKyAgICBtX2luUHJvZ3Jlc3MgPSB0cnVlOwogCi12b2lkIFNRTGl0ZVRyYW5zYWN0
aW9uOjpjb21taXQoKQotewotICAgIGlmIChtX2luUHJvZ3Jlc3MpIHsKLSAgICAgICAgQVNTRVJU
KG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MpOwotICAgICAgICBtX2luUHJvZ3Jlc3MgPSAh
bV9kYi5leGVjdXRlQ29tbWFuZCgiQ09NTUlUIl9zKTsKLSAgICAgICAgbV9kYi5tX3RyYW5zYWN0
aW9uSW5Qcm9ncmVzcyA9IG1faW5Qcm9ncmVzczsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgICAgICBpZiAoIW1faW5Qcm9ncmVzcykKLSAgICAgICAgICAgIFNRTGl0ZURhdGFiYXNlVHJh
Y2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKKyAgICBTUUxpdGVE
YXRhYmFzZVRyYWNrZXI6OmluY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7CiAj
ZW5kaWYKKworICAgIC8vIENhbGwgQkVHSU4gSU1NRURJQVRFIGZvciBhIHdyaXRlIHRyYW5zYWN0
aW9uIHRvIGFjcXVpcmUKKyAgICAvLyBhIFJFU0VSVkVEIGxvY2sgb24gdGhlIERCIGZpbGUuIE90
aGVyd2lzZSwgYW5vdGhlciB3cml0ZQorICAgIC8vIHRyYW5zYWN0aW9uIChvbiBhbm90aGVyIGNv
bm5lY3Rpb24pIGNvdWxkIG1ha2UgY2hhbmdlcworICAgIC8vIHRvIHRoZSBzYW1lIERCIGZpbGUg
YmVmb3JlIHRoaXMgdHJhbnNhY3Rpb24gZ2V0cyB0byBleGVjdXRlCisgICAgLy8gYW55IHN0YXRl
bWVudHMuIElmIHRoYXQgaGFwcGVucywgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGZhaWwuCisgICAg
Ly8gaHR0cDovL3d3dy5zcWxpdGUub3JnL2xhbmdfdHJhbnNhY3Rpb24uaHRtbAorICAgIC8vIGh0
dHA6Ly93d3cuc3FsaXRlLm9yZy9sb2NraW5ndjMuaHRtbCNsb2NraW5nCisgICAgQVNDSUlMaXRl
cmFsIHNxbFN0cmluZyA9IG1fcmVhZE9ubHkgPyAiQkVHSU4iX3MgOiAiQkVHSU4gSU1NRURJQVRF
Il9zOworICAgIGF1dG8gc3FsID0gbV9kYi5wcmVwYXJlU3RhdGVtZW50KHNxbFN0cmluZyk7Cisg
ICAgaW50IHJlc3VsdCA9IHNxbCA/IHNxbC0+c3RlcCgpIDogc3FsLmVycm9yKCk7CisKKyAgICBp
ZiAoIW1fcmVhZE9ubHkpIHsKKyAgICAgICAgQVNTRVJUKCFtX2RiLm1fd3JpdGVUcmFuc2FjdGlv
bkluUHJvZ3Jlc3MpOworICAgICAgICBtX2RiLm1fd3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3Mg
PSB0aGlzOwogICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgU1FMaXRlVHJh
bnNhY3Rpb246OnJvbGxiYWNrKCkKK2ludCBTUUxpdGVUcmFuc2FjdGlvbjo6Y29tbWl0KCkKIHsK
LSAgICAvLyBXZSBkbyBub3QgdXNlIHRoZSAnbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29t
bWFuZCgiUk9MTEJBQ0siKScgY29uc3RydWN0IGhlcmUsCi0gICAgLy8gYmVjYXVzZSBtX2luUHJv
Z3Jlc3Mgc2hvdWxkIGFsd2F5cyBiZSBzZXQgdG8gZmFsc2UgYWZ0ZXIgYSBST0xMQkFDSywgYW5k
Ci0gICAgLy8gbV9kYi5leGVjdXRlQ29tbWFuZCgiUk9MTEJBQ0siKSBjYW4gc29tZXRpbWVzIGhh
cm1sZXNzbHkgZmFpbCwgdGh1cyByZXR1cm5pbmcKLSAgICAvLyBhIG5vbi16ZXJvL3RydWUgcmVz
dWx0IChodHRwOi8vd3d3LnNxbGl0ZS5vcmcvbGFuZ190cmFuc2FjdGlvbi5odG1sKS4KLSAgICBp
ZiAobV9pblByb2dyZXNzKSB7Ci0gICAgICAgIEFTU0VSVChtX2RiLm1fdHJhbnNhY3Rpb25JblBy
b2dyZXNzKTsKLSAgICAgICAgbV9kYi5leGVjdXRlQ29tbWFuZCgiUk9MTEJBQ0siX3MpOwotICAg
ICAgICBtX2luUHJvZ3Jlc3MgPSBmYWxzZTsKLSAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Q
cm9ncmVzcyA9IGZhbHNlOworICAgIGlmICghbV9pblByb2dyZXNzKQorICAgICAgICByZXR1cm4g
U1FMSVRFX0VSUk9SOworICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIAorICAgIGF1dG8g
c3FsID0gbV9kYi5wcmVwYXJlU3RhdGVtZW50KCJDT01NSVQiX3MpOworICAgIGludCByZXN1bHQg
PSBzcWwgPyBzcWwtPnN0ZXAoKSA6IHNxbC5lcnJvcigpOworCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRUcmFuc2FjdGlv
bkluUHJvZ3Jlc3NDb3VudCgpOworICAgIFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6ZGVjcmVtZW50
VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKICNlbmRpZgorCisgICAgaWYgKCFtX3JlYWRP
bmx5KSB7CisgICAgICAgIEFTU0VSVChtX2RiLm1fd3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3Mg
PSB0aGlzKTsKKyAgICAgICAgbV9kYi5tX3dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzID0gbnVs
bHB0cjsKICAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFNRTGl0ZVRyYW5z
YWN0aW9uOjpzdG9wKCkKK2ludCBTUUxpdGVUcmFuc2FjdGlvbjo6cm9sbGJhY2soKQogewotICAg
IGlmIChtX2luUHJvZ3Jlc3MpIHsKLSAgICAgICAgbV9pblByb2dyZXNzID0gZmFsc2U7Ci0gICAg
ICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBpZiAoIW1faW5Q
cm9ncmVzcykKKyAgICAgICAgcmV0dXJuIFNRTElURV9FUlJPUjsKKyAgICBtX2luUHJvZ3Jlc3Mg
PSBmYWxzZTsKKworICAgIGF1dG8gc3FsID0gbV9kYi5wcmVwYXJlU3RhdGVtZW50KCJST0xMQkFD
SyJfcyk7CisgICAgaW50IHJlc3VsdCA9ICBzcWwgPyBzcWwtPnN0ZXAoKSA6IHNxbC5lcnJvcigp
OworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFj
a2VyOjpkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOworICAgIFNRTGl0ZURh
dGFiYXNlVHJhY2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKICNl
bmRpZgorCisgICAgaWYgKCFtX3JlYWRPbmx5KSB7CisgICAgICAgIEFTU0VSVChtX2RiLm1fd3Jp
dGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSB0aGlzKTsKKyAgICAgICAgbV9kYi5tX3dyaXRlVHJh
bnNhY3Rpb25JblByb2dyZXNzID0gbnVsbHB0cjsKICAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1ib29sIFNRTGl0ZVRyYW5zYWN0aW9uOjp3YXNSb2xsZWRCYWNrQnlTcWxpdGUoKSBj
b25zdAorYm9vbCBTUUxpdGVUcmFuc2FjdGlvbjo6cm9sbGVkQmFja0J5U1FMaXRlKCkgY29uc3QK
IHsKICAgICAvLyBBY2NvcmRpbmcgdG8gaHR0cDovL3d3dy5zcWxpdGUub3JnL2MzcmVmL2dldF9h
dXRvY29tbWl0Lmh0bWwsCiAgICAgLy8gdGhlIGF1dG8tY29tbWl0IGZsYWcgc2hvdWxkIGJlIG9m
ZiBpbiB0aGUgbWlkZGxlIG9mIGEgdHJhbnNhY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmgKaW5kZXggYjlkMWY3OTQwY2NiNjJhYmY0M2Y5
NzVmMzE2ZTc4MWEyNjg3MmI3My4uNzllNWM2MjlmMmE3NDMzZTdhODZjZTliNDZiODQzZGM0Mzdk
YjVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5z
YWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0
aW9uLmgKQEAgLTM5LDE5ICszOSwxOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU1FM
aXRlVHJhbnNhY3Rpb24oU1FMaXRlRGF0YWJhc2UmIGRiLCBib29sIHJlYWRPbmx5ID0gZmFsc2Up
OwogICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVUcmFuc2FjdGlvbigpOwogICAgIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYmVnaW4oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1p
dCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcm9sbGJhY2soKTsKLSAgICB2b2lkIHN0b3Ao
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmVnaW4oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBp
bnQgY29tbWl0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IHJvbGxiYWNrKCk7CiAgICAgCiAg
ICAgYm9vbCBpblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9pblByb2dyZXNzOyB9Ci0gICAg
Ym9vbCB3YXNSb2xsZWRCYWNrQnlTcWxpdGUoKSBjb25zdDsKKyAgICBib29sIHJvbGxlZEJhY2tC
eVNRTGl0ZSgpIGNvbnN0OwogCiAgICAgU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKCkgY29uc3Qg
eyByZXR1cm4gbV9kYjsgfQogCiBwcml2YXRlOgogICAgIFNRTGl0ZURhdGFiYXNlJiBtX2RiOwot
ICAgIGJvb2wgbV9pblByb2dyZXNzOworICAgIGJvb2wgbV9pblByb2dyZXNzIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fcmVhZE9ubHk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCBiYzAwMWU2ZDg4OTE5YTAyNDI2
MDQyZGJmZmYyZmUxNDkxNTQ2MzkxLi4yMTkwMDYzMmQ3ZmRiZDBkZGYyMzBkN2UyNjE2MzM2YTRj
NTg2NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5jcHAKQEAgLTEwMzgsNyArMTAzOCw3IEBAIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JRChjb25zdCBS
ZWdpCiAKIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJl
QW5kTWFrZURvbWFpbkxpc3QoY29uc3QgU1FMaXRlVHJhbnNhY3Rpb24mLCBjb25zdCBIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluTGlzdCkKIHsKLSAgICBBU1NFUlQobV9kYXRhYmFz
ZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2Uud3JpdGVU
cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAg
ICAgZm9yIChhdXRvJiB0b3BGcmFtZVJlc291cmNlIDogZG9tYWluTGlzdCkgewpAQCAtMTA3OCw3
ICsxMDc4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5z
ZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdChjb25zdCBTUUwKIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcHMoY29uc3QgU1FM
aXRlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
JiBsb2FkU3RhdGlzdGljcykKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAg
ICBBU1NFUlQobV9kYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJU
KG1fZGF0YWJhc2Uud3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICBhdXRvIHJl
Z2lzdHJhYmxlRG9tYWluSUQgPSBkb21haW5JRChsb2FkU3RhdGlzdGljcy5yZWdpc3RyYWJsZURv
bWFpbik7CiAgICAgCkBAIC0xMTI4LDcgKzExMjgsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpwb3B1bGF0ZUZyb21NZW1vcnlTdG9yZShjb25zdCBSZXNvdXJj
ZQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2UoY29uc3Qg
U1FMaXRlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQq
IGN1cnJlbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIG90aGVyKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVChtX2RhdGFiYXNlLnRyYW5zYWN0
aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS53cml0ZVRyYW5zYWN0aW9u
SW5Qcm9ncmVzcygpKTsKIAogICAgIGF1dG8gY3VycmVudFJlZ2lzdHJhYmxlRG9tYWluID0gY3Vy
cmVudC0+Y29sdW1uVGV4dChSZWdpc3RyYWJsZURvbWFpbkluZGV4KTsKICAgICBhdXRvIGN1cnJl
bnRMYXN0U2VlbiA9IGN1cnJlbnQtPmNvbHVtbkRvdWJsZShMYXN0U2VlbkluZGV4KTsKQEAgLTE2
MzUsNyArMTYzNSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1CiB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChjb25z
dCBTUUxpdGVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFN1YkZyYW1lRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciwgU3RvcmFnZUFj
Y2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBBU1NFUlQobV9kYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7
CisgICAgQVNTRVJUKG1fZGF0YWJhc2Uud3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAK
ICAgICBpZiAoc3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Olllcyk7CkBAIC0xOTA0LDcg
KzE5MDQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVh
clVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6
U1FMaXRlVHJhbnNhY3Rpb24mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2UudHJhbnNhY3Rpb25J
blByb2dyZXNzKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlLndyaXRlVHJhbnNhY3Rpb25JblBy
b2dyZXNzKCkpOwogCiAgICAgYXV0byB0YXJnZXRSZXN1bHQgPSBlbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb21haW4pOwogICAgIGlmICghdGFyZ2V0UmVzdWx0
LnNlY29uZCkgewpAQCAtMTk0MSw3ICsxOTQxLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmwK
IGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc0hhZFVzZXJJbnRl
cmFjdGlvbihjb25zdCBXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIE9wZXJhdGluZ0RhdGVzV2luZG93IG9wZXJh
dGluZ0RhdGVzV2luZG93KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAg
IEFTU0VSVChtX2RhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQo
bV9kYXRhYmFzZS53cml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKIAogICAgIGF1dG8gc2Nv
cGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1faGFkVXNlckludGVyYWN0aW9u
U3RhdGVtZW50LCBoYWRVc2VySW50ZXJhY3Rpb25RdWVyeSwgImhhc0hhZFVzZXJJbnRlcmFjdGlv
biJfcyk7CiAgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKQEAgLTE5NzAsNyArMTk3MCw3IEBAIGJv
b2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFj
dGlvbihjb25zdCBXZWJDb3JlOjpTCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTUUxpdGVUcmFuc2FjdGlvbiYsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIFJlc291cmNlTG9hZFByZXZhbGVuY2UgbmV3
UHJldmFsZW5jZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NF
UlQobV9kYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKG1fZGF0
YWJhc2Uud3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICBpZiAoc2hvdWxkU2tp
cChkb21haW4pKQogICAgICAgICByZXR1cm47CkBAIC0yMTUyLDcgKzIxNTIsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6c2V0R3JhbmRmYXRoZXJlZChjb25zdCBXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbiYsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wgdmFsdWUpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2UudHJhbnNhY3Rpb25J
blByb2dyZXNzKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlLndyaXRlVHJhbnNhY3Rpb25JblBy
b2dyZXNzKCkpOwogCiAgICAgYXV0byByZXN1bHQgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JSZWdpc3RyYWJsZURvbWFpbihkb21haW4pOwogICAgIGlmICghcmVzdWx0LnNlY29uZCkgewpA
QCAtMjE3Myw3ICsyMTczLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6c2V0R3JhbmRmYXRoZXJlZChjb25zdCBXZWJDb3JlOjpTUUxpdGUKIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldElzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWwoY29uc3QgU1FMaXRlVHJhbnNhY3Rpb24mLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZG9tYWluLCBib29sIHZhbHVlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwotICAgIEFTU0VSVChtX2RhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsK
KyAgICBBU1NFUlQobV9kYXRhYmFzZS53cml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKIAog
ICAgIGF1dG8gcmVzdWx0ID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVE
b21haW4oZG9tYWluKTsKICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKQEAgLTI4MjksNyArMjgy
OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFByZXZh
bGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTUUxpdGVUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2UudHJh
bnNhY3Rpb25JblByb2dyZXNzKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlLndyaXRlVHJhbnNh
Y3Rpb25JblByb2dyZXNzKCkpOwogCiAgICAgaWYgKHNob3VsZFNraXAoZG9tYWluKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjg2MSw3ICsyODYxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6c2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHIK
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFZlcnlQcmV2YWxl
bnRSZXNvdXJjZShjb25zdCBTUUxpdGVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOworICAg
IEFTU0VSVChtX2RhdGFiYXNlLndyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwogCiAgICAg
aWYgKHNob3VsZFNraXAoZG9tYWluKSkKICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433230</attachid>
            <date>2021-07-09 12:02:18 -0700</date>
            <delta_ts>2021-07-09 12:11:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227771-20210709120217.patch</filename>
            <type>text/plain</type>
            <size>25793</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWJmMjdmZDE2YzRlMjRm
ZGVjMGYxODhhMjhiMzZlMzk3NWIzNzFmMS4uMDgxNGI3OWE1MzgyMzM2Y2UzODg5YjIxYzdlMjc4
NTQyNjgxZWQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTA3LTA5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJldHVybiBlcnJvciBmb3Ig
c3RhdGVtZW50IGlmIHRoZSB0cmFuc2FjdGlvbiBpdCBiZWxvbmdzIHRvIGlzIHJvbGxlZCBiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3NzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIFNR
TGl0ZVRyYW5zYWN0aW9uIGluLXByb2dyZXNzIGJldHdlZW4gZXhwbGljaXQgYmVnaW4oKSBhbmQg
Y29tbWl0KCkvcm9sbGJhY2soKS4gQW4gaW4tcHJvZ3Jlc3Mgd3JpdGUgCisgICAgICAgIHRyYW5z
YWN0aW9uIGlzIG1hcmtlZCB2YWxpZCBpZiBpdCdzIG5vdCBhYm9ydGVkIGJ5IFNRTGl0ZSAoYXV0
by1jb21taXQgZm9yIGRhdGFiYXNlIGlzIG9mZikuIEZvciBzdGF0ZW1lbnRzIAorICAgICAgICBl
eGVjdXRlZCBkdXJpbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24sIHdlIHVzdWFsbHkgd2FudCB0
aGVtIHRvIGJlIHBhcnQgb2YgdHJhbnNhY3Rpb24sIHNvIHdlIHNob3VsZCBhdm9pZCAKKyAgICAg
ICAgZXhlY3V0aW5nIHRoZW0gaWYgdHJhbnNhY3Rpb24gaXMgYWxyZWFkeSBpbnZhbGlkLiBPdGhl
cndpc2UsIHRoZXkgbWF5IGJlIGV4ZWN1dGVkIGluIGEgc2VwYXJhdGUgaW1wbGljaXQgCisgICAg
ICAgIHRyYW5zYWN0aW9uLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Z2V0QWN0dWFsVmVyc2lvbkZvclRy
YW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
LmNwcDogVGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgc3RvcHBlZCBpbiBkZXN0cnVjdG9yIG9mIFNR
TGl0ZVRyYW5zYWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmNoZWNr
QW5kSGFuZGxlQ2xvc2VkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rp
b246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxU
cmFuc2FjdGlvbjo6cnVuU3RhdGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6Y2xlYW51cEFuZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6Y2xlYW51cEFmdGVyVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpoYW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3IpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6Y29tcHV0ZU5leHRTdGF0ZUFu
ZENsZWFudXBJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzaG91bGRFeGVjdXRlU3Rh
dGVtZW50IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpoYXNXcml0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6dHJhbnNh
Y3Rpb25JblByb2dyZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6
c3RlcCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpTUUxpdGVUcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6YmVnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OmNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxp
dGVUcmFuc2FjdGlvbjo6cm9sbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNh
Y3Rpb246Ondhc1JvbGxlZEJhY2tCeVNRTGl0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVUcmFuc2FjdGlvbjo6c3RvcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxp
dGVUcmFuc2FjdGlvbjo6d2FzUm9sbGVkQmFja0J5U3FsaXRlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaDoKKwogMjAyMS0wNy0wOSAg
QWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBOZWdh
dGl2ZSBwYWRkaW5nIHZhbHVlcyBhcmUgaW52YWxpZCAoaW5saW5lIGJveCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
YWMyOWE2MjEzODE4MGYwM2U4ZDMwMWMxODU2YzJjMzdjYzY1M2UwMy4uMmEyOWNmZTk2ZTZmNzc2
NzU4ZjliYmQwYjA5ZjFmOWYxZGU5MmJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MS0wNy0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXR1
cm4gZXJyb3IgZm9yIHN0YXRlbWVudCBpZiB0aGUgdHJhbnNhY3Rpb24gaXQgYmVsb25ncyB0byBp
cyByb2xsZWQgYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI3NzcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmVuc3VyZUFuZE1ha2VEb21haW5MaXN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0
aW9uc2hpcHMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6bWVyZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJh
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5k
ZmF0aGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6c2V0SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRWZXJ5
UHJldmFsZW50UmVzb3VyY2UpOgorCiAyMDIxLTA3LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgVmFsaWRhdGUga2V5cyBpbiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6ZmluZE5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXMoKSBiZWZvcmUg
dXNpbmcgdGhlbSB3aXRoIEhhc2hNYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggOWFkMTFkNDA4OGY2NjM3N2RiMWRiYzA5ZGM1MTA1
ZTNmOTE2ODBjOS4uNWRiZDQ0M2YzOTIxZjIwOTA0ZmE1MDVjOTdjZTUwYjc0ZWE1ZGMzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAg
LTUwOSw3ICs1MDksNyBAQCB2b2lkIERhdGFiYXNlOjpzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0
cmluZyYgYWN0dWFsVmVyc2lvbikKIAogYm9vbCBEYXRhYmFzZTo6Z2V0QWN0dWFsVmVyc2lvbkZv
clRyYW5zYWN0aW9uKFN0cmluZyAmYWN0dWFsVmVyc2lvbikKIHsKLSAgICBBU1NFUlQobV9zcWxp
dGVEYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKG1fc3FsaXRl
RGF0YWJhc2Uuc2hvdWxkRXhlY3V0ZVN0YXRlbWVudCgpKTsKIAogICAgIC8vIE5vdGU6IEluIG11
bHRpLXByb2Nlc3MgYnJvd3NlcnMgdGhlIGNhY2hlZCB2YWx1ZSBtYXkgYmUgaW5hY2N1cmF0ZS4K
ICAgICAvLyBTbyB3ZSByZXRyaWV2ZSB0aGUgdmFsdWUgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHVw
ZGF0ZSB0aGUgY2FjaGVkIHZhbHVlIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCmluZGV4IDdhMmM5YTczNDZhZjEw
YjdmZWE3MTU2NTk5MTkxMzExNTM4ODhiNzcuLjgzOTlkMDNlMjMyMDA3Yjg1MjIxNmMwMjVmMmM5
YzBkYTMzY2RmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCkBAIC0yMDUsMTAgKzIwNSw3IEBAIHZvaWQgU1FMVHJh
bnNhY3Rpb246OmNoZWNrQW5kSGFuZGxlQ2xvc2VkRGF0YWJhc2UoKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBUaGUgY3VycmVudCBTUUxpdGUgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIHN0b3Bw
ZWQsIGFzIHdlbGwKLSAgICBpZiAobV9zcWxpdGVUcmFuc2FjdGlvbikgewotICAgICAgICBtX3Nx
bGl0ZVRyYW5zYWN0aW9uLT5zdG9wKCk7Ci0gICAgICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBu
dWxscHRyOwotICAgIH0KKyAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsKIAogICAg
IGlmIChtX2xvY2tBY3F1aXJlZCkKICAgICAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25Db29y
ZGluYXRvcigpLT5yZWxlYXNlTG9jaygqdGhpcyk7CkBAIC0yMjksNyArMjI2LDcgQEAgdm9pZCBT
UUxUcmFuc2FjdGlvbjo6YWNxdWlyZUxvY2soKQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uOjpvcGVu
VHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQogewotICAgIEFTU0VSVCghbV9kYXRhYmFzZS0+c3Fs
aXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKCFtX2Rh
dGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmhhc1dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzKCkp
OwogICAgIEFTU0VSVChtX2xvY2tBY3F1aXJlZCk7CiAKICAgICBMT0coU3RvcmFnZUFQSSwgIk9w
ZW5pbmcgYW5kIHByZWZsaWdodGluZyB0cmFuc2FjdGlvbiAlcCIsIHRoaXMpOwpAQCAtMjU4LDcg
KzI1NSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdo
dCgpCiAKICAgICAvLyBTcGVjIDQuMy4yLjErMjogT3BlbiBhIHRyYW5zYWN0aW9uIHRvIHRoZSBk
YXRhYmFzZSwganVtcGluZyB0byB0aGUgZXJyb3IgY2FsbGJhY2sgaWYgdGhhdCBmYWlscwogICAg
IGlmICghbV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIEFTU0VS
VCghbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7
CisgICAgICAgIEFTU0VSVCghbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5oYXNXcml0ZVRy
YW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FM
RXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAidW5hYmxlIHRvIGJlZ2luIHRy
YW5zYWN0aW9uIiwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwgbV9k
YXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1fc3Fs
aXRlVHJhbnNhY3Rpb24gPSBudWxscHRyOwogCkBAIC0zMTMsNyArMzEwLDcgQEAgdm9pZCBTUUxU
cmFuc2FjdGlvbjo6cnVuU3RhdGVtZW50cygpCiAgICAgLy8gSWYgdGhlcmUgaXMgYSBzZXJpZXMg
b2Ygc3RhdGVtZW50cyBxdWV1ZWQgdXAgdGhhdCBhcmUgYWxsIHN1Y2Nlc3NmdWwgYW5kIGhhdmUg
bm8gYXNzb2NpYXRlZAogICAgIC8vIFNRTFN0YXRlbWVudENhbGxiYWNrIG9iamVjdHMsIHRoZW4g
d2UgY2FuIGJ1cm4gdGhyb3VnaCB0aGUgcXVldWUKICAgICBkbyB7Ci0gICAgICAgIGlmIChtX3No
b3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudCAmJiAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+d2FzUm9s
bGVkQmFja0J5U3FsaXRlKCkpIHsKKyAgICAgICAgaWYgKG1fc2hvdWxkUmV0cnlDdXJyZW50U3Rh
dGVtZW50ICYmICFtX3NxbGl0ZVRyYW5zYWN0aW9uLT53YXNSb2xsZWRCYWNrQnlTUUxpdGUoKSkg
ewogICAgICAgICAgICAgbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQgPSBmYWxzZTsKICAg
ICAgICAgICAgIC8vIEZJWE1FIC0gQW5vdGhlciBwbGFjZSB0aGF0IG5lZWRzIGZpeGluZyB1cCBh
ZnRlciA8cmRhcjovL3Byb2JsZW0vNTYyODQ2OD4gaXMgYWRkcmVzc2VkLgogICAgICAgICAgICAg
Ly8gU2VlIDo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KCkgZm9yIGRpc2N1c3Npb24KQEAg
LTM0OSw3ICszNDYsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjbGVhbnVwQW5kVGVybWluYXRl
KCkKIAogICAgIC8vIFNwZWMgNC4zLjIuOTogRW5kIHRyYW5zYWN0aW9uIHN0ZXBzLiBUaGVyZSBp
cyBubyBuZXh0IHN0ZXAuCiAgICAgTE9HKFN0b3JhZ2VBUEksICJUcmFuc2FjdGlvbiAlcCBpcyBj
b21wbGV0ZVxuIiwgdGhpcyk7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFz
ZSgpLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPnNx
bGl0ZURhdGFiYXNlKCkuaGFzV3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICAv
LyBQaGFzZSA1IGNsZWFudXAuIFNlZSBjb21tZW50IG9uIHRoZSBTUUxUcmFuc2FjdGlvbiBsaWZl
LWN5Y2xlIGFib3ZlLgogICAgIG1fYmFja2VuZC5kb0NsZWFudXAoKTsKQEAgLTM2NiwxNCArMzYz
LDE0IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmNsZWFudXBBZnRlclRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjaygpCiAgICAgICAgIC8vIFNwZWMgNC4zLjIuMTA6IFJvbGxiYWNrIHRoZSB0cmFuc2Fj
dGlvbi4KICAgICAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+cm9sbGJhY2soKTsKIAotICAgICAg
ICBBU1NFUlQoIW1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkudHJhbnNhY3Rpb25JblByb2dy
ZXNzKCkpOworICAgICAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkuaGFz
V3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAgICAgICAgIG1fc3FsaXRlVHJhbnNhY3Rp
b24gPSBudWxscHRyOwogICAgIH0KICAgICBtX2RhdGFiYXNlLT5lbmFibGVBdXRob3JpemVyKCk7
CiAKICAgICByZWxlYXNlT3JpZ2luTG9ja0lmTmVlZGVkKCk7CiAKLSAgICBBU1NFUlQoIW1fZGF0
YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOworICAgIEFT
U0VSVCghbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5oYXNXcml0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzcygpKTsKIAogICAgIGNsZWFudXBBbmRUZXJtaW5hdGUoKTsKIH0KQEAgLTU2MSw3ICs1
NTgsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpoYW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3Io
KQogewogICAgIC8vIFNwZWMgNC4zLjIuNi42OiBlcnJvciAtIENhbGwgdGhlIHN0YXRlbWVudCdz
IGVycm9yIGNhbGxiYWNrLCBidXQgaWYgdGhlcmUgd2FzIG5vIGVycm9yIGNhbGxiYWNrLAogICAg
IC8vIG9yIHRoZSB0cmFuc2FjdGlvbiB3YXMgcm9sbGVkIGJhY2ssIGp1bXAgdG8gdGhlIHRyYW5z
YWN0aW9uIGVycm9yIGNhbGxiYWNrCi0gICAgaWYgKG1fY3VycmVudFN0YXRlbWVudC0+aGFzU3Rh
dGVtZW50RXJyb3JDYWxsYmFjaygpICYmICFtX3NxbGl0ZVRyYW5zYWN0aW9uLT53YXNSb2xsZWRC
YWNrQnlTcWxpdGUoKSkgeworICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1lbnQtPmhhc1N0YXRlbWVu
dEVycm9yQ2FsbGJhY2soKSAmJiAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+d2FzUm9sbGVkQmFja0J5
U1FMaXRlKCkpIHsKICAgICAgICAgc2NoZWR1bGVDYWxsYmFjaygmU1FMVHJhbnNhY3Rpb246OmRl
bGl2ZXJTdGF0ZW1lbnRDYWxsYmFjayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uQmFja2VuZC5jcHAKaW5kZXggNjJiMjdjZGIzMzI1MTRkNmE0OTcxMGEwNzFkNDExNzVhNzBk
YmRkZS4uODhmNThmY2VkMzkxYWZkZGIwYTg4NzhiOTUyMDRiNDIwNGUzMzk1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kLmNwcApAQCAtNDQ5LDEwICs0NDksNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9u
QmFja2VuZDo6Y29tcHV0ZU5leHRTdGF0ZUFuZENsZWFudXBJZk5lZWRlZCgpCiAgICAgTE9HKFN0
b3JhZ2VBUEksICJEYXRhYmFzZSB3YXMgc3RvcHBlZCBvciBpbnRlcnJ1cHRlZCAtIGNhbmNlbGxp
bmcgd29yayBmb3IgdGhpcyB0cmFuc2FjdGlvbiIpOwogCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FM
aXRlIHRyYW5zYWN0aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCi0gICAgaWYgKG1fZnJv
bnRlbmQubV9zcWxpdGVUcmFuc2FjdGlvbikgewotICAgICAgICBtX2Zyb250ZW5kLm1fc3FsaXRl
VHJhbnNhY3Rpb24tPnN0b3AoKTsKLSAgICAgICAgbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0
aW9uID0gbnVsbHB0cjsKLSAgICB9CisgICAgbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9u
ID0gbnVsbHB0cjsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgZnJvbnRlbmQgc3RhdGUgbWFjaGlu
ZS4gVGhpcyBhbHNvIGdldHMgdGhlIGZyb250ZW5kIHRvCiAgICAgLy8gY2FsbCBjb21wdXRlTmV4
dFN0YXRlQW5kQ2xlYW51cElmTmVlZGVkKCkgYW5kIGNsZWFyIGl0cyB3cmFwcGVycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggYTExMTAy
NTY4MWU0NjkzMTIzZmJjOGNiNDkwYTgzNzBkYjM5YzE4My4uM2YwYWY2ZDgyY2E2ZDIyMGM1M2Fj
NmMzNDBiZTIxOTI0ZDRjOWU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRGF0
YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IlNRTGl0ZVN0YXRlbWVudC5oIgorI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCiAjaW5j
bHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3FsaXRlMy5oPgogI2luY2x1ZGUgPHRocmVhZD4KQEAg
LTczMyw0ICs3MzQsOSBAQCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50
PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnQoQQogICAgIHJldHVybiBVbmlx
dWVSZWY8U1FMaXRlU3RhdGVtZW50PigqbmV3IFNRTGl0ZVN0YXRlbWVudCgqdGhpcywgc3FsU3Rh
dGVtZW50LnZhbHVlKCkpKTsKIH0KIAorYm9vbCBTUUxpdGVEYXRhYmFzZTo6c2hvdWxkRXhlY3V0
ZVN0YXRlbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3dyaXRlVHJhbnNhY3Rpb25JblBy
b2dyZXNzIHx8ICFtX3dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzLT53YXNSb2xsZWRCYWNrQnlT
UUxpdGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCA0YjIyYzhmZTY4ZTM1ZmJkZDA5NzI1
ODY4YzRjOWEwZTVjYWIyY2YwLi44MGFmZmE2OGIxYzBiZjlkNzMwMGIzZmEwMGE5OGRkNjUzNmYx
MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApA
QCAtNzEsOCArNzEsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFs
bFRhYmxlcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBydW5WYWN1dW1Db21tYW5kKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgaW50IHJ1bkluY3JlbWVudGFsVmFjdXVtQ29tbWFuZCgpOwotICAg
IAotICAgIGJvb2wgdHJhbnNhY3Rpb25JblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV90cmFu
c2FjdGlvbkluUHJvZ3Jlc3M7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFNRTGl0
ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50U2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gcHJl
cGFyZVN0YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlcnkpOwpAQCAtMTYyLDYgKzE2MCw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIGluY3JlbWVudFN0YXRlbWVudENvdW50KCk7CiAgICAgdm9pZCBkZWNy
ZW1lbnRTdGF0ZW1lbnRDb3VudCgpOwogCisgICAgYm9vbCBoYXNXcml0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuICEhbV93cml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzczsg
fQorICAgIGJvb2wgc2hvdWxkRXhlY3V0ZVN0YXRlbWVudCgpIGNvbnN0OworCiBwcml2YXRlOgog
ICAgIHN0YXRpYyBpbnQgYXV0aG9yaXplckZ1bmN0aW9uKHZvaWQqLCBpbnQsIGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKIApAQCAtMTc1LDcgKzE3
Niw3IEBAIHByaXZhdGU6CiAgICAgc3FsaXRlMyogbV9kYiB7IG51bGxwdHIgfTsKICAgICBpbnQg
bV9wYWdlU2l6ZSB7IC0xIH07CiAgICAgCi0gICAgYm9vbCBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVz
cyB7IGZhbHNlIH07CisgICAgV2Vha1B0cjxTUUxpdGVUcmFuc2FjdGlvbj4gbV93cml0ZVRyYW5z
YWN0aW9uSW5Qcm9ncmVzczsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9zaGFyYWJs
ZSB7IGZhbHNlIH07CiAgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG1fc3RhdGVtZW50Q291bnQg
eyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3Rh
dGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQu
Y3BwCmluZGV4IGIwODQ5ZTZmODA4Y2EzODBiMDhjNjI3NGIwNGQxNDljYzAzM2MwODcuLmVhYTJj
ZGQyYTliZTg4MzUyNTJhNTU1ZWMxMWIwM2NlNGZjMmIyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC02Niw2ICs2NiwxMSBAQCBp
bnQgU1FMaXRlU3RhdGVtZW50OjpzdGVwKCkKIHsKICAgICBMb2NrZXIgZGF0YWJhc2VMb2NrIHsg
bV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkgfTsKIAorICAgIGlmICghbV9kYXRhYmFzZS5zaG91
bGRFeGVjdXRlU3RhdGVtZW50KCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0
YWJhc2UsICJTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXA6IENhbm5vdCBzdGVwICV7cHVibGljfXMgYmVj
YXVzZSB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkIiwgc3FsaXRlM19zcWwobV9zdGF0ZW1lbnQpKTsK
KyAgICAgICAgcmV0dXJuIFNRTElURV9BQk9SVDsKKyAgICB9CisKICAgICBpbnQgZXJyb3IgPSBz
cWxpdGUzX3N0ZXAobV9zdGF0ZW1lbnQpOwogICAgIGlmIChlcnJvciAhPSBTUUxJVEVfRE9ORSAm
JiBlcnJvciAhPSBTUUxJVEVfUk9XKQogICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJzcWxpdGUz
X3N0ZXAgZmFpbGVkICglaSlcbkVycm9yIC0gJXMiLCBlcnJvciwgc3FsaXRlM19lcnJtc2cobV9k
YXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCmluZGV4IDA4ZTllYjczZGIyNGEwOTBhN2EwODBj
MWE4MTU2OTMxOGU1YTI4NTkuLmM5MTJhZGI2NWM0YjM2ZmZkNWMwZGVhZjVhMWFjMmU0NDcyNmJj
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0
aW9uLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgi
CiAKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgorI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVu
dC5oIgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuaCIKQEAgLTM2LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTUUxp
dGVUcmFuc2FjdGlvbjo6U1FMaXRlVHJhbnNhY3Rpb24oU1FMaXRlRGF0YWJhc2UmIGRiLCBib29s
IHJlYWRPbmx5KQogICAgIDogbV9kYihkYikKLSAgICAsIG1faW5Qcm9ncmVzcyhmYWxzZSkKICAg
ICAsIG1fcmVhZE9ubHkocmVhZE9ubHkpCiB7CiB9CkBAIC00Nyw3NCArNDcsNzggQEAgU1FMaXRl
VHJhbnNhY3Rpb246On5TUUxpdGVUcmFuc2FjdGlvbigpCiAgICAgICAgIHJvbGxiYWNrKCk7CiB9
CiAKLXZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKCkKK2ludCBTUUxpdGVUcmFuc2FjdGlv
bjo6YmVnaW4oKQogewotICAgIGlmICghbV9pblByb2dyZXNzKSB7Ci0gICAgICAgIEFTU0VSVCgh
bV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk7Ci0gICAgICAgIC8vIENhbGwgQkVHSU4gSU1N
RURJQVRFIGZvciBhIHdyaXRlIHRyYW5zYWN0aW9uIHRvIGFjcXVpcmUKLSAgICAgICAgLy8gYSBS
RVNFUlZFRCBsb2NrIG9uIHRoZSBEQiBmaWxlLiBPdGhlcndpc2UsIGFub3RoZXIgd3JpdGUKLSAg
ICAgICAgLy8gdHJhbnNhY3Rpb24gKG9uIGFub3RoZXIgY29ubmVjdGlvbikgY291bGQgbWFrZSBj
aGFuZ2VzCi0gICAgICAgIC8vIHRvIHRoZSBzYW1lIERCIGZpbGUgYmVmb3JlIHRoaXMgdHJhbnNh
Y3Rpb24gZ2V0cyB0byBleGVjdXRlCi0gICAgICAgIC8vIGFueSBzdGF0ZW1lbnRzLiBJZiB0aGF0
IGhhcHBlbnMsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBmYWlsLgotICAgICAgICAvLyBodHRwOi8v
d3d3LnNxbGl0ZS5vcmcvbGFuZ190cmFuc2FjdGlvbi5odG1sCi0gICAgICAgIC8vIGh0dHA6Ly93
d3cuc3FsaXRlLm9yZy9sb2NraW5ndjMuaHRtbCNsb2NraW5nCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlv
bkluUHJvZ3Jlc3NDb3VudCgpOwotI2VuZGlmCi0gICAgICAgIGlmIChtX3JlYWRPbmx5KQotICAg
ICAgICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVHSU4iX3MpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21t
YW5kKCJCRUdJTiBJTU1FRElBVEUiX3MpOwotICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblBy
b2dyZXNzID0gbV9pblByb2dyZXNzOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAg
IGlmICghbV9pblByb2dyZXNzKQotICAgICAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpk
ZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwotI2VuZGlmCi0gICAgfQotfQor
ICAgIGlmIChtX2luUHJvZ3Jlc3MpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisgICAg
bV9pblByb2dyZXNzID0gdHJ1ZTsKIAotdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6Y29tbWl0KCkK
LXsKLSAgICBpZiAobV9pblByb2dyZXNzKSB7Ci0gICAgICAgIEFTU0VSVChtX2RiLm1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzKTsKLSAgICAgICAgbV9pblByb2dyZXNzID0gIW1fZGIuZXhlY3V0ZUNv
bW1hbmQoIkNPTU1JVCJfcyk7Ci0gICAgICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3Mg
PSBtX2luUHJvZ3Jlc3M7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgaWYgKCFt
X2luUHJvZ3Jlc3MpCi0gICAgICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVu
dFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7CisgICAgU1FMaXRlRGF0YWJhc2VUcmFja2Vy
OjppbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwogI2VuZGlmCisKKyAgICAv
LyBDYWxsIEJFR0lOIElNTUVESUFURSBmb3IgYSB3cml0ZSB0cmFuc2FjdGlvbiB0byBhY3F1aXJl
CisgICAgLy8gYSBSRVNFUlZFRCBsb2NrIG9uIHRoZSBEQiBmaWxlLiBPdGhlcndpc2UsIGFub3Ro
ZXIgd3JpdGUKKyAgICAvLyB0cmFuc2FjdGlvbiAob24gYW5vdGhlciBjb25uZWN0aW9uKSBjb3Vs
ZCBtYWtlIGNoYW5nZXMKKyAgICAvLyB0byB0aGUgc2FtZSBEQiBmaWxlIGJlZm9yZSB0aGlzIHRy
YW5zYWN0aW9uIGdldHMgdG8gZXhlY3V0ZQorICAgIC8vIGFueSBzdGF0ZW1lbnRzLiBJZiB0aGF0
IGhhcHBlbnMsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBmYWlsLgorICAgIC8vIGh0dHA6Ly93d3cu
c3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwKKyAgICAvLyBodHRwOi8vd3d3LnNxbGl0
ZS5vcmcvbG9ja2luZ3YzLmh0bWwjbG9ja2luZworICAgIEFTQ0lJTGl0ZXJhbCBzcWxTdHJpbmcg
PSBtX3JlYWRPbmx5ID8gIkJFR0lOIl9zIDogIkJFR0lOIElNTUVESUFURSJfczsKKyAgICBhdXRv
IHNxbCA9IG1fZGIucHJlcGFyZVN0YXRlbWVudChzcWxTdHJpbmcpOworICAgIGludCByZXN1bHQg
PSBzcWwgPyBzcWwtPnN0ZXAoKSA6IHNxbC5lcnJvcigpOworCisgICAgaWYgKCFtX3JlYWRPbmx5
KSB7CisgICAgICAgIEFTU0VSVCghbV9kYi5tX3dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzKTsK
KyAgICAgICAgbV9kYi5tX3dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzID0gbWFrZVdlYWtQdHIo
dGhpcyk7CiAgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTUUxpdGVUcmFu
c2FjdGlvbjo6cm9sbGJhY2soKQoraW50IFNRTGl0ZVRyYW5zYWN0aW9uOjpjb21taXQoKQogewot
ICAgIC8vIFdlIGRvIG5vdCB1c2UgdGhlICdtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21t
YW5kKCJST0xMQkFDSyIpJyBjb25zdHJ1Y3QgaGVyZSwKLSAgICAvLyBiZWNhdXNlIG1faW5Qcm9n
cmVzcyBzaG91bGQgYWx3YXlzIGJlIHNldCB0byBmYWxzZSBhZnRlciBhIFJPTExCQUNLLCBhbmQK
LSAgICAvLyBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyIpIGNhbiBzb21ldGltZXMgaGFy
bWxlc3NseSBmYWlsLCB0aHVzIHJldHVybmluZwotICAgIC8vIGEgbm9uLXplcm8vdHJ1ZSByZXN1
bHQgKGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwpLgotICAgIGlm
IChtX2luUHJvZ3Jlc3MpIHsKLSAgICAgICAgQVNTRVJUKG1fZGIubV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3MpOwotICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyJfcyk7Ci0gICAg
ICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblBy
b2dyZXNzID0gZmFsc2U7CisgICAgaWYgKCFtX2luUHJvZ3Jlc3MpCisgICAgICAgIHJldHVybiBT
UUxJVEVfRVJST1I7CisgICAgbV9pblByb2dyZXNzID0gZmFsc2U7CisgICAgCisgICAgYXV0byBz
cWwgPSBtX2RiLnByZXBhcmVTdGF0ZW1lbnQoIkNPTU1JVCJfcyk7CisgICAgaW50IHJlc3VsdCA9
IHNxbCA/IHNxbC0+c3RlcCgpIDogc3FsLmVycm9yKCk7CisKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9u
SW5Qcm9ncmVzc0NvdW50KCk7CisgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRU
cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwogI2VuZGlmCisKKyAgICBpZiAoIW1fcmVhZE9u
bHkpIHsKKyAgICAgICAgQVNTRVJUKG1fZGIubV93cml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9
IHRoaXMpOworICAgICAgICBtX2RiLm1fd3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBudWxs
cHRyOwogICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgU1FMaXRlVHJhbnNh
Y3Rpb246OnN0b3AoKQoraW50IFNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xsYmFjaygpCiB7Ci0gICAg
aWYgKG1faW5Qcm9ncmVzcykgewotICAgICAgICBtX2luUHJvZ3Jlc3MgPSBmYWxzZTsKLSAgICAg
ICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIGlmICghbV9pblBy
b2dyZXNzKQorICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOworICAgIG1faW5Qcm9ncmVzcyA9
IGZhbHNlOworCisgICAgYXV0byBzcWwgPSBtX2RiLnByZXBhcmVTdGF0ZW1lbnQoIlJPTExCQUNL
Il9zKTsKKyAgICBpbnQgcmVzdWx0ID0gIHNxbCA/IHNxbC0+c3RlcCgpIDogc3FsLmVycm9yKCk7
CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNr
ZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7CisgICAgU1FMaXRlRGF0
YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwogI2Vu
ZGlmCisKKyAgICBpZiAoIW1fcmVhZE9ubHkpIHsKKyAgICAgICAgQVNTRVJUKG1fZGIubV93cml0
ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRoaXMpOworICAgICAgICBtX2RiLm1fd3JpdGVUcmFu
c2FjdGlvbkluUHJvZ3Jlc3MgPSBudWxscHRyOwogICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLWJvb2wgU1FMaXRlVHJhbnNhY3Rpb246Ondhc1JvbGxlZEJhY2tCeVNxbGl0ZSgpIGNv
bnN0Citib29sIFNRTGl0ZVRyYW5zYWN0aW9uOjp3YXNSb2xsZWRCYWNrQnlTUUxpdGUoKSBjb25z
dAogewogICAgIC8vIEFjY29yZGluZyB0byBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvYzNyZWYvZ2V0
X2F1dG9jb21taXQuaHRtbCwKICAgICAvLyB0aGUgYXV0by1jb21taXQgZmxhZyBzaG91bGQgYmUg
b2ZmIGluIHRoZSBtaWRkbGUgb2YgYSB0cmFuc2FjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaAppbmRleCBiOWQxZjc5NDBjY2I2MmFiZjQz
Zjk3NWYzMTZlNzgxYTI2ODcyYjczLi41ZDM2OWVlYWU1ZWUzYTU3OGRhODU5ODY4MjJmNzhlMDVi
MzQ1Y2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJh
bnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNh
Y3Rpb24uaApAQCAtMzMsMjUgKzMzLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U1FMaXRlRGF0YWJhc2U7CiAKLWNsYXNzIFNRTGl0ZVRyYW5zYWN0aW9uIHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShTUUxpdGVUcmFuc2FjdGlvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworY2xhc3MgU1FMaXRlVHJhbnNhY3Rpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U1FMaXRl
VHJhbnNhY3Rpb24+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTUUxpdGVUcmFuc2FjdGlv
bik7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgU1FMaXRlVHJhbnNhY3Rpb24oU1FMaXRlRGF0YWJhc2UmIGRiLCBib29sIHJlYWRPbmx5
ID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVUcmFuc2FjdGlvbigpOwogICAg
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW4oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNvbW1pdCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcm9sbGJhY2soKTsKLSAgICB2
b2lkIHN0b3AoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmVnaW4oKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBpbnQgY29tbWl0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IHJvbGxiYWNrKCk7
CiAgICAgCiAgICAgYm9vbCBpblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9pblByb2dyZXNz
OyB9Ci0gICAgYm9vbCB3YXNSb2xsZWRCYWNrQnlTcWxpdGUoKSBjb25zdDsKKyAgICBib29sIHdh
c1JvbGxlZEJhY2tCeVNRTGl0ZSgpIGNvbnN0OwogCiAgICAgU1FMaXRlRGF0YWJhc2UmIGRhdGFi
YXNlKCkgY29uc3QgeyByZXR1cm4gbV9kYjsgfQogCiBwcml2YXRlOgogICAgIFNRTGl0ZURhdGFi
YXNlJiBtX2RiOwotICAgIGJvb2wgbV9pblByb2dyZXNzOworICAgIGJvb2wgbV9pblByb2dyZXNz
IHsgZmFsc2UgfTsKICAgICBib29sIG1fcmVhZE9ubHk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCBmMmIwNjdl
YTRkZDA3OWJkZDdmN2FmNzVkOGMyYTBiMzdhZTIxNTJmLi4xYzkwNGIwMDYyNDkzM2JjMGU5MzU5
NGFmN2UyYjI0OGEwNzI4ZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTEwMzgsNyArMTAzOCw3IEBAIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21h
aW5JRChjb25zdCBSZWdpCiAKIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6ZW5zdXJlQW5kTWFrZURvbWFpbkxpc3QoY29uc3QgU1FMaXRlVHJhbnNhY3Rpb24mLCBj
b25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluTGlzdCkKIHsKLSAgICBBU1NF
UlQobV9kYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKG1fZGF0
YWJhc2UuaGFzV3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChhdXRvJiB0b3BGcmFtZVJlc291cmNlIDogZG9tYWluTGlz
dCkgewpAQCAtMTA3OCw3ICsxMDc4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdChjb25zdCBTUUwKIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9u
c2hpcHMoY29uc3QgU1FMaXRlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJiBsb2FkU3RhdGlzdGljcykKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBBU1NFUlQobV9kYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3Mo
KSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaGFzV3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3Mo
KSk7CiAKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluSUQgPSBkb21haW5JRChsb2FkU3RhdGlz
dGljcy5yZWdpc3RyYWJsZURvbWFpbik7CiAgICAgCkBAIC0xMTI4LDcgKzExMjgsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwb3B1bGF0ZUZyb21NZW1vcnlT
dG9yZShjb25zdCBSZXNvdXJjZQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6bWVyZ2UoY29uc3QgU1FMaXRlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQqIGN1cnJlbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IG90aGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVCht
X2RhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFz
ZS5oYXNXcml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKIAogICAgIGF1dG8gY3VycmVudFJl
Z2lzdHJhYmxlRG9tYWluID0gY3VycmVudC0+Y29sdW1uVGV4dChSZWdpc3RyYWJsZURvbWFpbklu
ZGV4KTsKICAgICBhdXRvIGN1cnJlbnRMYXN0U2VlbiA9IGN1cnJlbnQtPmNvbHVtbkRvdWJsZShM
YXN0U2VlbkluZGV4KTsKQEAgLTE2NDksNyArMTY0OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYm
IHN1CiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3Jh
Z2VBY2Nlc3NJbnRlcm5hbChjb25zdCBTUUxpdGVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5v
d09yRWFybGllciwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQobV9kYXRhYmFzZS50cmFu
c2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaGFzV3JpdGVUcmFu
c2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICBpZiAoc3ViRnJhbWVEb21haW4gPT0gdG9wRnJh
bWVEb21haW4pIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQ6Olllcyk7CkBAIC0xOTE4LDcgKzE5MTgsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJs
ZQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50
ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb24mLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJU
KG1fZGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOworICAgIEFTU0VSVChtX2RhdGFi
YXNlLmhhc1dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwogCiAgICAgYXV0byB0YXJnZXRS
ZXN1bHQgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb21h
aW4pOwogICAgIGlmICghdGFyZ2V0UmVzdWx0LnNlY29uZCkgewpAQCAtMTk1NSw3ICsxOTU1LDcg
QEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmwKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpTUUxpdGVU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4s
IE9wZXJhdGluZ0RhdGVzV2luZG93IG9wZXJhdGluZ0RhdGVzV2luZG93KQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVChtX2RhdGFiYXNlLnRyYW5zYWN0aW9u
SW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS5oYXNXcml0ZVRyYW5zYWN0aW9u
SW5Qcm9ncmVzcygpKTsKIAogICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVk
U3RhdGVtZW50KG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LCBoYWRVc2VySW50ZXJhY3Rp
b25RdWVyeSwgImhhc0hhZFVzZXJJbnRlcmFjdGlvbiJfcyk7CiAgICAgaWYgKCFzY29wZWRTdGF0
ZW1lbnQKQEAgLTE5ODQsNyArMTk4NCw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpTCiB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJj
ZShjb25zdCBTUUxpdGVUcmFuc2FjdGlvbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW4sIFJlc291cmNlTG9hZFByZXZhbGVuY2UgbmV3UHJldmFsZW5jZSkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQobV9kYXRhYmFzZS50cmFuc2FjdGlvbklu
UHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaGFzV3JpdGVUcmFuc2FjdGlvbklu
UHJvZ3Jlc3MoKSk7CiAKICAgICBpZiAoc2hvdWxkU2tpcChkb21haW4pKQogICAgICAgICByZXR1
cm47CkBAIC0yMTY2LDcgKzIxNjYsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYQogdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZChjb25z
dCBXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIGJvb2wgdmFsdWUpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgQVNTRVJUKG1fZGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOworICAgIEFTU0VS
VChtX2RhdGFiYXNlLmhhc1dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwogCiAgICAgYXV0
byByZXN1bHQgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihk
b21haW4pOwogICAgIGlmICghcmVzdWx0LnNlY29uZCkgewpAQCAtMjE4Nyw3ICsyMTg3LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJl
ZChjb25zdCBXZWJDb3JlOjpTUUxpdGUKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnNldElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwoY29uc3Qg
U1FMaXRlVHJhbnNhY3Rpb24mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBib29s
IHZhbHVlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVCht
X2RhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFz
ZS5oYXNXcml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKIAogICAgIGF1dG8gcmVzdWx0ID0g
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZG9tYWluKTsKICAg
ICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKQEAgLTI4NDMsNyArMjg0Myw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0
IFJlZ2lzdHJhYmxlCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpz
ZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTUUxpdGVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNz
KCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlLmhhc1dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNz
KCkpOwogCiAgICAgaWYgKHNob3VsZFNraXAoZG9tYWluKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
Mjg3NSw3ICsyODc1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6c2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHIKIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25z
dCBTUUxpdGVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJU
KG1fZGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOworICAgIEFTU0VSVChtX2RhdGFi
YXNlLmhhc1dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwogCiAgICAgaWYgKHNob3VsZFNr
aXAoZG9tYWluKSkKICAgICAgICAgcmV0dXJuOwo=
</data>
<flag name="commit-queue"
          id="455408"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433231</attachid>
            <date>2021-07-09 12:09:45 -0700</date>
            <delta_ts>2021-07-09 12:27:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227771-20210709120944.patch</filename>
            <type>text/plain</type>
            <size>25795</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWJmMjdmZDE2YzRlMjRm
ZGVjMGYxODhhMjhiMzZlMzk3NWIzNzFmMS4uMDgxNGI3OWE1MzgyMzM2Y2UzODg5YjIxYzdlMjc4
NTQyNjgxZWQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTA3LTA5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJldHVybiBlcnJvciBmb3Ig
c3RhdGVtZW50IGlmIHRoZSB0cmFuc2FjdGlvbiBpdCBiZWxvbmdzIHRvIGlzIHJvbGxlZCBiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3NzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIFNR
TGl0ZVRyYW5zYWN0aW9uIGluLXByb2dyZXNzIGJldHdlZW4gZXhwbGljaXQgYmVnaW4oKSBhbmQg
Y29tbWl0KCkvcm9sbGJhY2soKS4gQW4gaW4tcHJvZ3Jlc3Mgd3JpdGUgCisgICAgICAgIHRyYW5z
YWN0aW9uIGlzIG1hcmtlZCB2YWxpZCBpZiBpdCdzIG5vdCBhYm9ydGVkIGJ5IFNRTGl0ZSAoYXV0
by1jb21taXQgZm9yIGRhdGFiYXNlIGlzIG9mZikuIEZvciBzdGF0ZW1lbnRzIAorICAgICAgICBl
eGVjdXRlZCBkdXJpbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24sIHdlIHVzdWFsbHkgd2FudCB0
aGVtIHRvIGJlIHBhcnQgb2YgdHJhbnNhY3Rpb24sIHNvIHdlIHNob3VsZCBhdm9pZCAKKyAgICAg
ICAgZXhlY3V0aW5nIHRoZW0gaWYgdHJhbnNhY3Rpb24gaXMgYWxyZWFkeSBpbnZhbGlkLiBPdGhl
cndpc2UsIHRoZXkgbWF5IGJlIGV4ZWN1dGVkIGluIGEgc2VwYXJhdGUgaW1wbGljaXQgCisgICAg
ICAgIHRyYW5zYWN0aW9uLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Z2V0QWN0dWFsVmVyc2lvbkZvclRy
YW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
LmNwcDogVGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgc3RvcHBlZCBpbiBkZXN0cnVjdG9yIG9mIFNR
TGl0ZVRyYW5zYWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmNoZWNr
QW5kSGFuZGxlQ2xvc2VkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rp
b246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxU
cmFuc2FjdGlvbjo6cnVuU3RhdGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6Y2xlYW51cEFuZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6Y2xlYW51cEFmdGVyVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpoYW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3IpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6Y29tcHV0ZU5leHRTdGF0ZUFu
ZENsZWFudXBJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzaG91bGRFeGVjdXRlU3Rh
dGVtZW50IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpoYXNXcml0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6dHJhbnNh
Y3Rpb25JblByb2dyZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6
c3RlcCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpTUUxpdGVUcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6YmVnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OmNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxp
dGVUcmFuc2FjdGlvbjo6cm9sbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNh
Y3Rpb246Ondhc1JvbGxlZEJhY2tCeVNRTGl0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVUcmFuc2FjdGlvbjo6c3RvcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxp
dGVUcmFuc2FjdGlvbjo6d2FzUm9sbGVkQmFja0J5U3FsaXRlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaDoKKwogMjAyMS0wNy0wOSAg
QWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBOZWdh
dGl2ZSBwYWRkaW5nIHZhbHVlcyBhcmUgaW52YWxpZCAoaW5saW5lIGJveCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
YWMyOWE2MjEzODE4MGYwM2U4ZDMwMWMxODU2YzJjMzdjYzY1M2UwMy4uMmEyOWNmZTk2ZTZmNzc2
NzU4ZjliYmQwYjA5ZjFmOWYxZGU5MmJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MS0wNy0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXR1
cm4gZXJyb3IgZm9yIHN0YXRlbWVudCBpZiB0aGUgdHJhbnNhY3Rpb24gaXQgYmVsb25ncyB0byBp
cyByb2xsZWQgYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI3NzcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmVuc3VyZUFuZE1ha2VEb21haW5MaXN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0
aW9uc2hpcHMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6bWVyZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJh
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5k
ZmF0aGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6c2V0SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRWZXJ5
UHJldmFsZW50UmVzb3VyY2UpOgorCiAyMDIxLTA3LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgVmFsaWRhdGUga2V5cyBpbiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6ZmluZE5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXMoKSBiZWZvcmUg
dXNpbmcgdGhlbSB3aXRoIEhhc2hNYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggOWFkMTFkNDA4OGY2NjM3N2RiMWRiYzA5ZGM1MTA1
ZTNmOTE2ODBjOS4uNWRiZDQ0M2YzOTIxZjIwOTA0ZmE1MDVjOTdjZTUwYjc0ZWE1ZGMzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAg
LTUwOSw3ICs1MDksNyBAQCB2b2lkIERhdGFiYXNlOjpzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0
cmluZyYgYWN0dWFsVmVyc2lvbikKIAogYm9vbCBEYXRhYmFzZTo6Z2V0QWN0dWFsVmVyc2lvbkZv
clRyYW5zYWN0aW9uKFN0cmluZyAmYWN0dWFsVmVyc2lvbikKIHsKLSAgICBBU1NFUlQobV9zcWxp
dGVEYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKG1fc3FsaXRl
RGF0YWJhc2Uuc2hvdWxkRXhlY3V0ZVN0YXRlbWVudCgpKTsKIAogICAgIC8vIE5vdGU6IEluIG11
bHRpLXByb2Nlc3MgYnJvd3NlcnMgdGhlIGNhY2hlZCB2YWx1ZSBtYXkgYmUgaW5hY2N1cmF0ZS4K
ICAgICAvLyBTbyB3ZSByZXRyaWV2ZSB0aGUgdmFsdWUgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHVw
ZGF0ZSB0aGUgY2FjaGVkIHZhbHVlIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCmluZGV4IDdhMmM5YTczNDZhZjEw
YjdmZWE3MTU2NTk5MTkxMzExNTM4ODhiNzcuLjgzOTlkMDNlMjMyMDA3Yjg1MjIxNmMwMjVmMmM5
YzBkYTMzY2RmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCkBAIC0yMDUsMTAgKzIwNSw3IEBAIHZvaWQgU1FMVHJh
bnNhY3Rpb246OmNoZWNrQW5kSGFuZGxlQ2xvc2VkRGF0YWJhc2UoKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBUaGUgY3VycmVudCBTUUxpdGUgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIHN0b3Bw
ZWQsIGFzIHdlbGwKLSAgICBpZiAobV9zcWxpdGVUcmFuc2FjdGlvbikgewotICAgICAgICBtX3Nx
bGl0ZVRyYW5zYWN0aW9uLT5zdG9wKCk7Ci0gICAgICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBu
dWxscHRyOwotICAgIH0KKyAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsKIAogICAg
IGlmIChtX2xvY2tBY3F1aXJlZCkKICAgICAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25Db29y
ZGluYXRvcigpLT5yZWxlYXNlTG9jaygqdGhpcyk7CkBAIC0yMjksNyArMjI2LDcgQEAgdm9pZCBT
UUxUcmFuc2FjdGlvbjo6YWNxdWlyZUxvY2soKQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uOjpvcGVu
VHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQogewotICAgIEFTU0VSVCghbV9kYXRhYmFzZS0+c3Fs
aXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKCFtX2Rh
dGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmhhc1dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzKCkp
OwogICAgIEFTU0VSVChtX2xvY2tBY3F1aXJlZCk7CiAKICAgICBMT0coU3RvcmFnZUFQSSwgIk9w
ZW5pbmcgYW5kIHByZWZsaWdodGluZyB0cmFuc2FjdGlvbiAlcCIsIHRoaXMpOwpAQCAtMjU4LDcg
KzI1NSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdo
dCgpCiAKICAgICAvLyBTcGVjIDQuMy4yLjErMjogT3BlbiBhIHRyYW5zYWN0aW9uIHRvIHRoZSBk
YXRhYmFzZSwganVtcGluZyB0byB0aGUgZXJyb3IgY2FsbGJhY2sgaWYgdGhhdCBmYWlscwogICAg
IGlmICghbV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIEFTU0VS
VCghbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7
CisgICAgICAgIEFTU0VSVCghbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5oYXNXcml0ZVRy
YW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FM
RXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAidW5hYmxlIHRvIGJlZ2luIHRy
YW5zYWN0aW9uIiwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwgbV9k
YXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1fc3Fs
aXRlVHJhbnNhY3Rpb24gPSBudWxscHRyOwogCkBAIC0zMTMsNyArMzEwLDcgQEAgdm9pZCBTUUxU
cmFuc2FjdGlvbjo6cnVuU3RhdGVtZW50cygpCiAgICAgLy8gSWYgdGhlcmUgaXMgYSBzZXJpZXMg
b2Ygc3RhdGVtZW50cyBxdWV1ZWQgdXAgdGhhdCBhcmUgYWxsIHN1Y2Nlc3NmdWwgYW5kIGhhdmUg
bm8gYXNzb2NpYXRlZAogICAgIC8vIFNRTFN0YXRlbWVudENhbGxiYWNrIG9iamVjdHMsIHRoZW4g
d2UgY2FuIGJ1cm4gdGhyb3VnaCB0aGUgcXVldWUKICAgICBkbyB7Ci0gICAgICAgIGlmIChtX3No
b3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudCAmJiAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+d2FzUm9s
bGVkQmFja0J5U3FsaXRlKCkpIHsKKyAgICAgICAgaWYgKG1fc2hvdWxkUmV0cnlDdXJyZW50U3Rh
dGVtZW50ICYmICFtX3NxbGl0ZVRyYW5zYWN0aW9uLT53YXNSb2xsZWRCYWNrQnlTUUxpdGUoKSkg
ewogICAgICAgICAgICAgbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQgPSBmYWxzZTsKICAg
ICAgICAgICAgIC8vIEZJWE1FIC0gQW5vdGhlciBwbGFjZSB0aGF0IG5lZWRzIGZpeGluZyB1cCBh
ZnRlciA8cmRhcjovL3Byb2JsZW0vNTYyODQ2OD4gaXMgYWRkcmVzc2VkLgogICAgICAgICAgICAg
Ly8gU2VlIDo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KCkgZm9yIGRpc2N1c3Npb24KQEAg
LTM0OSw3ICszNDYsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjbGVhbnVwQW5kVGVybWluYXRl
KCkKIAogICAgIC8vIFNwZWMgNC4zLjIuOTogRW5kIHRyYW5zYWN0aW9uIHN0ZXBzLiBUaGVyZSBp
cyBubyBuZXh0IHN0ZXAuCiAgICAgTE9HKFN0b3JhZ2VBUEksICJUcmFuc2FjdGlvbiAlcCBpcyBj
b21wbGV0ZVxuIiwgdGhpcyk7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFz
ZSgpLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPnNx
bGl0ZURhdGFiYXNlKCkuaGFzV3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICAv
LyBQaGFzZSA1IGNsZWFudXAuIFNlZSBjb21tZW50IG9uIHRoZSBTUUxUcmFuc2FjdGlvbiBsaWZl
LWN5Y2xlIGFib3ZlLgogICAgIG1fYmFja2VuZC5kb0NsZWFudXAoKTsKQEAgLTM2NiwxNCArMzYz
LDE0IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmNsZWFudXBBZnRlclRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjaygpCiAgICAgICAgIC8vIFNwZWMgNC4zLjIuMTA6IFJvbGxiYWNrIHRoZSB0cmFuc2Fj
dGlvbi4KICAgICAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+cm9sbGJhY2soKTsKIAotICAgICAg
ICBBU1NFUlQoIW1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkudHJhbnNhY3Rpb25JblByb2dy
ZXNzKCkpOworICAgICAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkuaGFz
V3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAgICAgICAgIG1fc3FsaXRlVHJhbnNhY3Rp
b24gPSBudWxscHRyOwogICAgIH0KICAgICBtX2RhdGFiYXNlLT5lbmFibGVBdXRob3JpemVyKCk7
CiAKICAgICByZWxlYXNlT3JpZ2luTG9ja0lmTmVlZGVkKCk7CiAKLSAgICBBU1NFUlQoIW1fZGF0
YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOworICAgIEFT
U0VSVCghbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5oYXNXcml0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzcygpKTsKIAogICAgIGNsZWFudXBBbmRUZXJtaW5hdGUoKTsKIH0KQEAgLTU2MSw3ICs1
NTgsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpoYW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3Io
KQogewogICAgIC8vIFNwZWMgNC4zLjIuNi42OiBlcnJvciAtIENhbGwgdGhlIHN0YXRlbWVudCdz
IGVycm9yIGNhbGxiYWNrLCBidXQgaWYgdGhlcmUgd2FzIG5vIGVycm9yIGNhbGxiYWNrLAogICAg
IC8vIG9yIHRoZSB0cmFuc2FjdGlvbiB3YXMgcm9sbGVkIGJhY2ssIGp1bXAgdG8gdGhlIHRyYW5z
YWN0aW9uIGVycm9yIGNhbGxiYWNrCi0gICAgaWYgKG1fY3VycmVudFN0YXRlbWVudC0+aGFzU3Rh
dGVtZW50RXJyb3JDYWxsYmFjaygpICYmICFtX3NxbGl0ZVRyYW5zYWN0aW9uLT53YXNSb2xsZWRC
YWNrQnlTcWxpdGUoKSkgeworICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1lbnQtPmhhc1N0YXRlbWVu
dEVycm9yQ2FsbGJhY2soKSAmJiAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+d2FzUm9sbGVkQmFja0J5
U1FMaXRlKCkpIHsKICAgICAgICAgc2NoZWR1bGVDYWxsYmFjaygmU1FMVHJhbnNhY3Rpb246OmRl
bGl2ZXJTdGF0ZW1lbnRDYWxsYmFjayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uQmFja2VuZC5jcHAKaW5kZXggNjJiMjdjZGIzMzI1MTRkNmE0OTcxMGEwNzFkNDExNzVhNzBk
YmRkZS4uODhmNThmY2VkMzkxYWZkZGIwYTg4NzhiOTUyMDRiNDIwNGUzMzk1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kLmNwcApAQCAtNDQ5LDEwICs0NDksNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9u
QmFja2VuZDo6Y29tcHV0ZU5leHRTdGF0ZUFuZENsZWFudXBJZk5lZWRlZCgpCiAgICAgTE9HKFN0
b3JhZ2VBUEksICJEYXRhYmFzZSB3YXMgc3RvcHBlZCBvciBpbnRlcnJ1cHRlZCAtIGNhbmNlbGxp
bmcgd29yayBmb3IgdGhpcyB0cmFuc2FjdGlvbiIpOwogCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FM
aXRlIHRyYW5zYWN0aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCi0gICAgaWYgKG1fZnJv
bnRlbmQubV9zcWxpdGVUcmFuc2FjdGlvbikgewotICAgICAgICBtX2Zyb250ZW5kLm1fc3FsaXRl
VHJhbnNhY3Rpb24tPnN0b3AoKTsKLSAgICAgICAgbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0
aW9uID0gbnVsbHB0cjsKLSAgICB9CisgICAgbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9u
ID0gbnVsbHB0cjsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgZnJvbnRlbmQgc3RhdGUgbWFjaGlu
ZS4gVGhpcyBhbHNvIGdldHMgdGhlIGZyb250ZW5kIHRvCiAgICAgLy8gY2FsbCBjb21wdXRlTmV4
dFN0YXRlQW5kQ2xlYW51cElmTmVlZGVkKCkgYW5kIGNsZWFyIGl0cyB3cmFwcGVycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggYTExMTAy
NTY4MWU0NjkzMTIzZmJjOGNiNDkwYTgzNzBkYjM5YzE4My4uM2YwYWY2ZDgyY2E2ZDIyMGM1M2Fj
NmMzNDBiZTIxOTI0ZDRjOWU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRGF0
YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IlNRTGl0ZVN0YXRlbWVudC5oIgorI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCiAjaW5j
bHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3FsaXRlMy5oPgogI2luY2x1ZGUgPHRocmVhZD4KQEAg
LTczMyw0ICs3MzQsOSBAQCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50
PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnQoQQogICAgIHJldHVybiBVbmlx
dWVSZWY8U1FMaXRlU3RhdGVtZW50PigqbmV3IFNRTGl0ZVN0YXRlbWVudCgqdGhpcywgc3FsU3Rh
dGVtZW50LnZhbHVlKCkpKTsKIH0KIAorYm9vbCBTUUxpdGVEYXRhYmFzZTo6c2hvdWxkRXhlY3V0
ZVN0YXRlbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3dyaXRlVHJhbnNhY3Rpb25JblBy
b2dyZXNzIHx8ICFtX3dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzLT53YXNSb2xsZWRCYWNrQnlT
UUxpdGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCA0YjIyYzhmZTY4ZTM1ZmJkZDA5NzI1
ODY4YzRjOWEwZTVjYWIyY2YwLi44MGFmZmE2OGIxYzBiZjlkNzMwMGIzZmEwMGE5OGRkNjUzNmYx
MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApA
QCAtNzEsOCArNzEsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFs
bFRhYmxlcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBydW5WYWN1dW1Db21tYW5kKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgaW50IHJ1bkluY3JlbWVudGFsVmFjdXVtQ29tbWFuZCgpOwotICAg
IAotICAgIGJvb2wgdHJhbnNhY3Rpb25JblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV90cmFu
c2FjdGlvbkluUHJvZ3Jlc3M7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFNRTGl0
ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50U2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gcHJl
cGFyZVN0YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlcnkpOwpAQCAtMTYyLDYgKzE2MCw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIGluY3JlbWVudFN0YXRlbWVudENvdW50KCk7CiAgICAgdm9pZCBkZWNy
ZW1lbnRTdGF0ZW1lbnRDb3VudCgpOwogCisgICAgYm9vbCBoYXNXcml0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuICEhbV93cml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzczsg
fQorICAgIGJvb2wgc2hvdWxkRXhlY3V0ZVN0YXRlbWVudCgpIGNvbnN0OworCiBwcml2YXRlOgog
ICAgIHN0YXRpYyBpbnQgYXV0aG9yaXplckZ1bmN0aW9uKHZvaWQqLCBpbnQsIGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKIApAQCAtMTc1LDcgKzE3
Niw3IEBAIHByaXZhdGU6CiAgICAgc3FsaXRlMyogbV9kYiB7IG51bGxwdHIgfTsKICAgICBpbnQg
bV9wYWdlU2l6ZSB7IC0xIH07CiAgICAgCi0gICAgYm9vbCBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVz
cyB7IGZhbHNlIH07CisgICAgV2Vha1B0cjxTUUxpdGVUcmFuc2FjdGlvbj4gbV93cml0ZVRyYW5z
YWN0aW9uSW5Qcm9ncmVzczsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9zaGFyYWJs
ZSB7IGZhbHNlIH07CiAgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG1fc3RhdGVtZW50Q291bnQg
eyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3Rh
dGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQu
Y3BwCmluZGV4IGIwODQ5ZTZmODA4Y2EzODBiMDhjNjI3NGIwNGQxNDljYzAzM2MwODcuLmVhYTJj
ZGQyYTliZTg4MzUyNTJhNTU1ZWMxMWIwM2NlNGZjMmIyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC02Niw2ICs2NiwxMSBAQCBp
bnQgU1FMaXRlU3RhdGVtZW50OjpzdGVwKCkKIHsKICAgICBMb2NrZXIgZGF0YWJhc2VMb2NrIHsg
bV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkgfTsKIAorICAgIGlmICghbV9kYXRhYmFzZS5zaG91
bGRFeGVjdXRlU3RhdGVtZW50KCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0
YWJhc2UsICJTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXA6IENhbm5vdCBzdGVwICV7cHVibGljfXMgYmVj
YXVzZSB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkIiwgc3FsaXRlM19zcWwobV9zdGF0ZW1lbnQpKTsK
KyAgICAgICAgcmV0dXJuIFNRTElURV9BQk9SVDsKKyAgICB9CisKICAgICBpbnQgZXJyb3IgPSBz
cWxpdGUzX3N0ZXAobV9zdGF0ZW1lbnQpOwogICAgIGlmIChlcnJvciAhPSBTUUxJVEVfRE9ORSAm
JiBlcnJvciAhPSBTUUxJVEVfUk9XKQogICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJzcWxpdGUz
X3N0ZXAgZmFpbGVkICglaSlcbkVycm9yIC0gJXMiLCBlcnJvciwgc3FsaXRlM19lcnJtc2cobV9k
YXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCmluZGV4IDA4ZTllYjczZGIyNGEwOTBhN2EwODBj
MWE4MTU2OTMxOGU1YTI4NTkuLmUzYjg4M2NhMjI2ZmM0ZjY5MzhkMjZmZTJiOGQxZTAzZTllZDc1
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0
aW9uLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgi
CiAKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgorI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVu
dC5oIgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuaCIKQEAgLTM2LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTUUxp
dGVUcmFuc2FjdGlvbjo6U1FMaXRlVHJhbnNhY3Rpb24oU1FMaXRlRGF0YWJhc2UmIGRiLCBib29s
IHJlYWRPbmx5KQogICAgIDogbV9kYihkYikKLSAgICAsIG1faW5Qcm9ncmVzcyhmYWxzZSkKICAg
ICAsIG1fcmVhZE9ubHkocmVhZE9ubHkpCiB7CiB9CkBAIC00Nyw3NCArNDcsNzggQEAgU1FMaXRl
VHJhbnNhY3Rpb246On5TUUxpdGVUcmFuc2FjdGlvbigpCiAgICAgICAgIHJvbGxiYWNrKCk7CiB9
CiAKLXZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKCkKK2ludCBTUUxpdGVUcmFuc2FjdGlv
bjo6YmVnaW4oKQogewotICAgIGlmICghbV9pblByb2dyZXNzKSB7Ci0gICAgICAgIEFTU0VSVCgh
bV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk7Ci0gICAgICAgIC8vIENhbGwgQkVHSU4gSU1N
RURJQVRFIGZvciBhIHdyaXRlIHRyYW5zYWN0aW9uIHRvIGFjcXVpcmUKLSAgICAgICAgLy8gYSBS
RVNFUlZFRCBsb2NrIG9uIHRoZSBEQiBmaWxlLiBPdGhlcndpc2UsIGFub3RoZXIgd3JpdGUKLSAg
ICAgICAgLy8gdHJhbnNhY3Rpb24gKG9uIGFub3RoZXIgY29ubmVjdGlvbikgY291bGQgbWFrZSBj
aGFuZ2VzCi0gICAgICAgIC8vIHRvIHRoZSBzYW1lIERCIGZpbGUgYmVmb3JlIHRoaXMgdHJhbnNh
Y3Rpb24gZ2V0cyB0byBleGVjdXRlCi0gICAgICAgIC8vIGFueSBzdGF0ZW1lbnRzLiBJZiB0aGF0
IGhhcHBlbnMsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBmYWlsLgotICAgICAgICAvLyBodHRwOi8v
d3d3LnNxbGl0ZS5vcmcvbGFuZ190cmFuc2FjdGlvbi5odG1sCi0gICAgICAgIC8vIGh0dHA6Ly93
d3cuc3FsaXRlLm9yZy9sb2NraW5ndjMuaHRtbCNsb2NraW5nCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlv
bkluUHJvZ3Jlc3NDb3VudCgpOwotI2VuZGlmCi0gICAgICAgIGlmIChtX3JlYWRPbmx5KQotICAg
ICAgICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVHSU4iX3MpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21t
YW5kKCJCRUdJTiBJTU1FRElBVEUiX3MpOwotICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblBy
b2dyZXNzID0gbV9pblByb2dyZXNzOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAg
IGlmICghbV9pblByb2dyZXNzKQotICAgICAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpk
ZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwotI2VuZGlmCi0gICAgfQotfQor
ICAgIGlmIChtX2luUHJvZ3Jlc3MpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisgICAg
bV9pblByb2dyZXNzID0gdHJ1ZTsKIAotdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6Y29tbWl0KCkK
LXsKLSAgICBpZiAobV9pblByb2dyZXNzKSB7Ci0gICAgICAgIEFTU0VSVChtX2RiLm1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzKTsKLSAgICAgICAgbV9pblByb2dyZXNzID0gIW1fZGIuZXhlY3V0ZUNv
bW1hbmQoIkNPTU1JVCJfcyk7Ci0gICAgICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3Mg
PSBtX2luUHJvZ3Jlc3M7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgaWYgKCFt
X2luUHJvZ3Jlc3MpCi0gICAgICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVu
dFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7CisgICAgU1FMaXRlRGF0YWJhc2VUcmFja2Vy
OjppbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwogI2VuZGlmCisKKyAgICAv
LyBDYWxsIEJFR0lOIElNTUVESUFURSBmb3IgYSB3cml0ZSB0cmFuc2FjdGlvbiB0byBhY3F1aXJl
CisgICAgLy8gYSBSRVNFUlZFRCBsb2NrIG9uIHRoZSBEQiBmaWxlLiBPdGhlcndpc2UsIGFub3Ro
ZXIgd3JpdGUKKyAgICAvLyB0cmFuc2FjdGlvbiAob24gYW5vdGhlciBjb25uZWN0aW9uKSBjb3Vs
ZCBtYWtlIGNoYW5nZXMKKyAgICAvLyB0byB0aGUgc2FtZSBEQiBmaWxlIGJlZm9yZSB0aGlzIHRy
YW5zYWN0aW9uIGdldHMgdG8gZXhlY3V0ZQorICAgIC8vIGFueSBzdGF0ZW1lbnRzLiBJZiB0aGF0
IGhhcHBlbnMsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBmYWlsLgorICAgIC8vIGh0dHA6Ly93d3cu
c3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwKKyAgICAvLyBodHRwOi8vd3d3LnNxbGl0
ZS5vcmcvbG9ja2luZ3YzLmh0bWwjbG9ja2luZworICAgIEFTQ0lJTGl0ZXJhbCBzcWxTdHJpbmcg
PSBtX3JlYWRPbmx5ID8gIkJFR0lOIl9zIDogIkJFR0lOIElNTUVESUFURSJfczsKKyAgICBhdXRv
IHNxbCA9IG1fZGIucHJlcGFyZVN0YXRlbWVudChzcWxTdHJpbmcpOworICAgIGludCByZXN1bHQg
PSBzcWwgPyBzcWwtPnN0ZXAoKSA6IHNxbC5lcnJvcigpOworCisgICAgaWYgKCFtX3JlYWRPbmx5
KSB7CisgICAgICAgIEFTU0VSVCghbV9kYi5tX3dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzKTsK
KyAgICAgICAgbV9kYi5tX3dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzID0gbWFrZVdlYWtQdHIo
dGhpcyk7CiAgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTUUxpdGVUcmFu
c2FjdGlvbjo6cm9sbGJhY2soKQoraW50IFNRTGl0ZVRyYW5zYWN0aW9uOjpjb21taXQoKQogewot
ICAgIC8vIFdlIGRvIG5vdCB1c2UgdGhlICdtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21t
YW5kKCJST0xMQkFDSyIpJyBjb25zdHJ1Y3QgaGVyZSwKLSAgICAvLyBiZWNhdXNlIG1faW5Qcm9n
cmVzcyBzaG91bGQgYWx3YXlzIGJlIHNldCB0byBmYWxzZSBhZnRlciBhIFJPTExCQUNLLCBhbmQK
LSAgICAvLyBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyIpIGNhbiBzb21ldGltZXMgaGFy
bWxlc3NseSBmYWlsLCB0aHVzIHJldHVybmluZwotICAgIC8vIGEgbm9uLXplcm8vdHJ1ZSByZXN1
bHQgKGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwpLgotICAgIGlm
IChtX2luUHJvZ3Jlc3MpIHsKLSAgICAgICAgQVNTRVJUKG1fZGIubV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3MpOwotICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyJfcyk7Ci0gICAg
ICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblBy
b2dyZXNzID0gZmFsc2U7CisgICAgaWYgKCFtX2luUHJvZ3Jlc3MpCisgICAgICAgIHJldHVybiBT
UUxJVEVfRVJST1I7CisgICAgbV9pblByb2dyZXNzID0gZmFsc2U7CisgICAgCisgICAgYXV0byBz
cWwgPSBtX2RiLnByZXBhcmVTdGF0ZW1lbnQoIkNPTU1JVCJfcyk7CisgICAgaW50IHJlc3VsdCA9
IHNxbCA/IHNxbC0+c3RlcCgpIDogc3FsLmVycm9yKCk7CisKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9u
SW5Qcm9ncmVzc0NvdW50KCk7CisgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRU
cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwogI2VuZGlmCisKKyAgICBpZiAoIW1fcmVhZE9u
bHkpIHsKKyAgICAgICAgQVNTRVJUKG1fZGIubV93cml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9
PSB0aGlzKTsKKyAgICAgICAgbV9kYi5tX3dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzID0gbnVs
bHB0cjsKICAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFNRTGl0ZVRyYW5z
YWN0aW9uOjpzdG9wKCkKK2ludCBTUUxpdGVUcmFuc2FjdGlvbjo6cm9sbGJhY2soKQogewotICAg
IGlmIChtX2luUHJvZ3Jlc3MpIHsKLSAgICAgICAgbV9pblByb2dyZXNzID0gZmFsc2U7Ci0gICAg
ICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBpZiAoIW1faW5Q
cm9ncmVzcykKKyAgICAgICAgcmV0dXJuIFNRTElURV9FUlJPUjsKKyAgICBtX2luUHJvZ3Jlc3Mg
PSBmYWxzZTsKKworICAgIGF1dG8gc3FsID0gbV9kYi5wcmVwYXJlU3RhdGVtZW50KCJST0xMQkFD
SyJfcyk7CisgICAgaW50IHJlc3VsdCA9ICBzcWwgPyBzcWwtPnN0ZXAoKSA6IHNxbC5lcnJvcigp
OworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFj
a2VyOjpkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOworICAgIFNRTGl0ZURh
dGFiYXNlVHJhY2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKICNl
bmRpZgorCisgICAgaWYgKCFtX3JlYWRPbmx5KSB7CisgICAgICAgIEFTU0VSVChtX2RiLm1fd3Jp
dGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MgPT0gdGhpcyk7CisgICAgICAgIG1fZGIubV93cml0ZVRy
YW5zYWN0aW9uSW5Qcm9ncmVzcyA9IG51bGxwdHI7CiAgICAgfQorCisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotYm9vbCBTUUxpdGVUcmFuc2FjdGlvbjo6d2FzUm9sbGVkQmFja0J5U3FsaXRlKCkg
Y29uc3QKK2Jvb2wgU1FMaXRlVHJhbnNhY3Rpb246Ondhc1JvbGxlZEJhY2tCeVNRTGl0ZSgpIGNv
bnN0CiB7CiAgICAgLy8gQWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9jM3JlZi9n
ZXRfYXV0b2NvbW1pdC5odG1sLAogICAgIC8vIHRoZSBhdXRvLWNvbW1pdCBmbGFnIHNob3VsZCBi
ZSBvZmYgaW4gdGhlIG1pZGRsZSBvZiBhIHRyYW5zYWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5oCmluZGV4IGI5ZDFmNzk0MGNjYjYyYWJm
NDNmOTc1ZjMxNmU3ODFhMjY4NzJiNzMuLjVkMzY5ZWVhZTVlZTNhNTc4ZGE4NTk4NjgyMmY3OGUw
NWIzNDVjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVU
cmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFu
c2FjdGlvbi5oCkBAIC0zMywyNSArMzMsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTUUxpdGVEYXRhYmFzZTsKIAotY2xhc3MgU1FMaXRlVHJhbnNhY3Rpb24gewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFNRTGl0ZVRyYW5zYWN0aW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitjbGFzcyBTUUxpdGVUcmFuc2FjdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTUUxp
dGVUcmFuc2FjdGlvbj4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNRTGl0ZVRyYW5zYWN0
aW9uKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBTUUxpdGVUcmFuc2FjdGlvbihTUUxpdGVEYXRhYmFzZSYgZGIsIGJvb2wgcmVhZE9u
bHkgPSBmYWxzZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZVRyYW5zYWN0aW9uKCk7CiAg
ICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBiZWdpbigpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY29tbWl0KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByb2xsYmFjaygpOwotICAg
IHZvaWQgc3RvcCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiZWdpbigpOworICAgIFdFQkNP
UkVfRVhQT1JUIGludCBjb21taXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcm9sbGJhY2so
KTsKICAgICAKICAgICBib29sIGluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX2luUHJvZ3Jl
c3M7IH0KLSAgICBib29sIHdhc1JvbGxlZEJhY2tCeVNxbGl0ZSgpIGNvbnN0OworICAgIGJvb2wg
d2FzUm9sbGVkQmFja0J5U1FMaXRlKCkgY29uc3Q7CiAKICAgICBTUUxpdGVEYXRhYmFzZSYgZGF0
YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2RiOyB9CiAKIHByaXZhdGU6CiAgICAgU1FMaXRlRGF0
YWJhc2UmIG1fZGI7Ci0gICAgYm9vbCBtX2luUHJvZ3Jlc3M7CisgICAgYm9vbCBtX2luUHJvZ3Jl
c3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZWFkT25seTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IGYyYjA2
N2VhNGRkMDc5YmRkN2Y3YWY3NWQ4YzJhMGIzN2FlMjE1MmYuLjFjOTA0YjAwNjI0OTMzYmMwZTkz
NTk0YWY3ZTJiMjQ4YTA3MjhkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMTAzOCw3ICsxMDM4LDcgQEAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRv
bWFpbklEKGNvbnN0IFJlZ2kKIAogU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjplbnN1cmVBbmRNYWtlRG9tYWluTGlzdChjb25zdCBTUUxpdGVUcmFuc2FjdGlvbiYs
IGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5MaXN0KQogewotICAgIEFT
U0VSVChtX2RhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQobV9k
YXRhYmFzZS5oYXNXcml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKIAogICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKGF1dG8mIHRvcEZyYW1lUmVzb3VyY2UgOiBkb21haW5M
aXN0KSB7CkBAIC0xMDc4LDcgKzEwNzgsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0KGNvbnN0IFNRTAogdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRp
b25zaGlwcyhjb25zdCBTUUxpdGVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3MmIGxvYWRTdGF0aXN0aWNzKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgIEFTU0VSVChtX2RhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVz
cygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS5oYXNXcml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVz
cygpKTsKIAogICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW5JRCA9IGRvbWFpbklEKGxvYWRTdGF0
aXN0aWNzLnJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICAKQEAgLTExMjgsNyArMTEyOCw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBvcHVsYXRlRnJvbU1lbW9y
eVN0b3JlKGNvbnN0IFJlc291cmNlCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjptZXJnZShjb25zdCBTUUxpdGVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCogY3VycmVudCwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyYgb3RoZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJU
KG1fZGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOworICAgIEFTU0VSVChtX2RhdGFi
YXNlLmhhc1dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwogCiAgICAgYXV0byBjdXJyZW50
UmVnaXN0cmFibGVEb21haW4gPSBjdXJyZW50LT5jb2x1bW5UZXh0KFJlZ2lzdHJhYmxlRG9tYWlu
SW5kZXgpOwogICAgIGF1dG8gY3VycmVudExhc3RTZWVuID0gY3VycmVudC0+Y29sdW1uRG91Ymxl
KExhc3RTZWVuSW5kZXgpOwpAQCAtMTY0OSw3ICsxNjQ5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWlu
JiYgc3UKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2Vzc0ludGVybmFsKGNvbnN0IFNRTGl0ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwg
U3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFt
ZURvbWFpbiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3du
Tm93T3JFYXJsaWVyLCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVChtX2RhdGFiYXNlLnRy
YW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS5oYXNXcml0ZVRy
YW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKIAogICAgIGlmIChzdWJGcmFtZURvbWFpbiA9PSB0b3BG
cmFtZURvbWFpbikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZDo6WWVzKTsKQEAgLTE5MTgsNyArMTkxOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJh
YmxlCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclVzZXJJ
bnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbiYsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NF
UlQobV9kYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKG1fZGF0
YWJhc2UuaGFzV3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICBhdXRvIHRhcmdl
dFJlc3VsdCA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRv
bWFpbik7CiAgICAgaWYgKCF0YXJnZXRSZXN1bHQuc2Vjb25kKSB7CkBAIC0xOTU1LDcgKzE5NTUs
NyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNIYWRVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNRTGl0
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFp
biwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cgb3BlcmF0aW5nRGF0ZXNXaW5kb3cpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2UudHJhbnNhY3Rp
b25JblByb2dyZXNzKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlLmhhc1dyaXRlVHJhbnNhY3Rp
b25JblByb2dyZXNzKCkpOwogCiAgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29w
ZWRTdGF0ZW1lbnQobV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQsIGhhZFVzZXJJbnRlcmFj
dGlvblF1ZXJ5LCAiaGFzSGFkVXNlckludGVyYWN0aW9uIl9zKTsKICAgICBpZiAoIXNjb3BlZFN0
YXRlbWVudApAQCAtMTk4NCw3ICsxOTg0LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlMKIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFByZXZhbGVudFJlc291
cmNlKGNvbnN0IFNRTGl0ZVRyYW5zYWN0aW9uJiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbiwgUmVzb3VyY2VMb2FkUHJldmFsZW5jZSBuZXdQcmV2YWxlbmNlKQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVChtX2RhdGFiYXNlLnRyYW5zYWN0aW9u
SW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS5oYXNXcml0ZVRyYW5zYWN0aW9u
SW5Qcm9ncmVzcygpKTsKIAogICAgIGlmIChzaG91bGRTa2lwKGRvbWFpbikpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIxNjYsNyArMjE2Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQoY29uc3QgUmVnaXN0cmFibGVEb21hCiB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkKGNv
bnN0IFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uJiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbiwgYm9vbCB2YWx1ZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
LSAgICBBU1NFUlQobV9kYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNT
RVJUKG1fZGF0YWJhc2UuaGFzV3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICBh
dXRvIHJlc3VsdCA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
KGRvbWFpbik7CiAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7CkBAIC0yMTg3LDcgKzIxODcsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhl
cmVkKGNvbnN0IFdlYkNvcmU6OlNRTGl0ZQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6c2V0SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbChjb25z
dCBTUUxpdGVUcmFuc2FjdGlvbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJv
b2wgdmFsdWUpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJU
KG1fZGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOworICAgIEFTU0VSVChtX2RhdGFi
YXNlLmhhc1dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwogCiAgICAgYXV0byByZXN1bHQg
PSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb21haW4pOwog
ICAgIGlmICghcmVzdWx0LnNlY29uZCkgewpAQCAtMjg0Myw3ICsyODQzLDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29u
c3QgUmVnaXN0cmFibGUKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFNRTGl0ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQobV9kYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jl
c3MoKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaGFzV3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jl
c3MoKSk7CiAKICAgICBpZiAoc2hvdWxkU2tpcChkb21haW4pKQogICAgICAgICByZXR1cm47CkBA
IC0yODc1LDcgKzI4NzUsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cgogdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNv
bnN0IFNRTGl0ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGRvbWFpbikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NF
UlQobV9kYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKG1fZGF0
YWJhc2UuaGFzV3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICBpZiAoc2hvdWxk
U2tpcChkb21haW4pKQogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433232</attachid>
            <date>2021-07-09 12:27:24 -0700</date>
            <delta_ts>2021-07-13 17:43:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227771-20210709122723.patch</filename>
            <type>text/plain</type>
            <size>25885</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWJmMjdmZDE2YzRlMjRm
ZGVjMGYxODhhMjhiMzZlMzk3NWIzNzFmMS4uMDgxNGI3OWE1MzgyMzM2Y2UzODg5YjIxYzdlMjc4
NTQyNjgxZWQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTA3LTA5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJldHVybiBlcnJvciBmb3Ig
c3RhdGVtZW50IGlmIHRoZSB0cmFuc2FjdGlvbiBpdCBiZWxvbmdzIHRvIGlzIHJvbGxlZCBiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3NzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIFNR
TGl0ZVRyYW5zYWN0aW9uIGluLXByb2dyZXNzIGJldHdlZW4gZXhwbGljaXQgYmVnaW4oKSBhbmQg
Y29tbWl0KCkvcm9sbGJhY2soKS4gQW4gaW4tcHJvZ3Jlc3Mgd3JpdGUgCisgICAgICAgIHRyYW5z
YWN0aW9uIGlzIG1hcmtlZCB2YWxpZCBpZiBpdCdzIG5vdCBhYm9ydGVkIGJ5IFNRTGl0ZSAoYXV0
by1jb21taXQgZm9yIGRhdGFiYXNlIGlzIG9mZikuIEZvciBzdGF0ZW1lbnRzIAorICAgICAgICBl
eGVjdXRlZCBkdXJpbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24sIHdlIHVzdWFsbHkgd2FudCB0
aGVtIHRvIGJlIHBhcnQgb2YgdHJhbnNhY3Rpb24sIHNvIHdlIHNob3VsZCBhdm9pZCAKKyAgICAg
ICAgZXhlY3V0aW5nIHRoZW0gaWYgdHJhbnNhY3Rpb24gaXMgYWxyZWFkeSBpbnZhbGlkLiBPdGhl
cndpc2UsIHRoZXkgbWF5IGJlIGV4ZWN1dGVkIGluIGEgc2VwYXJhdGUgaW1wbGljaXQgCisgICAg
ICAgIHRyYW5zYWN0aW9uLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Z2V0QWN0dWFsVmVyc2lvbkZvclRy
YW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
LmNwcDogVGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgc3RvcHBlZCBpbiBkZXN0cnVjdG9yIG9mIFNR
TGl0ZVRyYW5zYWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmNoZWNr
QW5kSGFuZGxlQ2xvc2VkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rp
b246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxU
cmFuc2FjdGlvbjo6cnVuU3RhdGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6Y2xlYW51cEFuZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6Y2xlYW51cEFmdGVyVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpoYW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3IpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6Y29tcHV0ZU5leHRTdGF0ZUFu
ZENsZWFudXBJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzaG91bGRFeGVjdXRlU3Rh
dGVtZW50IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpoYXNXcml0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6dHJhbnNh
Y3Rpb25JblByb2dyZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6
c3RlcCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpTUUxpdGVUcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6YmVnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OmNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxp
dGVUcmFuc2FjdGlvbjo6cm9sbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNh
Y3Rpb246Ondhc1JvbGxlZEJhY2tCeVNRTGl0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVUcmFuc2FjdGlvbjo6c3RvcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxp
dGVUcmFuc2FjdGlvbjo6d2FzUm9sbGVkQmFja0J5U3FsaXRlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaDoKKwogMjAyMS0wNy0wOSAg
QWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBOZWdh
dGl2ZSBwYWRkaW5nIHZhbHVlcyBhcmUgaW52YWxpZCAoaW5saW5lIGJveCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
YWMyOWE2MjEzODE4MGYwM2U4ZDMwMWMxODU2YzJjMzdjYzY1M2UwMy4uMmEyOWNmZTk2ZTZmNzc2
NzU4ZjliYmQwYjA5ZjFmOWYxZGU5MmJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MS0wNy0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXR1
cm4gZXJyb3IgZm9yIHN0YXRlbWVudCBpZiB0aGUgdHJhbnNhY3Rpb24gaXQgYmVsb25ncyB0byBp
cyByb2xsZWQgYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI3NzcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmVuc3VyZUFuZE1ha2VEb21haW5MaXN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0
aW9uc2hpcHMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6bWVyZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJh
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5k
ZmF0aGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6c2V0SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRWZXJ5
UHJldmFsZW50UmVzb3VyY2UpOgorCiAyMDIxLTA3LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgVmFsaWRhdGUga2V5cyBpbiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6ZmluZE5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXMoKSBiZWZvcmUg
dXNpbmcgdGhlbSB3aXRoIEhhc2hNYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggOWFkMTFkNDA4OGY2NjM3N2RiMWRiYzA5ZGM1MTA1
ZTNmOTE2ODBjOS4uNWRiZDQ0M2YzOTIxZjIwOTA0ZmE1MDVjOTdjZTUwYjc0ZWE1ZGMzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAg
LTUwOSw3ICs1MDksNyBAQCB2b2lkIERhdGFiYXNlOjpzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0
cmluZyYgYWN0dWFsVmVyc2lvbikKIAogYm9vbCBEYXRhYmFzZTo6Z2V0QWN0dWFsVmVyc2lvbkZv
clRyYW5zYWN0aW9uKFN0cmluZyAmYWN0dWFsVmVyc2lvbikKIHsKLSAgICBBU1NFUlQobV9zcWxp
dGVEYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKG1fc3FsaXRl
RGF0YWJhc2Uuc2hvdWxkRXhlY3V0ZVN0YXRlbWVudCgpKTsKIAogICAgIC8vIE5vdGU6IEluIG11
bHRpLXByb2Nlc3MgYnJvd3NlcnMgdGhlIGNhY2hlZCB2YWx1ZSBtYXkgYmUgaW5hY2N1cmF0ZS4K
ICAgICAvLyBTbyB3ZSByZXRyaWV2ZSB0aGUgdmFsdWUgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHVw
ZGF0ZSB0aGUgY2FjaGVkIHZhbHVlIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCmluZGV4IDdhMmM5YTczNDZhZjEw
YjdmZWE3MTU2NTk5MTkxMzExNTM4ODhiNzcuLjgzOTlkMDNlMjMyMDA3Yjg1MjIxNmMwMjVmMmM5
YzBkYTMzY2RmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCkBAIC0yMDUsMTAgKzIwNSw3IEBAIHZvaWQgU1FMVHJh
bnNhY3Rpb246OmNoZWNrQW5kSGFuZGxlQ2xvc2VkRGF0YWJhc2UoKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBUaGUgY3VycmVudCBTUUxpdGUgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIHN0b3Bw
ZWQsIGFzIHdlbGwKLSAgICBpZiAobV9zcWxpdGVUcmFuc2FjdGlvbikgewotICAgICAgICBtX3Nx
bGl0ZVRyYW5zYWN0aW9uLT5zdG9wKCk7Ci0gICAgICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBu
dWxscHRyOwotICAgIH0KKyAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsKIAogICAg
IGlmIChtX2xvY2tBY3F1aXJlZCkKICAgICAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25Db29y
ZGluYXRvcigpLT5yZWxlYXNlTG9jaygqdGhpcyk7CkBAIC0yMjksNyArMjI2LDcgQEAgdm9pZCBT
UUxUcmFuc2FjdGlvbjo6YWNxdWlyZUxvY2soKQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uOjpvcGVu
VHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQogewotICAgIEFTU0VSVCghbV9kYXRhYmFzZS0+c3Fs
aXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKCFtX2Rh
dGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmhhc1dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzKCkp
OwogICAgIEFTU0VSVChtX2xvY2tBY3F1aXJlZCk7CiAKICAgICBMT0coU3RvcmFnZUFQSSwgIk9w
ZW5pbmcgYW5kIHByZWZsaWdodGluZyB0cmFuc2FjdGlvbiAlcCIsIHRoaXMpOwpAQCAtMjU4LDcg
KzI1NSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdo
dCgpCiAKICAgICAvLyBTcGVjIDQuMy4yLjErMjogT3BlbiBhIHRyYW5zYWN0aW9uIHRvIHRoZSBk
YXRhYmFzZSwganVtcGluZyB0byB0aGUgZXJyb3IgY2FsbGJhY2sgaWYgdGhhdCBmYWlscwogICAg
IGlmICghbV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIEFTU0VS
VCghbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7
CisgICAgICAgIEFTU0VSVCghbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5oYXNXcml0ZVRy
YW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FM
RXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAidW5hYmxlIHRvIGJlZ2luIHRy
YW5zYWN0aW9uIiwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwgbV9k
YXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1fc3Fs
aXRlVHJhbnNhY3Rpb24gPSBudWxscHRyOwogCkBAIC0zMTMsNyArMzEwLDcgQEAgdm9pZCBTUUxU
cmFuc2FjdGlvbjo6cnVuU3RhdGVtZW50cygpCiAgICAgLy8gSWYgdGhlcmUgaXMgYSBzZXJpZXMg
b2Ygc3RhdGVtZW50cyBxdWV1ZWQgdXAgdGhhdCBhcmUgYWxsIHN1Y2Nlc3NmdWwgYW5kIGhhdmUg
bm8gYXNzb2NpYXRlZAogICAgIC8vIFNRTFN0YXRlbWVudENhbGxiYWNrIG9iamVjdHMsIHRoZW4g
d2UgY2FuIGJ1cm4gdGhyb3VnaCB0aGUgcXVldWUKICAgICBkbyB7Ci0gICAgICAgIGlmIChtX3No
b3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudCAmJiAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+d2FzUm9s
bGVkQmFja0J5U3FsaXRlKCkpIHsKKyAgICAgICAgaWYgKG1fc2hvdWxkUmV0cnlDdXJyZW50U3Rh
dGVtZW50ICYmICFtX3NxbGl0ZVRyYW5zYWN0aW9uLT53YXNSb2xsZWRCYWNrQnlTUUxpdGUoKSkg
ewogICAgICAgICAgICAgbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQgPSBmYWxzZTsKICAg
ICAgICAgICAgIC8vIEZJWE1FIC0gQW5vdGhlciBwbGFjZSB0aGF0IG5lZWRzIGZpeGluZyB1cCBh
ZnRlciA8cmRhcjovL3Byb2JsZW0vNTYyODQ2OD4gaXMgYWRkcmVzc2VkLgogICAgICAgICAgICAg
Ly8gU2VlIDo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KCkgZm9yIGRpc2N1c3Npb24KQEAg
LTM0OSw3ICszNDYsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjbGVhbnVwQW5kVGVybWluYXRl
KCkKIAogICAgIC8vIFNwZWMgNC4zLjIuOTogRW5kIHRyYW5zYWN0aW9uIHN0ZXBzLiBUaGVyZSBp
cyBubyBuZXh0IHN0ZXAuCiAgICAgTE9HKFN0b3JhZ2VBUEksICJUcmFuc2FjdGlvbiAlcCBpcyBj
b21wbGV0ZVxuIiwgdGhpcyk7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFz
ZSgpLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPnNx
bGl0ZURhdGFiYXNlKCkuaGFzV3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICAv
LyBQaGFzZSA1IGNsZWFudXAuIFNlZSBjb21tZW50IG9uIHRoZSBTUUxUcmFuc2FjdGlvbiBsaWZl
LWN5Y2xlIGFib3ZlLgogICAgIG1fYmFja2VuZC5kb0NsZWFudXAoKTsKQEAgLTM2NiwxNCArMzYz
LDE0IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmNsZWFudXBBZnRlclRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjaygpCiAgICAgICAgIC8vIFNwZWMgNC4zLjIuMTA6IFJvbGxiYWNrIHRoZSB0cmFuc2Fj
dGlvbi4KICAgICAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+cm9sbGJhY2soKTsKIAotICAgICAg
ICBBU1NFUlQoIW1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkudHJhbnNhY3Rpb25JblByb2dy
ZXNzKCkpOworICAgICAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkuaGFz
V3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAgICAgICAgIG1fc3FsaXRlVHJhbnNhY3Rp
b24gPSBudWxscHRyOwogICAgIH0KICAgICBtX2RhdGFiYXNlLT5lbmFibGVBdXRob3JpemVyKCk7
CiAKICAgICByZWxlYXNlT3JpZ2luTG9ja0lmTmVlZGVkKCk7CiAKLSAgICBBU1NFUlQoIW1fZGF0
YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOworICAgIEFT
U0VSVCghbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5oYXNXcml0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzcygpKTsKIAogICAgIGNsZWFudXBBbmRUZXJtaW5hdGUoKTsKIH0KQEAgLTU2MSw3ICs1
NTgsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpoYW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3Io
KQogewogICAgIC8vIFNwZWMgNC4zLjIuNi42OiBlcnJvciAtIENhbGwgdGhlIHN0YXRlbWVudCdz
IGVycm9yIGNhbGxiYWNrLCBidXQgaWYgdGhlcmUgd2FzIG5vIGVycm9yIGNhbGxiYWNrLAogICAg
IC8vIG9yIHRoZSB0cmFuc2FjdGlvbiB3YXMgcm9sbGVkIGJhY2ssIGp1bXAgdG8gdGhlIHRyYW5z
YWN0aW9uIGVycm9yIGNhbGxiYWNrCi0gICAgaWYgKG1fY3VycmVudFN0YXRlbWVudC0+aGFzU3Rh
dGVtZW50RXJyb3JDYWxsYmFjaygpICYmICFtX3NxbGl0ZVRyYW5zYWN0aW9uLT53YXNSb2xsZWRC
YWNrQnlTcWxpdGUoKSkgeworICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1lbnQtPmhhc1N0YXRlbWVu
dEVycm9yQ2FsbGJhY2soKSAmJiAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+d2FzUm9sbGVkQmFja0J5
U1FMaXRlKCkpIHsKICAgICAgICAgc2NoZWR1bGVDYWxsYmFjaygmU1FMVHJhbnNhY3Rpb246OmRl
bGl2ZXJTdGF0ZW1lbnRDYWxsYmFjayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uQmFja2VuZC5jcHAKaW5kZXggNjJiMjdjZGIzMzI1MTRkNmE0OTcxMGEwNzFkNDExNzVhNzBk
YmRkZS4uODhmNThmY2VkMzkxYWZkZGIwYTg4NzhiOTUyMDRiNDIwNGUzMzk1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kLmNwcApAQCAtNDQ5LDEwICs0NDksNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9u
QmFja2VuZDo6Y29tcHV0ZU5leHRTdGF0ZUFuZENsZWFudXBJZk5lZWRlZCgpCiAgICAgTE9HKFN0
b3JhZ2VBUEksICJEYXRhYmFzZSB3YXMgc3RvcHBlZCBvciBpbnRlcnJ1cHRlZCAtIGNhbmNlbGxp
bmcgd29yayBmb3IgdGhpcyB0cmFuc2FjdGlvbiIpOwogCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FM
aXRlIHRyYW5zYWN0aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCi0gICAgaWYgKG1fZnJv
bnRlbmQubV9zcWxpdGVUcmFuc2FjdGlvbikgewotICAgICAgICBtX2Zyb250ZW5kLm1fc3FsaXRl
VHJhbnNhY3Rpb24tPnN0b3AoKTsKLSAgICAgICAgbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0
aW9uID0gbnVsbHB0cjsKLSAgICB9CisgICAgbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9u
ID0gbnVsbHB0cjsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgZnJvbnRlbmQgc3RhdGUgbWFjaGlu
ZS4gVGhpcyBhbHNvIGdldHMgdGhlIGZyb250ZW5kIHRvCiAgICAgLy8gY2FsbCBjb21wdXRlTmV4
dFN0YXRlQW5kQ2xlYW51cElmTmVlZGVkKCkgYW5kIGNsZWFyIGl0cyB3cmFwcGVycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggYTExMTAy
NTY4MWU0NjkzMTIzZmJjOGNiNDkwYTgzNzBkYjM5YzE4My4uM2YwYWY2ZDgyY2E2ZDIyMGM1M2Fj
NmMzNDBiZTIxOTI0ZDRjOWU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRGF0
YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IlNRTGl0ZVN0YXRlbWVudC5oIgorI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCiAjaW5j
bHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3FsaXRlMy5oPgogI2luY2x1ZGUgPHRocmVhZD4KQEAg
LTczMyw0ICs3MzQsOSBAQCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50
PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnQoQQogICAgIHJldHVybiBVbmlx
dWVSZWY8U1FMaXRlU3RhdGVtZW50PigqbmV3IFNRTGl0ZVN0YXRlbWVudCgqdGhpcywgc3FsU3Rh
dGVtZW50LnZhbHVlKCkpKTsKIH0KIAorYm9vbCBTUUxpdGVEYXRhYmFzZTo6c2hvdWxkRXhlY3V0
ZVN0YXRlbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3dyaXRlVHJhbnNhY3Rpb25JblBy
b2dyZXNzIHx8ICFtX3dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzLT53YXNSb2xsZWRCYWNrQnlT
UUxpdGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCA0YjIyYzhmZTY4ZTM1ZmJkZDA5NzI1
ODY4YzRjOWEwZTVjYWIyY2YwLi44MGFmZmE2OGIxYzBiZjlkNzMwMGIzZmEwMGE5OGRkNjUzNmYx
MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApA
QCAtNzEsOCArNzEsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFs
bFRhYmxlcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBydW5WYWN1dW1Db21tYW5kKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgaW50IHJ1bkluY3JlbWVudGFsVmFjdXVtQ29tbWFuZCgpOwotICAg
IAotICAgIGJvb2wgdHJhbnNhY3Rpb25JblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV90cmFu
c2FjdGlvbkluUHJvZ3Jlc3M7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFNRTGl0
ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50U2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gcHJl
cGFyZVN0YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlcnkpOwpAQCAtMTYyLDYgKzE2MCw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIGluY3JlbWVudFN0YXRlbWVudENvdW50KCk7CiAgICAgdm9pZCBkZWNy
ZW1lbnRTdGF0ZW1lbnRDb3VudCgpOwogCisgICAgYm9vbCBoYXNXcml0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuICEhbV93cml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzczsg
fQorICAgIGJvb2wgc2hvdWxkRXhlY3V0ZVN0YXRlbWVudCgpIGNvbnN0OworCiBwcml2YXRlOgog
ICAgIHN0YXRpYyBpbnQgYXV0aG9yaXplckZ1bmN0aW9uKHZvaWQqLCBpbnQsIGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKIApAQCAtMTc1LDcgKzE3
Niw3IEBAIHByaXZhdGU6CiAgICAgc3FsaXRlMyogbV9kYiB7IG51bGxwdHIgfTsKICAgICBpbnQg
bV9wYWdlU2l6ZSB7IC0xIH07CiAgICAgCi0gICAgYm9vbCBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVz
cyB7IGZhbHNlIH07CisgICAgV2Vha1B0cjxTUUxpdGVUcmFuc2FjdGlvbj4gbV93cml0ZVRyYW5z
YWN0aW9uSW5Qcm9ncmVzczsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9zaGFyYWJs
ZSB7IGZhbHNlIH07CiAgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG1fc3RhdGVtZW50Q291bnQg
eyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3Rh
dGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQu
Y3BwCmluZGV4IGIwODQ5ZTZmODA4Y2EzODBiMDhjNjI3NGIwNGQxNDljYzAzM2MwODcuLmVhYTJj
ZGQyYTliZTg4MzUyNTJhNTU1ZWMxMWIwM2NlNGZjMmIyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC02Niw2ICs2NiwxMSBAQCBp
bnQgU1FMaXRlU3RhdGVtZW50OjpzdGVwKCkKIHsKICAgICBMb2NrZXIgZGF0YWJhc2VMb2NrIHsg
bV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkgfTsKIAorICAgIGlmICghbV9kYXRhYmFzZS5zaG91
bGRFeGVjdXRlU3RhdGVtZW50KCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0
YWJhc2UsICJTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXA6IENhbm5vdCBzdGVwICV7cHVibGljfXMgYmVj
YXVzZSB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkIiwgc3FsaXRlM19zcWwobV9zdGF0ZW1lbnQpKTsK
KyAgICAgICAgcmV0dXJuIFNRTElURV9BQk9SVDsKKyAgICB9CisKICAgICBpbnQgZXJyb3IgPSBz
cWxpdGUzX3N0ZXAobV9zdGF0ZW1lbnQpOwogICAgIGlmIChlcnJvciAhPSBTUUxJVEVfRE9ORSAm
JiBlcnJvciAhPSBTUUxJVEVfUk9XKQogICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJzcWxpdGUz
X3N0ZXAgZmFpbGVkICglaSlcbkVycm9yIC0gJXMiLCBlcnJvciwgc3FsaXRlM19lcnJtc2cobV9k
YXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCmluZGV4IDA4ZTllYjczZGIyNGEwOTBhN2EwODBj
MWE4MTU2OTMxOGU1YTI4NTkuLmUzYjg4M2NhMjI2ZmM0ZjY5MzhkMjZmZTJiOGQxZTAzZTllZDc1
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0
aW9uLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgi
CiAKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgorI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVu
dC5oIgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuaCIKQEAgLTM2LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTUUxp
dGVUcmFuc2FjdGlvbjo6U1FMaXRlVHJhbnNhY3Rpb24oU1FMaXRlRGF0YWJhc2UmIGRiLCBib29s
IHJlYWRPbmx5KQogICAgIDogbV9kYihkYikKLSAgICAsIG1faW5Qcm9ncmVzcyhmYWxzZSkKICAg
ICAsIG1fcmVhZE9ubHkocmVhZE9ubHkpCiB7CiB9CkBAIC00Nyw3NCArNDcsNzggQEAgU1FMaXRl
VHJhbnNhY3Rpb246On5TUUxpdGVUcmFuc2FjdGlvbigpCiAgICAgICAgIHJvbGxiYWNrKCk7CiB9
CiAKLXZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKCkKK2ludCBTUUxpdGVUcmFuc2FjdGlv
bjo6YmVnaW4oKQogewotICAgIGlmICghbV9pblByb2dyZXNzKSB7Ci0gICAgICAgIEFTU0VSVCgh
bV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk7Ci0gICAgICAgIC8vIENhbGwgQkVHSU4gSU1N
RURJQVRFIGZvciBhIHdyaXRlIHRyYW5zYWN0aW9uIHRvIGFjcXVpcmUKLSAgICAgICAgLy8gYSBS
RVNFUlZFRCBsb2NrIG9uIHRoZSBEQiBmaWxlLiBPdGhlcndpc2UsIGFub3RoZXIgd3JpdGUKLSAg
ICAgICAgLy8gdHJhbnNhY3Rpb24gKG9uIGFub3RoZXIgY29ubmVjdGlvbikgY291bGQgbWFrZSBj
aGFuZ2VzCi0gICAgICAgIC8vIHRvIHRoZSBzYW1lIERCIGZpbGUgYmVmb3JlIHRoaXMgdHJhbnNh
Y3Rpb24gZ2V0cyB0byBleGVjdXRlCi0gICAgICAgIC8vIGFueSBzdGF0ZW1lbnRzLiBJZiB0aGF0
IGhhcHBlbnMsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBmYWlsLgotICAgICAgICAvLyBodHRwOi8v
d3d3LnNxbGl0ZS5vcmcvbGFuZ190cmFuc2FjdGlvbi5odG1sCi0gICAgICAgIC8vIGh0dHA6Ly93
d3cuc3FsaXRlLm9yZy9sb2NraW5ndjMuaHRtbCNsb2NraW5nCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlv
bkluUHJvZ3Jlc3NDb3VudCgpOwotI2VuZGlmCi0gICAgICAgIGlmIChtX3JlYWRPbmx5KQotICAg
ICAgICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVHSU4iX3MpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21t
YW5kKCJCRUdJTiBJTU1FRElBVEUiX3MpOwotICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblBy
b2dyZXNzID0gbV9pblByb2dyZXNzOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAg
IGlmICghbV9pblByb2dyZXNzKQotICAgICAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpk
ZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwotI2VuZGlmCi0gICAgfQotfQor
ICAgIGlmIChtX2luUHJvZ3Jlc3MpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisgICAg
bV9pblByb2dyZXNzID0gdHJ1ZTsKIAotdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6Y29tbWl0KCkK
LXsKLSAgICBpZiAobV9pblByb2dyZXNzKSB7Ci0gICAgICAgIEFTU0VSVChtX2RiLm1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzKTsKLSAgICAgICAgbV9pblByb2dyZXNzID0gIW1fZGIuZXhlY3V0ZUNv
bW1hbmQoIkNPTU1JVCJfcyk7Ci0gICAgICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3Mg
PSBtX2luUHJvZ3Jlc3M7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgaWYgKCFt
X2luUHJvZ3Jlc3MpCi0gICAgICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVu
dFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7CisgICAgU1FMaXRlRGF0YWJhc2VUcmFja2Vy
OjppbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwogI2VuZGlmCisKKyAgICAv
LyBDYWxsIEJFR0lOIElNTUVESUFURSBmb3IgYSB3cml0ZSB0cmFuc2FjdGlvbiB0byBhY3F1aXJl
CisgICAgLy8gYSBSRVNFUlZFRCBsb2NrIG9uIHRoZSBEQiBmaWxlLiBPdGhlcndpc2UsIGFub3Ro
ZXIgd3JpdGUKKyAgICAvLyB0cmFuc2FjdGlvbiAob24gYW5vdGhlciBjb25uZWN0aW9uKSBjb3Vs
ZCBtYWtlIGNoYW5nZXMKKyAgICAvLyB0byB0aGUgc2FtZSBEQiBmaWxlIGJlZm9yZSB0aGlzIHRy
YW5zYWN0aW9uIGdldHMgdG8gZXhlY3V0ZQorICAgIC8vIGFueSBzdGF0ZW1lbnRzLiBJZiB0aGF0
IGhhcHBlbnMsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBmYWlsLgorICAgIC8vIGh0dHA6Ly93d3cu
c3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwKKyAgICAvLyBodHRwOi8vd3d3LnNxbGl0
ZS5vcmcvbG9ja2luZ3YzLmh0bWwjbG9ja2luZworICAgIEFTQ0lJTGl0ZXJhbCBzcWxTdHJpbmcg
PSBtX3JlYWRPbmx5ID8gIkJFR0lOIl9zIDogIkJFR0lOIElNTUVESUFURSJfczsKKyAgICBhdXRv
IHNxbCA9IG1fZGIucHJlcGFyZVN0YXRlbWVudChzcWxTdHJpbmcpOworICAgIGludCByZXN1bHQg
PSBzcWwgPyBzcWwtPnN0ZXAoKSA6IHNxbC5lcnJvcigpOworCisgICAgaWYgKCFtX3JlYWRPbmx5
KSB7CisgICAgICAgIEFTU0VSVCghbV9kYi5tX3dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzKTsK
KyAgICAgICAgbV9kYi5tX3dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzID0gbWFrZVdlYWtQdHIo
dGhpcyk7CiAgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTUUxpdGVUcmFu
c2FjdGlvbjo6cm9sbGJhY2soKQoraW50IFNRTGl0ZVRyYW5zYWN0aW9uOjpjb21taXQoKQogewot
ICAgIC8vIFdlIGRvIG5vdCB1c2UgdGhlICdtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21t
YW5kKCJST0xMQkFDSyIpJyBjb25zdHJ1Y3QgaGVyZSwKLSAgICAvLyBiZWNhdXNlIG1faW5Qcm9n
cmVzcyBzaG91bGQgYWx3YXlzIGJlIHNldCB0byBmYWxzZSBhZnRlciBhIFJPTExCQUNLLCBhbmQK
LSAgICAvLyBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyIpIGNhbiBzb21ldGltZXMgaGFy
bWxlc3NseSBmYWlsLCB0aHVzIHJldHVybmluZwotICAgIC8vIGEgbm9uLXplcm8vdHJ1ZSByZXN1
bHQgKGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwpLgotICAgIGlm
IChtX2luUHJvZ3Jlc3MpIHsKLSAgICAgICAgQVNTRVJUKG1fZGIubV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3MpOwotICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyJfcyk7Ci0gICAg
ICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblBy
b2dyZXNzID0gZmFsc2U7CisgICAgaWYgKCFtX2luUHJvZ3Jlc3MpCisgICAgICAgIHJldHVybiBT
UUxJVEVfRVJST1I7CisgICAgbV9pblByb2dyZXNzID0gZmFsc2U7CisgICAgCisgICAgYXV0byBz
cWwgPSBtX2RiLnByZXBhcmVTdGF0ZW1lbnQoIkNPTU1JVCJfcyk7CisgICAgaW50IHJlc3VsdCA9
IHNxbCA/IHNxbC0+c3RlcCgpIDogc3FsLmVycm9yKCk7CisKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9u
SW5Qcm9ncmVzc0NvdW50KCk7CisgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRU
cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwogI2VuZGlmCisKKyAgICBpZiAoIW1fcmVhZE9u
bHkpIHsKKyAgICAgICAgQVNTRVJUKG1fZGIubV93cml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9
PSB0aGlzKTsKKyAgICAgICAgbV9kYi5tX3dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzID0gbnVs
bHB0cjsKICAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFNRTGl0ZVRyYW5z
YWN0aW9uOjpzdG9wKCkKK2ludCBTUUxpdGVUcmFuc2FjdGlvbjo6cm9sbGJhY2soKQogewotICAg
IGlmIChtX2luUHJvZ3Jlc3MpIHsKLSAgICAgICAgbV9pblByb2dyZXNzID0gZmFsc2U7Ci0gICAg
ICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBpZiAoIW1faW5Q
cm9ncmVzcykKKyAgICAgICAgcmV0dXJuIFNRTElURV9FUlJPUjsKKyAgICBtX2luUHJvZ3Jlc3Mg
PSBmYWxzZTsKKworICAgIGF1dG8gc3FsID0gbV9kYi5wcmVwYXJlU3RhdGVtZW50KCJST0xMQkFD
SyJfcyk7CisgICAgaW50IHJlc3VsdCA9ICBzcWwgPyBzcWwtPnN0ZXAoKSA6IHNxbC5lcnJvcigp
OworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFj
a2VyOjpkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOworICAgIFNRTGl0ZURh
dGFiYXNlVHJhY2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKICNl
bmRpZgorCisgICAgaWYgKCFtX3JlYWRPbmx5KSB7CisgICAgICAgIEFTU0VSVChtX2RiLm1fd3Jp
dGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MgPT0gdGhpcyk7CisgICAgICAgIG1fZGIubV93cml0ZVRy
YW5zYWN0aW9uSW5Qcm9ncmVzcyA9IG51bGxwdHI7CiAgICAgfQorCisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotYm9vbCBTUUxpdGVUcmFuc2FjdGlvbjo6d2FzUm9sbGVkQmFja0J5U3FsaXRlKCkg
Y29uc3QKK2Jvb2wgU1FMaXRlVHJhbnNhY3Rpb246Ondhc1JvbGxlZEJhY2tCeVNRTGl0ZSgpIGNv
bnN0CiB7CiAgICAgLy8gQWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9jM3JlZi9n
ZXRfYXV0b2NvbW1pdC5odG1sLAogICAgIC8vIHRoZSBhdXRvLWNvbW1pdCBmbGFnIHNob3VsZCBi
ZSBvZmYgaW4gdGhlIG1pZGRsZSBvZiBhIHRyYW5zYWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5oCmluZGV4IGI5ZDFmNzk0MGNjYjYyYWJm
NDNmOTc1ZjMxNmU3ODFhMjY4NzJiNzMuLmRlZGE2YTc3NTEyYWQxZTEyMTNjMTY4OTY4OGM3ZWZi
NjMxZmNkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVU
cmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFu
c2FjdGlvbi5oCkBAIC0yOCwzMCArMjgsMzEgQEAKIAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTUUxpdGVEYXRhYmFzZTsKIAotY2xh
c3MgU1FMaXRlVHJhbnNhY3Rpb24gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNRTGl0ZVRy
YW5zYWN0aW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBTUUxpdGVUcmFuc2Fj
dGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTUUxpdGVUcmFuc2FjdGlvbj4geworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNRTGl0ZVRyYW5zYWN0aW9uKTsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTUUxpdGVUcmFuc2FjdGlv
bihTUUxpdGVEYXRhYmFzZSYgZGIsIGJvb2wgcmVhZE9ubHkgPSBmYWxzZSk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgflNRTGl0ZVRyYW5zYWN0aW9uKCk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBiZWdpbigpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0KCk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByb2xsYmFjaygpOwotICAgIHZvaWQgc3RvcCgpOworICAgIFdFQkNP
UkVfRVhQT1JUIGludCBiZWdpbigpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb21taXQoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcm9sbGJhY2soKTsKICAgICAKICAgICBib29sIGluUHJv
Z3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX2luUHJvZ3Jlc3M7IH0KLSAgICBib29sIHdhc1JvbGxl
ZEJhY2tCeVNxbGl0ZSgpIGNvbnN0OworICAgIGJvb2wgd2FzUm9sbGVkQmFja0J5U1FMaXRlKCkg
Y29uc3Q7CiAKICAgICBTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBt
X2RiOyB9CiAKIHByaXZhdGU6CiAgICAgU1FMaXRlRGF0YWJhc2UmIG1fZGI7Ci0gICAgYm9vbCBt
X2luUHJvZ3Jlc3M7CisgICAgYm9vbCBtX2luUHJvZ3Jlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9yZWFkT25seTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IGYyYjA2N2VhNGRkMDc5YmRkN2Y3YWY3NWQ4YzJh
MGIzN2FlMjE1MmYuLjFjOTA0YjAwNjI0OTMzYmMwZTkzNTk0YWY3ZTJiMjQ4YTA3MjhkNDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmNwcApAQCAtMTAzOCw3ICsxMDM4LDcgQEAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklEKGNvbnN0IFJlZ2kKIAogU3Ry
aW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVBbmRNYWtlRG9t
YWluTGlzdChjb25zdCBTUUxpdGVUcmFuc2FjdGlvbiYsIGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+JiBkb21haW5MaXN0KQogewotICAgIEFTU0VSVChtX2RhdGFiYXNlLnRyYW5zYWN0
aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS5oYXNXcml0ZVRyYW5zYWN0
aW9uSW5Qcm9ncmVzcygpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3Ig
KGF1dG8mIHRvcEZyYW1lUmVzb3VyY2UgOiBkb21haW5MaXN0KSB7CkBAIC0xMDc4LDcgKzEwNzgs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21h
aW5SZWxhdGlvbnNoaXBMaXN0KGNvbnN0IFNRTAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyhjb25zdCBTUUxpdGVUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGxvYWRT
dGF0aXN0aWNzKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VS
VChtX2RhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQobV9kYXRh
YmFzZS5oYXNXcml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKIAogICAgIGF1dG8gcmVnaXN0
cmFibGVEb21haW5JRCA9IGRvbWFpbklEKGxvYWRTdGF0aXN0aWNzLnJlZ2lzdHJhYmxlRG9tYWlu
KTsKICAgICAKQEAgLTExMjgsNyArMTEyOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnBvcHVsYXRlRnJvbU1lbW9yeVN0b3JlKGNvbnN0IFJlc291cmNlCiB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZShjb25zdCBTUUxp
dGVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCogY3Vy
cmVudCwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgb3RoZXIpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2UudHJhbnNhY3Rpb25J
blByb2dyZXNzKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlLmhhc1dyaXRlVHJhbnNhY3Rpb25J
blByb2dyZXNzKCkpOwogCiAgICAgYXV0byBjdXJyZW50UmVnaXN0cmFibGVEb21haW4gPSBjdXJy
ZW50LT5jb2x1bW5UZXh0KFJlZ2lzdHJhYmxlRG9tYWluSW5kZXgpOwogICAgIGF1dG8gY3VycmVu
dExhc3RTZWVuID0gY3VycmVudC0+Y29sdW1uRG91YmxlKExhc3RTZWVuSW5kZXgpOwpAQCAtMTY0
OSw3ICsxNjQ5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKGNvbnN0
IFNRTGl0ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgU3ViRnJhbWVEb21haW4mJiBzdWJGcmFt
ZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgc3RkOjpvcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBTdG9yYWdlQWNj
ZXNzU2NvcGUgc2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwotICAgIEFTU0VSVChtX2RhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsK
KyAgICBBU1NFUlQobV9kYXRhYmFzZS5oYXNXcml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsK
IAogICAgIGlmIChzdWJGcmFtZURvbWFpbiA9PSB0b3BGcmFtZURvbWFpbikgewogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzKTsKQEAgLTE5MTgs
NyArMTkxOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNs
ZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlCiB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3Jl
OjpTUUxpdGVUcmFuc2FjdGlvbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQobV9kYXRhYmFzZS50cmFuc2FjdGlv
bkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaGFzV3JpdGVUcmFuc2FjdGlv
bkluUHJvZ3Jlc3MoKSk7CiAKICAgICBhdXRvIHRhcmdldFJlc3VsdCA9IGVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvbWFpbik7CiAgICAgaWYgKCF0YXJnZXRS
ZXN1bHQuc2Vjb25kKSB7CkBAIC0xOTU1LDcgKzE5NTUsNyBAQCBib29sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0
cmFibAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNl
ckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cg
b3BlcmF0aW5nRGF0ZXNXaW5kb3cpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOworICAgIEFT
U0VSVChtX2RhdGFiYXNlLmhhc1dyaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwogCiAgICAg
YXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9oYWRVc2VySW50
ZXJhY3Rpb25TdGF0ZW1lbnQsIGhhZFVzZXJJbnRlcmFjdGlvblF1ZXJ5LCAiaGFzSGFkVXNlcklu
dGVyYWN0aW9uIl9zKTsKICAgICBpZiAoIXNjb3BlZFN0YXRlbWVudApAQCAtMTk4NCw3ICsxOTg0
LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNl
ckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlMKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFNRTGl0ZVRyYW5zYWN0
aW9uJiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgUmVzb3VyY2VMb2FkUHJldmFs
ZW5jZSBuZXdQcmV2YWxlbmNlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwot
ICAgIEFTU0VSVChtX2RhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBBU1NF
UlQobV9kYXRhYmFzZS5oYXNXcml0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKIAogICAgIGlm
IChzaG91bGRTa2lwKGRvbWFpbikpCiAgICAgICAgIHJldHVybjsKQEAgLTIxNjYsNyArMjE2Niw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5kZmF0
aGVyZWQoY29uc3QgUmVnaXN0cmFibGVEb21hCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFdlYkNvcmU6OlNRTGl0ZVRyYW5z
YWN0aW9uJiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgYm9vbCB2YWx1ZSkKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQobV9kYXRhYmFzZS50
cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaGFzV3JpdGVU
cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICBhdXRvIHJlc3VsdCA9IGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvbWFpbik7CiAgICAgaWYgKCFyZXN1
bHQuc2Vjb25kKSB7CkBAIC0yMTg3LDcgKzIxODcsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFdlYkNvcmU6OlNRTGl0
ZQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0SXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbChjb25zdCBTUUxpdGVUcmFuc2FjdGlvbiYsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wgdmFsdWUpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2UudHJhbnNhY3Rpb25J
blByb2dyZXNzKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlLmhhc1dyaXRlVHJhbnNhY3Rpb25J
blByb2dyZXNzKCkpOwogCiAgICAgYXV0byByZXN1bHQgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb21haW4pOwogICAgIGlmICghcmVzdWx0LnNlY29uZCkg
ewpAQCAtMjg0Myw3ICsyODQzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGUKIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKGNv
bnN0IFNRTGl0ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGRvbWFpbikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NF
UlQobV9kYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKG1fZGF0
YWJhc2UuaGFzV3JpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICBpZiAoc2hvdWxk
U2tpcChkb21haW4pKQogICAgICAgICByZXR1cm47CkBAIC0yODc1LDcgKzI4NzUsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRWZXJ5UHJldmFsZW50UmVz
b3VyY2UoY29uc3QgUmVnaXN0cgogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6c2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFNRTGl0ZVRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQobV9kYXRhYmFzZS50cmFuc2FjdGlv
bkluUHJvZ3Jlc3MoKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaGFzV3JpdGVUcmFuc2FjdGlv
bkluUHJvZ3Jlc3MoKSk7CiAKICAgICBpZiAoc2hvdWxkU2tpcChkb21haW4pKQogICAgICAgICBy
ZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433465</attachid>
            <date>2021-07-13 17:43:40 -0700</date>
            <delta_ts>2021-07-14 03:18:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227771-20210713174339.patch</filename>
            <type>text/plain</type>
            <size>6101</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzljMmIyNWVlNmE3YzNh
ZmE2NTZlNzc2MDNmY2YxZjIyNjQ5OWFhNC4uMDY5OGU4Zjc2YjFjOGRjNzNlZDA2MmE1ZmZiM2Fi
NTY1N2U1YTY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTA3LTEzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJldHVybiBlcnJvciBmb3Ig
c3RhdGVtZW50IGlmIHRoZSB0cmFuc2FjdGlvbiBpdCBiZWxvbmdzIHRvIGlzIHJvbGxlZCBiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3NzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHN1
cmUgc3RhdGVtZW50cyBiZXR3ZWVuIGV4cGxpY2l0IGJlZ2luIGFuZCBjb21taXQvYWJvcnQgYXJl
IG5vdCBleGVjdXRlZCwgYXMgdGhlc2Ugc3RhdGVtZW50cyBhcmUgbGlrZWx5CisgICAgICAgIHBh
cnQgb2YgdGhlIHRyYW5zYWN0aW9uLiBPdGhlcndpc2UsIGNsaWVudCBtYXkgZmFpbCB0byBoYW5k
bGUgZXJyb3Igb2Ygc29tZSBzdGF0ZW1lbnQgYW5kIGNvbnRpbnVlcyB0byBydW4KKyAgICAgICAg
dHJhbnNhY3Rpb24gdW50aWwgY29tbWl0aW5nIGl0LiBEZXNwaXRlIHRoZXJlIHdpbGwgYmUgZXJy
b3IgaW4gY29tbWl0LCB0aGUgc3RhdGVtZW50cyBhZnRlciB0aGUgZXJyb3JlZCAKKyAgICAgICAg
c3RhdGVtZW50IHdpbGwgYXV0byBjb21taXQgYW5kIG1heSBjaGFuZ2UgZGF0YWJhc2UgaW4gdW5l
eHBlY3RlZCB3YXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnNldElzUnVubmluZ1RyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppc1J1bm5pbmdUcmFuc2Fj
dGlvbiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnNob3VsZEV4ZWN1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50OjpzdGVwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3Rh
dGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbik6CisKIDIwMjEtMDct
MTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICA+NEsgUmVmZXJlciBzaG91bGQgaGF2ZSB0YWlsaW5nIC8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IGExMTEwMjU2ODFlNDY5MzEyM2Zi
YzhjYjQ5MGE4MzcwZGIzOWMxODMuLjcwNTc5YWU5M2IwMDQ4M2VlNDAyZmU2MThjMTkwNzk2ZWE2
OGMzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcApAQCAtNzMzLDQgKzczMywxNCBAQCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVt
ZW50PiwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnQoQQogICAgIHJl
dHVybiBVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PigqbmV3IFNRTGl0ZVN0YXRlbWVudCgqdGhp
cywgc3FsU3RhdGVtZW50LnZhbHVlKCkpKTsKIH0KIAordm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0
SXNSdW5uaW5nVHJhbnNhY3Rpb24oYm9vbCBpc1J1bm5pbmdUcmFuc2FjdGlvbikKK3sKKyAgICBt
X2lzUnVubmluZ1RyYW5zYWN0aW9uID0gaXNSdW5uaW5nVHJhbnNhY3Rpb247Cit9CisKK2Jvb2wg
U1FMaXRlRGF0YWJhc2U6OmlzUnVubmluZ1RyYW5zYWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9pc1J1bm5pbmdUcmFuc2FjdGlvbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCA0YjIy
YzhmZTY4ZTM1ZmJkZDA5NzI1ODY4YzRjOWEwZTVjYWIyY2YwLi4zZDE0YzE3ODg2ZmI1ZWFiYTE5
NDE2NjNkZGI2NGJlMGY4NjhlNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuaApAQCAtMTYyLDYgKzE2Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGlu
Y3JlbWVudFN0YXRlbWVudENvdW50KCk7CiAgICAgdm9pZCBkZWNyZW1lbnRTdGF0ZW1lbnRDb3Vu
dCgpOwogCisgICAgdm9pZCBzZXRJc1J1bm5pbmdUcmFuc2FjdGlvbihib29sKTsKKyAgICBib29s
IGlzUnVubmluZ1RyYW5zYWN0aW9uKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGlu
dCBhdXRob3JpemVyRnVuY3Rpb24odm9pZCosIGludCwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwogCkBAIC0xOTMsNiArMTk2LDggQEAgcHJpdmF0
ZToKIAogICAgIGludCBtX29wZW5FcnJvciB7IFNRTElURV9FUlJPUiB9OwogICAgIENTdHJpbmcg
bV9vcGVuRXJyb3JNZXNzYWdlOworCisgICAgYm9vbCBtX2lzUnVubmluZ1RyYW5zYWN0aW9uIHsg
ZmFsc2UgfTsKIH07CiAKIGlubGluZSB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbmNyZW1lbnRTdGF0
ZW1lbnRDb3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0
ZW1lbnQuY3BwCmluZGV4IGIwODQ5ZTZmODA4Y2EzODBiMDhjNjI3NGIwNGQxNDljYzAzM2MwODcu
LjA3YTYzZDAyMzU3NjJkOWY5YTYxZjA3MTExZjllMmEyNDFkYmY5N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC02MiwxMCArNjIs
MzEgQEAgU1FMaXRlU3RhdGVtZW50Ojp+U1FMaXRlU3RhdGVtZW50KCkKICAgICBtX2RhdGFiYXNl
LmRlY3JlbWVudFN0YXRlbWVudENvdW50KCk7CiB9CiAKK2Jvb2wgU1FMaXRlU3RhdGVtZW50Ojpz
aG91bGRFeGVjdXRlKCkKK3sKKyAgICBhdXRvIHF1ZXJ5ID0gc3FsaXRlM19zcWwobV9zdGF0ZW1l
bnQpOworICAgIGlmICghc3RyY21wKHF1ZXJ5LCAiQkVHSU4iKSB8fCAhc3RyY21wKHF1ZXJ5LCAi
QkVHSU4gSU1NRURJQVRFIikpCisgICAgICAgIG1fZGF0YWJhc2Uuc2V0SXNSdW5uaW5nVHJhbnNh
Y3Rpb24odHJ1ZSk7CisgICAgZWxzZSBpZiAoIXN0cmNtcChxdWVyeSwgIkNPTU1JVCIpIHx8ICFz
dHJjbXAocXVlcnksICJST0xMQkFDSyIpKQorICAgICAgICBtX2RhdGFiYXNlLnNldElzUnVubmlu
Z1RyYW5zYWN0aW9uKGZhbHNlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gQXV0byBjb21taXQg
c2hvdWxkIGJlIG9mZiB3aGVuIHRyYW5zYWN0aW9uIGlzIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5IGlu
IFNRTGl0ZS4KKyAgICAgICAgaWYgKG1fZGF0YWJhc2UuaXNSdW5uaW5nVHJhbnNhY3Rpb24oKSAm
JiBtX2RhdGFiYXNlLmlzQXV0b0NvbW1pdE9uKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGludCBTUUxpdGVTdGF0ZW1lbnQ6OnN0
ZXAoKQogewogICAgIExvY2tlciBkYXRhYmFzZUxvY2sgeyBtX2RhdGFiYXNlLmRhdGFiYXNlTXV0
ZXgoKSB9OwogCisgICAgaWYgKCFzaG91bGRFeGVjdXRlKCkpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoU1FMRGF0YWJhc2UsICJTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXA6IENhbm5vdCBzdGVw
ICV7cHVibGljfXMgYmVjYXVzZSB0cmFuc2FjdGlvbiBpcyByb2xsZWQgYmFjayIsIHNxbGl0ZTNf
c3FsKG1fc3RhdGVtZW50KSk7CisgICAgICAgIHJldHVybiBTUUxJVEVfQUJPUlQ7CisgICAgfQor
CiAgICAgaW50IGVycm9yID0gc3FsaXRlM19zdGVwKG1fc3RhdGVtZW50KTsKICAgICBpZiAoZXJy
b3IgIT0gU1FMSVRFX0RPTkUgJiYgZXJyb3IgIT0gU1FMSVRFX1JPVykKICAgICAgICAgTE9HKFNR
TERhdGFiYXNlLCAic3FsaXRlM19zdGVwIGZhaWxlZCAoJWkpXG5FcnJvciAtICVzIiwgZXJyb3Is
IHNxbGl0ZTNfZXJybXNnKG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKaW5kZXggY2YyZjEyMGYyZTc1
M2FkOGQxMzE3MGZkMGQ4NzAwMTY5ZGViYzE1NS4uMzgzOWIxYzRkNzcxMmQ2NzY4ZDQzNTFmMGQx
YTFlYTg0MjAwYzgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZVN0YXRlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVT
dGF0ZW1lbnQuaApAQCAtODQsNiArODQsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSBwcmVwYXJlZCBzdGF0ZW1lbnQgaGFzIGJlZW4gc3RlcHBlZCBhdCBsZWFzdCBv
bmNlIHVzaW5nIHN0ZXAoKSBidXQgaGFzIG5laXRoZXIgcnVuIHRvIGNvbXBsZXRpb24gKHJldHVy
bmVkIFNRTElURV9ET05FIGZyb20gc3RlcCgpKSBub3IgYmVlbiByZXNldCgpLgogICAgIGJvb2wg
aGFzU3RhcnRlZFN0ZXBwaW5nKCk7CisgICAgYm9vbCBzaG91bGRFeGVjdXRlKCk7CiAKICAgICBT
UUxpdGVEYXRhYmFzZSYgbV9kYXRhYmFzZTsKICAgICBzcWxpdGUzX3N0bXQqIG1fc3RhdGVtZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5j
cHAKaW5kZXggMDhlOWViNzNkYjI0YTA5MGE3YTA4MGMxYTgxNTY5MzE4ZTVhMjg1OS4uMDEyZjA3
N2YwZDNhZjU2MTFjNDQyYjkzZjA4ZGQ1ZThkNGFmY2ZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCkBAIC02NiwxMCArNjYsMTQg
QEAgdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6YmVnaW4oKQogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21tYW5kKCJCRUdJTiBJTU1FRElBVEUi
X3MpOwogICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gbV9pblByb2dyZXNz
OworICAgICAgICAKKyAgICAgICAgaWYgKCFtX2luUHJvZ3Jlc3MpIHsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgICAgICBpZiAoIW1faW5Qcm9ncmVzcykKICAgICAgICAgICAgIFNRTGl0
ZURhdGFiYXNlVHJhY2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsK
ICNlbmRpZgorICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZXJlIGlzIGFuIGV4cGxpY2l0IHJv
bGxiYWNrIGFmdGVyIGJlZ2luIHRvIHVwZGF0ZSBkYXRhYmFzZSBzdGF0ZS4KKyAgICAgICAgICAg
IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIlJPTExCQUNLIl9zKTsKKyAgICAgICAgfQogICAgIH0KIH0K
IAo=
</data>
<flag name="review"
          id="455716"
          type_id="1"
          status="?"
          setter="sihui_liu"
    />
    <flag name="commit-queue"
          id="455754"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>