<?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>225580</bug_id>
          
          <creation_ts>2021-05-09 12:57:18 -0700</creation_ts>
          <short_desc>Remove all remaining uses of the String::toInt family of functions</short_desc>
          <delta_ts>2021-05-10 09:57:14 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>alecflett</cc>
    
    <cc>apinheiro</cc>
    
    <cc>beidson</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>dbarton</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mkwst</cc>
    
    <cc>pdr</cc>
    
    <cc>pnormand</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>toyoshim</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1758361</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 12:57:18 -0700</bug_when>
    <thetext>Remove all remaining uses of the String::toInt family of functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758365</commentid>
    <comment_count>1</comment_count>
      <attachid>428134</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 14:07:58 -0700</bug_when>
    <thetext>Created attachment 428134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758367</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 14:08:57 -0700</bug_when>
    <thetext>Patch got a little bigger because I revisited HTML attributes and made them use parseHTMLInteger instead of parseInteger&lt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758374</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-09 14:27:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/77719686&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758375</commentid>
    <comment_count>4</comment_count>
      <attachid>428136</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 14:27:25 -0700</bug_when>
    <thetext>Created attachment 428136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758380</commentid>
    <comment_count>5</comment_count>
      <attachid>428139</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 14:37:48 -0700</bug_when>
    <thetext>Created attachment 428139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758381</commentid>
    <comment_count>6</comment_count>
      <attachid>428140</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 15:02:45 -0700</bug_when>
    <thetext>Created attachment 428140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758383</commentid>
    <comment_count>7</comment_count>
      <attachid>428141</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 15:43:43 -0700</bug_when>
    <thetext>Created attachment 428141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758388</commentid>
    <comment_count>8</comment_count>
      <attachid>428143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 16:26:56 -0700</bug_when>
    <thetext>Created attachment 428143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758399</commentid>
    <comment_count>9</comment_count>
      <attachid>428143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 18:23:47 -0700</bug_when>
    <thetext>Comment on attachment 428143
Patch

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

&gt; Source/WebCore/editing/cocoa/DataDetection.mm:210
&gt; +    if (++indexIterator != resultIndices.end()) {

Oops this should just be a while loop; I will fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758400</commentid>
    <comment_count>10</comment_count>
      <attachid>428143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 18:23:50 -0700</bug_when>
    <thetext>Comment on attachment 428143
Patch

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

&gt; Source/WebCore/editing/cocoa/DataDetection.mm:210
&gt; +    if (++indexIterator != resultIndices.end()) {

Oops this should just be a while loop; I will fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758500</commentid>
    <comment_count>11</comment_count>
      <attachid>428143</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-10 08:53:07 -0700</bug_when>
    <thetext>Comment on attachment 428143
Patch

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

&gt; Source/WebCore/html/HTMLLIElement.cpp:122
&gt; +    Optional&lt;int&gt; explicitValue;
&gt; +    if (auto parsedValue = parseHTMLInteger(value))
&gt; +        explicitValue = *parsedValue;

If we have this pattern more (convert Expected&lt;T, *&gt; to Optional&lt;T&gt; we should consider adding a makeOptional() or convertToOptional() that takes an Expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758512</commentid>
    <comment_count>12</comment_count>
      <attachid>428143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-10 09:14:45 -0700</bug_when>
    <thetext>Comment on attachment 428143
Patch

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

&gt;&gt; Source/WebCore/html/HTMLLIElement.cpp:122
&gt;&gt; +        explicitValue = *parsedValue;
&gt; 
&gt; If we have this pattern more (convert Expected&lt;T, *&gt; to Optional&lt;T&gt; we should consider adding a makeOptional() or convertToOptional() that takes an Expected.

Or maybe that should be an implicit conversion defined in the Expected class template.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758528</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-10 09:57:14 -0700</bug_when>
    <thetext>Committed r277269 (237536@main): &lt;https://commits.webkit.org/237536@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428134</attachid>
            <date>2021-05-09 14:07:58 -0700</date>
            <delta_ts>2021-05-09 14:59:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225580-20210509140757.patch</filename>
            <type>text/plain</type>
            <size>94311</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY0NmQ0ZTc3YjAyOGI5
Yjg3ZGQ1ZjEwOGQxNTdlMjRlOTg3NDI4YS4uNmVkZWVlZmQzMTIwMjI0NmZmNWRkY2U1NTdjZmMx
ZDZkYjZlMzZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMS0wNS0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGFsbCByZW1haW5p
bmcgdXNlcyBvZiB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNl
SW5mbyk6CisgICAgICAgIFVzZSBwYXJzZUludGVnZXI8dWludDY0X3Q+IGluc3RlYWQgb2YgU3Ry
aW5nOjp0b1VJbnQ2NFN0cmljdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUpOgorICAgICAg
ICBEaXR0by4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVG
cmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgVXNlIGEgcmVm
ZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2UpOiBVc2UKKyAgICAgICAgQVND
SUlMaXRlcmFsLiBVc2UgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PiBpbnN0
ZWFkIG9mCisgICAgICAgIFN0cmluZzo6dG9JbnQuIFVzZSBhdXRvLiBVc2UgcmVmZXJlbmNlcyBp
bnN0ZWFkIG9mIHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6RGVmbGF0ZVJlc3VsdEhvbGRl
cjo6RGVmbGF0ZVJlc3VsdEhvbGRlcik6IFVzZSBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNv
cmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6On5EZWZsYXRlUmVzdWx0SG9sZGVyKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjpJbmZsYXRlUmVzdWx0SG9sZGVy
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjp+SW5mbGF0
ZVJlc3VsdEhvbGRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IpOiBQ
YXNzIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6ZGVmbGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6aW5mbGF0ZSk6IERpdHRvLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuaDogVXNlIGZvcndhcmQgZGVjbGFyYXRpb25zCisgICAgICAg
IGluc3RlYWQgb2YgaW5jbHVkZXMsIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycywgaW5p
dGlhbGl6ZSBkYXRhIG1lbWJlcnMKKyAgICAgICAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24sIGFu
ZCByZW1vdmUgYW4gdW5uZWNlc3NhcnkgZXhwbGljaXQgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aGVhZGVySGFzVmFsaWRIVFRQVmVyc2lvbik6IFVzZSBwYXJzZUludGVn
ZXI8aW50PiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ1ZpZXc6OnRvSW50U3RyaWN0LgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZSk6IERpdHRv
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVhZGluZ0xldmVs
IGNvbnN0KTogVXNlCisgICAgICAgIGdldEludGVncmFsQXR0cmlidXRlIGluc3RlYWQgb2YgQXRv
bVN0cmluZzo6dG9JbnQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6aGllcmFyY2hpY2FsTGV2ZWwgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6Z2V0SW50ZWdyYWxBdHRyaWJ1dGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAg
U2luY2UgQWNjZXNzaWJpbGl0eU9iamVjdCBoYXMgaXRzIG93biBnZXRBdHRyaWJ1dGUgZnVuY3Rp
b24sIHdlIG5lZWQgdG8KKyAgICAgICAgcmUtaW1wbGVtZW50IEVsZW1lbnQ6OmdldEludGVncmFs
QXR0cmlidXRlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
ZXRTaXplIGNvbnN0KTogVXNlIGdldEludGVncmFsQXR0cmlidXRlCisgICAgICAgIGluc3RlYWQg
b2YgQXRvbVN0cmluZzo6dG9JbnQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpwb3NJblNldCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0Lmg6IEFkZGVkIGdldEludGVncmFsQXR0cmlidXRlLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSBjb25zdCk6VXNlIGdldEludGVn
cmFsQXR0cmlidXRlCisgICAgICAgIGluc3RlYWQgb2YgQXRvbVN0cmluZzo6dG9JbnQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmF4Q29sdW1uQ291bnQgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YXhSb3dDb3VudCBj
b25zdCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENv
bHVtbkluZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsOjpheFJvd0luZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENvbHVtblNwYW4gY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93U3BhbiBjb25zdCk6IERp
dHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YXhDb2x1bW5JbmRleCBj
b25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93Ojph
eFJvd0luZGV4IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVj
dG9yUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVBTlBsdXNCKTogVXNlIHBh
cnNlSW50ZWdlcjxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludFN0cmljdAorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2Vu
aXplcjo6Y29uc3VtZUVzY2FwZSk6IFVzZSBwYXJzZUludGVnZXI8dWludDMyX3Q+IGluc3RlYWQg
b2YKKyAgICAgICAgU3RyaW5nOjp0b1VJbnRTdHJpY3QuCisKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpj
YW5QcmVzZW50RGF0YURldGVjdG9yc1VJRm9yRWxlbWVudCk6CisgICAgICAgIFVzZSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludC4K
KyAgICAgICAgQWxzbyB1c2UgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIFN0cmluZy4KKyAgICAgICAg
KFdlYkNvcmU6OmRhdGFEZXRlY3RvclN0cmluZ0ZvclBhdGgpOiBVc2UgbWFrZVN0cmluZyBpbnN0
ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JF
bGVtZW50KTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LgorCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKTogVXNlIHBhcnNlSFRNTEludGVnZXIgaW5zdGVhZAorICAgICAgICBvZiBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+LgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxMSUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExJRWxlbWVudDo6cGFyc2VWYWx1ZSk6IERpdHRvLgorICAgICAg
ICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
YXJxdWVlRWxlbWVudDo6bG9vcCBjb25zdCk6IFVzZSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZQorICAg
ICAgICBpbnN0ZWFkIG9mIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4uCisg
ICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmli
dXRlKToKKyAgICAgICAgVXNlIHBhcnNlSFRNTEludGVnZXIgaW5zdGVhZCBvZiBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+LgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ29s
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDb2xFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERp
dHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVz
dG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgVXNlIHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZzo6dG9V
SW50LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZvclBhdGgpOiBVc2UK
KyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+IGluc3Rl
YWQgb2YgU3RyaW5nOjp0b1VJbnQuCisKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVy
OjpjcmVhdGVMYXlvdXRCb3gpOiBVc2UgcGFyc2VIVE1MSW50ZWdlcgorICAgICAgICBpbnN0ZWFk
IG9mIEF0b21TdHJpbmc6OnRvSW50LgorCisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBY2Nlc3NDb250
cm9sTWF4QWdlKTogVXNlIHBhcnNlSW50ZWdlcjx1aW50NjRfdD4gaW5zdGVhZAorICAgICAgICBv
ZiBTdHJpbmc6OnRvVUludFN0cmljdC4KKworICAgICAgICAqIGxvYWRlci9GVFBEaXJlY3RvcnlQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPbmVGVFBMaW5lKTogVXNlIHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPgorICAgICAgICBpbnN0ZWFkIG9m
IFN0cmluZzo6dG9VSW50LgorCisgICAgICAgICogbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJz
ZUF0dHJpYnV0aW9uUmVxdWVzdCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDY0X3Q+
IGluc3RlYWQgb2YgU3RyaW5nOjp0b1VJbnQ2NFN0cmljdC4KKworICAgICAgICAqIG1hdGhtbC9N
YXRoTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNlbGVjdEVs
ZW1lbnQ6OmdldFNlbGVjdGVkQWN0aW9uQ2hpbGRBbmRJbmRleCk6CisgICAgICAgIFVzZSBnZXRJ
bnRlZ3JhbEF0dHJpYnV0ZSBpbnN0ZWFkIG9mIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4uCisKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGluZSk6IFVzZQorICAgICAgICBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4gaW5zdGVhZCBvZiBjaGFy
YWN0ZXJzVG9VSW50NjQuCisKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0KTogVXNlIHBhcnNlSW50ZWdlcjx1aW50MTZfdD4g
aW5zdGVhZCBvZiBwYXJzZVVJbnQxNi4KKworICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFi
YXNlSWRlbnRpZmllcik6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazx1aW50MTZfdD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LCB3aGljaAorICAgICAgICBh
bGxvd3MgdXMgdG8gcmVtb3ZlIHNvbWUgcmFuZ2UgY2hlY2tpbmcgYW5kIHR5cGUgY29udmVyc2lv
bi4KKworICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0V2luZG93RmVhdHVyZSk6IFVzZSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azxpbnQ+CisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nVmlldzo6dG9JbnQuCisKKyAgICAgICAg
KiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlUG9ydCk6IFVz
ZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDE2X3Q+IGluc3RlYWQgb2YgY2hhcmFjdGVyc1Rv
SW50U3RyaWN0LgorCisgICAgICAgICogcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGlu
dXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdENQVVVzYWdlKTogVXNlIHBhcnNlSW50
ZWdlcjxwaWRfdD4gaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmc6OnRvSW50U3RyaWN0LiBBbHNv
IHJlbW92ZWQgdW5uZWVkZWQgc3BlY2lhbCBjYXNlcyBmb3IgIi4iIGFuZAorICAgICAgICAiLi4i
IHNpbmNlIGJvdGggd2lsbCBmYWlsIHRvIHBhcnNlIGFzIGFuIGludGVnZXIsIGFuZCB0aGlzIG5v
IGxvbmdlcgorICAgICAgICBuZWVkIHRvIHB1dCBkX25hbWUgaW50byBhIFdURjo6U3RyaW5nLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHA6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVz
cG9uc2VSZWNlaXZlZCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuayBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFy
c2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2UpOiBVc2UKKyAgICAgICAg
cGFyc2VJbnRlZ2VyPGludD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50IHRvIHBhcnNlIGEgc2lu
Z2xlLWRpZ2l0LgorICAgICAgICBQcm9iYWJseSBzaG91bGQgd3JpdGUgdGhpcyBhbm90aGVyIHdh
eS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb2tpZVV0aWw6OnBhcnNlQ29va2llQXR0cmlidXRlcyk6IFVzZQor
ICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ2NF90PiBpbnN0ZWFk
IG9mIFN0cmluZzo6dG9JbnQ2NC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6c2V0
UmVzcG9uc2VGcm9tQ2FjaGVkSGVhZGVycyk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJJZ25v
cmluZ1RyYWlsaW5nSnVuazxsb25nIGxvbmc+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludDY0Lgor
CisgICAgICAgICogc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjphcHBlbmRPUzJUYWJsZSk6IFVzZSBwYXJzZUhU
TUxJbnRlZ2VyCisgICAgICAgIGluc3RlYWQgb2YgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8aW50Pi4gTWlnaHQgYmUgZXZlbiBiZXR0ZXIKKyAgICAgICAgdG8gcmVmYWN0b3IgdG8g
dXNlIGdldEludGVncmFsQXR0cmlidXRlIGxhdGVyLgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9P
VEZGb250Q29udmVydGVyOjphcHBlbmRWT1JHVGFibGUpOiBEaXR0by4KKworICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0U0Zy
YW1lQ291bnRlcik6IFVzZSBwYXJzZUludGVnZXI8dWludDY0X3Q+CisgICAgICAgIGluc3RlYWQg
b2YgU3RyaW5nVmlldzo6dG9VSW50NjRTdHJpY3QuCisKIDIwMjEtMDUtMDkgIERlYW4gSmFja3Nv
biAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJYUl0gUmVtb3ZlIHJlZmVyZW5jZSBj
eWNsZSBpbiBXZWJYUlNlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXggNGRkMzNiNDFmOThlNTZkNGFh
Yjk4NGJjYzE1NjhkOTQ1MjNjMzkzZC4uYzAzNTY2NDA1ZjhlZTUzMWEwNmJmZTU0YTgyMDc1ODM5
ZmU5NWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wNS0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGFsbCByZW1haW5p
bmcgdXNlcyBvZiB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkRyaXZlclNlcnZp
Y2UuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpXZWJEcml2ZXJTZXJ2aWNlOjpydW4pOiBVc2UK
KyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+IGluc3Rl
YWQgb2YgU3RyaW5nOjp0b1VJbnQuCisKKyAgICAgICAgKiBnbGliL1dlYkRyaXZlclNlcnZpY2VH
TGliLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6cGFyc2VWZXJzaW9uKTogVXNlCisgICAgICAg
IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90PiBpbnN0ZWFkIG9mIFN0
cmluZzo6dG9JbnQ2NCwKKyAgICAgICAgYW5kIHRoZW4gYXNzaWduaW5nIGludG8gYSB1aW50NjRf
dC4KKworICAgICAgICAqIHNvY2tldC9IVFRQUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkRyaXZl
cjo6SFRUUFBhcnNlcjo6ZXhwZWN0ZWRCb2R5TGVuZ3RoIGNvbnN0KTogVXNlCisgICAgICAgIHBh
cnNlSW50ZWdlcklnbm9yaW5nVHJhaWxpbmdKdW5rPHNpemVfdD4gaW5zdGVhZCBvZiBTdHJpbmc6
OnRvSW50LgorICAgICAgICBBbHNvIHVzZSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgU3RyaW5nOjpz
dWJzdHJpbmdTaGFyaW5nSW1wbCBhbmQKKyAgICAgICAgZHJvcHBlZCBhbiB1bm5lZWRlZCBjYWxs
IHRvIFN0cmluZzo6c3RyaXBXaGl0ZVNwYWNlLgorCiAyMDIxLTAzLTI1ICBEb24gT2xtc3RlYWQg
IDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBVc2UgV2ViRHJpdmVy
X0RFUklWRURfU09VUkNFUyB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGRh
ZTY4ZjFhMzkyYmJkNWVkMDc1ZDA0NDFmOWEzODI4NGVjOWQxZDkuLmI5NWQzMGM3MDY3OWZkNDA0
NzEyMWM5ZWFhZTQ4MDkwYTYyZGE5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAyMS0wNS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIGFsbCByZW1haW5pbmcgdXNlcyBvZiB0aGUgU3RyaW5nOjp0b0lu
dCBmYW1pbHkgb2YgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjU1ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VWZXJzaW9uU3RyaW5nKTogVXNlIHBhcnNlSW50ZWdlckFsbG93aW5UcmFp
bGluZ0p1bms8aW50PgorICAgICAgICBpc25zdGVhZCBvZiBTdHJpbmc6OnRvSW50LgorCisgICAg
ICAgICogUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZp
ZXc6OmhhbmRsZVBvc3QpOiBVc2UKKyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8dW5zaWduZWQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludCwKKyAgICAgICAgYW5kIHRo
ZW4gYXNzaWduaW5nIHRvIGFuIHVuc2lnbmVkLgorCiAyMDIxLTA1LTA0ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBy
ZWZlcmVuY2VzIHRvIFBhZ2VHcm91cCBmcm9tIFdlYktpdExlZ2FjeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcAppbmRleCAzNmQ5YjA0NDZmNTAxMTNiNGVjZmNmMjRlNThhZDcyNjQ2
OTE3MmMwLi5iMjZjZDcyN2JjNDMyYTE1NDhlODI4MjJjNWJmZTk5MzgyODFkNTc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtMTAwMywxMiArMTAwNCwxMiBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlz
dGluZ0RhdGFiYXNlSQogICAgICAgICBpZiAoc3FsLmlzQ29sdW1uTnVsbCgwKSkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBTdHJpbmcgc3RyaW5nVmVyc2lvbiA9IHNxbC5n
ZXRDb2x1bW5UZXh0KDApOwotICAgICAgICBib29sIG9rOwotICAgICAgICBkYXRhYmFzZVZlcnNp
b24gPSBzdHJpbmdWZXJzaW9uLnRvVUludDY0U3RyaWN0KCZvayk7Ci0gICAgICAgIGlmICghb2sp
IHsKKyAgICAgICAgYXV0byBwYXJzZWRWZXJzaW9uID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pihz
dHJpbmdWZXJzaW9uKTsKKyAgICAgICAgaWYgKCFwYXJzZWRWZXJzaW9uKSB7CiAgICAgICAgICAg
ICBMT0dfRVJST1IoIkRhdGFiYXNlIHZlcnNpb24gb24gZGlzayAoJyVzJykgZG9lcyBub3QgY2xl
YW5seSBjb252ZXJ0IHRvIGFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHZlcnNpb24iLCBzdHJp
bmdWZXJzaW9uLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KKyAgICAgICAgZGF0YWJhc2VWZXJzaW9uID0gKnBhcnNlZFZlcnNpb247CiAgICAg
fQogCiAgICAgYXV0byBkYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
ZGF0YWJhc2VOYW1lLCBkYXRhYmFzZVZlcnNpb24sIDApOwpAQCAtMTE2NiwxNCArMTE2NywxMyBA
QCBPcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmRhdGFiYXNlTmFtZUFuZFZlcnNpbwogCiAgICAgU1FMaXRlU3RhdGVtZW50IHZlcnNxbChk
YXRhYmFzZSwgIlNFTEVDVCB2YWx1ZSBGUk9NIElEQkRhdGFiYXNlSW5mbyBXSEVSRSBrZXkgPSAn
RGF0YWJhc2VWZXJzaW9uJzsiX3MpOwogICAgIFN0cmluZyBzdHJpbmdWZXJzaW9uID0gdmVyc3Fs
LmdldENvbHVtblRleHQoMCk7Ci0gICAgYm9vbCBvazsKLSAgICB1aW50NjRfdCBkYXRhYmFzZVZl
cnNpb24gPSBzdHJpbmdWZXJzaW9uLnRvVUludDY0U3RyaWN0KCZvayk7Ci0gICAgaWYgKCFvaykg
eworICAgIGF1dG8gZGF0YWJhc2VWZXJzaW9uID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90PihzdHJp
bmdWZXJzaW9uKTsKKyAgICBpZiAoZGF0YWJhc2VWZXJzaW9uKSB7CiAgICAgICAgIExPR19FUlJP
UigiRGF0YWJhc2UgdmVyc2lvbiBvbiBkaXNrICgnJXMnKSBkb2VzIG5vdCBjbGVhbmx5IGNvbnZl
cnQgdG8gYW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgdmVyc2lvbiIsIHN0cmluZ1ZlcnNpb24u
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0g
ICAgcmV0dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24geyBkYXRhYmFzZU5hbWUsIGRhdGFi
YXNlVmVyc2lvbiB9OworICAgIHJldHVybiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIHsgZGF0
YWJhc2VOYW1lLCAqZGF0YWJhc2VWZXJzaW9uIH07CiB9CiAKIFN0cmluZyBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhVcGdyYWRlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmNwcAppbmRleCBiYTM5MDYyOGViY2E5NmYwYzI3YjNiZGYwMDM1NmNiNGM2NGZkYjk1
Li41MGYzNDQyMzJkYzg2MTVjNDIyZjk0ZjkyYTlkYzdjMTFhYjQwZGNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVGcmFtZXIuY3BwCkBAIC0zMywzMyArMzMsMzAgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNp
b24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25E
ZWZsYXRlRnJhbWUgOiBwdWJsaWMgV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yIHsKK2NsYXNz
IFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZSBmaW5hbCA6IHB1YmxpYyBXZWJTb2NrZXRF
eHRlbnNpb25Qcm9jZXNzb3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIGV4cGxpY2l0IFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZShXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyKik7Ci0gICAgdmlydHVhbCB+V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZy
YW1lKCkgPSBkZWZhdWx0OwotCi0gICAgU3RyaW5nIGhhbmRzaGFrZVN0cmluZygpIG92ZXJyaWRl
OwotICAgIGJvb2wgcHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
Jikgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBvdmVycmlkZSB7IHJldHVy
biBtX2ZhaWx1cmVSZWFzb247IH0KKyAgICBleHBsaWNpdCBXZWJTb2NrZXRFeHRlbnNpb25EZWZs
YXRlRnJhbWUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciYpOwogCiBwcml2YXRlOgotICAgIFdlYlNv
Y2tldERlZmxhdGVGcmFtZXIqIG1fZnJhbWVyOwotICAgIGJvb2wgbV9yZXNwb25zZVByb2Nlc3Nl
ZDsKKyAgICBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgZmluYWw7CisgICAgYm9vbCBwcm9jZXNz
UmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBmaW5hbDsKKyAgICBTdHJp
bmcgZmFpbHVyZVJlYXNvbigpIGZpbmFsIHsgcmV0dXJuIG1fZmFpbHVyZVJlYXNvbjsgfQorCisg
ICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lciYgbV9mcmFtZXI7CisgICAgYm9vbCBtX3Jlc3BvbnNl
UHJvY2Vzc2VkIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9mYWlsdXJlUmVhc29uOwogfTsKIAog
Ly8gRlhJTUU6IFJlbW92ZSB2ZW5kb3IgcHJlZml4IGFmdGVyIHRoZSBzcGVjaWZpY2F0aW9uIG1h
dHVyZWQuCi1XZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OldlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZShXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCi0gICAgOiBXZWJT
b2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IoIngtd2Via2l0LWRlZmxhdGUtZnJhbWUiKQorV2ViU29j
a2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUo
V2ViU29ja2V0RGVmbGF0ZUZyYW1lciYgZnJhbWVyKQorICAgIDogV2ViU29ja2V0RXh0ZW5zaW9u
UHJvY2Vzc29yKCJ4LXdlYmtpdC1kZWZsYXRlLWZyYW1lIl9zKQogICAgICwgbV9mcmFtZXIoZnJh
bWVyKQotICAgICwgbV9yZXNwb25zZVByb2Nlc3NlZChmYWxzZSkKIHsKLSAgICBBU1NFUlQobV9m
cmFtZXIpOwogfQogCiBTdHJpbmcgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpoYW5k
c2hha2VTdHJpbmcoKQpAQCAtNzAsMTggKzY3LDE4IEBAIFN0cmluZyBXZWJTb2NrZXRFeHRlbnNp
b25EZWZsYXRlRnJhbWU6OmhhbmRzaGFrZVN0cmluZygpCiBib29sIFdlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+JiBzZXJ2ZXJQYXJhbWV0ZXJzKQogewogICAgIGlmIChtX3Jlc3BvbnNlUHJvY2Vzc2VkKSB7
Ci0gICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBkdXBsaWNhdGUgZGVmbGF0ZS1m
cmFtZSByZXNwb25zZSI7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBkdXBs
aWNhdGUgZGVmbGF0ZS1mcmFtZSByZXNwb25zZSJfczsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICBtX3Jlc3BvbnNlUHJvY2Vzc2VkID0gdHJ1ZTsKIAogICAgIHVuc2lnbmVkIGV4
cGVjdGVkTnVtUGFyYW1ldGVycyA9IDA7CiAgICAgaW50IHdpbmRvd0JpdHMgPSAxNTsKLSAgICBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgcGFyYW1ldGVyID0gc2VydmVy
UGFyYW1ldGVycy5maW5kKCJtYXhfd2luZG93X2JpdHMiKTsKKyAgICBhdXRvIHBhcmFtZXRlciA9
IHNlcnZlclBhcmFtZXRlcnMuZmluZCgibWF4X3dpbmRvd19iaXRzIik7CiAgICAgaWYgKHBhcmFt
ZXRlciAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7Ci0gICAgICAgIHdpbmRvd0JpdHMgPSBw
YXJhbWV0ZXItPnZhbHVlLnRvSW50KCk7CisgICAgICAgIHdpbmRvd0JpdHMgPSBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHBhcmFtZXRlci0+dmFsdWUpLnZhbHVlT3IoMCk7
CiAgICAgICAgIGlmICh3aW5kb3dCaXRzIDwgOCB8fCB3aW5kb3dCaXRzID4gMTUpIHsKLSAgICAg
ICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG1heF93aW5kb3dfYml0
cyBwYXJhbWV0ZXIiOworICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGlu
dmFsaWQgbWF4X3dpbmRvd19iaXRzIHBhcmFtZXRlciJfczsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogICAgICAgICBleHBlY3RlZE51bVBhcmFtZXRlcnMrKzsKQEAgLTkx
LDcgKzg4LDcgQEAgYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OnByb2Nlc3NS
ZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW4KICAgICBwYXJhbWV0ZXIgPSBzZXJ2
ZXJQYXJhbWV0ZXJzLmZpbmQoIm5vX2NvbnRleHRfdGFrZW92ZXIiKTsKICAgICBpZiAocGFyYW1l
dGVyICE9IHNlcnZlclBhcmFtZXRlcnMuZW5kKCkpIHsKICAgICAgICAgaWYgKCFwYXJhbWV0ZXIt
PnZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2
ZWQgaW52YWxpZCBub19jb250ZXh0X3Rha2VvdmVyIHBhcmFtZXRlciI7CisgICAgICAgICAgICBt
X2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgaW52YWxpZCBub19jb250ZXh0X3Rha2VvdmVyIHBh
cmFtZXRlciJfczsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAg
ICBtb2RlID0gV2ViU29ja2V0RGVmbGF0ZXI6OkRvTm90VGFrZU92ZXJDb250ZXh0OwpAQCAtOTks
MjQgKzk2LDIyIEBAIGJvb2wgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNz
UmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluCiAgICAgfQogCiAgICAgaWYgKGV4
cGVjdGVkTnVtUGFyYW1ldGVycyAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLnNpemUoKSkgewotICAgICAg
ICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgdW5leHBlY3RlZCBkZWZsYXRlLWZyYW1lIHBh
cmFtZXRlciI7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4cGVjdGVk
IGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVyIl9zOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgbV9mcmFtZXItPmVuYWJsZURlZmxhdGUod2luZG93Qml0cywgbW9kZSk7CisgICAg
bV9mcmFtZXIuZW5hYmxlRGVmbGF0ZSh3aW5kb3dCaXRzLCBtb2RlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotRGVmbGF0ZVJlc3VsdEhvbGRlcjo6RGVmbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCitEZWZsYXRlUmVzdWx0SG9sZGVyOjpEZWZsYXRlUmVz
dWx0SG9sZGVyKFdlYlNvY2tldERlZmxhdGVGcmFtZXImIGZyYW1lcikKICAgICA6IG1fZnJhbWVy
KGZyYW1lcikKLSAgICAsIG1fc3VjY2VlZGVkKHRydWUpCiB7Ci0gICAgQVNTRVJUKG1fZnJhbWVy
KTsKIH0KIAogRGVmbGF0ZVJlc3VsdEhvbGRlcjo6fkRlZmxhdGVSZXN1bHRIb2xkZXIoKQogewot
ICAgIG1fZnJhbWVyLT5yZXNldERlZmxhdGVDb250ZXh0KCk7CisgICAgbV9mcmFtZXIucmVzZXRE
ZWZsYXRlQ29udGV4dCgpOwogfQogCiB2b2lkIERlZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwoY29u
c3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQpAQCAtMTI1LDE2ICsxMjAsMTQgQEAgdm9pZCBEZWZs
YXRlUmVzdWx0SG9sZGVyOjpmYWlsKGNvbnN0IFN0cmluZyYgZmFpbHVyZVJlYXNvbikKICAgICBt
X2ZhaWx1cmVSZWFzb24gPSBmYWlsdXJlUmVhc29uOwogfQogCi1JbmZsYXRlUmVzdWx0SG9sZGVy
OjpJbmZsYXRlUmVzdWx0SG9sZGVyKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikKK0lu
ZmxhdGVSZXN1bHRIb2xkZXI6OkluZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZy
YW1lciYgZnJhbWVyKQogICAgIDogbV9mcmFtZXIoZnJhbWVyKQotICAgICwgbV9zdWNjZWVkZWQo
dHJ1ZSkKIHsKLSAgICBBU1NFUlQobV9mcmFtZXIpOwogfQogCiBJbmZsYXRlUmVzdWx0SG9sZGVy
Ojp+SW5mbGF0ZVJlc3VsdEhvbGRlcigpCiB7Ci0gICAgbV9mcmFtZXItPnJlc2V0SW5mbGF0ZUNv
bnRleHQoKTsKKyAgICBtX2ZyYW1lci5yZXNldEluZmxhdGVDb250ZXh0KCk7CiB9CiAKIHZvaWQg
SW5mbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbChjb25zdCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pCkBA
IC0xNDMsMTQgKzEzNiw5IEBAIHZvaWQgSW5mbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbChjb25zdCBT
dHJpbmcmIGZhaWx1cmVSZWFzb24pCiAgICAgbV9mYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNv
bjsKIH0KIAotV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcigp
Ci0gICAgOiBtX2VuYWJsZWQoZmFsc2UpCi17Ci19Ci0KIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2Nr
ZXRFeHRlbnNpb25Qcm9jZXNzb3I+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNyZWF0ZUV4dGVu
c2lvblByb2Nlc3NvcigpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0RXh0ZW5z
aW9uRGVmbGF0ZUZyYW1lPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRF
eHRlbnNpb25EZWZsYXRlRnJhbWU+KCp0aGlzKTsKIH0KIAogdm9pZCBXZWJTb2NrZXREZWZsYXRl
RnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRlcjo6
Q29udGV4dFRha2VPdmVyTW9kZSBtb2RlKQpAQCAtMTY3LDcgKzE1NSw3IEBAIHZvaWQgV2ViU29j
a2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0
RGVmbGF0ZXI6OkNvCiAKIHN0ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiBXZWJT
b2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKLSAg
ICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7Cisg
ICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KCp0aGlzKTsK
ICAgICBpZiAoIWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29k
ZShmcmFtZS5vcENvZGUpIHx8ICFmcmFtZS5wYXlsb2FkTGVuZ3RoKQogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIGlmICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJh
bWUucGF5bG9hZExlbmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7CkBAIC0xODgsNyAr
MTc2LDcgQEAgdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpyZXNldERlZmxhdGVDb250ZXh0
KCkKIAogc3RkOjp1bmlxdWVfcHRyPEluZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxh
dGVGcmFtZXI6OmluZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewotICAgIGF1dG8gcmVz
dWx0ID0gbWFrZVVuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1ha2VVbmlxdWU8SW5mbGF0ZVJlc3VsdEhvbGRlcj4oKnRoaXMpOwogICAgIGlmICgh
ZW5hYmxlZCgpICYmIGZyYW1lLmNvbXByZXNzKSB7CiAgICAgICAgIHJlc3VsdC0+ZmFpbCgiQ29t
cHJlc3NlZCBiaXQgbXVzdCBiZSAwIGlmIG5vIG5lZ290aWF0ZWQgZGVmbGF0ZS1mcmFtZSBleHRl
bnNpb24iKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oCmluZGV4
IDRmMjQ5ODIxZDU5Y2I3NTNjYmQzYjY2MTE4Y2U0MTFhNWI2MDk1OWQuLjc5N2JlM2I2NzViOWY0
YzU0YjA2NzNhYjI0MDE4ZDYwNGQxODE2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaApAQCAtMzEs
MTcgKzMxLDE4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYlNvY2tldERlZmxhdGVy
LmgiCi0jaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgiCi0jaW5jbHVkZSAi
V2ViU29ja2V0RnJhbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyOworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yOworCitz
dHJ1Y3QgV2ViU29ja2V0RnJhbWU7CiAKIGNsYXNzIERlZmxhdGVSZXN1bHRIb2xkZXIgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IERlZmxhdGVS
ZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOworICAgIGV4cGxpY2l0IERlZmxh
dGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciYpOwogICAgIH5EZWZsYXRlUmVz
dWx0SG9sZGVyKCk7CiAKICAgICBib29sIHN1Y2NlZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vj
Y2VlZGVkOyB9CkBAIC01MCwxNSArNTEsMTUgQEAgcHVibGljOgogICAgIHZvaWQgZmFpbChjb25z
dCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pOwogCiBwcml2YXRlOgotICAgIFdlYlNvY2tldERlZmxh
dGVGcmFtZXIqIG1fZnJhbWVyOwotICAgIGJvb2wgbV9zdWNjZWVkZWQ7CisgICAgV2ViU29ja2V0
RGVmbGF0ZUZyYW1lciYgbV9mcmFtZXI7CisgICAgYm9vbCBtX3N1Y2NlZWRlZCB7IHRydWUgfTsK
ICAgICBTdHJpbmcgbV9mYWlsdXJlUmVhc29uOwogfTsKIAogY2xhc3MgSW5mbGF0ZVJlc3VsdEhv
bGRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgSW5mbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKik7CisgICAgZXhw
bGljaXQgSW5mbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyJik7CiAgICAg
fkluZmxhdGVSZXN1bHRIb2xkZXIoKTsKIAogICAgIGJvb2wgc3VjY2VlZGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdWNjZWVkZWQ7IH0KQEAgLTY3LDE1ICs2OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBmYWlsKGNvbnN0IFN0cmluZyYgZmFpbHVyZVJlYXNvbik7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lciogbV9mcmFtZXI7Ci0gICAgYm9vbCBtX3N1Y2NlZWRlZDsKKyAg
ICBXZWJTb2NrZXREZWZsYXRlRnJhbWVyJiBtX2ZyYW1lcjsKKyAgICBib29sIG1fc3VjY2VlZGVk
IHsgdHJ1ZSB9OwogICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247CiB9OwogCiBjbGFzcyBXZWJT
b2NrZXREZWZsYXRlRnJhbWVyIHsKIHB1YmxpYzoKLSAgICBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
KCk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBj
cmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IoKTsKIAogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZW5hYmxlZDsgfQpAQCAtOTAsNyArODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBl
bmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRlcjo6Q29udGV4dFRh
a2VPdmVyTW9kZSk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBtX2VuYWJsZWQ7CisgICAgYm9vbCBt
X2VuYWJsZWQgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXREZWZsYXRl
cj4gbV9kZWZsYXRlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0SW5mbGF0ZXI+IG1f
aW5mbGF0ZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCBhZTNlMTEzNWQxZjI5MDBkMDQ0ZGQ2
ZmQ3YmU1OTMxNzNmN2FkOTU3Li40ZTBlODgwYjZmNDhlNWJjMzg5NTMzZWMzZGNiMmNlZmQ4NWFm
ZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0
ZXJOYW1lcy5oPgpAQCAtMzc3LDEwICszNzgsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGVhZGVy
SGFzVmFsaWRIVFRQVmVyc2lvbihTdHJpbmdWaWV3IGh0dHBTdGF0dXNMaW5lKQogICAgIGlmIChk
b3RQb3NpdGlvbiA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3Ry
aW5nVmlldyBtYWpvclZlcnNpb25WaWV3ID0gaHR0cFN0YXR1c0xpbmUuc3Vic3RyaW5nKHByZWFt
YmxlTGVuZ3RoLCBkb3RQb3NpdGlvbiAtIHByZWFtYmxlTGVuZ3RoKTsKLSAgICBib29sIGlzVmFs
aWQ7Ci0gICAgaW50IG1ham9yVmVyc2lvbiA9IG1ham9yVmVyc2lvblZpZXcudG9JbnRTdHJpY3Qo
aXNWYWxpZCk7Ci0gICAgaWYgKCFpc1ZhbGlkKQorICAgIGF1dG8gbWFqb3JWZXJzaW9uID0gcGFy
c2VJbnRlZ2VyPGludD4oaHR0cFN0YXR1c0xpbmUuc3Vic3RyaW5nKHByZWFtYmxlTGVuZ3RoLCBk
b3RQb3NpdGlvbiAtIHByZWFtYmxlTGVuZ3RoKSk7CisgICAgaWYgKCFtYWpvclZlcnNpb24pCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVuc2lnbmVkIG1pbm9yVmVyc2lvbkxlbmd0aDsK
QEAgLTM4OSwxMSArMzg4LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoZWFkZXJIYXNWYWxpZEhU
VFBWZXJzaW9uKFN0cmluZ1ZpZXcgaHR0cFN0YXR1c0xpbmUpCiAgICAgICAgIGlmICghaXNBU0NJ
SURpZ2l0KGh0dHBTdGF0dXNMaW5lW2RvdFBvc2l0aW9uICsgbWlub3JWZXJzaW9uTGVuZ3RoXSkp
CiAgICAgICAgICAgICBicmVhazsKICAgICB9Ci0gICAgaW50IG1pbm9yVmVyc2lvbiA9IChodHRw
U3RhdHVzTGluZS5zdWJzdHJpbmcoZG90UG9zaXRpb24gKyAxLCBtaW5vclZlcnNpb25MZW5ndGgp
KS50b0ludFN0cmljdChpc1ZhbGlkKTsKLSAgICBpZiAoIWlzVmFsaWQpCisgICAgYXV0byBtaW5v
clZlcnNpb24gPSBwYXJzZUludGVnZXI8aW50PihodHRwU3RhdHVzTGluZS5zdWJzdHJpbmcoZG90
UG9zaXRpb24gKyAxLCBtaW5vclZlcnNpb25MZW5ndGgpKTsKKyAgICBpZiAoIW1pbm9yVmVyc2lv
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIChtYWpvclZlcnNpb24gPj0g
MSAmJiBtaW5vclZlcnNpb24gPj0gMSkgfHwgbWFqb3JWZXJzaW9uID49IDI7CisgICAgcmV0dXJu
ICgqbWFqb3JWZXJzaW9uID49IDEgJiYgKm1pbm9yVmVyc2lvbiA+PSAxKSB8fCAqbWFqb3JWZXJz
aW9uID49IDI7CiB9CiAKIC8vIFJldHVybnMgdGhlIGhlYWRlciBsZW5ndGggKGluY2x1ZGluZyAi
XHJcbiIpLCBvciAtMSBpZiB3ZSBoYXZlIG5vdCByZWNlaXZlZCBlbm91Z2ggZGF0YSB5ZXQuCkBA
IC00NjEsMTYgKzQ2MCwxNCBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGlu
ZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsCiAgICAgU3RyaW5nVmll
dyBzdGF0dXNDb2RlU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzcGFjZTEg
KyAxKSwgc3BhY2UyIC0gc3BhY2UxIC0gMSk7CiAgICAgaWYgKHN0YXR1c0NvZGVTdHJpbmcubGVu
Z3RoKCkgIT0gMykgLy8gU3RhdHVzIGNvZGUgbXVzdCBjb25zaXN0IG9mIHRocmVlIGRpZ2l0cy4K
ICAgICAgICAgcmV0dXJuIGxpbmVMZW5ndGg7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyAr
K2kpCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKICAgICAgICAgaWYgKCFpc0FT
Q0lJRGlnaXQoc3RhdHVzQ29kZVN0cmluZ1tpXSkpIHsKICAgICAgICAgICAgIG1fZmFpbHVyZVJl
YXNvbiA9IG1ha2VTdHJpbmcoIkludmFsaWQgc3RhdHVzIGNvZGU6ICIsIHN0YXR1c0NvZGVTdHJp
bmcpOwogICAgICAgICAgICAgcmV0dXJuIGxpbmVMZW5ndGg7CiAgICAgICAgIH0KKyAgICB9CiAK
LSAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGVTdHJpbmcu
dG9JbnRTdHJpY3Qob2spOwotICAgIEFTU0VSVChvayk7Ci0KKyAgICBzdGF0dXNDb2RlID0gcGFy
c2VJbnRlZ2VyPGludD4oc3RhdHVzQ29kZVN0cmluZykudmFsdWUoKTsKICAgICBzdGF0dXNUZXh0
ID0gU3RyaW5nKHNwYWNlMiArIDEsIGVuZCAtIHNwYWNlMiAtIDMpOyAvLyBFeGNsdWRlICJcclxu
Ii4KICAgICByZXR1cm4gbGluZUxlbmd0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggZGIzNjM0
MDE3MmU3ZWI2NGQwZGY2NTIyMWUwOTdmMzI4NGM5OWFmOS4uNzkwMjY2MDkxNjIwN2E4ZWEzNTM0
MTc5NGNkYjRlNjIwMTU0Njc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTc3NSw5ICs3NzUsOCBA
QCBpbnQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhlYWRpbmdMZXZlbCgpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChpc0hlYWRpbmcoKSkgewotICAgICAgICBpbnQg
YXJpYUxldmVsID0gZ2V0QXR0cmlidXRlKGFyaWFfbGV2ZWxBdHRyKS50b0ludCgpOwotICAgICAg
ICBpZiAoYXJpYUxldmVsID4gMCkKLSAgICAgICAgICAgIHJldHVybiBhcmlhTGV2ZWw7CisgICAg
ICAgIGlmIChhdXRvIGxldmVsID0gZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9sZXZlbEF0dHIp
OyBsZXZlbCA+IDApCisgICAgICAgICAgICByZXR1cm4gbGV2ZWw7CiAgICAgfQogCiAgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUoaDFUYWcpKQpAQCAtMTcyOSwxMSArMTcyOCwxMSBAQCB1bnNpZ25l
ZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAogICAg
IE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CiAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkK
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1l
bnQ+KCpub2RlKTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhTGV2ZWwgPSBlbGVtZW50LmF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9sZXZlbEF0dHIpOwotICAgIGlmICgh
YXJpYUxldmVsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGFyaWFMZXZlbC50b0ludCgpOwot
ICAgIAorCisgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKKyAg
ICBpZiAoIWVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xldmVs
QXR0cikuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZWxlbWVudC5nZXRJbnRlZ3JhbEF0dHJp
YnV0ZShhcmlhX2xldmVsQXR0cik7CisKICAgICAvLyBPbmx5IHRyZWUgaXRlbSB3aWxsIGNhbGN1
bGF0ZSBpdHMgbGV2ZWwgdGhyb3VnaCB0aGUgRE9NIGN1cnJlbnRseS4KICAgICBpZiAocm9sZVZh
bHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtKQogICAgICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCmluZGV4IDBkNzIxOGNlMTE0ODQ3YTc0ZGE2ZDI5NDQwZGU1ZDJkMWI2ZTE1ZTYuLjA2
NmMxOTgzMDA0NzkwZDFmNTg3OWVhOTI4NDBjZGRhZjFmZWJlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMTk1
Niw2ICsxOTU2LDExIEBAIGNvbnN0IEF0b21TdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omdl
dEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1CiAgICAgcmV0dXJuIG51bGxB
dG9tKCk7CiB9CiAKK2ludCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRJbnRlZ3JhbEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAoreworICAgIHJldHVy
biBwYXJzZUhUTUxJbnRlZ2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVfb3Io
MCk7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZVRleHRJblJhbmdlKGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5n
ZSkKIHsKICAgICAvLyBJZiB0aGlzIGlzIGJlaW5nIGNhbGxlZCBvbiB0aGUgd2ViIGFyZWEsIHJl
ZGlyZWN0IGl0IHRvIGJlIG9uIHRoZSBib2R5LCB3aGljaCB3aWxsIGhhdmUgYSByZW5kZXJlciBh
c3NvY2lhdGVkIHdpdGggaXQuCkBAIC0yNjYzLDEyICsyNjY4LDEyIEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU9iamVjdDo6c3VwcG9ydHNQb3NJblNldCgpIGNvbnN0CiAgICAgCiBpbnQgQWNjZXNzaWJp
bGl0eU9iamVjdDo6c2V0U2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEF0dHJpYnV0ZShh
cmlhX3NldHNpemVBdHRyKS50b0ludCgpOworICAgIHJldHVybiBnZXRJbnRlZ3JhbEF0dHJpYnV0
ZShhcmlhX3NldHNpemVBdHRyKTsKIH0KIAogaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBvc0lu
U2V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfcG9zaW5zZXRBdHRy
KS50b0ludCgpOworICAgIHJldHVybiBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Bvc2luc2V0
QXR0cik7CiB9CiAgICAgCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6aWRlbnRpZmllckF0
dHJpYnV0ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDU2YzNjZDMzMTcyMGYzNjdhMjYxZjBmNDBlMmFhNWU0
ODgxMWJkNWUuLjRkOWM5MzMxOGE4NjcxYjNiZTA5NDJjMGVjMmZiNzYxNGUzZWQ5NzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CkBAIC01MTcsNiArNTE3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBB
Y2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZVRvV2ViQ29yZVJvbGUoY29uc3QgU3RyaW5nJik7CiAg
ICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGdldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBib29sIGhhc1RhZ05hbWUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyB0YWdOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlLmNwcAppbmRleCAwNWI1NjNlOWFlMjZhNmFmZTc2OGRkMTI3YTAzMWM1Y2ZhYzcwMmEz
Li5mNjcyZjRhMWFmMDUzNTVlNmU3MzA1MDU5Mzg2ZDA0MTk3OWRkYjJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC00
NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKICNpbmNsdWRlICJSZW5kZXJU
YWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVNlY3Rpb24uaCIKLQogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTMsMTEgKzE1MiwxMSBA
QCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgIAogICAg
IC8vIElmIHRoZSBhdXRob3IgaGFzIHVzZWQgQVJJQSB0byBzcGVjaWZ5IGEgdmFsaWQgY29sdW1u
IG9yIHJvdyBjb3VudCwgYXNzdW1lIHRoZXkKICAgICAvLyB3YW50IHVzIHRvIHRyZWF0IHRoZSB0
YWJsZSBhcyBhIGRhdGEgdGFibGUuCi0gICAgaW50IGF4Q29sdW1uQ291bnQgPSBnZXRBdHRyaWJ1
dGUoYXJpYV9jb2xjb3VudEF0dHIpLnRvSW50KCk7CisgICAgaW50IGF4Q29sdW1uQ291bnQgPSBn
ZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX2NvbGNvdW50QXR0cik7CiAgICAgaWYgKGF4Q29sdW1u
Q291bnQgPT0gLTEgfHwgYXhDb2x1bW5Db3VudCA+IDApCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgaW50IGF4Um93Q291bnQgPSBnZXRBdHRyaWJ1dGUoYXJpYV9yb3djb3VudEF0dHIpLnRv
SW50KCk7CisgICAgaW50IGF4Um93Q291bnQgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jv
d2NvdW50QXR0cik7CiAgICAgaWYgKGF4Um93Q291bnQgPT0gLTEgfHwgYXhSb3dDb3VudCA+IDAp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0yMzQsMTYgKzIzMywxNiBAQCBib29sIEFjY2Vz
c2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogCiAgICAgICAgICAgICAvLyBJZiB0
aGUgYXV0aG9yIGhhcyB1c2VkIEFSSUEgdG8gc3BlY2lmeSBhIHZhbGlkIGNvbHVtbiBvciByb3cg
aW5kZXgsIGFzc3VtZSB0aGV5IHdhbnQgdXMKICAgICAgICAgICAgIC8vIHRvIHRyZWF0IHRoZSB0
YWJsZSBhcyBhIGRhdGEgdGFibGUuCi0gICAgICAgICAgICBpbnQgYXhDb2x1bW5JbmRleCA9ICBj
ZWxsRWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2NvbGluZGV4
QXR0cikudG9JbnQoKTsKKyAgICAgICAgICAgIGludCBheENvbHVtbkluZGV4ID0gY2VsbEVsZW1l
bnQtPmdldEludGVncmFsQXR0cmlidXRlKGFyaWFfY29saW5kZXhBdHRyKTsKICAgICAgICAgICAg
IGlmIChheENvbHVtbkluZGV4ID49IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICAgICAgICAgIGludCBheFJvd0luZGV4ID0gY2VsbEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oYXJpYV9yb3dpbmRleEF0dHIpLnRvSW50KCk7CisgICAgICAgICAg
ICBpbnQgYXhSb3dJbmRleCA9IGNlbGxFbGVtZW50LT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlh
X3Jvd2luZGV4QXR0cik7CiAgICAgICAgICAgICBpZiAoYXhSb3dJbmRleCA+PSAxKQogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgICAgICBpZiAoYXV0byBjZWxsUGFyZW50
RWxlbWVudCA9IGNlbGxFbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAg
ICBheFJvd0luZGV4ID0gY2VsbFBhcmVudEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oYXJpYV9yb3dpbmRleEF0dHIpLnRvSW50KCk7CisgICAgICAgICAgICAgICAgYXhS
b3dJbmRleCA9IGNlbGxQYXJlbnRFbGVtZW50LT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jv
d2luZGV4QXR0cik7CiAgICAgICAgICAgICAgICAgaWYgKGF4Um93SW5kZXggPj0gMSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0yNTEsMTEgKzI1
MCwxMSBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAg
ICAgICAgICAgLy8gSWYgdGhlIGF1dGhvciBoYXMgdXNlZCBBUklBIHRvIHNwZWNpZnkgYSBjb2x1
bW4gb3Igcm93IHNwYW4sIHdlJ3JlIHN1cHBvc2VkIHRvIGlnbm9yZQogICAgICAgICAgICAgLy8g
dGhlIHZhbHVlIGZvciB0aGUgcHVycG9zZXMgb2YgZXhwb3NpbmcgdGhlIHNwYW4uIEJ1dCBhc3N1
bWUgdGhleSB3YW50IHVzIHRvIHRyZWF0IHRoZQogICAgICAgICAgICAgLy8gdGFibGUgYXMgYSBk
YXRhIHRhYmxlLgotICAgICAgICAgICAgaW50IGF4Q29sdW1uU3BhbiA9IGNlbGxFbGVtZW50LT5h
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfY29sc3BhbkF0dHIpLnRvSW50KCk7
CisgICAgICAgICAgICBpbnQgYXhDb2x1bW5TcGFuID0gY2VsbEVsZW1lbnQtPmdldEludGVncmFs
QXR0cmlidXRlKGFyaWFfY29sc3BhbkF0dHIpOwogICAgICAgICAgICAgaWYgKGF4Q29sdW1uU3Bh
biA+PSAxKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgICAgICBpbnQg
YXhSb3dTcGFuID0gY2VsbEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
YXJpYV9yb3dzcGFuQXR0cikudG9JbnQoKTsKKyAgICAgICAgICAgIGludCBheFJvd1NwYW4gPSBj
ZWxsRWxlbWVudC0+Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9yb3dzcGFuQXR0cik7CiAgICAg
ICAgICAgICBpZiAoYXhSb3dTcGFuID49IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAKQEAgLTcwNyw4ICs3MDYsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVRhYmxlOjp0aXRsZSgp
IGNvbnN0CiAKIGludCBBY2Nlc3NpYmlsaXR5VGFibGU6OmF4Q29sdW1uQ291bnQoKSBjb25zdAog
ewotICAgIGNvbnN0IEF0b21TdHJpbmcmIGNvbENvdW50VmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJp
YV9jb2xjb3VudEF0dHIpOwotICAgIGludCBjb2xDb3VudEludCA9IGNvbENvdW50VmFsdWUudG9J
bnQoKTsKKyAgICBpbnQgY29sQ291bnRJbnQgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX2Nv
bGNvdW50QXR0cik7CiAgICAgLy8gVGhlIEFSSUEgc3BlYyBzdGF0ZXMsICJBdXRob3JzIG11c3Qg
c2V0IHRoZSB2YWx1ZSBvZiBhcmlhLWNvbGNvdW50IHRvIGFuIGludGVnZXIgZXF1YWwgdG8gdGhl
CiAgICAgLy8gbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGZ1bGwgdGFibGUuIElmIHRoZSB0b3Rh
bCBudW1iZXIgb2YgY29sdW1ucyBpcyB1bmtub3duLCBhdXRob3JzIG11c3QKICAgICAvLyBzZXQg
dGhlIHZhbHVlIG9mIGFyaWEtY29sY291bnQgdG8gLTEgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdmFs
dWUgc2hvdWxkIG5vdCBiZSBjYWxjdWxhdGVkIGJ5CkBAIC03MjEsOCArNzE5LDcgQEAgaW50IEFj
Y2Vzc2liaWxpdHlUYWJsZTo6YXhDb2x1bW5Db3VudCgpIGNvbnN0CiAKIGludCBBY2Nlc3NpYmls
aXR5VGFibGU6OmF4Um93Q291bnQoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21TdHJpbmcmIHJv
d0NvdW50VmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9yb3djb3VudEF0dHIpOwotICAgIGludCBy
b3dDb3VudEludCA9IHJvd0NvdW50VmFsdWUudG9JbnQoKTsKKyAgICBpbnQgcm93Q291bnRJbnQg
PSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2NvdW50QXR0cik7CiAgICAgLy8gVGhlIEFS
SUEgc3BlYyBzdGF0ZXMsICJBdXRob3JzIG11c3Qgc2V0IHRoZSB2YWx1ZSBvZiBhcmlhLXJvd2Nv
dW50IHRvIGFuIGludGVnZXIgZXF1YWwgdG8gdGhlCiAgICAgLy8gbnVtYmVyIG9mIHJvd3MgaW4g
dGhlIGZ1bGwgdGFibGUuIElmIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyBpcyB1bmtub3duLCBh
dXRob3JzIG11c3Qgc2V0CiAgICAgLy8gdGhlIHZhbHVlIG9mIGFyaWEtcm93Y291bnQgdG8gLTEg
dG8gaW5kaWNhdGUgdGhhdCB0aGUgdmFsdWUgc2hvdWxkIG5vdCBiZSBjYWxjdWxhdGVkIGJ5IHRo
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbC5jcHAKaW5kZXggYzM3NjdiZGNjNTg1N2Y5YzBhMjQxY2UxMWRiMGI1NjMwZWNj
YjNmNS4uM2Y2NTA4ZTA2MWMxODAwNmZlZTYxZTRlNGQxZDZiMzk3NjI4ZDI3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNl
bGwuY3BwCkBAIC00MDIsOSArNDAyLDggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbDo6dGl0bGVVSUVsZW1lbnQoKSBjb25zdAogICAgIAogaW50IEFjY2Vzc2li
aWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1uSW5kZXgoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21T
dHJpbmcmIGNvbEluZGV4VmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9jb2xpbmRleEF0dHIpOwot
ICAgIGlmIChjb2xJbmRleFZhbHVlLnRvSW50KCkgPj0gMSkKLSAgICAgICAgcmV0dXJuIGNvbElu
ZGV4VmFsdWUudG9JbnQoKTsKKyAgICBpZiAoaW50IHZhbHVlID0gZ2V0SW50ZWdyYWxBdHRyaWJ1
dGUoYXJpYV9jb2xpbmRleEF0dHIpOyB2YWx1ZSA+PSAxKQorICAgICAgICByZXR1cm4gdmFsdWU7
CiAKICAgICAvLyAiQVJJQSAxLjE6IElmIHRoZSBzZXQgb2YgY29sdW1ucyB3aGljaCBpcyBwcmVz
ZW50IGluIHRoZSBET00gaXMgY29udGlndW91cywgYW5kIGlmIHRoZXJlIGFyZSBubyBjZWxscyB3
aGljaCBzcGFuIG1vcmUgdGhhbiBvbmUgcm93CiAgICAgLy8gb3IgY29sdW1uIGluIHRoYXQgc2V0
LCB0aGVuIGF1dGhvcnMgbWF5IHBsYWNlIGFyaWEtY29saW5kZXggb24gZWFjaCByb3csIHNldHRp
bmcgdGhlIHZhbHVlIHRvIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY29sdW1uIG9mIHRoZSBzZXQu
IgpAQCAtNDIwLDEzICs0MTksMTIgQEAgaW50IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93
SW5kZXgoKSBjb25zdAogewogICAgIC8vIEFSSUEgMS4xOiBBdXRob3JzIHNob3VsZCBwbGFjZSBh
cmlhLXJvd2luZGV4IG9uIGVhY2ggcm93LiBBdXRob3JzIG1heSBhbHNvIHBsYWNlCiAgICAgLy8g
YXJpYS1yb3dpbmRleCBvbiBhbGwgb2YgdGhlIGNoaWxkcmVuIG9yIG93bmVkIGVsZW1lbnRzIG9m
IGVhY2ggcm93LgotICAgIGNvbnN0IEF0b21TdHJpbmcmIHJvd0luZGV4VmFsdWUgPSBnZXRBdHRy
aWJ1dGUoYXJpYV9yb3dpbmRleEF0dHIpOwotICAgIGlmIChyb3dJbmRleFZhbHVlLnRvSW50KCkg
Pj0gMSkKLSAgICAgICAgcmV0dXJuIHJvd0luZGV4VmFsdWUudG9JbnQoKTsKLSAgICAKKyAgICBp
ZiAoaW50IHZhbHVlID0gZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9yb3dpbmRleEF0dHIpOyB2
YWx1ZSA+PSAxKQorICAgICAgICByZXR1cm4gdmFsdWU7CisKICAgICBpZiAoQWNjZXNzaWJpbGl0
eVRhYmxlUm93KiBwYXJlbnRSb3cgPSB0aGlzLT5wYXJlbnRSb3coKSkKICAgICAgICAgcmV0dXJu
IHBhcmVudFJvdy0+YXhSb3dJbmRleCgpOwotICAgIAorCiAgICAgcmV0dXJuIC0xOwogfQogCkBA
IC00MzcsMTEgKzQzNSwxMCBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhDb2x1bW5T
cGFuKCkgY29uc3QKICAgICBpZiAoaGFzQXR0cmlidXRlKGNvbHNwYW5BdHRyKSkKICAgICAgICAg
cmV0dXJuIC0xOwogCi0gICAgY29uc3QgQXRvbVN0cmluZyYgY29sU3BhblZhbHVlID0gZ2V0QXR0
cmlidXRlKGFyaWFfY29sc3BhbkF0dHIpOwogICAgIC8vIEFSSUEgMS4xOiBBdXRob3JzIG11c3Qg
c2V0IHRoZSB2YWx1ZSBvZiBhcmlhLWNvbHNwYW4gdG8gYW4gaW50ZWdlciBncmVhdGVyIHRoYW4g
b3IgZXF1YWwgdG8gMS4KLSAgICBpZiAoY29sU3BhblZhbHVlLnRvSW50KCkgPj0gMSkKLSAgICAg
ICAgcmV0dXJuIGNvbFNwYW5WYWx1ZS50b0ludCgpOwotICAgIAorICAgIGlmIChpbnQgdmFsdWUg
PSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX2NvbHNwYW5BdHRyKTsgdmFsdWUgPj0gMSkKKyAg
ICAgICAgcmV0dXJuIHZhbHVlOworCiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC00NTIsMTUgKzQ0
OSwxMyBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhSb3dTcGFuKCkgY29uc3QKICAg
ICBpZiAoaGFzQXR0cmlidXRlKHJvd3NwYW5BdHRyKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0g
ICAgY29uc3QgQXRvbVN0cmluZyYgcm93U3BhblZhbHVlID0gZ2V0QXR0cmlidXRlKGFyaWFfcm93
c3BhbkF0dHIpOwotICAgIAogICAgIC8vIEFSSUEgMS4xOiBBdXRob3JzIG11c3Qgc2V0IHRoZSB2
YWx1ZSBvZiBhcmlhLXJvd3NwYW4gdG8gYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwg
dG8gMC4KICAgICAvLyBTZXR0aW5nIHRoZSB2YWx1ZSB0byAwIGluZGljYXRlcyB0aGF0IHRoZSBj
ZWxsIG9yIGdyaWRjZWxsIGlzIHRvIHNwYW4gYWxsIHRoZSByZW1haW5pbmcgcm93cyBpbiB0aGUg
cm93IGdyb3VwLgotICAgIGlmIChyb3dTcGFuVmFsdWUgPT0gIjAiKQorICAgIGlmIChnZXRBdHRy
aWJ1dGUoYXJpYV9yb3dzcGFuQXR0cikgPT0gIjAiKQogICAgICAgICByZXR1cm4gMDsKLSAgICBp
ZiAocm93U3BhblZhbHVlLnRvSW50KCkgPj0gMSkKLSAgICAgICAgcmV0dXJuIHJvd1NwYW5WYWx1
ZS50b0ludCgpOwotICAgIAorICAgIGlmIChpbnQgdmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0
ZShhcmlhX3Jvd3NwYW5BdHRyKTsgdmFsdWUgPj0gMSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOwor
CiAgICAgcmV0dXJuIC0xOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCmluZGV4IGFkNmVhNDk3ZDdmZTgx
YWI0OWM2ZmIyZTc2MTY4YTRhZGVmZTNkMjMuLmVkMGZiMGIyY2E0ZDVhNjg1NWIyOTMzMWFmOThl
YmE0NTIyZjY5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKQEAgLTE3NSwyMCArMTc1LDE0IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVRhYmxlUm93OjphZGRDaGlsZHJlbigpCiAKIGludCBBY2Nlc3NpYmlsaXR5VGFi
bGVSb3c6OmF4Q29sdW1uSW5kZXgoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21TdHJpbmcmIGNv
bEluZGV4VmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9jb2xpbmRleEF0dHIpOwotICAgIGlmIChj
b2xJbmRleFZhbHVlLnRvSW50KCkgPj0gMSkKLSAgICAgICAgcmV0dXJuIGNvbEluZGV4VmFsdWUu
dG9JbnQoKTsKLSAgICAKLSAgICByZXR1cm4gLTE7CisgICAgaW50IHZhbHVlID0gZ2V0SW50ZWdy
YWxBdHRyaWJ1dGUoYXJpYV9jb2xpbmRleEF0dHIpOworICAgIHJldHVybiB2YWx1ZSA+PSAxID8g
dmFsdWUgOiAtMTsKIH0KIAogaW50IEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YXhSb3dJbmRleCgp
IGNvbnN0CiB7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgcm93SW5kZXhWYWx1ZSA9IGdldEF0dHJp
YnV0ZShhcmlhX3Jvd2luZGV4QXR0cik7Ci0gICAgaWYgKHJvd0luZGV4VmFsdWUudG9JbnQoKSA+
PSAxKQotICAgICAgICByZXR1cm4gcm93SW5kZXhWYWx1ZS50b0ludCgpOwotICAgIAotICAgIHJl
dHVybiAtMTsKKyAgICBpbnQgdmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2lu
ZGV4QXR0cik7CisgICAgcmV0dXJuIHZhbHVlID49IDEgPyB2YWx1ZSA6IC0xOwogfQogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1NlbGVjdG9yUGFyc2VyLmNwcAppbmRleCBlZTQzZDA4ZmMwZTBlYTdmMjBkODBkOTA1OTZmYWU5
OTE0ZDQ0NzJlLi4zMGRlN2JjMmRhZDE5ODE5ZjExYTZkYjgxMzNmMGM4ZDZiMDQyNWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYv
U2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTg4NCw5ICs4ODUsOSBAQCBzdGF0aWMgYm9vbCBjb25zdW1lQU5QbHVz
QihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgc3RkOjpwYWlyPGludCwgaW50PiYgcmVzdQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoblN0cmluZy5sZW5ndGgoKSA+IDIpIHsK
LSAgICAgICAgYm9vbCB2YWxpZDsKLSAgICAgICAgcmVzdWx0LnNlY29uZCA9IG5TdHJpbmcuc3Vi
c3RyaW5nKDEpLnRvSW50U3RyaWN0KCZ2YWxpZCk7Ci0gICAgICAgIHJldHVybiB2YWxpZDsKKyAg
ICAgICAgYXV0byBwYXJzZWROdW1iZXIgPSBwYXJzZUludGVnZXI8aW50PihTdHJpbmdWaWV3IHsg
blN0cmluZyB9LnN1YnN0cmluZygxKSk7CisgICAgICAgIHJlc3VsdC5zZWNvbmQgPSBwYXJzZWRO
dW1iZXIudmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJuIHBhcnNlZE51bWJlci5oYXNWYWx1ZSgp
OwogICAgIH0KIAogICAgIE51bWVyaWNTaWduIHNpZ24gPSBuU3RyaW5nLmxlbmd0aCgpID09IDEg
PyBOb1NpZ24gOiBNaW51c1NpZ247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Rva2VuaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2Vu
aXplci5jcHAKaW5kZXggMWE5Mzc3NjVmNjU2NDEyOWMxNzk5YzM0NTRjNTRhM2Q1MDgzYTQzYy4u
ZWQzNjJhMTlkZmFlZjQ4N2RmMjIxZjRkMTcyNmExZjYwZDk3MmYyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIkNTU1Rva2VuaXplcklucHV0U3RyZWFtLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9t
cy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUv
Q2hhcmFjdGVyTmFtZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODM2LDEyICs4Mzcs
MTEgQEAgVUNoYXIzMiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVFc2NhcGUoKQogICAgICAgICAgICAg
Y29uc3VtZWRIZXhEaWdpdHMrKzsKICAgICAgICAgfTsKICAgICAgICAgY29uc3VtZVNpbmdsZVdo
aXRlc3BhY2VJZk5leHQoKTsKLSAgICAgICAgYm9vbCBvayA9IGZhbHNlOwotICAgICAgICBVQ2hh
cjMyIGNvZGVQb2ludCA9IGhleENoYXJzLnRvU3RyaW5nKCkudG9VSW50U3RyaWN0KCZvaywgMTYp
OwotICAgICAgICBBU1NFUlQob2spOwotICAgICAgICBpZiAoIWNvZGVQb2ludCB8fCAoMHhEODAw
IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhERkZGKSB8fCBjb2RlUG9pbnQgPiAweDEw
RkZGRikKKyAgICAgICAgYXV0byBjb2RlUG9pbnQgPSBwYXJzZUludGVnZXI8dWludDMyX3Q+KGhl
eENoYXJzLCAxNik7CisgICAgICAgIEFTU0VSVChjb2RlUG9pbnQpOworICAgICAgICBpZiAoIWNv
ZGVQb2ludCB8fCAoMHhEODAwIDw9ICpjb2RlUG9pbnQgJiYgKmNvZGVQb2ludCA8PSAweERGRkYp
IHx8ICpjb2RlUG9pbnQgPiAweDEwRkZGRikKICAgICAgICAgICAgIHJldHVybiByZXBsYWNlbWVu
dENoYXJhY3RlcjsKLSAgICAgICAgcmV0dXJuIGNvZGVQb2ludDsKKyAgICAgICAgcmV0dXJuICpj
b2RlUG9pbnQ7CiAgICAgfQogCiAgICAgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggNTQ3OTc0
NDE5NmFmOThiNzZmNDE3OTAzNmVlNTNjYzEyYmMwMDliNi4uZDNhY2VjZmYyMTZiNDZhMjMwZmVl
NDhmNWViMGZlNGYzNTUzYjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RGF0YURldGVjdGlvbi5tbQpAQCAtNTQsNiArNTQsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMv
RGF0YURldGVjdG9yc1NQSS5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1w
b3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmg+CiAKICNpbXBvcnQgIkRhdGFEZXRlY3RvcnNDb3JlU29mdExp
bmsuaCIKIApAQCAtMTk0LDE5ICsxOTUsMjUgQEAgYm9vbCBEYXRhRGV0ZWN0aW9uOjpjYW5QcmVz
ZW50RGF0YURldGVjdG9yc1VJRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogICAgIGlmIChz
b2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNob3VsZEltbWVkaWF0ZWx5U2hvd0FjdGlvblNo
ZWV0Rm9yVVJMKGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PihlbGVtZW50KS5ocmVmKCkpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICBjb25zdCBBdG9tU3RyaW5nJiByZXN1bHRB
dHRyaWJ1dGUgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oeF9hcHBs
ZV9kYXRhX2RldGVjdG9yc19yZXN1bHRBdHRyKTsKKyAgICBhdXRvJiByZXN1bHRBdHRyaWJ1dGUg
PSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oeF9hcHBsZV9kYXRhX2Rl
dGVjdG9yc19yZXN1bHRBdHRyKTsKICAgICBpZiAocmVzdWx0QXR0cmlidXRlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIE5TQXJyYXkgKnJlc3VsdHMgPSBlbGVtZW50LmRv
Y3VtZW50KCkuZnJhbWUoKS0+ZGF0YURldGVjdGlvblJlc3VsdHMoKTsKICAgICBpZiAoIXJlc3Vs
dHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHRJbmRp
Y2VzID0gcmVzdWx0QXR0cmlidXRlLnN0cmluZygpLnNwbGl0KCcvJyk7Ci0gICAgRERSZXN1bHRS
ZWYgcmVzdWx0ID0gW1tyZXN1bHRzIG9iamVjdEF0SW5kZXg6cmVzdWx0SW5kaWNlc1swXS50b0lu
dCgpXSBjb3JlUmVzdWx0XTsKLSAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugb2YgYSBzaWduYXR1cmUg
YmxvY2ssIHdoZXJlIHdlIG5lZWQgdG8gY2hlY2sgdGhlIGNvcnJlY3Qgc3VicmVzdWx0LgotICAg
IGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgcmVzdWx0SW5kaWNlcy5zaXplKCk7IGkrKykgewotICAg
ICAgICByZXN1bHRzID0gKE5TQXJyYXkgKilzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFJl
c3VsdEdldFN1YlJlc3VsdHMocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gKEREUmVzdWx0UmVm
KVtyZXN1bHRzIG9iamVjdEF0SW5kZXg6cmVzdWx0SW5kaWNlc1tpXS50b0ludCgpXTsKKworICAg
IGF1dG8gcmVzdWx0SW5kaWNlcyA9IFN0cmluZ1ZpZXcgeyByZXN1bHRBdHRyaWJ1dGUgfS5zcGxp
dCgnLycpOworICAgIGF1dG8gaW5kZXhJdGVyYXRvciA9IHJlc3VsdEluZGljZXMuYmVnaW4oKTsK
KyAgICBhdXRvIHJlc3VsdCA9IFtyZXN1bHRzW3BhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4oKmluZGV4SXRlcmF0b3IpLnZhbHVlT3IoMCldIGNvcmVSZXN1bHRdOworCisgICAg
Ly8gSGFuZGxlIHRoZSBjYXNlIG9mIGEgc2lnbmF0dXJlIGJsb2NrLCB3aGVyZSB3ZSBuZWVkIHRv
IGZvbGxvdyB0aGUgcGF0aCBkb3duIG9uZSBvciBtb3JlIHN1YnJlc3VsdCBsZXZlbHMuCisgICAg
aWYgKCsraW5kZXhJdGVyYXRvciAhPSByZXN1bHRJbmRpY2VzLmVuZCgpKSB7CisgICAgICAgIGRv
IHsKKyAgICAgICAgICAgIHJlc3VsdHMgPSAoX19icmlkZ2UgTlNBcnJheSAqKXNvZnRMaW5rX0Rh
dGFEZXRlY3RvcnNDb3JlX0REUmVzdWx0R2V0U3ViUmVzdWx0cyhyZXN1bHQpOworICAgICAgICAg
ICAgcmVzdWx0ID0gKF9fYnJpZGdlIEREUmVzdWx0UmVmKXJlc3VsdHNbcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8aW50PigqaW5kZXhJdGVyYXRvcikudmFsdWVPcigwKV07CisgICAg
ICAgIH0gd2hpbGUgKCsraW5kZXhJdGVyYXRvciAhPSByZXN1bHRJbmRpY2VzLmVuZCgpKTsKICAg
ICB9CisKICAgICByZXR1cm4gc29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTaG91bGRJbW1l
ZGlhdGVseVNob3dBY3Rpb25TaGVldEZvclJlc3VsdChyZXN1bHQpOwogfQogCkBAIC0zMTYsMzAg
KzMyMywyMCBAQCBzdGF0aWMgTlNTdHJpbmcgKmRhdGFEZXRlY3RvclR5cGVGb3JDYXRlZ29yeShE
RFJlc3VsdENhdGVnb3J5IGNhdGVnb3J5KQogCiBzdGF0aWMgU3RyaW5nIGRhdGFEZXRlY3RvclN0
cmluZ0ZvclBhdGgoTlNJbmRleFBhdGggKnBhdGgpCiB7Ci0gICAgTlNVSW50ZWdlciBsZW5ndGgg
PSBwYXRoLmxlbmd0aDsKLSAgICAKKyAgICBhdXRvIGxlbmd0aCA9IHBhdGgubGVuZ3RoOwogICAg
IHN3aXRjaCAobGVuZ3RoKSB7CiAgICAgY2FzZSAwOgogICAgICAgICByZXR1cm4geyB9OwogICAg
IGNhc2UgMToKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKFtwYXRoIGluZGV4QXRQb3Np
dGlvbjowXSk7Ci0gICAgY2FzZSAyOiB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVp
bGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBv
c2l0aW9uOjBdKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy8nKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjFdKTsKLSAg
ICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgZGVmYXVs
dDogewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kTnVtYmVyKFtwYXRoIGluZGV4QXRQb3NpdGlvbjowXSk7Ci0gICAgICAg
IGZvciAoTlNVSW50ZWdlciBpID0gMSA7IGkgPCBsZW5ndGggOyBpKyspIHsKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcvJyk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZE51bWJlcihbcGF0aCBpbmRleEF0UG9zaXRpb246aV0pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLSAgICB9CisgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKFtwYXRoIGluZGV4QXRQb3NpdGlvbjowXSk7CisgICAgY2FzZSAyOgorICAg
ICAgICByZXR1cm4gbWFrZVN0cmluZyhbcGF0aCBpbmRleEF0UG9zaXRpb246MF0sICcvJywgW3Bh
dGggaW5kZXhBdFBvc2l0aW9uOjFdKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKFtwYXRoIGluZGV4QXRQ
b3NpdGlvbjowXSk7CisgICAgICAgIGZvciAoTlNVSW50ZWdlciBpID0gMTsgaSA8IGxlbmd0aDsg
aSsrKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8nLCBbcGF0aCBpbmRleEF0UG9zaXRp
b246aV0pOworICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIH0KIApA
QCAtNjg4LDQgKzY4NSwzIEBAIGJvb2wgRGF0YURldGVjdGlvbjo6aXNEYXRhRGV0ZWN0b3JFbGVt
ZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0K
aW5kZXggMDY4MjZmMTI0MTg3YmRiZDRmMWE0OWM0MzcwZWM2ZWY0ZDBkOGVmNS4uNTJhNTYzMTVj
NGIzNTkwYzdjYTE1YWI4ZmI1NDlkYTFjNzkyYTQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNjcsNiArNjcsNyBAQAogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9BU0NJ
SUNUeXBlLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW1wb3J0IDx3
dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKICNpZiBFTkFCTEUoREFUQV9E
RVRFQ1RJT04pCiAjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uLmgiCkBAIC05NzgsNyArOTc5LDcgQEAg
TlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50
KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIH0KIAogICAgICAgICBTdHJpbmcgZm9udFdlaWdo
dCA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5Rm9u
dFN0eWxlKTsKLSAgICAgICAgaWYgKGZvbnRXZWlnaHQuc3RhcnRzV2l0aCgiYm9sZCIpIHx8IGZv
bnRXZWlnaHQudG9JbnQoKSA+PSA3MDApIHsKKyAgICAgICAgaWYgKGZvbnRXZWlnaHQuc3RhcnRz
V2l0aCgiYm9sZCIpIHx8IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oZm9u
dFdlaWdodCkudmFsdWVPcigwKSA+PSA3MDApIHsKICAgICAgICAgICAgIC8vID8/PyBoYW5kbGUg
d2VpZ2h0IHByb3Blcmx5IHVzaW5nIE5TRm9udE1hbmFnZXIKICAgICAgICAgICAgIFBsYXRmb3Jt
Rm9udCAqb3JpZ2luYWxGb250ID0gZm9udDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKaW5kZXggNDdmMGI5NTQ3MWVkOWEw
MDgwMzRjYzgyNmJhMzYyNWY3ZDJlZWZkZS4uNjM1ZTkzMjNiZTVjZjZmOTk5MzY2MDMxOTAyZjIw
NTQyNzUxMGM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCkBA
IC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVy
RnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC04Myw3ICs4Miw3IEBAIGludCBIVE1MRnJhbWVFbGVtZW50OjpkZWZhdWx0VGFiSW5k
ZXgoKSBjb25zdAogdm9pZCBIVE1MRnJhbWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
bmFtZSA9PSBmcmFtZWJvcmRlckF0dHIpIHsKLSAgICAgICAgbV9mcmFtZUJvcmRlciA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3IoMCk7CisgICAg
ICAgIG1fZnJhbWVCb3JkZXIgPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKS52YWx1ZV9vcigwKTsK
ICAgICAgICAgbV9mcmFtZUJvcmRlclNldCA9ICF2YWx1ZS5pc051bGwoKTsKICAgICAgICAgLy8g
RklYTUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGhhcyBubyBlZmZlY3QuCiAg
ICAgfSBlbHNlIGlmIChuYW1lID09IG5vcmVzaXplQXR0cikgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXggNWM5NjU1MDNhNGRhZjNkMTI3MGUwMDEz
MzM4MDRiMjQ2N2RmZjdlNS4uOTVhZTZhMWU1NWIyZjU1MzFlODVhYzE5ODM5MmQ4NDZkMDNjN2Fm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCkBAIC0z
NiwxMiArMzYsMTIgQEAKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhU
TUxGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1M
UGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVu
dC5oIgogI2luY2x1ZGUgIlJlbmRlckZyYW1lU2V0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
VG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzMiw3
ICsxMzIsNyBAQCB2b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdAogCiAgICAgaWYgKG5hbWUgPT0gYm9y
ZGVyQXR0cikgewogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBt
X2JvcmRlciA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZh
bHVlT3IoMCk7CisgICAgICAgICAgICBtX2JvcmRlciA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUp
LnZhbHVlX29yKDApOwogICAgICAgICAgICAgbV9ib3JkZXJTZXQgPSB0cnVlOwogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIG1fYm9yZGVyU2V0ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSFJFbGVtZW50LmNwcAppbmRleCA3MjcyYTVhN2U2ZWQ3ODYwY2ZkM2NmM2I0Mzk2NjYxOTRh
N2M5YzE4Li5jNmI4ZTA1Y2I5NTIyMzhmZDRlYWZiNWU5NGI3NGMzNzIzMmFkYTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdl
ckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NCw3ICs3Myw3IEBA
IHZvaWQgSFRNTEhSRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hCiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIENTU1Zh
bHVlQXV0byk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKSB7
Ci0gICAgICAgIGlmIChhdXRvIHZhbHVlSW50ZWdlciA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPGludD4odmFsdWUpOyB2YWx1ZUludGVnZXIgJiYgISp2YWx1ZUludGVnZXIpCisg
ICAgICAgIGlmIChhdXRvIHZhbHVlSW50ZWdlciA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpOyB2
YWx1ZUludGVnZXIgJiYgISp2YWx1ZUludGVnZXIpCiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRv
UHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIDEsIENT
U1VuaXRUeXBlOjpDU1NfUFgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhZGRIVE1MTGVu
Z3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgdmFsdWUpOwpAQCAtOTEsNyArOTAs
NyBAQCB2b2lkIEhUTUxIUkVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYQogICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGRhcmtHcmF5VmFsdWUpOwogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChuYW1lID09IHNpemVBdHRyKSB7Ci0gICAgICAgIGludCBzaXplID0g
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKTsK
KyAgICAgICAgaW50IHNpemUgPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKS52YWx1ZV9vcigwKTsK
ICAgICAgICAgaWYgKHNpemUgPD0gMSkKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50
YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwg
MCwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggMjdmZWZlYjU3YjljMDU2NTVmMWRkZjVkYWFi
MjdiZTk0MDQ4NjZlMS4uNDIzYmY4MWU0MGU2MWVkOTc3MDc0NTQ0Y2EwNWQ4ZGEyMzI0OWY2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAgLTM1LDcgKzM1
LDYgQEAKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTg3LDcgKzg2LDcgQEAgdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6Y29sbGVjdFN0
eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUKICAgICBlbHNl
IGlmIChuYW1lID09IGZyYW1lYm9yZGVyQXR0cikgewogICAgICAgICAvLyBGcmFtZSBib3JkZXIg
ZG9lc24ndCByZWFsbHkgbWF0Y2ggdGhlIEhUTUw0IHNwZWMgZGVmaW5pdGlvbiBmb3IgaWZyYW1l
cy4gSXQgc2ltcGx5IGFkZHMKICAgICAgICAgLy8gYSBwcmVzZW50YXRpb25hbCBoaW50IHRoYXQg
dGhlIGJvcmRlciBzaG91bGQgYmUgb2ZmIGlmIHNldCB0byB6ZXJvLgotICAgICAgICBpZiAoIXBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3IoMCkpIHsK
KyAgICAgICAgaWYgKCFwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKSkgewogICAgICAgICAgICAgLy8g
QWRkIGEgcnVsZSB0aGF0IG51bGxzIG91dCBvdXIgYm9yZGVyIHdpZHRoLgogICAgICAgICAgICAg
YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0
eUJvcmRlcldpZHRoLCAwLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggY2U2YzliOTkwNmE5MDRmM2Jl
ZWYxMTU5ZmQ2Y2I3Y2MwYTljZTEyZS4uNmE0ZmEzYzk0ZmZmNGYxM2VmYWI1ZGM3YThkMTgzNGEx
ZGRiOGVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC04
MDIsNyArODAyLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW4KICAgICAgICAgaWYgKG1fc2l6
ZSAhPSBvbGRTaXplICYmIHJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZW5kZXJlcigpLT5zZXRO
ZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0g
cmVzdWx0c0F0dHIpCi0gICAgICAgIG1fbWF4UmVzdWx0cyA9IHZhbHVlLmlzTnVsbCgpID8gLTEg
OiBzdGQ6Om1pbihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52
YWx1ZU9yKDApLCBtYXhTYXZlZFJlc3VsdHMpOworICAgICAgICBtX21heFJlc3VsdHMgPSB2YWx1
ZS5pc051bGwoKSA/IC0xIDogc3RkOjptaW4ocGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkudmFsdWVf
b3IoMCksIG1heFNhdmVkUmVzdWx0cyk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBhdXRvc2F2ZUF0
dHIgfHwgbmFtZSA9PSBpbmNyZW1lbnRhbEF0dHIpCiAgICAgICAgIGludmFsaWRhdGVTdHlsZUZv
clN1YnRyZWUoKTsKICAgICBlbHNlIGlmIChuYW1lID09IG1heEF0dHIgfHwgbmFtZSA9PSBtaW5B
dHRyIHx8IG5hbWUgPT0gbXVsdGlwbGVBdHRyIHx8IG5hbWUgPT0gcGF0dGVybkF0dHIgfHwgbmFt
ZSA9PSBwcmVjaXNpb25BdHRyIHx8IG5hbWUgPT0gc3RlcEF0dHIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTElFbGVtZW50LmNwcAppbmRleCBlY2UyOWVhMjIwNzk3ZDk5ZTQzYzlmNzEwMGJmNGRkYTgy
ZTlmY2ZiLi4zNDMyODNmODExMmZjZGU5NzlhNGRmMDcxYzUzOTE4YmU2ZjUyZmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKQEAgLTExNyw3ICsxMTcsMTAgQEAgdm9pZCBI
VE1MTElFbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogaW5saW5lIHZvaWQgSFRNTExJRWxl
bWVudDo6cGFyc2VWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQo
cmVuZGVyZXIoKSk7Ci0gICAgZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpyZW5kZXJlcigpKS5z
ZXRFeHBsaWNpdFZhbHVlKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFs
dWUpKTsKKyAgICBPcHRpb25hbDxpbnQ+IGV4cGxpY2l0VmFsdWU7CisgICAgaWYgKGF1dG8gcGFy
c2VkVmFsdWUgPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKSkKKyAgICAgICAgZXhwbGljaXRWYWx1
ZSA9ICpwYXJzZWRWYWx1ZTsKKyAgICBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnJlbmRlcmVy
KCkpLnNldEV4cGxpY2l0VmFsdWUoZXhwbGljaXRWYWx1ZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAppbmRleCBjNDgwOWU5ZmFkZjdmYmVmNWFi
MmJlNjAwYWI0NGJmMTg4MDgxN2QxLi4xNGE0NzI5OGFlNmY3MTM0YjhlMTA2Njk3MDhkMDljMmNj
MGIzYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCkBA
IC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIgog
I2luY2x1ZGUgIlJlbmRlck1hcnF1ZWUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5l
cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNDgsOCArMTQ3LDggQEAgdm9pZCBIVE1MTWFycXVl
ZUVsZW1lbnQ6OnNldFNjcm9sbERlbGF5KHVuc2lnbmVkIHNjcm9sbERlbGF5KQogICAgIAogaW50
IEhUTUxNYXJxdWVlRWxlbWVudDo6bG9vcCgpIGNvbnN0CiB7Ci0gICAgYXV0byBsb29wVmFsdWUg
PSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24obG9vcEF0dHIpKTsKLSAgICByZXR1cm4gbG9vcFZhbHVlICYmICpsb29w
VmFsdWUgPiAwID8gKmxvb3BWYWx1ZSA6IC0xOworICAgIGludCBsb29wVmFsdWUgPSBnZXRJbnRl
Z3JhbEF0dHJpYnV0ZShsb29wQXR0cik7CisgICAgcmV0dXJuIGxvb3BWYWx1ZSA+IDAgPyBsb29w
VmFsdWUgOiAtMTsKIH0KICAgICAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxNYXJxdWVlRWxlbWVu
dDo6c2V0TG9vcChpbnQgbG9vcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxs
RWxlbWVudC5jcHAKaW5kZXggNjg3MzgwNTg3YTFkNTllNDM2OWZlY2JhM2Y0MzIyYTg3ZWI0NDhl
OC4uNTkzZjdkMjQ3NjdkODcwMDUwMmQyODZhMjVjYzcwZmRkOTc1NWQ5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAK
ICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxs
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTAzLDEwICsxMDIsMTAgQEAgdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sbGVjdFN0
eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE4KICAgICBpZiAobmFt
ZSA9PSBub3dyYXBBdHRyKQogICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVXZWJraXROb3dy
YXApOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKSB7Ci0gICAgICAgIGlmIChwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApID4gMCkg
Ly8gd2lkdGg9IjAiIGlzIGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KKyAg
ICAgICAgaWYgKHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZhbHVlX29yKDApID4gMCkgLy8gd2lk
dGg9IjAiIGlzIGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KICAgICAgICAg
ICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCB2YWx1ZSk7
CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGhlaWdodEF0dHIpIHsKLSAgICAgICAgaWYgKHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3IoMCkgPiAwKSAv
LyBoZWlnaHQ9IjAiIGlzIGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KKyAg
ICAgICAgaWYgKHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZhbHVlX29yKDApID4gMCkgLy8gaGVp
Z2h0PSIwIiBpcyBpZ25vcmVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luSUUuCiAgICAgICAg
ICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIHZhbHVl
KTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKaW5kZXggMDNhZmZjY2RiYmMzYWUw
N2ExMjI5MDhjMTY0ZDk1OGM1MjNiNzJjYy4uNWUyNGI5N2Q4ZDVkZmM5Zjk1ZDI0ZTQ5MDI3NDdm
MWU0OGRhY2MxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQu
Y3BwCkBAIC03OCw4ICs3OCw4IEBAIHZvaWQgSFRNTFRhYmxlQ29sRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0CiAgICAgfSBlbHNl
IGlmIChuYW1lID09IHdpZHRoQXR0cikgewogICAgICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRhYmxlQ29sPihyZW5kZXJlcigpKSkgewotICAg
ICAgICAgICAgICAgIFJlbmRlclRhYmxlQ29sJiBjb2wgPSBkb3duY2FzdDxSZW5kZXJUYWJsZUNv
bD4oKnJlbmRlcmVyKCkpOwotICAgICAgICAgICAgICAgIGludCBuZXdXaWR0aCA9IHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4od2lkdGgoKSkudmFsdWVPcigwKTsKKyAgICAg
ICAgICAgICAgICBhdXRvJiBjb2wgPSBkb3duY2FzdDxSZW5kZXJUYWJsZUNvbD4oKnJlbmRlcmVy
KCkpOworICAgICAgICAgICAgICAgIGludCBuZXdXaWR0aCA9IHBhcnNlSFRNTEludGVnZXIodmFs
dWUpLnZhbHVlX29yKDApOwogICAgICAgICAgICAgICAgIGlmIChuZXdXaWR0aCAhPSBjb2wud2lk
dGgoKSkKICAgICAgICAgICAgICAgICAgICAgY29sLnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRo
c1JlY2FsYygpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxl
bWVudC5jcHAKaW5kZXggNGMwMzc2MGYxNjE0OTgxNmY5YWE3YmYwZjJjYWViZWNlMzZmNjE5NC4u
YmY3OWQyYzUwMGExMDQ2MzZkMGNiN2U5NThjZmIzYTMwMGZhMTkxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAi
U3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29u
dmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwMCw3ICszOTksNyBAQCB2
b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21TdHJpbgogICAgICAgICAgICAgbV9ydWxlc0F0dHIgPSBBbGxSdWxl
czsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY2VsbHBhZGRpbmdBdHRyKSB7CiAgICAgICAgIGlm
ICghdmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9wYWRkaW5nID0gc3RkOjptYXgoMCwg
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKSk7
CisgICAgICAgICAgICBtX3BhZGRpbmcgPSBzdGQ6Om1heCgwLCBwYXJzZUhUTUxJbnRlZ2VyKHZh
bHVlKS52YWx1ZV9vcigwKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcGFkZGluZyA9
IDE7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGNvbHNBdHRyKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAK
aW5kZXggYzUzYTk5NzA1OTQ0ODg1YmIyZDkzNzBmZDBjZmE1M2JjNTY4ZWJiMC4uNjMxYzNhYTZi
MzcyNWQ3OGU4ODE5ZDlmMTgyM2Y2YmU2YTJmYzQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAt
NTcsNyArNTcsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KLQorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNp
b24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMTcsOCArMzE3LDggQEAgdm9pZCBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpyZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQo
KQogewogICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VIZWlnaHQgPSBtX2luc3BlY3RlZFBhZ2VD
b250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVp
Z2h0KCk7CiAgICAgU3RyaW5nIHZhbHVlID0gbV9zZXR0aW5ncy0+Z2V0UHJvcGVydHkoaW5zcGVj
dG9yQXR0YWNoZWRIZWlnaHRTZXR0aW5nKTsKLSAgICB1bnNpZ25lZCBwcmVmZXJyZWRIZWlnaHQg
PSB2YWx1ZS5pc0VtcHR5KCkgPyBkZWZhdWx0QXR0YWNoZWRIZWlnaHQgOiB2YWx1ZS50b1VJbnQo
KTsKLSAgICAKKyAgICB1bnNpZ25lZCBwcmVmZXJyZWRIZWlnaHQgPSB2YWx1ZS5pc0VtcHR5KCkg
PyBkZWZhdWx0QXR0YWNoZWRIZWlnaHQgOiBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azx1bnNpZ25lZD4odmFsdWUpLnZhbHVlT3IoMCk7CisKICAgICAvLyBUaGlzIGNhbGwgbWlnaHQg
bm90IGdvIHRocm91Z2ggKGlmIHRoZSB3aW5kb3cgc3RhcnRzIG91dCBkZXRhY2hlZCksIGJ1dCBp
ZiB0aGUgd2luZG93IGlzIGluaXRpYWxseSBjcmVhdGVkIGF0dGFjaGVkLAogICAgIC8vIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmF0dGFjaFdpbmRvdyBpcyBuZXZlciBjYWxsZWQsIHNvIHdlIG5lZWQg
dG8gbWFrZSBzdXJlIHRvIHNldCB0aGUgYXR0YWNoZWRXaW5kb3dIZWlnaHQuCiAgICAgLy8gRklY
TUU6IENsZWFuIHVwIGNvZGUgc28gd2Ugb25seSBoYXZlIHRvIGNhbGwgc2V0QXR0YWNoZWRXaW5k
b3dIZWlnaHQgaW4gSW5zcGVjdG9yQ29udHJvbGxlcjo6YXR0YWNoV2luZG93CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmlu
ZGV4IDVlMzQzYTU0YmE3MjE3MjliODEyOTJjNjA2Mzk5MjVkYzFkMGRlYTEuLmE4MjcxNzM4ODE2
OWI3MWY2ZjAzMWQyOGQzZTI2NjJmYzQyMjFlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMjAsNiArMTIw
LDcgQEAKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNl
NjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNzU4LDIyICsyNzU5LDIwIEBAIE5vZGUq
IEluc3BlY3RvckRPTUFnZW50Ojpub2RlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXRoVG9r
ZW5zLnNpemUoKSAtIDE7IGkgKz0gMikgewotICAgICAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwot
ICAgICAgICB1bnNpZ25lZCBjaGlsZE51bWJlciA9IHBhdGhUb2tlbnNbaV0udG9VSW50KCZzdWNj
ZXNzKTsKLSAgICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICBhdXRvIGNoaWxkTnVtYmVyID0g
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KHBhdGhUb2tlbnNbaV0p
OworICAgICAgICBpZiAoIWNoaWxkTnVtYmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICAgICAgTm9kZSogY2hpbGQ7CiAgICAgICAgIGlmIChpczxIVE1MRnJhbWVPd25lckVs
ZW1lbnQ+KCpub2RlKSkgewotICAgICAgICAgICAgQVNTRVJUKCFjaGlsZE51bWJlcik7CisgICAg
ICAgICAgICBBU1NFUlQoISpjaGlsZE51bWJlcik7CiAgICAgICAgICAgICBhdXRvJiBmcmFtZU93
bmVyID0gZG93bmNhc3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50Pigqbm9kZSk7CiAgICAgICAgICAg
ICBjaGlsZCA9IGZyYW1lT3duZXIuY29udGVudERvY3VtZW50KCk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBpZiAoY2hpbGROdW1iZXIgPj0gaW5uZXJDaGlsZE5vZGVDb3VudChub2Rl
KSkKKyAgICAgICAgICAgIGlmICgqY2hpbGROdW1iZXIgPj0gaW5uZXJDaGlsZE5vZGVDb3VudChu
b2RlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgICAgICAgICAgY2hp
bGQgPSBpbm5lckZpcnN0Q2hpbGQobm9kZSk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBqID0g
MDsgY2hpbGQgJiYgaiA8IGNoaWxkTnVtYmVyOyArK2opCisgICAgICAgICAgICBmb3IgKHNpemVf
dCBqID0gMDsgY2hpbGQgJiYgaiA8ICpjaGlsZE51bWJlcjsgKytqKQogICAgICAgICAgICAgICAg
IGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
CmluZGV4IDA2MzNiNzU2MjNjYmI5ZGFiOTllN2EyODE5MDZkOWJkMGI4MDY3YzYuLmE1ZmUxZjE5
ODc3OTc4OGZhYTkyYTJmYzNjYTI0YTM4NWZkNDY0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUNl
bGxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ29sRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxUYWJsZUVsZW1lbnQuaCIKQEAgLTI1OCw3ICsyNTksNyBAQCBCb3gqIFRyZWVCdWlsZGVy
OjpjcmVhdGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyQm94JiBwYXJlbnRDb250YWluZXIsIGNv
bnN0IFJlbgogICAgICAgICAgICAgICAgIGF1dG8mIHRhYmxlQ29sRWxlbWVudCA9IHN0YXRpY19j
YXN0PEhUTUxUYWJsZUNvbEVsZW1lbnQmPigqcmVuZGVyZXIuZWxlbWVudCgpKTsKICAgICAgICAg
ICAgICAgICBhdXRvIGNvbHVtbldpZHRoID0gdGFibGVDb2xFbGVtZW50LndpZHRoKCk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFjb2x1bW5XaWR0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
ICAgIGNoaWxkTGF5b3V0Qm94LT5zZXRDb2x1bW5XaWR0aChjb2x1bW5XaWR0aC50b0ludCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gtPnNldENvbHVtbldpZHRoKHBhcnNl
SFRNTEludGVnZXIoY29sdW1uV2lkdGgpLnZhbHVlX29yKDApKTsKICAgICAgICAgICAgICAgICBp
ZiAodGFibGVDb2xFbGVtZW50LnNwYW4oKSA+IDEpCiAgICAgICAgICAgICAgICAgICAgIGNoaWxk
TGF5b3V0Qm94LT5zZXRDb2x1bW5TcGFuKHRhYmxlQ29sRWxlbWVudC5zcGFuKCkpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKQEAgLTI3Niw3ICsyNzcsNiBAQCBCb3gqIFRyZWVCdWlsZGVyOjpjcmVh
dGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyQm94JiBwYXJlbnRDb250YWluZXIsIGNvbnN0IFJl
bgogICAgICAgICAgICAgICAgIGF1dG8gcm93U3BhbiA9IGNlbGxFbGVtZW50LnJvd1NwYW4oKTsK
ICAgICAgICAgICAgICAgICBpZiAocm93U3BhbiA+IDEpCiAgICAgICAgICAgICAgICAgICAgIGNo
aWxkTGF5b3V0Qm94LT5zZXRSb3dTcGFuKHJvd1NwYW4pOwotCiAgICAgICAgICAgICAgICAgYXV0
byBjb2x1bW5TcGFuID0gY2VsbEVsZW1lbnQuY29sU3BhbigpOwogICAgICAgICAgICAgICAgIGlm
IChjb2x1bW5TcGFuID4gMSkKICAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gtPnNl
dENvbHVtblNwYW4oY29sdW1uU3Bhbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKaW5kZXggOWQwYjdlNjRl
MzFiMzdjNmIyZThlNzg3MmRmNTlmODNlMjczYzE5Zi4uOTljYTljNGEwZDk3NjYxMmEwZjhiZDMz
ZGEwODRmYTQ0Njg1ZTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
NiwxMCArNDcsMTAgQEAgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6Q3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZSgpCiAKIHN0YXRpYyBib29sIHBhcnNlQWNjZXNzQ29udHJv
bE1heEFnZShjb25zdCBTdHJpbmcmIHN0cmluZywgU2Vjb25kcyYgZXhwaXJ5RGVsdGEpCiB7Ci0g
ICAgLy8gRklYTUU6IHRoaXMgd2lsbCBub3QgZG8gdGhlIGNvcnJlY3QgdGhpbmcgZm9yIGEgbnVt
YmVyIHN0YXJ0aW5nIHdpdGggYSAnKycKLSAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgZXhwaXJ5
RGVsdGEgPSBTZWNvbmRzKHN0YXRpY19jYXN0PGRvdWJsZT4oc3RyaW5nLnRvVUludFN0cmljdCgm
b2spKSk7Ci0gICAgcmV0dXJuIG9rOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJs
eSByZWplY3Qgc3RyaW5ncyB0aGF0IGhhdmUgYSBsZWFkaW5nICIrIi4KKyAgICBhdXRvIHBhcnNl
ZEludGVnZXIgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHN0cmluZyk7CisgICAgZXhwaXJ5RGVs
dGEgPSBTZWNvbmRzKHN0YXRpY19jYXN0PGRvdWJsZT4ocGFyc2VkSW50ZWdlci52YWx1ZU9yKDAp
KSk7CisgICAgcmV0dXJuIHBhcnNlZEludGVnZXIuaGFzVmFsdWUoKTsKIH0KIAogRXhwZWN0ZWQ8
VW5pcXVlUmVmPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPiwgU3RyaW5nPiBD
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6Y3JlYXRlKFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5IHBvbGljeSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCmluZGV4IDQ4MmQ5YmNh
ZDRiYzdiY2JjMzQ4NjhiNWVkYzc1NjNiMDJmZDZhZjQuLjRmOTIzOTAwOGY5MGI1YjU4ODBmMWIy
ZDc1ZjJmNTFmZDY2OTlmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBE
aXJlY3RvcnlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3Rv
cnlQYXJzZXIuY3BwCkBAIC0yMSwxOCArMjEsMTkgQEAKIC8vIE9yaWdpbmFsIHZlcnNpb24gb2Yg
dGhpcyBmaWxlIGNhbiBjdXJyZW50bHkgYmUgZm91bmQgYXQ6IGh0dHA6Ly9teHIubW96aWxsYS5v
cmcvbW96aWxsYTEuOC9zb3VyY2UvbmV0d2Vyay9zdHJlYW1jb252L2NvbnZlcnRlcnMvUGFyc2VG
VFBMaXN0LmNwcAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKEZUUERJUikKICNp
bmNsdWRlICJGVFBEaXJlY3RvcnlQYXJzZXIuaCIKIAorI2lmIEVOQUJMRShGVFBESVIpCisKKyNp
bmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgorCiAvLyBPbiBXaW5kb3dzLCB1
c2UgdGhlIHRocmVhZHNhZmUgKl9yIGZ1bmN0aW9ucyBwcm92aWRlZCBieSBwdGhyZWFkLgogI2lm
IE9TKFdJTkRPV1MpICYmIChVU0UoUFRIUkVBRFMpIHx8IEhBVkUoUFRIUkVBRF9IKSkKICNpbmNs
dWRlIDxwdGhyZWFkLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+Ci0j
aW5jbHVkZSA8c3RkaW8uaD4KLQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBPUyhXSU5E
T1dTKSAmJiAhZGVmaW5lZChnbXRpbWVfcikKQEAgLTExODEsNyArMTE4Miw3IEBAIEZUUEVudHJ5
VHlwZSBwYXJzZU9uZUZUUExpbmUoY29uc3QgY2hhciogbGluZSwgTGlzdFN0YXRlJiBzdGF0ZSwg
TGlzdFJlc3VsdCYgcmVzCiAgICAgICAgIHsKICAgICAgICAgICAvKiBGaXJzdCB0cnkgdG8gdXNl
IHJlc3VsdC5mZV9zaXplIHRvIGZpbmQgIiAtPiAiIHNlcXVlbmNlLgogICAgICAgICAgICAgIFRo
aXMgY2FuIGdpdmUgcHJvcGVyIHJlc3VsdCBmb3IgY2FzZXMgbGlrZSAiYWFhIC0+IGJiYiAtPiBj
Y2MiLiAqLwotICAgICAgICAgIHVuc2lnbmVkIGludCBmaWxlU2l6ZSA9IHJlc3VsdC5maWxlU2l6
ZS50b1VJbnQoKTsKKyAgICAgICAgICAgIGF1dG8gZmlsZVNpemUgPSBwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4ocmVzdWx0LmZpbGVTaXplKS52YWx1ZU9yKDApOwog
CiAgICAgICAgICAgaWYgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA+IChmaWxlU2l6ZSArIDQpICYm
CiAgICAgICAgICAgICAgIHN0cm5jbXAocmVzdWx0LmZpbGVuYW1lICsgcmVzdWx0LmZpbGVuYW1l
TGVuZ3RoIC0gZmlsZVNpemUgLSA0LCAiIC0+ICIsIDQpID09IDApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAppbmRleCBlNjZlMGMzYWU1
ODYzMWFkMjBjMTFiM2EwZDg0ODRlMGVmMWI0OTdmLi4yMTk4NzUzZTc3NTY4NmYzMGQ3N2QzZjA5
YWZjNTdmNDAyZTcxNjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvUmFu
ZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJz
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC03MCw3ICs3MSw3IEBAIEV4cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBTdHJpbmc+IFByaXZhdGVDbGlja01lCiAKICAgICBh
dXRvIHByZWZpeExlbmd0aCA9IHNpemVvZihwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRyaWdnZXJB
dHRyaWJ1dGlvblBhdGgpIC0gMTsKICAgICBpZiAocGF0aC5sZW5ndGgoKSA9PSBwcmVmaXhMZW5n
dGggKyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2Vn
bWVudFNpemUpIHsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID0g
cGF0aC5zdWJzdHJpbmcocHJlZml4TGVuZ3RoLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJp
YnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUpLnRvVUludDY0U3RyaWN0KCk7CisgICAg
ICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCA9IHBhcnNlSW50ZWdlcjx1aW50
NjRfdD4ocGF0aC5zdWJzdHJpbmcocHJlZml4TGVuZ3RoLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUpKTsKICAgICAgICAgaWYgKCFh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0IHx8ICphdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUlu
dDY0ID4gQXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6TWF4RW50cm9weSkKICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVu
dF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIGNvbnZlcnNpb24gZGF0
YSBjb3VsZCBub3QgYmUgcGFyc2VkIG9yIHdhcyBoaWdoZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhp
bXVtIG9mICJfcywgQXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6TWF4RW50cm9weSwgIi4iX3MpKTsK
IApAQCAtNzgsMTEgKzc5LDExIEBAIEV4cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBTdHJpbmc+IFByaXZhdGVDbGlja01lCiAgICAgfQogICAg
IAogICAgIGlmIChwYXRoLmxlbmd0aCgpID09IHByZWZpeExlbmd0aCArIHByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSArIDEgKyBwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFByaW9yaXR5UGF0aFNlZ21lbnRTaXplKSB7Ci0gICAgICAgIGF1
dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCA9IHBhdGguc3Vic3RyaW5nKHByZWZpeExl
bmd0aCwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNl
Z21lbnRTaXplKS50b1VJbnQ2NFN0cmljdCgpOworICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGFVSW50NjQgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHBhdGguc3Vic3RyaW5nKHBy
ZWZpeExlbmd0aCwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
UGF0aFNlZ21lbnRTaXplKSk7CiAgICAgICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJ
bnQ2NCB8fCAqYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCA+IEF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGE6Ok1heEVudHJvcHkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobWFr
ZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBh
Y2NlcHRlZCBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIGRhdGEgY291bGQgbm90IGJlIHBhcnNlZCBv
ciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3MsIEF0dHJpYnV0aW9u
VHJpZ2dlckRhdGE6Ok1heEVudHJvcHksICIuIl9zKSk7CiAKLSAgICAgICAgYXV0byBhdHRyaWJ1
dGlvblByaW9yaXR5VUludDY0ID0gcGF0aC5zdWJzdHJpbmcocHJlZml4TGVuZ3RoICsgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRTaXplICsg
MSwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRQcmlvcml0eVBhdGhTZWdtZW50U2l6ZSkudG9VSW50
NjRTdHJpY3QoKTsKKyAgICAgICAgYXV0byBhdHRyaWJ1dGlvblByaW9yaXR5VUludDY0ID0gcGFy
c2VJbnRlZ2VyPHVpbnQ2NF90PihwYXRoLnN1YnN0cmluZyhwcmVmaXhMZW5ndGggKyBwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUgKyAx
LCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFByaW9yaXR5UGF0aFNlZ21lbnRTaXplKSk7CiAgICAg
ICAgIGlmICghYXR0cmlidXRpb25Qcmlvcml0eVVJbnQ2NCB8fCAqYXR0cmlidXRpb25Qcmlvcml0
eVVJbnQ2NCA+IFByaW9yaXR5OjpNYXhFbnRyb3B5KQogICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252ZXJz
aW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgcHJpb3JpdHkgY291bGQgbm90IGJlIHBh
cnNlZCBvciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3MsIFByaW9y
aXR5OjpNYXhFbnRyb3B5LCAiLiJfcykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggMDBkZTlhYzg1Njc0NDkzYzcwMGZkYzc5MjBkYTcx
MzM1Yzk1MDFiMC4uMDU1Nzk3ZjlmYjM4ZDA1M2JjMjY0ZDU2YjI2N2VjYmU3MzExODJkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMzcs
NyArMzcsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiU1ZH
RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTExOCw3ICsxMTcsNyBAQCBpbnQgTWF0aE1MU2VsZWN0RWxlbWVudDo6Z2V0U2Vs
ZWN0ZWRBY3Rpb25DaGlsZEFuZEluZGV4KEVsZW1lbnQqJiBzZWxlY3RlZENoaWxkKQogICAgIGlm
ICghc2VsZWN0ZWRDaGlsZCkKICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICBpbnQgc2VsZWN0aW9u
ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihhdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKE1hdGhNTE5hbWVzOjpzZWxlY3Rpb25BdHRyKSkudmFsdWVPcigwKTsK
KyAgICBpbnQgc2VsZWN0aW9uID0gZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OnNl
bGVjdGlvbkF0dHIpOwogICAgIGludCBpOwogICAgIGZvciAoaSA9IDE7IGkgPCBzZWxlY3Rpb247
IGkrKykgewogICAgICAgICBhdXRvKiBuZXh0Q2hpbGQgPSBzZWxlY3RlZENoaWxkLT5uZXh0RWxl
bWVudFNpYmxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggZjFjNjc4
NWE0YTM5ZWRlMmM0OTU0MjgxMWNiMTk1MmQwYjljNDJkMy4uZGJmNjM3Y2ZiMjk4MDY2MWFhNjc3
MGE3OGE0NDdhZmVkMDM1OWE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAg
LTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzgzLDEyICszODQsMTAgQEAgdm9pZCBFdmVudFNvdXJjZTo6cGFy
c2VFdmVudFN0cmVhbUxpbmUodW5zaWduZWQgcG9zaXRpb24sIE9wdGlvbmFsPHVuc2lnbmVkPiBm
aWUKICAgICAgICAgaWYgKCF2YWx1ZUxlbmd0aCkKICAgICAgICAgICAgIG1fcmVjb25uZWN0RGVs
YXkgPSBkZWZhdWx0UmVjb25uZWN0RGVsYXk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
Ly8gRklYTUU6IERvIHdlIHJlYWxseSB3YW50IHRvIGlnbm9yZSB0cmFpbGluZyBnYXJiYWdlIGhl
cmU/IFNob3VsZCB3ZSBiZSB1c2luZyB0aGUgc3RyaWN0IHZlcnNpb24gaW5zdGVhZD8KLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBjYW4ndCBwYXJzZSB0aGUgdmFsdWUsIHNob3VsZCB3ZSBs
ZWF2ZSBtX3JlY29ubmVjdERlbGF5IGFsb25lIG9yIHNldCBpdCB0byBkZWZhdWx0UmVjb25uZWN0
RGVsYXk/Ci0gICAgICAgICAgICBib29sIG9rOwotICAgICAgICAgICAgYXV0byByZWNvbm5lY3RE
ZWxheSA9IGNoYXJhY3RlcnNUb1VJbnQ2NCgmbV9yZWNlaXZlQnVmZmVyW3Bvc2l0aW9uXSwgdmFs
dWVMZW5ndGgsICZvayk7Ci0gICAgICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAgICAgbV9y
ZWNvbm5lY3REZWxheSA9IHJlY29ubmVjdERlbGF5OworICAgICAgICAgICAgLy8gRklYTUU6IERv
IHdlIHJlYWxseSB3YW50IHRvIGlnbm9yZSB0cmFpbGluZyBqdW5rIGhlcmU/CisgICAgICAgICAg
ICAvLyBGSVhNRTogV2hlbiB3ZSBjYW4ndCBwYXJzZSB0aGUgdmFsdWUsIHNob3VsZCB3ZSByZWFs
bHkgbGVhdmUgbV9yZWNvbm5lY3REZWxheSBhbG9uZT8gU2hvdWxkbid0IHdlIHNldCBpdCB0byBk
ZWZhdWx0UmVjb25uZWN0RGVsYXk/CisgICAgICAgICAgICBpZiAoYXV0byByZWNvbm5lY3REZWxh
eSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih7ICZtX3JlY2Vp
dmVCdWZmZXJbcG9zaXRpb25dLCB2YWx1ZUxlbmd0aCB9KSkKKyAgICAgICAgICAgICAgICBtX3Jl
Y29ubmVjdERlbGF5ID0gKnJlY29ubmVjdERlbGF5OwogICAgICAgICB9CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmNwcAppbmRleCBmNjBhZWFmMzUxNmY2NzZhMTVlMDY3NjA2ZTI2NzYx
N2IxNDRlNTZjLi4wOTVlNDc0ODVmM2JjNDU2NDAyM2IxMWY5OTliOTY0NjAyMTAwNTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0xvY2F0aW9uLmNwcApAQCAtMzQsOSArMzQsMTAgQEAKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvblNjaGVk
dWxlci5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0jaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTY1LDcgKzE2Niw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IExvY2F0aW9uOjpzZXRQb3J0KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5k
b3cmIGZpcnN0V2luCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBV
UkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwotICAgIHVybC5zZXRQb3J0KHBhcnNl
VUludDE2KHBvcnRTdHJpbmcpKTsKKyAgICB1cmwuc2V0UG9ydChwYXJzZUludGVnZXI8dWludDE2
X3Q+KHBvcnRTdHJpbmcpKTsKICAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBm
aXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDc5YzA2N2I3MDk1ZmUyM2ZmNDAzODcxODUwZmY1Y2Iz
OTZlNTczYWIuLjc4YzJjYTA3NWViYTNhMmJhMzc1MjA5MWJhMzRhYzNlMDljNzNhNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVy
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDUsMjIgKzEwNiwxNSBAQCBPcHRpb25hbDxTZWN1
cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cihjb25zdCBTdAogICAgIGlmIChzZXBhcmF0b3IxID09IHNlcGFyYXRvcjIpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgLy8gTWFrZSBzdXJlIHRoZSBwb3J0IHNlY3Rp
b24gaXMgYSB2YWxpZCBwb3J0IG51bWJlciBvciBkb2Vzbid0IGV4aXN0Ci0gICAgYm9vbCBwb3J0
T2theTsKLSAgICBpbnQgcG9ydCA9IGRhdGFiYXNlSWRlbnRpZmllci5yaWdodChkYXRhYmFzZUlk
ZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0b3IyIC0gMSkudG9JbnQoJnBvcnRPa2F5KTsKLSAg
ICBib29sIHBvcnRBYnNlbnQgPSAoc2VwYXJhdG9yMiA9PSBkYXRhYmFzZUlkZW50aWZpZXIubGVu
Z3RoKCkgLSAxKTsKLSAgICBpZiAoIShwb3J0T2theSB8fCBwb3J0QWJzZW50KSkKKyAgICAvLyBN
YWtlIHN1cmUgdGhlIHBvcnQgc2VjdGlvbiBpcyBhIHZhbGlkIHBvcnQgbnVtYmVyIG9yIGRvZXNu
J3QgZXhpc3QuCisgICAgYXV0byBwb3J0TGVuZ3RoID0gZGF0YWJhc2VJZGVudGlmaWVyLmxlbmd0
aCgpIC0gc2VwYXJhdG9yMiAtIDE7CisgICAgYXV0byBwb3J0ID0gcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KFN0cmluZ1ZpZXcgeyBkYXRhYmFzZUlkZW50aWZpZXIg
fS5yaWdodChwb3J0TGVuZ3RoKSk7CisgICAgaWYgKCFwb3J0ICYmIHBvcnRMZW5ndGgpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCi0gICAgaWYgKHBvcnQgPCAwIHx8IHBvcnQg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgCisKICAgICBhdXRvIHByb3RvY29sID0gZGF0YWJhc2VJZGVudGlm
aWVyLnN1YnN0cmluZygwLCBzZXBhcmF0b3IxKTsKICAgICBhdXRvIGhvc3QgPSBkYXRhYmFzZUlk
ZW50aWZpZXIuc3Vic3RyaW5nKHNlcGFyYXRvcjEgKyAxLCBzZXBhcmF0b3IyIC0gc2VwYXJhdG9y
MSAtIDEpOwotICAgIGlmICghcG9ydCkKLSAgICAgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0
YSB7IHByb3RvY29sLCBob3N0LCBXVEY6Om51bGxvcHQgfTsKLQotICAgIHJldHVybiBTZWN1cml0
eU9yaWdpbkRhdGEgeyBwcm90b2NvbCwgaG9zdCwgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQp
IH07CisgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSB7IHByb3RvY29sLCBob3N0LCBwb3J0
IH07CiB9CiAKIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6Omlzb2xhdGVk
Q29weSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1
cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCmluZGV4IDkw
MDNkOTdlZTU1NmRlNGYzNzQ1ZjIzM2RhM2NiMTE1MDEwNzc2ZDIuLjhjMGE0MmM4NzMzNTUyZjdl
ZWFmMzg1OTZlZGZmMWI1YjJlZTdlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
V2luZG93RmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVy
ZXMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTMyLDcgKzEzMyw3IEBAIHN0YXRpYyB2b2lkIHNldFdpbmRv
d0ZlYXR1cmUoV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBTdHJpbmdWaWV3IGtleSwgU3RyaW5n
VmllCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSh2YWx1ZSwgInllcyIpKQogICAgICAgICBudW1lcmljVmFsdWUgPSAxOwogICAgIGVsc2UK
LSAgICAgICAgbnVtZXJpY1ZhbHVlID0gdmFsdWUudG9JbnQoKTsKKyAgICAgICAgbnVtZXJpY1Zh
bHVlID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVP
cigwKTsKIAogICAgIC8vIFdlIHRyZWF0IGtleSBvZiAicmVzaXphYmxlIiBoZXJlIGFzIGFuIGFk
ZGl0aW9uYWwgZmVhdHVyZSByYXRoZXIgdGhhbiBzZXR0aW5nIHJlc2l6ZWFibGUgdG8gdHJ1ZS4K
ICAgICAvLyBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBGaXJlZm94LCBidXQgY291bGQgYWxzbyBi
ZSBoYW5kbGVkIGF0IGFub3RoZXIgbGV2ZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCmluZGV4IGI5
ZjU0ODgwN2UzZDY0ZTdkMmMxNDg3ZGE1NjM2MDc2NmZhYzBjZTIuLjZhMzM2YjVhM2UxNjJiM2My
MWZhMjU5NjkzNTY1ZTcyNDU0M2JlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2
NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDM1LDE0ICs0MzYsMTQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6UG9ydD4KICAg
ICAKICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotICAgIAotICAgIGJvb2wgb2s7Ci0gICAgaW50IHBvcnRJbnQgPSBjaGFyYWN0ZXJzVG9JbnRT
dHJpY3QoYmVnaW4sIGJ1ZmZlci5wb3NpdGlvbigpIC0gYmVnaW4sICZvayk7Ci0gICAgaWYgKCFv
ayB8fCBwb3J0SW50IDwgMCB8fCBwb3J0SW50ID4gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZf
dD46Om1heCgpKQorCisgICAgdW5zaWduZWQgbGVuZ3RoID0gYnVmZmVyLnBvc2l0aW9uKCkgLSBi
ZWdpbjsKKyAgICBhdXRvIHBvcnRJbnRlZ2VyID0gcGFyc2VJbnRlZ2VyPHVpbnQxNl90Pih7IGJl
Z2luLCBsZW5ndGggfSkudmFsdWVPcigwKTsKKyAgICBpZiAoIXBvcnRJbnRlZ2VyKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgUG9ydCBwb3J0OwotICAgIHBvcnQudmFsdWUg
PSBwb3J0SW50OworICAgIHBvcnQudmFsdWUgPSBwb3J0SW50ZWdlcjsKICAgICByZXR1cm4gcG9y
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVz
YWdlVGhyZWFkTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVz
YWdlVGhyZWFkTGludXguY3BwCmluZGV4IGM3ZTczZjBjMWMyNWJiYTA1ZjA2Yjg1MzI1YjVjMzAz
ZTc3Y2RhNDguLmI2NTliNzc0ZjI2NDAxM2ExN2NmNTZlNmMxMzEwMjVlZWNjYmNlMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRM
aW51eC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL2xpbnV4L0N1cnJlbnRQcm9jZXNzTWVt
b3J5U3RhdHVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lv
bi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIwMCwyMCArMjAxLDE1IEBAIHN0YXRp
YyB2b2lkIGNvbGxlY3RDUFVVc2FnZShmbG9hdCBwZXJpb2QpCiAKICAgICBzdHJ1Y3QgZGlyZW50
KiBkcDsKICAgICB3aGlsZSAoKGRwID0gcmVhZGRpcihkaXIpKSkgewotICAgICAgICBTdHJpbmcg
bmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoZHAtPmRfbmFtZSk7Ci0gICAgICAgIGlmIChuYW1lID09
ICIuIiB8fCBuYW1lID09ICIuLiIpCisgICAgICAgIGF1dG8gaWQgPSBwYXJzZUludGVnZXI8cGlk
X3Q+KGRwLT5kX25hbWUpOworICAgICAgICBpZiAoIWlkKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgYm9vbCBvazsKLSAgICAgICAgcGlkX3QgaWQgPSBuYW1lLnRvSW50U3RyaWN0
KCZvayk7Ci0gICAgICAgIGlmICghb2spCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICBhdXRvJiBpbmZvID0gdGhyZWFkSW5mb01hcCgpLmFkZChpZCwgVGhyZWFkSW5mbygpKS5pdGVy
YXRvci0+dmFsdWU7Ci0gICAgICAgIGlmICghdGhyZWFkQ1BVVXNhZ2UoaWQsIHBlcmlvZCwgaW5m
bykpCi0gICAgICAgICAgICB0aHJlYWRJbmZvTWFwKCkucmVtb3ZlKGlkKTsKKyAgICAgICAgYXV0
byYgaW5mbyA9IHRocmVhZEluZm9NYXAoKS5hZGQoKmlkLCBUaHJlYWRJbmZvKCkpLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICAgICAgaWYgKCF0aHJlYWRDUFVVc2FnZSgqaWQsIHBlcmlvZCwgaW5mbykp
CisgICAgICAgICAgICB0aHJlYWRJbmZvTWFwKCkucmVtb3ZlKCppZCk7CiAKLSAgICAgICAgcHJl
dmlvdXNUYXNrcy5yZW1vdmUoaWQpOworICAgICAgICBwcmV2aW91c1Rhc2tzLnJlbW92ZSgqaWQp
OwogICAgIH0KICAgICBjbG9zZWRpcihkaXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGRiMzY0NDczNDU0NTI4N2ZjMzEzNjYzZWE5NjljYjYz
NDE2MGZmNTQuLmUwOTE2ZmZjZDhjNGU4MmNiNDUxNGIzMDU4OTU2NDJiMmM0MzgwMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVz
aW5nIFdURjo6RGF0YU11dGV4OwpAQCAtMTA3MSwxNyArMTA3MiwxMiBAQCB2b2lkIENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbgogCiAgICAgLy8gU2lnbmFsIHRvIGRvd25zdHJlYW0gaWYgdGhpcyBpcyBhbiBJ
Y2VjYXN0IHN0cmVhbS4KICAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHM7Ci0gICAgU3RyaW5nIG1l
dGFkYXRhSW50ZXJ2YWxBc1N0cmluZyA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZTo6SWN5TWV0YUludCk7Ci0gICAgaWYgKCFtZXRhZGF0YUludGVydmFsQXNTdHJpbmcu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGJvb2wgaXNNZXRhZGF0YUludGVydmFsUGFyc2VkOwotICAg
ICAgICBpbnQgbWV0YWRhdGFJbnRlcnZhbCA9IG1ldGFkYXRhSW50ZXJ2YWxBc1N0cmluZy50b0lu
dCgmaXNNZXRhZGF0YUludGVydmFsUGFyc2VkKTsKLSAgICAgICAgaWYgKGlzTWV0YWRhdGFJbnRl
cnZhbFBhcnNlZCAmJiBtZXRhZGF0YUludGVydmFsID4gMCkgewotICAgICAgICAgICAgY2FwcyA9
IGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LWljeSIsICJtZXRh
ZGF0YS1pbnRlcnZhbCIsIEdfVFlQRV9JTlQsIG1ldGFkYXRhSW50ZXJ2YWwsIG51bGxwdHIpKTsK
LQotICAgICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSk7Ci0gICAgICAgICAgICBHU1RfREVCVUdf
T0JKRUNUKHNyYywgIlIldTogUmVzcG9uc2UgQ29udGVudFR5cGU6ICVzIiwgbV9yZXF1ZXN0TnVt
YmVyLCBjb250ZW50VHlwZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGdzdF9jYXBzX3Nl
dF9zaW1wbGUoY2Fwcy5nZXQoKSwgImNvbnRlbnQtdHlwZSIsIEdfVFlQRV9TVFJJTkcsIGNvbnRl
bnRUeXBlLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpOwotICAgICAgICB9CisgICAgaWYgKGF1dG8g
bWV0YWRhdGFJbnRlcnZhbCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rKHJlc3Bv
bnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0YUludCkpOyBtZXRhZGF0
YUludGVydmFsICYmICptZXRhZGF0YUludGVydmFsID4gMCkgeworICAgICAgICBjYXBzID0gYWRv
cHRHUmVmKGdzdF9jYXBzX25ld19zaW1wbGUoImFwcGxpY2F0aW9uL3gtaWN5IiwgIm1ldGFkYXRh
LWludGVydmFsIiwgR19UWVBFX0lOVCwgKm1ldGFkYXRhSW50ZXJ2YWwsIG51bGxwdHIpKTsKKwor
ICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKTsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMs
ICJSJXU6IFJlc3BvbnNlIENvbnRlbnRUeXBlOiAlcyIsIG1fcmVxdWVzdE51bWJlciwgY29udGVu
dFR5cGUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUoY2Fwcy5n
ZXQoKSwgImNvbnRlbnQtdHlwZSIsIEdfVFlQRV9TVFJJTkcsIGNvbnRlbnRUeXBlLnV0ZjgoKS5k
YXRhKCksIG51bGxwdHIpOwogICAgIH0KICAgICBpZiAoY2FwcykgewogICAgICAgICBHU1RfREVC
VUdfT0JKRUNUKHNyYywgIlIldTogU2V0IGNhcHMgdG8gJSIgR1NUX1BUUl9GT1JNQVQsIG1fcmVx
dWVzdE51bWJlciwgY2Fwcy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAppbmRleCBi
YzE2ZWNmNzE1NDlkZTY4NTQxZThhNWFkYTRhOTZhYWNiYWM0YWRlLi4xN2RjMTYzNDQzN2M2NGI5
MTQ4MDMyMzA4NmY3ZDU4N2RhOGY1YWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogR1NUX0RFQlVHX0NB
VEVHT1JZKHdlYmtpdE1lZGlhVGh1bmRlckRlYnVnQ2F0ZWdvcnkpOwogI2RlZmluZSBHU1RfQ0FU
X0RFRkFVTFQgd2Via2l0TWVkaWFUaHVuZGVyRGVidWdDYXRlZ29yeQpAQCAtMzQ5LDggKzM1MCwx
MCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghcmVxdWVzdFR5cGUuaXNFbXB0eSgpICYmIHJlcXVl
c3RUeXBlLmxlbmd0aCgpICE9IHBheWxvYWQubGVuZ3RoKCkpCiAgICAgICAgICAgICBvZmZzZXQg
PSB0eXBlUG9zaXRpb24gKyA2OwogCi0gICAgICAgIGlmIChyZXF1ZXN0VHlwZS5sZW5ndGgoKSA9
PSAxKQotICAgICAgICAgICAgbV90eXBlID0gbWFrZU9wdGlvbmFsKHN0YXRpY19jYXN0PFdlYkNv
cmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGU+KHJlcXVlc3RUeXBlLnRvSW50KCkpKTsKKyAgICAgICAg
aWYgKHJlcXVlc3RUeXBlLmxlbmd0aCgpID09IDEpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGVyZSBhcmUgc2ltcGxlciB3YXlzIHRvIGNvbnZlcnQgYSBzaW5nbGUgZGlnaXQgdG8gYSBudW1i
ZXIgdGhhbiBjYWxsaW5nIHBhcnNlSW50ZWdlci4KKyAgICAgICAgICAgIG1fdHlwZSA9IG1ha2VP
cHRpb25hbChzdGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlPihwYXJzZUlu
dGVnZXI8aW50PihyZXF1ZXN0VHlwZSkudmFsdWVPcigwKSkpOworICAgICAgICB9CiAKICAgICAg
ICAgbV9wYXlsb2FkID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocGF5bG9hZC5jaGFyYWN0ZXJzOCgp
ICsgb2Zmc2V0LCBwYXlsb2FkLmxlbmd0aCgpIC0gb2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IDg0NmE5
YWUyZjI3NTRlNWEzMzNmMjczNTk1OTZjYjM2ODRmYTlhNmIuLjVkNTJjOTg4MmEzMzE1MjA4NTZh
MWI2MjMwZjFkZGIyMTA4MGQ5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
IDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvV2FsbFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJz
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIC8qIFRoaXMgaXMgdGhl
IG1heGltdW0gbGluZSBsZW5ndGggd2UgYWNjZXB0IGZvciBhIGNvb2tpZSBsaW5lLiBSRkMgMjEw
OQpAQCAtMTE3LDEwICsxMTgsOCBAQCBzdGF0aWMgdm9pZCBwYXJzZUNvb2tpZUF0dHJpYnV0ZXMo
Y29uc3QgU3RyaW5nJiBhdHRyaWJ1dGUsIGJvb2wmIGhhc01heEFnZSwgQ29vawogICAgICAgICBy
ZXN1bHQuZG9tYWluID0gYXR0cmlidXRlVmFsdWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsK
IAogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVOYW1lLCAi
bWF4LWFnZSIpKSB7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGRvdWJsZSBtYXhBZ2VTZWNv
bmRzID0gYXR0cmlidXRlVmFsdWUudG9JbnQ2NCgmb2spOwotICAgICAgICBpZiAob2spIHsKLSAg
ICAgICAgICAgIHJlc3VsdC5leHBpcmVzID0gKFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VF
cG9jaCgpLnZhbHVlKCkgKyBtYXhBZ2VTZWNvbmRzKSAqIFdURjo6bXNQZXJTZWNvbmQ7CisgICAg
ICAgIGlmIChhdXRvIG1heEFnZVNlY29uZHMgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazxpbnQ2NF90PihhdHRyaWJ1dGVWYWx1ZSkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5leHBp
cmVzID0gKFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgKyAqbWF4
QWdlU2Vjb25kcykgKiBXVEY6Om1zUGVyU2Vjb25kOwogICAgICAgICAgICAgcmVzdWx0LnNlc3Np
b24gPSBmYWxzZTsKIAogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBtYXgtYWdlIGF0dHJp
YnV0ZSBhcyB3ZWxsIGFzIGFuIGV4cGlyZXMgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCA5
ZWY1MDc5N2NjZmRjNTIwNmRkMDQzMDY3MjJmYmZlODIxMDAyNGE1Li4xYTY5NDMyNTc0YWU3ZmIw
OWE5OThiNmJjNjU3M2M0OGNhOGM2ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTQzLDYgKzQzLDcg
QEAKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+
CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTg3LDEwICsxODgs
OCBAQCB2b2lkIEN1cmxDYWNoZUVudHJ5OjpzZXRSZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIC8vIFRyeSB0byBwYXJzZSBleHBlY3RlZCBj
b250ZW50IGxlbmd0aAogICAgIGxvbmcgbG9uZyBjb250ZW50TGVuZ3RoID0gLTE7CiAgICAgaWYg
KCFyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRMZW5ndGgp
LmlzTnVsbCgpKSB7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICBsb25n
IGxvbmcgcGFyc2VkQ29udGVudExlbmd0aCA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCkudG9JbnQ2NCgmc3VjY2Vzcyk7Ci0gICAgICAgIGlm
IChzdWNjZXNzKQotICAgICAgICAgICAgY29udGVudExlbmd0aCA9IHBhcnNlZENvbnRlbnRMZW5n
dGg7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZENvbnRlbnRMZW5ndGggPSBwYXJzZUludGVnZXJJ
Z25vcmluZ1RyYWlsaW5nSnVuazxsb25nIGxvbmc+KHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCkpKQorICAgICAgICAgICAgY29udGVudExlbmd0
aCA9ICpwYXJzZWRDb250ZW50TGVuZ3RoOwogICAgIH0KICAgICByZXNwb25zZS5zZXRFeHBlY3Rl
ZENvbnRlbnRMZW5ndGgoY29udGVudExlbmd0aCk7IC8vIC0xIG9uIHBhcnNlIGVycm9yIG9yIG51
bGwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCmlu
ZGV4IDNkNGE3ZTMxOGYwNDU0ODgyYTgzYWQzNzAzOTE5OGVlZDdkNzM0MWUuLjYwNmMxZjY5YWE0
MzI5ODcyMmE1YzVjODViOWUwYWZjNmRmMzZlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJD
U1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJHbHlwaC5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNs
dWRlICJTVkdGb250RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZvbnRGYWNlRWxlbWVudC5oIgog
I2luY2x1ZGUgIlNWR0dseXBoRWxlbWVudC5oIgpAQCAtNDkwLDkgKzQ5MSw5IEBAIHZvaWQgU1ZH
VG9PVEZGb250Q29udmVydGVyOjphcHBlbmROQU1FVGFibGUoKQogdm9pZCBTVkdUb09URkZvbnRD
b252ZXJ0ZXI6OmFwcGVuZE9TMlRhYmxlKCkKIHsKICAgICBpbnQxNl90IGF2ZXJhZ2VBZHZhbmNl
ID0gc19vdXRwdXRVbml0c1BlckVtOwotICAgIGF1dG8gaG9yaXpBZHZYID0gcGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihtX2ZvbnRFbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6Omhvcml6X2Fkdl94QXR0cikpOworICAgIGF1dG8gaG9y
aXpBZHZYID0gcGFyc2VIVE1MSW50ZWdlcihtX2ZvbnRFbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6Omhvcml6X2Fkdl94QXR0cikpOwogICAgIGlmICghaG9y
aXpBZHZYICYmIG1fbWlzc2luZ0dseXBoRWxlbWVudCkKLSAgICAgICAgaG9yaXpBZHZYID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihtX21pc3NpbmdHbHlwaEVsZW1lbnQt
PmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6Omhvcml6X2Fkdl94QXR0
cikpOworICAgICAgICBob3JpekFkdlggPSBwYXJzZUhUTUxJbnRlZ2VyKG1fbWlzc2luZ0dseXBo
RWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6aG9yaXpf
YWR2X3hBdHRyKSk7CiAgICAgaWYgKGhvcml6QWR2WCkKICAgICAgICAgYXZlcmFnZUFkdmFuY2Ug
PSBjbGFtcFRvPGludDE2X3Q+KHNjYWxlVW5pdHNQZXJFbSgqaG9yaXpBZHZYKSk7CiAKQEAgLTk0
NCwxNiArOTQ1LDE2IEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphcHBlbmRWT1JHVGFi
bGUoKQogICAgIGFwcGVuZDE2KDEpOyAvLyBNYWpvciB2ZXJzaW9uCiAgICAgYXBwZW5kMTYoMCk7
IC8vIE1pbm9yIHZlcnNpb24KIAotICAgIGF1dG8gdmVydE9yaWdpblkgPSBwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KG1fZm9udEVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihTVkdOYW1lczo6dmVydF9vcmlnaW5feUF0dHIpKTsKKyAgICBhdXRvIHZl
cnRPcmlnaW5ZID0gcGFyc2VIVE1MSW50ZWdlcihtX2ZvbnRFbGVtZW50LmF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lBdHRyKSk7CiAgICAgaWYg
KCF2ZXJ0T3JpZ2luWSAmJiBtX21pc3NpbmdHbHlwaEVsZW1lbnQpCi0gICAgICAgIHZlcnRPcmln
aW5ZID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihtX21pc3NpbmdHbHlw
aEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRf
b3JpZ2luX3lBdHRyKSk7Ci0gICAgYXBwZW5kMTYoY2xhbXBUbzxpbnQxNl90PihzY2FsZVVuaXRz
UGVyRW0odmVydE9yaWdpblkudmFsdWVPcigwKSkpKTsKKyAgICAgICAgdmVydE9yaWdpblkgPSBw
YXJzZUhUTUxJbnRlZ2VyKG1fbWlzc2luZ0dseXBoRWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihTVkdOYW1lczo6dmVydF9vcmlnaW5feUF0dHIpKTsKKyAgICBhcHBlbmQx
NihjbGFtcFRvPGludDE2X3Q+KHNjYWxlVW5pdHNQZXJFbSh2ZXJ0T3JpZ2luWS52YWx1ZV9vcigw
KSkpKTsKIAogICAgIGF1dG8gdGFibGVTaXplT2Zmc2V0ID0gbV9yZXN1bHQuc2l6ZSgpOwogICAg
IGFwcGVuZDE2KDApOyAvLyBQbGFjZSB0byB3cml0ZSB0YWJsZSBzaXplLgogICAgIGZvciAoR2x5
cGggaSA9IDA7IGkgPCBtX2dseXBocy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoYXV0byog
Z2x5cGggPSBtX2dseXBoc1tpXS5nbHlwaEVsZW1lbnQpIHsKLSAgICAgICAgICAgIGlmIChhdXRv
IHZlcnRpY2FsT3JpZ2luWSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4o
Z2x5cGgtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRfb3Jp
Z2luX3lBdHRyKSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHZlcnRpY2FsT3JpZ2luWSA9IHBh
cnNlSFRNTEludGVnZXIoZ2x5cGgtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZH
TmFtZXM6OnZlcnRfb3JpZ2luX3lBdHRyKSkpIHsKICAgICAgICAgICAgICAgICBhcHBlbmQxNihp
KTsKICAgICAgICAgICAgICAgICBhcHBlbmQxNihjbGFtcFRvPGludDE2X3Q+KHNjYWxlVW5pdHNQ
ZXJFbSgqdmVydGljYWxPcmlnaW5ZKSkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IDQ0ZmI0NWU5ZWJkZjU5YzMwN2U5Y2E1ZGM4MmFmZWViMjI3
YWMwNTAuLjkwMDAxNjViMGE0YjQ3ZGNkODlmM2JhYWYwZDIwOWVjMzAyZDMyN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIzMyw2ICsyMzMsNyBAQAogI2luY2x1ZGUg
PHd0Zi9VUkxIZWxwZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogI2lmIFVTRShDRykKICNp
bmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCkBAIC0zNjIsMTAgKzM2Myw5IEBAIHVzaW5nIEpT
Qzo6UHJvcGVydHlTbG90OwogdXNpbmcgSlNDOjpTY3JpcHRFeGVjdXRhYmxlOwogdXNpbmcgSlND
OjpTdGFja1Zpc2l0b3I7CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKIGNsYXNzIEluc3BlY3RvclN0dWJGcm9udGVuZCBmaW5hbCA6IHB1Ymxp
YyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLCBwdWJsaWMgRnJvbnRlbmRDaGFubmVsIHsK
QEAgLTE2MDEsNyArMTYwMSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRXZWJSVENWUDlWVEJTdXBw
b3J0KGJvb2wgdmFsdWUpCiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRTRnJhbWVDb3VudGVyKFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTdHJpbmcmIGNvdW50ZXIpCiB7Ci0g
ICAgaWYgKGF1dG8gdmFsdWUgPSBTdHJpbmdWaWV3KGNvdW50ZXIpLnRvVUludDY0U3RyaWN0KCkp
CisgICAgaWYgKGF1dG8gdmFsdWUgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KGNvdW50ZXIpKQog
ICAgICAgICB0cmFuc2Zvcm0uc2V0Q291bnRlckZvclRlc3RpbmcoKnZhbHVlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcCBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKaW5kZXggOGI3OWFhZTRhZDk2Nzk3MWZiNWNj
YWEwMmUyNzBiNGQ3MjI0YTZkNC4uZjExYmZlZGMxNDdjZGEzZWU3MjczMzJiZjE3OWYxZWYxNjIx
YTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiQ29tbWFuZFJlc3VsdC5oIgogI2luY2x1ZGUgIlNlc3Npb25Ib3N0Lmgi
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0lu
dGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJEcml2ZXIgewpAQCAtMTE4LDIxICsxMTksMjAgQEAgaW50IFdlYkRyaXZlclNl
cnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgIGF1dG8gcG9zaXRpb24g
PSB0YXJnZXRTdHJpbmcucmV2ZXJzZUZpbmQoIjoiX3MpOwogICAgICAgICBpZiAocG9zaXRpb24g
IT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIG1fdGFyZ2V0QWRkcmVzcyA9IHRhcmdldFN0cmlu
Zy5sZWZ0KHBvc2l0aW9uKTsKLSAgICAgICAgICAgIG1fdGFyZ2V0UG9ydCA9IHRhcmdldFN0cmlu
Zy5zdWJzdHJpbmcocG9zaXRpb24gKyAxKS50b1VJbnQobnVsbHB0cik7CisgICAgICAgICAgICBt
X3RhcmdldFBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4o
U3RyaW5nVmlldyB7IHRhcmdldFN0cmluZyB9LnN1YnN0cmluZyhwb3NpdGlvbiArIDEpKS52YWx1
ZU9yKDApOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAKLSAgICBib29sIG9rOwotICAgIHVu
c2lnbmVkIHBvcnQgPSBwb3J0U3RyaW5nLnRvVUludCgmb2spOwotICAgIGlmICghb2spIHsKLSAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIHBvcnQgJXMgcHJvdmlkZWRcbiIsIHBvcnRT
dHJpbmcuYXNjaWkoKS5kYXRhKCkpOworICAgIGF1dG8gcG9ydCA9IHBhcnNlSW50ZWdlcjx1aW50
MTZfdD4ocG9ydFN0cmluZyk7CisgICAgaWYgKCFwb3J0KSB7CisgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiSW52YWxpZCBwb3J0ICVzIHByb3ZpZGVkXG4iLCBwb3J0U3RyaW5nLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgIH0KIAogICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWQoKTsKIAotICAgIGlmICghbV9zZXJ2ZXIubGlzdGVuKGhvc3QsIHBv
cnQpKQorICAgIGlmICghbV9zZXJ2ZXIubGlzdGVuKGhvc3QsICpwb3J0KSkKICAgICAgICAgcmV0
dXJuIEVYSVRfRkFJTFVSRTsKIAogICAgIFJ1bkxvb3A6OnJ1bigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkRyaXZlci9nbGliL1dlYkRyaXZlclNlcnZpY2VHTGliLmNwcCBiL1NvdXJjZS9XZWJE
cml2ZXIvZ2xpYi9XZWJEcml2ZXJTZXJ2aWNlR0xpYi5jcHAKaW5kZXggOTQxNzkzZDNlYWQwZTk4
NjMyYWYzMzE3OTJmM2E3NGM1YjRiNmY0YS4uZDZmZDIxOTk3ZjM5ZWQxZTA0MWM1MTg1OTYzYTY4
YzFmNGNlZGQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9nbGliL1dlYkRyaXZlclNl
cnZpY2VHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvV2ViRHJpdmVyU2Vydmlj
ZUdMaWIuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2ViRHJpdmVyU2VydmljZS5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oPgorCiBuYW1lc3BhY2UgV2ViRHJpdmVyIHsKIAogc3RhdGljIGJvb2wg
cGFyc2VWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgdWludDY0X3QmIG1ham9yLCB1aW50
NjRfdCYgbWlub3IsIHVpbnQ2NF90JiBtaWNybykKQEAgLTM1LDIwICszNywyNiBAQCBzdGF0aWMg
Ym9vbCBwYXJzZVZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCB1aW50NjRfdCYgbWFqb3Is
IHVpbnQ2NF90JiBtaW5vcgogICAgIFZlY3RvcjxTdHJpbmc+IHRva2VucyA9IHZlcnNpb24uc3Bs
aXQoJy4nKTsKICAgICBib29sIG9rOwogICAgIHN3aXRjaCAodG9rZW5zLnNpemUoKSkgewotICAg
IGNhc2UgMzoKLSAgICAgICAgbWljcm8gPSB0b2tlbnNbMl0udG9JbnQ2NCgmb2spOwotICAgICAg
ICBpZiAoIW9rKQorICAgIGNhc2UgMzogeworICAgICAgICBhdXRvIHBhcnNlZE1pY3JvID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRva2Vuc1syXSk7CisgICAg
ICAgIGlmICghcGFyc2VkTWljcm8pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IG1pY3JvID0gKnBhcnNlZE1pY3JvOworICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAg
Y2FzZSAyOgotICAgICAgICBtaW5vciA9IHRva2Vuc1sxXS50b0ludDY0KCZvayk7Ci0gICAgICAg
IGlmICghb2spCisgICAgY2FzZSAyOiB7CisgICAgICAgIGF1dG8gcGFyc2VkTWlub3IgPSBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odG9rZW5zWzFdKTsKKyAgICAg
ICAgaWYgKCFwYXJzZWRNaW5vcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
bWlub3IgPSAqcGFyc2VkTWlub3I7CisgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBj
YXNlIDE6Ci0gICAgICAgIG1ham9yID0gdG9rZW5zWzBdLnRvSW50NjQoJm9rKTsKLSAgICAgICAg
aWYgKCFvaykKKyAgICBjYXNlIDE6IHsKKyAgICAgICAgYXV0byBwYXJzZWRNYWpvciA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0b2tlbnNbMF0pOworICAgICAg
ICBpZiAoIXBhcnNlZE1ham9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBt
YWpvciA9ICpwYXJzZWRNYWpvcjsKKyAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29j
a2V0L0hUVFBQYXJzZXIuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFBhcnNlci5j
cHAKaW5kZXggMzdiZWQyOTFlOTYzNmJmNzI3ZmJkMWRkOTgwMDAyZjhkZjdjOTU5YS4uOThhYTQx
MTNmZjVjNTE3YTMwOThmM2RlOTBhNjJiMDJlNWJiNWFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkRyaXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2Nr
ZXQvSFRUUFBhcnNlci5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJIVFRQUGFyc2VyLmgiCiAKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0lu
dGVnZXJDb252ZXJzaW9uLmg+CisKIG5hbWVzcGFjZSBXZWJEcml2ZXIgewogCiBIVFRQUGFyc2Vy
OjpQaGFzZSBIVFRQUGFyc2VyOjpwYXJzZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtMTQ1
LDEwICsxNDcsOCBAQCBzaXplX3QgSFRUUFBhcnNlcjo6ZXhwZWN0ZWRCb2R5TGVuZ3RoKCkgY29u
c3QKICAgICBjb25zdCBzaXplX3QgbmFtZUxlbmd0aCA9IHN0ZDo6c3RybGVuKG5hbWUpOwogCiAg
ICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiBtX21lc3NhZ2UucmVxdWVzdEhlYWRlcnMpIHsK
LSAgICAgICAgaWYgKGhlYWRlci5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobmFtZSkpIHsK
LSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBoZWFkZXIuc3Vic3RyaW5nU2hhcmluZ0ltcGwobmFt
ZUxlbmd0aCkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUudG9J
bnQoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoaGVhZGVyLnN0YXJ0c1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUludGVnZXJJZ25vcmluZ1Ry
YWlsaW5nSnVuazxzaXplX3Q+KFN0cmluZ1ZpZXcgeyBoZWFkZXIgfS5zdWJzdHJpbmcobmFtZWxl
bmd0aCkpLnZhbHVlT3IoMCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4
IDU4MzQ5NWMyNmNlMzJlOGI1YTUyYTA2YmFmYzY3YTgzZTc4OGMxM2UuLmI5NzgxNWU5MDQ5ZDU4
NTBiNGIzNmM0M2I0NDM1OTUzOTI0YmIzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50
ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzMsMTAgKzEz
NCw3IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPGludD4gcGFyc2VWZXJzaW9uU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmVyc2lvblN0cmluZykKICAgICAgICAgZm9yIChlbmRQb3MgPSBzdGFydFBvczsg
ZW5kUG9zIDwgdmVyc2lvblN0cmluZy5sZW5ndGgoKTsgKytlbmRQb3MpCiAgICAgICAgICAgICBp
ZiAodmVyc2lvblN0cmluZ1tlbmRQb3NdID09ICcuJyB8fCB2ZXJzaW9uU3RyaW5nW2VuZFBvc10g
PT0gJ18nKQogICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGludCB2ZXJzaW9uQ29t
cG9uZW50ID0gdmVyc2lvblN0cmluZy5zdWJzdHJpbmcoc3RhcnRQb3MsIGVuZFBvcyAtIHN0YXJ0
UG9zKS50b0ludCgpOwotICAgICAgICB2ZXJzaW9uLmFwcGVuZCh2ZXJzaW9uQ29tcG9uZW50KTsK
LQorICAgICAgICB2ZXJzaW9uLmFwcGVuZChwYXJzZUludGVnZXJBbGxvd2luVHJhaWxpbmdKdW5r
PGludD4oU3RyaW5nVmlldyB7IHZlcnNpb25TdHJpbmcgfS5zdWJzdHJpbmcoc3RhcnRQb3MsIGVu
ZFBvcyAtIHN0YXJ0UG9zKSkudmFsdWVPcigwKSk7CiAgICAgICAgIHN0YXJ0UG9zID0gZW5kUG9z
ICsgMTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCmluZGV4IDJmNDA1ZmI4Y2U0ZTc0MmEwODExMDU5OGI4YzUyN2E5MjZhYWZkNGUu
LmUzODQwMjJjMzQwMjNiMWUzNWUyYTJlMDk2YTIyOWJiOWUwMzA3YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNzQsNiArNzQsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvbnBydW50aW1lX2ltcGwuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L3J1bnRpbWVfcm9vdC5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xMDcx
LDcgKzEwNzIsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3QoY29uc3QgY2hhciog
dXJsLCBjb25zdCBjaGFyKiB0YXJnZXQsIHVpbnQzMl90IGxlbgogICAgICAgICAgICAgICAgIFN0
cmluZyBjb250ZW50TGVuZ3RoID0gaGVhZGVyRmllbGRzLmdldChIVFRQSGVhZGVyTmFtZTo6Q29u
dGVudExlbmd0aCk7CiAKICAgICAgICAgICAgICAgICBpZiAoIWNvbnRlbnRMZW5ndGguaXNOdWxs
KCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMZW5ndGggPSBzdGQ6Om1pbihjb250ZW50TGVu
Z3RoLnRvSW50KCksIChpbnQpZGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFM
ZW5ndGggPSBzdGQ6Om1pbihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25l
ZD4oY29udGVudExlbmd0aCkudmFsdWVPcigwKSwgZGF0YUxlbmd0aCk7CiAgICAgICAgICAgICAg
ICAgaGVhZGVyRmllbGRzLnJlbW92ZShIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCk7CiAK
ICAgICAgICAgICAgICAgICBwb3N0RGF0YSArPSBsb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmMmI0YjRjZjNjYjdkMzFiMjdmNDJk
Yjc3MDU0M2U1Y2I5YWIwYWE0Li4wMWQ3M2U5MWY0MDUyNTlmMTQ0YWUyNjMzYjI3MTdmM2E0YzZm
OGRlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMDkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBhbGwgcmVtYWluaW5nIHVzZXMgb2YgdGhlIFN0cmluZzo6dG9J
bnQgZmFtaWx5IG9mIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI1NTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOiBVc2UKKyAgICAgICAgcGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQuCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsIGNvbnN0
KTogRGl0dG8uCisKIDIwMjEtMDUtMDkgIEtoZW0gUmFqICA8cmFqLmtoZW1AZ21haWwuY29tPgog
CiAgICAgICAgIFtUb29sc10gR2VuZXJhdGUgbWFyc2hhbGxpbmcgY29kZSB3aXRob3V0IHNvdXJj
ZSByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAK
aW5kZXggNGRjZjRjMDM3NjExNzcxNjY1ZjMzYjgyNzhhZGJmM2Y4NjM1ZmVkOC4uOTU1NjFhOGVm
NjA5MGMyNzFlOTYzZjkyYWFiNjY2NDQwNWEwYTUxMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFt
ZXMuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBAIC0xMTM5LDcgKzExNDAsNyBAQCBkb3VibGUgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0
cmlidXRlKQogICAgIGlmIChhdGtBdHRyaWJ1dGVOYW1lLnN0YXJ0c1dpdGgoInJvdyIpIHx8IGF0
a0F0dHJpYnV0ZU5hbWUuc3RhcnRzV2l0aCgiY29sIikpIHsKICAgICAgICAgU3RyaW5nIGF0dHJp
YnV0ZVZhbHVlID0gZ2V0QXR0cmlidXRlU2V0VmFsdWVGb3JJZChBVEtfT0JKRUNUKG1fZWxlbWVu
dC5nZXQoKSksIE9iamVjdEF0dHJpYnV0ZVR5cGUsIGF0a0F0dHJpYnV0ZU5hbWUpOwogICAgICAg
ICBpZiAoIWF0dHJpYnV0ZVZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBhdHRy
aWJ1dGVWYWx1ZS50b0ludCgpOworICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPGludD4oYXR0cmlidXRlVmFsdWUpLnZhbHVlT3IoMCk7CiAgICAgfQog
CiAgICAgcmV0dXJuIDA7CkBAIC0xNjMyLDExICsxNjMzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAogCiBpbnQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAogewotICAgIFN0cmluZyBsZXZlbCA9
IGdldEF0dHJpYnV0ZVNldFZhbHVlRm9ySWQoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpLCBP
YmplY3RBdHRyaWJ1dGVUeXBlLCAibGV2ZWwiKTsKLSAgICBpZiAoIWxldmVsLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIGxldmVsLnRvSW50KCk7Ci0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihnZXRBdHRyaWJ1dGVTZXRW
YWx1ZUZvcklkKEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSwgT2JqZWN0QXR0cmlidXRlVHlw
ZSwgImxldmVsIikpLnZhbHVlT3IoMCk7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVha0FzKCkK
</data>
<flag name="commit-queue"
          id="448970"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428136</attachid>
            <date>2021-05-09 14:27:25 -0700</date>
            <delta_ts>2021-05-09 15:15:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225580-20210509142724.patch</filename>
            <type>text/plain</type>
            <size>94423</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkzZjJhODQ0ZjUwOWE1
ZmQxZGUzZGJjM2E5ZjY1Y2RmOTkyZjE3Ni4uYTBjN2U1MDAzYzExMDQwYTkzZmRkYWM5Zjk5YzZl
MGM5OTI5MDAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMS0wNS0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGFsbCByZW1haW5p
bmcgdXNlcyBvZiB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNl
SW5mbyk6CisgICAgICAgIFVzZSBwYXJzZUludGVnZXI8dWludDY0X3Q+IGluc3RlYWQgb2YgU3Ry
aW5nOjp0b1VJbnQ2NFN0cmljdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUpOgorICAgICAg
ICBEaXR0by4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVG
cmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgVXNlIGEgcmVm
ZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2UpOiBVc2UKKyAgICAgICAgQVND
SUlMaXRlcmFsLiBVc2UgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PiBpbnN0
ZWFkIG9mCisgICAgICAgIFN0cmluZzo6dG9JbnQuIFVzZSBhdXRvLiBVc2UgcmVmZXJlbmNlcyBp
bnN0ZWFkIG9mIHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6RGVmbGF0ZVJlc3VsdEhvbGRl
cjo6RGVmbGF0ZVJlc3VsdEhvbGRlcik6IFVzZSBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNv
cmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6On5EZWZsYXRlUmVzdWx0SG9sZGVyKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjpJbmZsYXRlUmVzdWx0SG9sZGVy
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjp+SW5mbGF0
ZVJlc3VsdEhvbGRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IpOiBQ
YXNzIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6ZGVmbGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6aW5mbGF0ZSk6IERpdHRvLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuaDogVXNlIGZvcndhcmQgZGVjbGFyYXRpb25zCisgICAgICAg
IGluc3RlYWQgb2YgaW5jbHVkZXMsIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycywgaW5p
dGlhbGl6ZSBkYXRhIG1lbWJlcnMKKyAgICAgICAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24sIGFu
ZCByZW1vdmUgYW4gdW5uZWNlc3NhcnkgZXhwbGljaXQgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aGVhZGVySGFzVmFsaWRIVFRQVmVyc2lvbik6IFVzZSBwYXJzZUludGVn
ZXI8aW50PiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ1ZpZXc6OnRvSW50U3RyaWN0LgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZSk6IERpdHRv
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVhZGluZ0xldmVs
IGNvbnN0KTogVXNlCisgICAgICAgIGdldEludGVncmFsQXR0cmlidXRlIGluc3RlYWQgb2YgQXRv
bVN0cmluZzo6dG9JbnQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6aGllcmFyY2hpY2FsTGV2ZWwgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6Z2V0SW50ZWdyYWxBdHRyaWJ1dGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAg
U2luY2UgQWNjZXNzaWJpbGl0eU9iamVjdCBoYXMgaXRzIG93biBnZXRBdHRyaWJ1dGUgZnVuY3Rp
b24sIHdlIG5lZWQgdG8KKyAgICAgICAgcmUtaW1wbGVtZW50IEVsZW1lbnQ6OmdldEludGVncmFs
QXR0cmlidXRlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
ZXRTaXplIGNvbnN0KTogVXNlIGdldEludGVncmFsQXR0cmlidXRlCisgICAgICAgIGluc3RlYWQg
b2YgQXRvbVN0cmluZzo6dG9JbnQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpwb3NJblNldCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0Lmg6IEFkZGVkIGdldEludGVncmFsQXR0cmlidXRlLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSBjb25zdCk6VXNlIGdldEludGVn
cmFsQXR0cmlidXRlCisgICAgICAgIGluc3RlYWQgb2YgQXRvbVN0cmluZzo6dG9JbnQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmF4Q29sdW1uQ291bnQgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YXhSb3dDb3VudCBj
b25zdCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENv
bHVtbkluZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsOjpheFJvd0luZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENvbHVtblNwYW4gY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93U3BhbiBjb25zdCk6IERp
dHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YXhDb2x1bW5JbmRleCBj
b25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93Ojph
eFJvd0luZGV4IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVj
dG9yUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVBTlBsdXNCKTogVXNlIHBh
cnNlSW50ZWdlcjxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludFN0cmljdAorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2Vu
aXplcjo6Y29uc3VtZUVzY2FwZSk6IFVzZSBwYXJzZUludGVnZXI8dWludDMyX3Q+IGluc3RlYWQg
b2YKKyAgICAgICAgU3RyaW5nOjp0b1VJbnRTdHJpY3QuCisKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpj
YW5QcmVzZW50RGF0YURldGVjdG9yc1VJRm9yRWxlbWVudCk6CisgICAgICAgIFVzZSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludC4K
KyAgICAgICAgQWxzbyB1c2UgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIFN0cmluZy4KKyAgICAgICAg
KFdlYkNvcmU6OmRhdGFEZXRlY3RvclN0cmluZ0ZvclBhdGgpOiBVc2UgbWFrZVN0cmluZyBpbnN0
ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JF
bGVtZW50KTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LgorCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKTogVXNlIHBhcnNlSFRNTEludGVnZXIgaW5zdGVhZAorICAgICAgICBvZiBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+LgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxMSUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExJRWxlbWVudDo6cGFyc2VWYWx1ZSk6IERpdHRvLgorICAgICAg
ICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
YXJxdWVlRWxlbWVudDo6bG9vcCBjb25zdCk6IFVzZSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZQorICAg
ICAgICBpbnN0ZWFkIG9mIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4uCisg
ICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmli
dXRlKToKKyAgICAgICAgVXNlIHBhcnNlSFRNTEludGVnZXIgaW5zdGVhZCBvZiBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+LgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ29s
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDb2xFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERp
dHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVz
dG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgVXNlIHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZzo6dG9V
SW50LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZvclBhdGgpOiBVc2UK
KyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+IGluc3Rl
YWQgb2YgU3RyaW5nOjp0b1VJbnQuCisKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVy
OjpjcmVhdGVMYXlvdXRCb3gpOiBVc2UgcGFyc2VIVE1MSW50ZWdlcgorICAgICAgICBpbnN0ZWFk
IG9mIEF0b21TdHJpbmc6OnRvSW50LgorCisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBY2Nlc3NDb250
cm9sTWF4QWdlKTogVXNlIHBhcnNlSW50ZWdlcjx1aW50NjRfdD4gaW5zdGVhZAorICAgICAgICBv
ZiBTdHJpbmc6OnRvVUludFN0cmljdC4KKworICAgICAgICAqIGxvYWRlci9GVFBEaXJlY3RvcnlQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPbmVGVFBMaW5lKTogVXNlIHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPgorICAgICAgICBpbnN0ZWFkIG9m
IFN0cmluZzo6dG9VSW50LgorCisgICAgICAgICogbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJz
ZUF0dHJpYnV0aW9uUmVxdWVzdCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDY0X3Q+
IGluc3RlYWQgb2YgU3RyaW5nOjp0b1VJbnQ2NFN0cmljdC4KKworICAgICAgICAqIG1hdGhtbC9N
YXRoTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNlbGVjdEVs
ZW1lbnQ6OmdldFNlbGVjdGVkQWN0aW9uQ2hpbGRBbmRJbmRleCk6CisgICAgICAgIFVzZSBnZXRJ
bnRlZ3JhbEF0dHJpYnV0ZSBpbnN0ZWFkIG9mIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4uCisKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGluZSk6IFVzZQorICAgICAgICBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4gaW5zdGVhZCBvZiBjaGFy
YWN0ZXJzVG9VSW50NjQuCisKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0KTogVXNlIHBhcnNlSW50ZWdlcjx1aW50MTZfdD4g
aW5zdGVhZCBvZiBwYXJzZVVJbnQxNi4KKworICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFi
YXNlSWRlbnRpZmllcik6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazx1aW50MTZfdD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LCB3aGljaAorICAgICAgICBh
bGxvd3MgdXMgdG8gcmVtb3ZlIHNvbWUgcmFuZ2UgY2hlY2tpbmcgYW5kIHR5cGUgY29udmVyc2lv
bi4KKworICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0V2luZG93RmVhdHVyZSk6IFVzZSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azxpbnQ+CisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nVmlldzo6dG9JbnQuCisKKyAgICAgICAg
KiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlUG9ydCk6IFVz
ZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDE2X3Q+IGluc3RlYWQgb2YgY2hhcmFjdGVyc1Rv
SW50U3RyaWN0LgorCisgICAgICAgICogcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGlu
dXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdENQVVVzYWdlKTogVXNlIHBhcnNlSW50
ZWdlcjxwaWRfdD4gaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmc6OnRvSW50U3RyaWN0LiBBbHNv
IHJlbW92ZWQgdW5uZWVkZWQgc3BlY2lhbCBjYXNlcyBmb3IgIi4iIGFuZAorICAgICAgICAiLi4i
IHNpbmNlIGJvdGggd2lsbCBmYWlsIHRvIHBhcnNlIGFzIGFuIGludGVnZXIsIGFuZCB0aGlzIG5v
IGxvbmdlcgorICAgICAgICBuZWVkIHRvIHB1dCBkX25hbWUgaW50byBhIFdURjo6U3RyaW5nLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHA6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVz
cG9uc2VSZWNlaXZlZCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OlBhcnNlZFJlc3BvbnNlTWVzc2FnZSk6IFVzZQorICAg
ICAgICBwYXJzZUludGVnZXI8aW50PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQgdG8gcGFyc2Ug
YSBzaW5nbGUtZGlnaXQuCisgICAgICAgIFByb2JhYmx5IHNob3VsZCB3cml0ZSB0aGlzIGFub3Ro
ZXIgd2F5LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRpbDo6cGFyc2VDb29raWVBdHRyaWJ1dGVzKTog
VXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludDY0X3Q+IGlu
c3RlYWQgb2YgU3RyaW5nOjp0b0ludDY0LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5
OjpzZXRSZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdl
cklnbm9yaW5nVHJhaWxpbmdKdW5rPGxvbmcgbG9uZz4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50
NjQuCisKKyAgICAgICAgKiBzdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZE9TMlRhYmxlKTogVXNlIHBh
cnNlSFRNTEludGVnZXIKKyAgICAgICAgaW5zdGVhZCBvZiBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazxpbnQ+LiBNaWdodCBiZSBldmVuIGJldHRlcgorICAgICAgICB0byByZWZhY3Rv
ciB0byB1c2UgZ2V0SW50ZWdyYWxBdHRyaWJ1dGUgbGF0ZXIuCisgICAgICAgIChXZWJDb3JlOjpT
VkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZFZPUkdUYWJsZSk6IERpdHRvLgorCisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRTRnJhbWVDb3VudGVyKTogVXNlIHBhcnNlSW50ZWdlcjx1aW50NjRfdD4KKyAgICAgICAgaW5z
dGVhZCBvZiBTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdC4KKwogMjAyMS0wNS0wOSAgRnVqaWkg
SGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9d
W0NsYW5nXSBsbGQtbGluazogZXJyb3I6IHVuZGVmaW5lZCBzeW1ib2w6IHB1YmxpYzogc3RhdGlj
IGNsYXNzIEdlbmVyaWNUeXBlZEFycmF5Vmlldzw+Ojp0cnlDcmVhdGUoKSBpbiBDcnlwdG9LZXlS
U0FPcGVuU1NMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCA0ZGQzM2I0MWY5OGU1NmQ0YWFiOTg0YmNj
MTU2OGQ5NDUyM2MzOTNkLi43MjIwZWViYjY2ZWI5ZDU0YTEzNmMyYWI5MTIyNDJlMDM4Y2ZhZTJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA1LTA5ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB1c2Vz
IG9mIHRoZSBTdHJpbmc6OnRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU4MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRHJpdmVyU2VydmljZS5jcHA6
CisgICAgICAgIChXZWJEcml2ZXI6OldlYkRyaXZlclNlcnZpY2U6OnJ1bik6IFVzZQorICAgICAg
ICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4gaW5zdGVhZCBvZiBT
dHJpbmc6OnRvVUludC4KKworICAgICAgICAqIGdsaWIvV2ViRHJpdmVyU2VydmljZUdMaWIuY3Bw
OgorICAgICAgICAoV2ViRHJpdmVyOjpwYXJzZVZlcnNpb24pOiBVc2UKKyAgICAgICAgcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+IGluc3RlYWQgb2YgU3RyaW5nOjp0
b0ludDY0LAorICAgICAgICBhbmQgdGhlbiBhc3NpZ25pbmcgaW50byBhIHVpbnQ2NF90LgorCisg
ICAgICAgICogc29ja2V0L0hUVFBQYXJzZXIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpIVFRQ
UGFyc2VyOjpleHBlY3RlZEJvZHlMZW5ndGggY29uc3QpOiBVc2UKKyAgICAgICAgcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8c2l6ZV90PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQu
CisgICAgICAgIEFsc28gdXNlIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBTdHJpbmc6OnN1YnN0cmlu
Z1NoYXJpbmdJbXBsIGFuZAorICAgICAgICBkcm9wcGVkIGFuIHVubmVlZGVkIGNhbGwgdG8gU3Ry
aW5nOjpzdHJpcFdoaXRlU3BhY2UuCisKIDIwMjEtMDMtMjUgIERvbiBPbG1zdGVhZCAgPGRvbi5v
bG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVzZSBXZWJEcml2ZXJfREVSSVZF
RF9TT1VSQ0VTIHZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZGFlNjhmMWEz
OTJiYmQ1ZWQwNzVkMDQ0MWY5YTM4Mjg0ZWM5ZDFkOS4uYjk1ZDMwYzcwNjc5ZmQ0MDQ3MTIxYzll
YWFlNDgwOTBhNjJkYTk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDIxLTA1LTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB1c2VzIG9mIHRoZSBTdHJpbmc6OnRvSW50IGZhbWls
eSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTU4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZVZlcnNpb25TdHJpbmcpOiBVc2UgcGFyc2VJbnRlZ2VyQWxsb3dpblRyYWlsaW5nSnVu
azxpbnQ+CisgICAgICAgIGlzbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQuCisKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFu
ZGxlUG9zdCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1
bnNpZ25lZD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LAorICAgICAgICBhbmQgdGhlbiBhc3Np
Z25pbmcgdG8gYW4gdW5zaWduZWQuCisKIDIwMjEtMDUtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIHJlZmVyZW5j
ZXMgdG8gUGFnZUdyb3VwIGZyb20gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDM2ZDliMDQ0NmY1MDExM2I0ZWNmY2YyNGU1OGFkNzI2NDY5MTcyYzAu
LmIyNmNkNzI3YmM0MzJhMTU0OGU4MjgyMmM1YmZlOTkzODI4MWQ1NzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CkBAIC0xMDAzLDEyICsxMDA0LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
REJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0
YWJhc2VJCiAgICAgICAgIGlmIChzcWwuaXNDb2x1bW5OdWxsKDApKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIFN0cmluZyBzdHJpbmdWZXJzaW9uID0gc3FsLmdldENvbHVt
blRleHQoMCk7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGRhdGFiYXNlVmVyc2lvbiA9IHN0
cmluZ1ZlcnNpb24udG9VSW50NjRTdHJpY3QoJm9rKTsKLSAgICAgICAgaWYgKCFvaykgeworICAg
ICAgICBhdXRvIHBhcnNlZFZlcnNpb24gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHN0cmluZ1Zl
cnNpb24pOworICAgICAgICBpZiAoIXBhcnNlZFZlcnNpb24pIHsKICAgICAgICAgICAgIExPR19F
UlJPUigiRGF0YWJhc2UgdmVyc2lvbiBvbiBkaXNrICgnJXMnKSBkb2VzIG5vdCBjbGVhbmx5IGNv
bnZlcnQgdG8gYW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgdmVyc2lvbiIsIHN0cmluZ1ZlcnNp
b24udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQorICAgICAgICBkYXRhYmFzZVZlcnNpb24gPSAqcGFyc2VkVmVyc2lvbjsKICAgICB9CiAKICAg
ICBhdXRvIGRhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFz
ZU5hbWUsIGRhdGFiYXNlVmVyc2lvbiwgMCk7CkBAIC0xMTY2LDE0ICsxMTY3LDEzIEBAIE9wdGlv
bmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0
YWJhc2VOYW1lQW5kVmVyc2lvCiAKICAgICBTUUxpdGVTdGF0ZW1lbnQgdmVyc3FsKGRhdGFiYXNl
LCAiU0VMRUNUIHZhbHVlIEZST00gSURCRGF0YWJhc2VJbmZvIFdIRVJFIGtleSA9ICdEYXRhYmFz
ZVZlcnNpb24nOyJfcyk7CiAgICAgU3RyaW5nIHN0cmluZ1ZlcnNpb24gPSB2ZXJzcWwuZ2V0Q29s
dW1uVGV4dCgwKTsKLSAgICBib29sIG9rOwotICAgIHVpbnQ2NF90IGRhdGFiYXNlVmVyc2lvbiA9
IHN0cmluZ1ZlcnNpb24udG9VSW50NjRTdHJpY3QoJm9rKTsKLSAgICBpZiAoIW9rKSB7CisgICAg
YXV0byBkYXRhYmFzZVZlcnNpb24gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHN0cmluZ1ZlcnNp
b24pOworICAgIGlmIChkYXRhYmFzZVZlcnNpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJEYXRh
YmFzZSB2ZXJzaW9uIG9uIGRpc2sgKCclcycpIGRvZXMgbm90IGNsZWFubHkgY29udmVydCB0byBh
biB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciB2ZXJzaW9uIiwgc3RyaW5nVmVyc2lvbi51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAgICByZXR1
cm4gSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbiB7IGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VWZXJz
aW9uIH07CisgICAgcmV0dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24geyBkYXRhYmFzZU5h
bWUsICpkYXRhYmFzZVZlcnNpb24gfTsKIH0KIAogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIu
Y3BwCmluZGV4IGJhMzkwNjI4ZWJjYTk2ZjBjMjdiM2JkZjAwMzU2Y2I0YzY0ZmRiOTUuLjUwZjM0
NDIzMmRjODYxNWM0MjJmOTRmOTJhOWRjN2MxMWFiNDBkY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ci5jcHAKQEAgLTMzLDMzICszMywzMCBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVG
cmFtZSA6IHB1YmxpYyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IgeworY2xhc3MgV2ViU29j
a2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lIGZpbmFsIDogcHVibGljIFdlYlNvY2tldEV4dGVuc2lv
blByb2Nlc3NvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVG
cmFtZXIqKTsKLSAgICB2aXJ0dWFsIH5XZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoKSA9
IGRlZmF1bHQ7Ci0KLSAgICBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBvdmVy
cmlkZTsKLSAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZmFp
bHVyZVJlYXNvbjsgfQorICAgIGV4cGxpY2l0IFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFt
ZShXZWJTb2NrZXREZWZsYXRlRnJhbWVyJik7CiAKIHByaXZhdGU6Ci0gICAgV2ViU29ja2V0RGVm
bGF0ZUZyYW1lciogbV9mcmFtZXI7Ci0gICAgYm9vbCBtX3Jlc3BvbnNlUHJvY2Vzc2VkOworICAg
IFN0cmluZyBoYW5kc2hha2VTdHJpbmcoKSBmaW5hbDsKKyAgICBib29sIHByb2Nlc3NSZXNwb25z
ZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpIGZpbmFsOworICAgIFN0cmluZyBmYWls
dXJlUmVhc29uKCkgZmluYWwgeyByZXR1cm4gbV9mYWlsdXJlUmVhc29uOyB9CisKKyAgICBXZWJT
b2NrZXREZWZsYXRlRnJhbWVyJiBtX2ZyYW1lcjsKKyAgICBib29sIG1fcmVzcG9uc2VQcm9jZXNz
ZWQgeyBmYWxzZSB9OwogICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247CiB9OwogCiAvLyBGWElN
RTogUmVtb3ZlIHZlbmRvciBwcmVmaXggYWZ0ZXIgdGhlIHNwZWNpZmljYXRpb24gbWF0dXJlZC4K
LVdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikKLSAgICA6IFdlYlNvY2tldEV4
dGVuc2lvblByb2Nlc3NvcigieC13ZWJraXQtZGVmbGF0ZS1mcmFtZSIpCitXZWJTb2NrZXRFeHRl
bnNpb25EZWZsYXRlRnJhbWU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZShXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyJiBmcmFtZXIpCisgICAgOiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3IoIngtd2Via2l0LWRlZmxhdGUtZnJhbWUiX3MpCiAgICAgLCBtX2ZyYW1lcihmcmFtZXIpCi0g
ICAgLCBtX3Jlc3BvbnNlUHJvY2Vzc2VkKGZhbHNlKQogewotICAgIEFTU0VSVChtX2ZyYW1lcik7
CiB9CiAKIFN0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmhhbmRzaGFrZVN0
cmluZygpCkBAIC03MCwxOCArNjcsMTggQEAgU3RyaW5nIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxh
dGVGcmFtZTo6aGFuZHNoYWtlU3RyaW5nKCkKIGJvb2wgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHNl
cnZlclBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKG1fcmVzcG9uc2VQcm9jZXNzZWQpIHsKLSAgICAg
ICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGR1cGxpY2F0ZSBkZWZsYXRlLWZyYW1lIHJl
c3BvbnNlIjsKKyAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGR1cGxpY2F0ZSBk
ZWZsYXRlLWZyYW1lIHJlc3BvbnNlIl9zOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIG1fcmVzcG9uc2VQcm9jZXNzZWQgPSB0cnVlOwogCiAgICAgdW5zaWduZWQgZXhwZWN0ZWRO
dW1QYXJhbWV0ZXJzID0gMDsKICAgICBpbnQgd2luZG93Qml0cyA9IDE1OwotICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0
ZXJzLmZpbmQoIm1heF93aW5kb3dfYml0cyIpOworICAgIGF1dG8gcGFyYW1ldGVyID0gc2VydmVy
UGFyYW1ldGVycy5maW5kKCJtYXhfd2luZG93X2JpdHMiKTsKICAgICBpZiAocGFyYW1ldGVyICE9
IHNlcnZlclBhcmFtZXRlcnMuZW5kKCkpIHsKLSAgICAgICAgd2luZG93Qml0cyA9IHBhcmFtZXRl
ci0+dmFsdWUudG9JbnQoKTsKKyAgICAgICAgd2luZG93Qml0cyA9IHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPGludD4ocGFyYW1ldGVyLT52YWx1ZSkudmFsdWVPcigwKTsKICAgICAg
ICAgaWYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkgewotICAgICAgICAgICAg
bV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGludmFsaWQgbWF4X3dpbmRvd19iaXRzIHBhcmFt
ZXRlciI7CisgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgaW52YWxpZCBt
YXhfd2luZG93X2JpdHMgcGFyYW1ldGVyIl9zOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIGV4cGVjdGVkTnVtUGFyYW1ldGVycysrOwpAQCAtOTEsNyArODgs
NyBAQCBib29sIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNl
KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbgogICAgIHBhcmFtZXRlciA9IHNlcnZlclBhcmFt
ZXRlcnMuZmluZCgibm9fY29udGV4dF90YWtlb3ZlciIpOwogICAgIGlmIChwYXJhbWV0ZXIgIT0g
c2VydmVyUGFyYW1ldGVycy5lbmQoKSkgewogICAgICAgICBpZiAoIXBhcmFtZXRlci0+dmFsdWUu
aXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZh
bGlkIG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVyIjsKKyAgICAgICAgICAgIG1fZmFpbHVy
ZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVy
Il9zOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIG1vZGUg
PSBXZWJTb2NrZXREZWZsYXRlcjo6RG9Ob3RUYWtlT3ZlckNvbnRleHQ7CkBAIC05OSwyNCArOTYs
MjIgQEAgYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OnByb2Nlc3NSZXNwb25z
ZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW4KICAgICB9CiAKICAgICBpZiAoZXhwZWN0ZWRO
dW1QYXJhbWV0ZXJzICE9IHNlcnZlclBhcmFtZXRlcnMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fZmFp
bHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVy
IjsKKyAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIHVuZXhwZWN0ZWQgZGVmbGF0
ZS1mcmFtZSBwYXJhbWV0ZXIiX3M7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBtX2ZyYW1lci0+ZW5hYmxlRGVmbGF0ZSh3aW5kb3dCaXRzLCBtb2RlKTsKKyAgICBtX2ZyYW1l
ci5lbmFibGVEZWZsYXRlKHdpbmRvd0JpdHMsIG1vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1EZWZsYXRlUmVzdWx0SG9sZGVyOjpEZWZsYXRlUmVzdWx0SG9sZGVyKFdlYlNvY2tldERlZmxh
dGVGcmFtZXIqIGZyYW1lcikKK0RlZmxhdGVSZXN1bHRIb2xkZXI6OkRlZmxhdGVSZXN1bHRIb2xk
ZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciYgZnJhbWVyKQogICAgIDogbV9mcmFtZXIoZnJhbWVy
KQotICAgICwgbV9zdWNjZWVkZWQodHJ1ZSkKIHsKLSAgICBBU1NFUlQobV9mcmFtZXIpOwogfQog
CiBEZWZsYXRlUmVzdWx0SG9sZGVyOjp+RGVmbGF0ZVJlc3VsdEhvbGRlcigpCiB7Ci0gICAgbV9m
cmFtZXItPnJlc2V0RGVmbGF0ZUNvbnRleHQoKTsKKyAgICBtX2ZyYW1lci5yZXNldERlZmxhdGVD
b250ZXh0KCk7CiB9CiAKIHZvaWQgRGVmbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbChjb25zdCBTdHJp
bmcmIGZhaWx1cmVSZWFzb24pCkBAIC0xMjUsMTYgKzEyMCwxNCBAQCB2b2lkIERlZmxhdGVSZXN1
bHRIb2xkZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQogICAgIG1fZmFpbHVy
ZVJlYXNvbiA9IGZhaWx1cmVSZWFzb247CiB9CiAKLUluZmxhdGVSZXN1bHRIb2xkZXI6OkluZmxh
dGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogZnJhbWVyKQorSW5mbGF0ZVJl
c3VsdEhvbGRlcjo6SW5mbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyJiBm
cmFtZXIpCiAgICAgOiBtX2ZyYW1lcihmcmFtZXIpCi0gICAgLCBtX3N1Y2NlZWRlZCh0cnVlKQog
ewotICAgIEFTU0VSVChtX2ZyYW1lcik7CiB9CiAKIEluZmxhdGVSZXN1bHRIb2xkZXI6On5JbmZs
YXRlUmVzdWx0SG9sZGVyKCkKIHsKLSAgICBtX2ZyYW1lci0+cmVzZXRJbmZsYXRlQ29udGV4dCgp
OworICAgIG1fZnJhbWVyLnJlc2V0SW5mbGF0ZUNvbnRleHQoKTsKIH0KIAogdm9pZCBJbmZsYXRl
UmVzdWx0SG9sZGVyOjpmYWlsKGNvbnN0IFN0cmluZyYgZmFpbHVyZVJlYXNvbikKQEAgLTE0Mywx
NCArMTM2LDkgQEAgdm9pZCBJbmZsYXRlUmVzdWx0SG9sZGVyOjpmYWlsKGNvbnN0IFN0cmluZyYg
ZmFpbHVyZVJlYXNvbikKICAgICBtX2ZhaWx1cmVSZWFzb24gPSBmYWlsdXJlUmVhc29uOwogfQog
Ci1XZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyKCkKLSAgICA6
IG1fZW5hYmxlZChmYWxzZSkKLXsKLX0KLQogc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJv
Y2Vzc29yKCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25EZWZs
YXRlRnJhbWU+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZT4oKnRoaXMpOwogfQogCiB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6
OmVuYWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpDb250ZXh0
VGFrZU92ZXJNb2RlIG1vZGUpCkBAIC0xNjcsNyArMTU1LDcgQEAgdm9pZCBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRl
cjo6Q28KIAogc3RkOjp1bmlxdWVfcHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERl
ZmxhdGVGcmFtZXI6OmRlZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewotICAgIGF1dG8g
cmVzdWx0ID0gbWFrZVVuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4oKnRoaXMpOwogICAgIGlm
ICghZW5hYmxlZCgpIHx8ICFXZWJTb2NrZXRGcmFtZTo6aXNOb25Db250cm9sT3BDb2RlKGZyYW1l
Lm9wQ29kZSkgfHwgIWZyYW1lLnBheWxvYWRMZW5ndGgpCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgaWYgKCFtX2RlZmxhdGVyLT5hZGRCeXRlcyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXls
b2FkTGVuZ3RoKSB8fCAhbV9kZWZsYXRlci0+ZmluaXNoKCkpIHsKQEAgLTE4OCw3ICsxNzYsNyBA
QCB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0ZUNvbnRleHQoKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8SW5mbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBt
YWtlVW5pcXVlPEluZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0g
bWFrZVVuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPigqdGhpcyk7CiAgICAgaWYgKCFlbmFibGVk
KCkgJiYgZnJhbWUuY29tcHJlc3MpIHsKICAgICAgICAgcmVzdWx0LT5mYWlsKCJDb21wcmVzc2Vk
IGJpdCBtdXN0IGJlIDAgaWYgbm8gbmVnb3RpYXRlZCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbiIp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgKaW5kZXggNGYyNDk4
MjFkNTljYjc1M2NiZDNiNjYxMThjZTQxMWE1YjYwOTU5ZC4uNzk3YmUzYjY3NWI5ZjRjNTRiMDY3
M2FiMjQwMThkNjA0ZDE4MTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oCkBAIC0zMSwxNyArMzEs
MTggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZXIuaCIKLSNp
bmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKLSNpbmNsdWRlICJXZWJTb2Nr
ZXRGcmFtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYlNvY2tldERlZmxh
dGVGcmFtZXI7CitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I7CisKK3N0cnVjdCBX
ZWJTb2NrZXRGcmFtZTsKIAogY2xhc3MgRGVmbGF0ZVJlc3VsdEhvbGRlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRGVmbGF0ZVJlc3VsdEhv
bGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKik7CisgICAgZXhwbGljaXQgRGVmbGF0ZVJlc3Vs
dEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyJik7CiAgICAgfkRlZmxhdGVSZXN1bHRIb2xk
ZXIoKTsKIAogICAgIGJvb2wgc3VjY2VlZGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZWVkZWQ7
IH0KQEAgLTUwLDE1ICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBmYWlsKGNvbnN0IFN0cmlu
ZyYgZmFpbHVyZVJlYXNvbik7CiAKIHByaXZhdGU6Ci0gICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ciogbV9mcmFtZXI7Ci0gICAgYm9vbCBtX3N1Y2NlZWRlZDsKKyAgICBXZWJTb2NrZXREZWZsYXRl
RnJhbWVyJiBtX2ZyYW1lcjsKKyAgICBib29sIG1fc3VjY2VlZGVkIHsgdHJ1ZSB9OwogICAgIFN0
cmluZyBtX2ZhaWx1cmVSZWFzb247CiB9OwogCiBjbGFzcyBJbmZsYXRlUmVzdWx0SG9sZGVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBJbmZs
YXRlUmVzdWx0SG9sZGVyKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqKTsKKyAgICBleHBsaWNpdCBJ
bmZsYXRlUmVzdWx0SG9sZGVyKFdlYlNvY2tldERlZmxhdGVGcmFtZXImKTsKICAgICB+SW5mbGF0
ZVJlc3VsdEhvbGRlcigpOwogCiAgICAgYm9vbCBzdWNjZWVkZWQoKSBjb25zdCB7IHJldHVybiBt
X3N1Y2NlZWRlZDsgfQpAQCAtNjcsMTUgKzY4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGZhaWwo
Y29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKTsKIAogcHJpdmF0ZToKLSAgICBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyKiBtX2ZyYW1lcjsKLSAgICBib29sIG1fc3VjY2VlZGVkOworICAgIFdlYlNv
Y2tldERlZmxhdGVGcmFtZXImIG1fZnJhbWVyOworICAgIGJvb2wgbV9zdWNjZWVkZWQgeyB0cnVl
IH07CiAgICAgU3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKIH07CiAKIGNsYXNzIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXIgewogcHVibGljOgotICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIoKTsKLQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IGNyZWF0ZUV4
dGVuc2lvblByb2Nlc3NvcigpOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVkOyB9CkBAIC05MCw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZURl
ZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpDb250ZXh0VGFrZU92ZXJN
b2RlKTsKIAogcHJpdmF0ZToKLSAgICBib29sIG1fZW5hYmxlZDsKKyAgICBib29sIG1fZW5hYmxl
ZCB7IGZhbHNlIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldERlZmxhdGVyPiBtX2Rl
ZmxhdGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRJbmZsYXRlcj4gbV9pbmZsYXRl
cjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IGFlM2UxMTM1ZDFmMjkwMGQwNDRkZDZmZDdiZTU5
MzE3M2Y3YWQ5NTcuLjRlMGU4ODBiNmY0OGU1YmMzODk1MzNlYzNkY2IyY2VmZDg1YWZmYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFz
ZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVz
Lmg+CkBAIC0zNzcsMTAgKzM3OCw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoZWFkZXJIYXNWYWxp
ZEhUVFBWZXJzaW9uKFN0cmluZ1ZpZXcgaHR0cFN0YXR1c0xpbmUpCiAgICAgaWYgKGRvdFBvc2l0
aW9uID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmdWaWV3
IG1ham9yVmVyc2lvblZpZXcgPSBodHRwU3RhdHVzTGluZS5zdWJzdHJpbmcocHJlYW1ibGVMZW5n
dGgsIGRvdFBvc2l0aW9uIC0gcHJlYW1ibGVMZW5ndGgpOwotICAgIGJvb2wgaXNWYWxpZDsKLSAg
ICBpbnQgbWFqb3JWZXJzaW9uID0gbWFqb3JWZXJzaW9uVmlldy50b0ludFN0cmljdChpc1ZhbGlk
KTsKLSAgICBpZiAoIWlzVmFsaWQpCisgICAgYXV0byBtYWpvclZlcnNpb24gPSBwYXJzZUludGVn
ZXI8aW50PihodHRwU3RhdHVzTGluZS5zdWJzdHJpbmcocHJlYW1ibGVMZW5ndGgsIGRvdFBvc2l0
aW9uIC0gcHJlYW1ibGVMZW5ndGgpKTsKKyAgICBpZiAoIW1ham9yVmVyc2lvbikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgdW5zaWduZWQgbWlub3JWZXJzaW9uTGVuZ3RoOwpAQCAtMzg5
LDExICszODgsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGhlYWRlckhhc1ZhbGlkSFRUUFZlcnNp
b24oU3RyaW5nVmlldyBodHRwU3RhdHVzTGluZSkKICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQo
aHR0cFN0YXR1c0xpbmVbZG90UG9zaXRpb24gKyBtaW5vclZlcnNpb25MZW5ndGhdKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpbnQgbWlub3JWZXJzaW9uID0gKGh0dHBTdGF0dXNM
aW5lLnN1YnN0cmluZyhkb3RQb3NpdGlvbiArIDEsIG1pbm9yVmVyc2lvbkxlbmd0aCkpLnRvSW50
U3RyaWN0KGlzVmFsaWQpOwotICAgIGlmICghaXNWYWxpZCkKKyAgICBhdXRvIG1pbm9yVmVyc2lv
biA9IHBhcnNlSW50ZWdlcjxpbnQ+KGh0dHBTdGF0dXNMaW5lLnN1YnN0cmluZyhkb3RQb3NpdGlv
biArIDEsIG1pbm9yVmVyc2lvbkxlbmd0aCkpOworICAgIGlmICghbWlub3JWZXJzaW9uKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gKG1ham9yVmVyc2lvbiA+PSAxICYmIG1p
bm9yVmVyc2lvbiA+PSAxKSB8fCBtYWpvclZlcnNpb24gPj0gMjsKKyAgICByZXR1cm4gKCptYWpv
clZlcnNpb24gPj0gMSAmJiAqbWlub3JWZXJzaW9uID49IDEpIHx8ICptYWpvclZlcnNpb24gPj0g
MjsKIH0KIAogLy8gUmV0dXJucyB0aGUgaGVhZGVyIGxlbmd0aCAoaW5jbHVkaW5nICJcclxuIiks
IG9yIC0xIGlmIHdlIGhhdmUgbm90IHJlY2VpdmVkIGVub3VnaCBkYXRhIHlldC4KQEAgLTQ2MSwx
NiArNDYwLDE0IEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0dXNMaW5lKGNvbnN0
IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwKICAgICBTdHJpbmdWaWV3IHN0YXR1
c0NvZGVTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHNwYWNlMSArIDEpLCBz
cGFjZTIgLSBzcGFjZTEgLSAxKTsKICAgICBpZiAoc3RhdHVzQ29kZVN0cmluZy5sZW5ndGgoKSAh
PSAzKSAvLyBTdGF0dXMgY29kZSBtdXN0IGNvbnNpc3Qgb2YgdGhyZWUgZGlnaXRzLgogICAgICAg
ICByZXR1cm4gbGluZUxlbmd0aDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgewogICAgICAgICBpZiAoIWlzQVNDSUlEaWdp
dChzdGF0dXNDb2RlU3RyaW5nW2ldKSkgewogICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0g
bWFrZVN0cmluZygiSW52YWxpZCBzdGF0dXMgY29kZTogIiwgc3RhdHVzQ29kZVN0cmluZyk7CiAg
ICAgICAgICAgICByZXR1cm4gbGluZUxlbmd0aDsKICAgICAgICAgfQorICAgIH0KIAotICAgIGJv
b2wgb2sgPSBmYWxzZTsKLSAgICBzdGF0dXNDb2RlID0gc3RhdHVzQ29kZVN0cmluZy50b0ludFN0
cmljdChvayk7Ci0gICAgQVNTRVJUKG9rKTsKLQorICAgIHN0YXR1c0NvZGUgPSBwYXJzZUludGVn
ZXI8aW50PihzdGF0dXNDb2RlU3RyaW5nKS52YWx1ZSgpOwogICAgIHN0YXR1c1RleHQgPSBTdHJp
bmcoc3BhY2UyICsgMSwgZW5kIC0gc3BhY2UyIC0gMyk7IC8vIEV4Y2x1ZGUgIlxyXG4iLgogICAg
IHJldHVybiBsaW5lTGVuZ3RoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCBkYjM2MzQwMTcyZTdl
YjY0ZDBkZjY1MjIxZTA5N2YzMjg0Yzk5YWY5Li43OTAyNjYwOTE2MjA3YThlYTM1MzQxNzk0Y2Ri
NGU2MjAxNTQ2Nzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtNzc1LDkgKzc3NSw4IEBAIGludCBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVhZGluZ0xldmVsKCkgY29uc3QKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzSGVhZGluZygpKSB7Ci0gICAgICAgIGludCBhcmlhTGV2
ZWwgPSBnZXRBdHRyaWJ1dGUoYXJpYV9sZXZlbEF0dHIpLnRvSW50KCk7Ci0gICAgICAgIGlmIChh
cmlhTGV2ZWwgPiAwKQotICAgICAgICAgICAgcmV0dXJuIGFyaWFMZXZlbDsKKyAgICAgICAgaWYg
KGF1dG8gbGV2ZWwgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX2xldmVsQXR0cik7IGxldmVs
ID4gMCkKKyAgICAgICAgICAgIHJldHVybiBsZXZlbDsKICAgICB9CiAKICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZShoMVRhZykpCkBAIC0xNzI5LDExICsxNzI4LDExIEBAIHVuc2lnbmVkIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjpoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0CiAgICAgTm9kZSog
bm9kZSA9IHRoaXMtPm5vZGUoKTsKICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5v
ZGUpOwotICAgIGNvbnN0IEF0b21TdHJpbmcmIGFyaWFMZXZlbCA9IGVsZW1lbnQuYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xldmVsQXR0cik7Ci0gICAgaWYgKCFhcmlhTGV2
ZWwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gYXJpYUxldmVsLnRvSW50KCk7Ci0gICAgCisK
KyAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOworICAgIGlmICgh
ZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfbGV2ZWxBdHRyKS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBlbGVtZW50LmdldEludGVncmFsQXR0cmlidXRlKGFy
aWFfbGV2ZWxBdHRyKTsKKwogICAgIC8vIE9ubHkgdHJlZSBpdGVtIHdpbGwgY2FsY3VsYXRlIGl0
cyBsZXZlbCB0aHJvdWdoIHRoZSBET00gY3VycmVudGx5LgogICAgIGlmIChyb2xlVmFsdWUoKSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0pCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
aW5kZXggMGQ3MjE4Y2UxMTQ4NDdhNzRkYTZkMjk0NDBkZTVkMmQxYjZlMTVlNi4uMDY2YzE5ODMw
MDQ3OTBkMWY1ODc5ZWE5Mjg0MGNkZGFmMWZlYmVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xOTU2LDYgKzE5
NTYsMTEgQEAgY29uc3QgQXRvbVN0cmluZyYgQWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0QXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnUKICAgICByZXR1cm4gbnVsbEF0b20oKTsK
IH0KIAoraW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldEludGVncmFsQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcnNl
SFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZV9vcigwKTsKK30K
KwogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgUGxhaW5UZXh0UmFuZ2UmIHJhbmdlKQogewog
ICAgIC8vIElmIHRoaXMgaXMgYmVpbmcgY2FsbGVkIG9uIHRoZSB3ZWIgYXJlYSwgcmVkaXJlY3Qg
aXQgdG8gYmUgb24gdGhlIGJvZHksIHdoaWNoIHdpbGwgaGF2ZSBhIHJlbmRlcmVyIGFzc29jaWF0
ZWQgd2l0aCBpdC4KQEAgLTI2NjMsMTIgKzI2NjgsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzdXBwb3J0c1Bvc0luU2V0KCkgY29uc3QKICAgICAKIGludCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzZXRTaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfc2V0
c2l6ZUF0dHIpLnRvSW50KCk7CisgICAgcmV0dXJuIGdldEludGVncmFsQXR0cmlidXRlKGFyaWFf
c2V0c2l6ZUF0dHIpOwogfQogCiBpbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6cG9zSW5TZXQoKSBj
b25zdAogewotICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoYXJpYV9wb3NpbnNldEF0dHIpLnRvSW50
KCk7CisgICAgcmV0dXJuIGdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcG9zaW5zZXRBdHRyKTsK
IH0KICAgICAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjppZGVudGlmaWVyQXR0cmlidXRl
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgKaW5kZXggNTZjM2NkMzMxNzIwZjM2N2EyNjFmMGY0MGUyYWE1ZTQ4ODExYmQ1
ZS4uNGQ5YzkzMzE4YTg2NzFiM2JlMDk0MmMwZWMyZmI3NjE0ZTNlZDk3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTUx
Nyw2ICs1MTcsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFjY2Vzc2li
aWxpdHlSb2xlIGFyaWFSb2xlVG9XZWJDb3JlUm9sZShjb25zdCBTdHJpbmcmKTsKICAgICBib29s
IGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Y29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBpbnQgZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0OwogICAgIGJvb2wgaGFzVGFnTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHRhZ05hbWUoKSBjb25zdCBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwCmluZGV4IDA1YjU2M2U5YWUyNmE2YWZlNzY4ZGQxMjdhMDMxYzVjZmFjNzAyYTMuLmY2NzJm
NGExYWYwNTM1NWU2ZTczMDUwNTkzODZkMDQxOTc5ZGRiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTQ0LDcgKzQ0
LDYgQEAKICNpbmNsdWRlICJSZW5kZXJUYWJsZS5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2Vs
bC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlU2VjdGlvbi5oIgotCiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1MywxMSArMTUyLDExIEBAIGJvb2wg
QWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgCiAgICAgLy8gSWYg
dGhlIGF1dGhvciBoYXMgdXNlZCBBUklBIHRvIHNwZWNpZnkgYSB2YWxpZCBjb2x1bW4gb3Igcm93
IGNvdW50LCBhc3N1bWUgdGhleQogICAgIC8vIHdhbnQgdXMgdG8gdHJlYXQgdGhlIHRhYmxlIGFz
IGEgZGF0YSB0YWJsZS4KLSAgICBpbnQgYXhDb2x1bW5Db3VudCA9IGdldEF0dHJpYnV0ZShhcmlh
X2NvbGNvdW50QXR0cikudG9JbnQoKTsKKyAgICBpbnQgYXhDb2x1bW5Db3VudCA9IGdldEludGVn
cmFsQXR0cmlidXRlKGFyaWFfY29sY291bnRBdHRyKTsKICAgICBpZiAoYXhDb2x1bW5Db3VudCA9
PSAtMSB8fCBheENvbHVtbkNvdW50ID4gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBp
bnQgYXhSb3dDb3VudCA9IGdldEF0dHJpYnV0ZShhcmlhX3Jvd2NvdW50QXR0cikudG9JbnQoKTsK
KyAgICBpbnQgYXhSb3dDb3VudCA9IGdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcm93Y291bnRB
dHRyKTsKICAgICBpZiAoYXhSb3dDb3VudCA9PSAtMSB8fCBheFJvd0NvdW50ID4gMCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKQEAgLTIzNCwxNiArMjMzLDE2IEBAIGJvb2wgQWNjZXNzaWJpbGl0
eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAKICAgICAgICAgICAgIC8vIElmIHRoZSBhdXRo
b3IgaGFzIHVzZWQgQVJJQSB0byBzcGVjaWZ5IGEgdmFsaWQgY29sdW1uIG9yIHJvdyBpbmRleCwg
YXNzdW1lIHRoZXkgd2FudCB1cwogICAgICAgICAgICAgLy8gdG8gdHJlYXQgdGhlIHRhYmxlIGFz
IGEgZGF0YSB0YWJsZS4KLSAgICAgICAgICAgIGludCBheENvbHVtbkluZGV4ID0gIGNlbGxFbGVt
ZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfY29saW5kZXhBdHRyKS50
b0ludCgpOworICAgICAgICAgICAgaW50IGF4Q29sdW1uSW5kZXggPSBjZWxsRWxlbWVudC0+Z2V0
SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9jb2xpbmRleEF0dHIpOwogICAgICAgICAgICAgaWYgKGF4
Q29sdW1uSW5kZXggPj0gMSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAg
ICAgICAgaW50IGF4Um93SW5kZXggPSBjZWxsRWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihhcmlhX3Jvd2luZGV4QXR0cikudG9JbnQoKTsKKyAgICAgICAgICAgIGludCBh
eFJvd0luZGV4ID0gY2VsbEVsZW1lbnQtPmdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcm93aW5k
ZXhBdHRyKTsKICAgICAgICAgICAgIGlmIChheFJvd0luZGV4ID49IDEpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgICAgIGlmIChhdXRvIGNlbGxQYXJlbnRFbGVtZW50
ID0gY2VsbEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGF4Um93
SW5kZXggPSBjZWxsUGFyZW50RWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihhcmlhX3Jvd2luZGV4QXR0cikudG9JbnQoKTsKKyAgICAgICAgICAgICAgICBheFJvd0luZGV4
ID0gY2VsbFBhcmVudEVsZW1lbnQtPmdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcm93aW5kZXhB
dHRyKTsKICAgICAgICAgICAgICAgICBpZiAoYXhSb3dJbmRleCA+PSAxKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTI1MSwxMSArMjUwLDExIEBA
IGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgICAgICAg
ICAvLyBJZiB0aGUgYXV0aG9yIGhhcyB1c2VkIEFSSUEgdG8gc3BlY2lmeSBhIGNvbHVtbiBvciBy
b3cgc3Bhbiwgd2UncmUgc3VwcG9zZWQgdG8gaWdub3JlCiAgICAgICAgICAgICAvLyB0aGUgdmFs
dWUgZm9yIHRoZSBwdXJwb3NlcyBvZiBleHBvc2luZyB0aGUgc3Bhbi4gQnV0IGFzc3VtZSB0aGV5
IHdhbnQgdXMgdG8gdHJlYXQgdGhlCiAgICAgICAgICAgICAvLyB0YWJsZSBhcyBhIGRhdGEgdGFi
bGUuCi0gICAgICAgICAgICBpbnQgYXhDb2x1bW5TcGFuID0gY2VsbEVsZW1lbnQtPmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9jb2xzcGFuQXR0cikudG9JbnQoKTsKKyAgICAg
ICAgICAgIGludCBheENvbHVtblNwYW4gPSBjZWxsRWxlbWVudC0+Z2V0SW50ZWdyYWxBdHRyaWJ1
dGUoYXJpYV9jb2xzcGFuQXR0cik7CiAgICAgICAgICAgICBpZiAoYXhDb2x1bW5TcGFuID49IDEp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgICAgIGludCBheFJvd1Nw
YW4gPSBjZWxsRWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX3Jv
d3NwYW5BdHRyKS50b0ludCgpOworICAgICAgICAgICAgaW50IGF4Um93U3BhbiA9IGNlbGxFbGVt
ZW50LT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd3NwYW5BdHRyKTsKICAgICAgICAgICAg
IGlmIChheFJvd1NwYW4gPj0gMSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAt
NzA3LDggKzcwNiw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5VGFibGU6OnRpdGxlKCkgY29uc3QK
IAogaW50IEFjY2Vzc2liaWxpdHlUYWJsZTo6YXhDb2x1bW5Db3VudCgpIGNvbnN0CiB7Ci0gICAg
Y29uc3QgQXRvbVN0cmluZyYgY29sQ291bnRWYWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX2NvbGNv
dW50QXR0cik7Ci0gICAgaW50IGNvbENvdW50SW50ID0gY29sQ291bnRWYWx1ZS50b0ludCgpOwor
ICAgIGludCBjb2xDb3VudEludCA9IGdldEludGVncmFsQXR0cmlidXRlKGFyaWFfY29sY291bnRB
dHRyKTsKICAgICAvLyBUaGUgQVJJQSBzcGVjIHN0YXRlcywgIkF1dGhvcnMgbXVzdCBzZXQgdGhl
IHZhbHVlIG9mIGFyaWEtY29sY291bnQgdG8gYW4gaW50ZWdlciBlcXVhbCB0byB0aGUKICAgICAv
LyBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZnVsbCB0YWJsZS4gSWYgdGhlIHRvdGFsIG51bWJl
ciBvZiBjb2x1bW5zIGlzIHVua25vd24sIGF1dGhvcnMgbXVzdAogICAgIC8vIHNldCB0aGUgdmFs
dWUgb2YgYXJpYS1jb2xjb3VudCB0byAtMSB0byBpbmRpY2F0ZSB0aGF0IHRoZSB2YWx1ZSBzaG91
bGQgbm90IGJlIGNhbGN1bGF0ZWQgYnkKQEAgLTcyMSw4ICs3MTksNyBAQCBpbnQgQWNjZXNzaWJp
bGl0eVRhYmxlOjpheENvbHVtbkNvdW50KCkgY29uc3QKIAogaW50IEFjY2Vzc2liaWxpdHlUYWJs
ZTo6YXhSb3dDb3VudCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgcm93Q291bnRW
YWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX3Jvd2NvdW50QXR0cik7Ci0gICAgaW50IHJvd0NvdW50
SW50ID0gcm93Q291bnRWYWx1ZS50b0ludCgpOworICAgIGludCByb3dDb3VudEludCA9IGdldElu
dGVncmFsQXR0cmlidXRlKGFyaWFfcm93Y291bnRBdHRyKTsKICAgICAvLyBUaGUgQVJJQSBzcGVj
IHN0YXRlcywgIkF1dGhvcnMgbXVzdCBzZXQgdGhlIHZhbHVlIG9mIGFyaWEtcm93Y291bnQgdG8g
YW4gaW50ZWdlciBlcXVhbCB0byB0aGUKICAgICAvLyBudW1iZXIgb2Ygcm93cyBpbiB0aGUgZnVs
bCB0YWJsZS4gSWYgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzIGlzIHVua25vd24sIGF1dGhvcnMg
bXVzdCBzZXQKICAgICAvLyB0aGUgdmFsdWUgb2YgYXJpYS1yb3djb3VudCB0byAtMSB0byBpbmRp
Y2F0ZSB0aGF0IHRoZSB2YWx1ZSBzaG91bGQgbm90IGJlIGNhbGN1bGF0ZWQgYnkgdGhlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNl
bGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsLmNwcAppbmRleCBjMzc2N2JkY2M1ODU3ZjljMGEyNDFjZTExZGIwYjU2MzBlY2NiM2Y1Li4z
ZjY1MDhlMDYxYzE4MDA2ZmVlNjFlNGU0ZDFkNmIzOTc2MjhkMjcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAK
QEAgLTQwMiw5ICs0MDIsOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjp0aXRsZVVJRWxlbWVudCgpIGNvbnN0CiAgICAgCiBpbnQgQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6YXhDb2x1bW5JbmRleCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYg
Y29sSW5kZXhWYWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX2NvbGluZGV4QXR0cik7Ci0gICAgaWYg
KGNvbEluZGV4VmFsdWUudG9JbnQoKSA+PSAxKQotICAgICAgICByZXR1cm4gY29sSW5kZXhWYWx1
ZS50b0ludCgpOworICAgIGlmIChpbnQgdmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlh
X2NvbGluZGV4QXR0cik7IHZhbHVlID49IDEpCisgICAgICAgIHJldHVybiB2YWx1ZTsKIAogICAg
IC8vICJBUklBIDEuMTogSWYgdGhlIHNldCBvZiBjb2x1bW5zIHdoaWNoIGlzIHByZXNlbnQgaW4g
dGhlIERPTSBpcyBjb250aWd1b3VzLCBhbmQgaWYgdGhlcmUgYXJlIG5vIGNlbGxzIHdoaWNoIHNw
YW4gbW9yZSB0aGFuIG9uZSByb3cKICAgICAvLyBvciBjb2x1bW4gaW4gdGhhdCBzZXQsIHRoZW4g
YXV0aG9ycyBtYXkgcGxhY2UgYXJpYS1jb2xpbmRleCBvbiBlYWNoIHJvdywgc2V0dGluZyB0aGUg
dmFsdWUgdG8gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjb2x1bW4gb2YgdGhlIHNldC4iCkBAIC00
MjAsMTMgKzQxOSwxMiBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhSb3dJbmRleCgp
IGNvbnN0CiB7CiAgICAgLy8gQVJJQSAxLjE6IEF1dGhvcnMgc2hvdWxkIHBsYWNlIGFyaWEtcm93
aW5kZXggb24gZWFjaCByb3cuIEF1dGhvcnMgbWF5IGFsc28gcGxhY2UKICAgICAvLyBhcmlhLXJv
d2luZGV4IG9uIGFsbCBvZiB0aGUgY2hpbGRyZW4gb3Igb3duZWQgZWxlbWVudHMgb2YgZWFjaCBy
b3cuCi0gICAgY29uc3QgQXRvbVN0cmluZyYgcm93SW5kZXhWYWx1ZSA9IGdldEF0dHJpYnV0ZShh
cmlhX3Jvd2luZGV4QXR0cik7Ci0gICAgaWYgKHJvd0luZGV4VmFsdWUudG9JbnQoKSA+PSAxKQot
ICAgICAgICByZXR1cm4gcm93SW5kZXhWYWx1ZS50b0ludCgpOwotICAgIAorICAgIGlmIChpbnQg
dmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2luZGV4QXR0cik7IHZhbHVlID49
IDEpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKwogICAgIGlmIChBY2Nlc3NpYmlsaXR5VGFibGVS
b3cqIHBhcmVudFJvdyA9IHRoaXMtPnBhcmVudFJvdygpKQogICAgICAgICByZXR1cm4gcGFyZW50
Um93LT5heFJvd0luZGV4KCk7Ci0gICAgCisKICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTQzNywx
MSArNDM1LDEwIEBAIGludCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENvbHVtblNwYW4oKSBj
b25zdAogICAgIGlmIChoYXNBdHRyaWJ1dGUoY29sc3BhbkF0dHIpKQogICAgICAgICByZXR1cm4g
LTE7CiAKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBjb2xTcGFuVmFsdWUgPSBnZXRBdHRyaWJ1dGUo
YXJpYV9jb2xzcGFuQXR0cik7CiAgICAgLy8gQVJJQSAxLjE6IEF1dGhvcnMgbXVzdCBzZXQgdGhl
IHZhbHVlIG9mIGFyaWEtY29sc3BhbiB0byBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvciBlcXVh
bCB0byAxLgotICAgIGlmIChjb2xTcGFuVmFsdWUudG9JbnQoKSA+PSAxKQotICAgICAgICByZXR1
cm4gY29sU3BhblZhbHVlLnRvSW50KCk7Ci0gICAgCisgICAgaWYgKGludCB2YWx1ZSA9IGdldElu
dGVncmFsQXR0cmlidXRlKGFyaWFfY29sc3BhbkF0dHIpOyB2YWx1ZSA+PSAxKQorICAgICAgICBy
ZXR1cm4gdmFsdWU7CisKICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTQ1MiwxNSArNDQ5LDEzIEBA
IGludCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheFJvd1NwYW4oKSBjb25zdAogICAgIGlmICho
YXNBdHRyaWJ1dGUocm93c3BhbkF0dHIpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBjb25z
dCBBdG9tU3RyaW5nJiByb3dTcGFuVmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9yb3dzcGFuQXR0
cik7Ci0gICAgCiAgICAgLy8gQVJJQSAxLjE6IEF1dGhvcnMgbXVzdCBzZXQgdGhlIHZhbHVlIG9m
IGFyaWEtcm93c3BhbiB0byBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLgog
ICAgIC8vIFNldHRpbmcgdGhlIHZhbHVlIHRvIDAgaW5kaWNhdGVzIHRoYXQgdGhlIGNlbGwgb3Ig
Z3JpZGNlbGwgaXMgdG8gc3BhbiBhbGwgdGhlIHJlbWFpbmluZyByb3dzIGluIHRoZSByb3cgZ3Jv
dXAuCi0gICAgaWYgKHJvd1NwYW5WYWx1ZSA9PSAiMCIpCisgICAgaWYgKGdldEF0dHJpYnV0ZShh
cmlhX3Jvd3NwYW5BdHRyKSA9PSAiMCIpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChyb3dT
cGFuVmFsdWUudG9JbnQoKSA+PSAxKQotICAgICAgICByZXR1cm4gcm93U3BhblZhbHVlLnRvSW50
KCk7Ci0gICAgCisgICAgaWYgKGludCB2YWx1ZSA9IGdldEludGVncmFsQXR0cmlidXRlKGFyaWFf
cm93c3BhbkF0dHIpOyB2YWx1ZSA+PSAxKQorICAgICAgICByZXR1cm4gdmFsdWU7CisKICAgICBy
ZXR1cm4gLTE7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKaW5kZXggYWQ2ZWE0OTdkN2ZlODFhYjQ5YzZm
YjJlNzYxNjhhNGFkZWZlM2QyMy4uZWQwZmIwYjJjYTRkNWE2ODU1YjI5MzMxYWY5OGViYTQ1MjJm
NjlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlUm93LmNwcApAQCAtMTc1LDIwICsxNzUsMTQgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5VGFibGVSb3c6OmFkZENoaWxkcmVuKCkKIAogaW50IEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6
YXhDb2x1bW5JbmRleCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgY29sSW5kZXhW
YWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX2NvbGluZGV4QXR0cik7Ci0gICAgaWYgKGNvbEluZGV4
VmFsdWUudG9JbnQoKSA+PSAxKQotICAgICAgICByZXR1cm4gY29sSW5kZXhWYWx1ZS50b0ludCgp
OwotICAgIAotICAgIHJldHVybiAtMTsKKyAgICBpbnQgdmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJp
YnV0ZShhcmlhX2NvbGluZGV4QXR0cik7CisgICAgcmV0dXJuIHZhbHVlID49IDEgPyB2YWx1ZSA6
IC0xOwogfQogCiBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpheFJvd0luZGV4KCkgY29uc3QK
IHsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiByb3dJbmRleFZhbHVlID0gZ2V0QXR0cmlidXRlKGFy
aWFfcm93aW5kZXhBdHRyKTsKLSAgICBpZiAocm93SW5kZXhWYWx1ZS50b0ludCgpID49IDEpCi0g
ICAgICAgIHJldHVybiByb3dJbmRleFZhbHVlLnRvSW50KCk7Ci0gICAgCi0gICAgcmV0dXJuIC0x
OworICAgIGludCB2YWx1ZSA9IGdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcm93aW5kZXhBdHRy
KTsKKyAgICByZXR1cm4gdmFsdWUgPj0gMSA/IHZhbHVlIDogLTE7CiB9CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1NlbGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0
b3JQYXJzZXIuY3BwCmluZGV4IGVlNDNkMDhmYzBlMGVhN2YyMGQ4MGQ5MDU5NmZhZTk5MTRkNDQ3
MmUuLjMwZGU3YmMyZGFkMTk4MTlmMTFhNmRiODEzM2YwYzhkNmIwNDI1YmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JT
Y29wZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtODg0LDkgKzg4NSw5IEBAIHN0YXRpYyBib29sIGNvbnN1bWVBTlBsdXNCKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBzdGQ6OnBhaXI8aW50LCBpbnQ+JiByZXN1CiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChuU3RyaW5nLmxlbmd0aCgpID4gMikgewotICAgICAg
ICBib29sIHZhbGlkOwotICAgICAgICByZXN1bHQuc2Vjb25kID0gblN0cmluZy5zdWJzdHJpbmco
MSkudG9JbnRTdHJpY3QoJnZhbGlkKTsKLSAgICAgICAgcmV0dXJuIHZhbGlkOworICAgICAgICBh
dXRvIHBhcnNlZE51bWJlciA9IHBhcnNlSW50ZWdlcjxpbnQ+KFN0cmluZ1ZpZXcgeyBuU3RyaW5n
IH0uc3Vic3RyaW5nKDEpKTsKKyAgICAgICAgcmVzdWx0LnNlY29uZCA9IHBhcnNlZE51bWJlci52
YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gcGFyc2VkTnVtYmVyLmhhc1ZhbHVlKCk7CiAgICAg
fQogCiAgICAgTnVtZXJpY1NpZ24gc2lnbiA9IG5TdHJpbmcubGVuZ3RoKCkgPT0gMSA/IE5vU2ln
biA6IE1pbnVzU2lnbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
VG9rZW5pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNw
cAppbmRleCAxYTkzNzc2NWY2NTY0MTI5YzE3OTljMzQ1NGM1NGEzZDUwODNhNDNjLi5lZDM2MmEx
OWRmYWVmNDg3ZGYyMjFmNGQxNzI2YTFmNjBkOTcyZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NT
VG9rZW5pemVySW5wdXRTdHJlYW0uaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0
ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04MzYsMTIgKzgzNywxMSBAQCBV
Q2hhcjMyIENTU1Rva2VuaXplcjo6Y29uc3VtZUVzY2FwZSgpCiAgICAgICAgICAgICBjb25zdW1l
ZEhleERpZ2l0cysrOwogICAgICAgICB9OwogICAgICAgICBjb25zdW1lU2luZ2xlV2hpdGVzcGFj
ZUlmTmV4dCgpOwotICAgICAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgICAgIFVDaGFyMzIgY29k
ZVBvaW50ID0gaGV4Q2hhcnMudG9TdHJpbmcoKS50b1VJbnRTdHJpY3QoJm9rLCAxNik7Ci0gICAg
ICAgIEFTU0VSVChvayk7Ci0gICAgICAgIGlmICghY29kZVBvaW50IHx8ICgweEQ4MDAgPD0gY29k
ZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweERGRkYpIHx8IGNvZGVQb2ludCA+IDB4MTBGRkZGKQor
ICAgICAgICBhdXRvIGNvZGVQb2ludCA9IHBhcnNlSW50ZWdlcjx1aW50MzJfdD4oaGV4Q2hhcnMs
IDE2KTsKKyAgICAgICAgQVNTRVJUKGNvZGVQb2ludCk7CisgICAgICAgIGlmICghY29kZVBvaW50
IHx8ICgweEQ4MDAgPD0gKmNvZGVQb2ludCAmJiAqY29kZVBvaW50IDw9IDB4REZGRikgfHwgKmNv
ZGVQb2ludCA+IDB4MTBGRkZGKQogICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50Q2hhcmFj
dGVyOwotICAgICAgICByZXR1cm4gY29kZVBvaW50OworICAgICAgICByZXR1cm4gKmNvZGVQb2lu
dDsKICAgICB9CiAKICAgICBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA1NDc5NzQ0MTk2YWY5
OGI3NmY0MTc5MDM2ZWU1M2NjMTJiYzAwOWI2Li5kM2FjZWNmZjIxNmI0NmEyMzBmZWU0OGY1ZWIw
ZmU0ZjM1NTNiNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0
ZWN0aW9uLm1tCkBAIC01NCw2ICs1NCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9EYXRhRGV0
ZWN0b3JzU1BJLmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdl
ckNvbnZlcnNpb24uaD4KIAogI2ltcG9ydCAiRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oIgog
CkBAIC0xOTQsMTkgKzE5NSwyNSBAQCBib29sIERhdGFEZXRlY3Rpb246OmNhblByZXNlbnREYXRh
RGV0ZWN0b3JzVUlGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKHNvZnRMaW5r
X0RhdGFEZXRlY3RvcnNDb3JlX0REU2hvdWxkSW1tZWRpYXRlbHlTaG93QWN0aW9uU2hlZXRGb3JV
UkwoZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KGVsZW1lbnQpLmhyZWYoKSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIAotICAgIGNvbnN0IEF0b21TdHJpbmcmIHJlc3VsdEF0dHJpYnV0
ZSA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2RhdGFf
ZGV0ZWN0b3JzX3Jlc3VsdEF0dHIpOworICAgIGF1dG8mIHJlc3VsdEF0dHJpYnV0ZSA9IGVsZW1l
bnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2RhdGFfZGV0ZWN0b3Jz
X3Jlc3VsdEF0dHIpOwogICAgIGlmIChyZXN1bHRBdHRyaWJ1dGUuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgTlNBcnJheSAqcmVzdWx0cyA9IGVsZW1lbnQuZG9jdW1lbnQo
KS5mcmFtZSgpLT5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpOwogICAgIGlmICghcmVzdWx0cykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdEluZGljZXMgPSBy
ZXN1bHRBdHRyaWJ1dGUuc3RyaW5nKCkuc3BsaXQoJy8nKTsKLSAgICBERFJlc3VsdFJlZiByZXN1
bHQgPSBbW3Jlc3VsdHMgb2JqZWN0QXRJbmRleDpyZXN1bHRJbmRpY2VzWzBdLnRvSW50KCldIGNv
cmVSZXN1bHRdOwotICAgIC8vIEhhbmRsZSB0aGUgY2FzZSBvZiBhIHNpZ25hdHVyZSBibG9jaywg
d2hlcmUgd2UgbmVlZCB0byBjaGVjayB0aGUgY29ycmVjdCBzdWJyZXN1bHQuCi0gICAgZm9yIChz
aXplX3QgaSA9IDE7IGkgPCByZXN1bHRJbmRpY2VzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHJl
c3VsdHMgPSAoTlNBcnJheSAqKXNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3JlX0REUmVzdWx0R2V0
U3ViUmVzdWx0cyhyZXN1bHQpOwotICAgICAgICByZXN1bHQgPSAoRERSZXN1bHRSZWYpW3Jlc3Vs
dHMgb2JqZWN0QXRJbmRleDpyZXN1bHRJbmRpY2VzW2ldLnRvSW50KCldOworCisgICAgYXV0byBy
ZXN1bHRJbmRpY2VzID0gU3RyaW5nVmlldyB7IHJlc3VsdEF0dHJpYnV0ZSB9LnNwbGl0KCcvJyk7
CisgICAgYXV0byBpbmRleEl0ZXJhdG9yID0gcmVzdWx0SW5kaWNlcy5iZWdpbigpOworICAgIGF1
dG8gcmVzdWx0ID0gW3Jlc3VsdHNbcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50
PigqaW5kZXhJdGVyYXRvcikudmFsdWVPcigwKV0gY29yZVJlc3VsdF07CisKKyAgICAvLyBIYW5k
bGUgdGhlIGNhc2Ugb2YgYSBzaWduYXR1cmUgYmxvY2ssIHdoZXJlIHdlIG5lZWQgdG8gZm9sbG93
IHRoZSBwYXRoIGRvd24gb25lIG9yIG1vcmUgc3VicmVzdWx0IGxldmVscy4KKyAgICBpZiAoKytp
bmRleEl0ZXJhdG9yICE9IHJlc3VsdEluZGljZXMuZW5kKCkpIHsKKyAgICAgICAgZG8geworICAg
ICAgICAgICAgcmVzdWx0cyA9IChfX2JyaWRnZSBOU0FycmF5ICopc29mdExpbmtfRGF0YURldGVj
dG9yc0NvcmVfRERSZXN1bHRHZXRTdWJSZXN1bHRzKHJlc3VsdCk7CisgICAgICAgICAgICByZXN1
bHQgPSAoX19icmlkZ2UgRERSZXN1bHRSZWYpcmVzdWx0c1twYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazxpbnQ+KCppbmRleEl0ZXJhdG9yKS52YWx1ZU9yKDApXTsKKyAgICAgICAgfSB3
aGlsZSAoKytpbmRleEl0ZXJhdG9yICE9IHJlc3VsdEluZGljZXMuZW5kKCkpOwogICAgIH0KKwog
ICAgIHJldHVybiBzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNob3VsZEltbWVkaWF0ZWx5
U2hvd0FjdGlvblNoZWV0Rm9yUmVzdWx0KHJlc3VsdCk7CiB9CiAKQEAgLTMxNiwzMCArMzIzLDIw
IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YURldGVjdG9yVHlwZUZvckNhdGVnb3J5KEREUmVzdWx0
Q2F0ZWdvcnkgY2F0ZWdvcnkpCiAKIHN0YXRpYyBTdHJpbmcgZGF0YURldGVjdG9yU3RyaW5nRm9y
UGF0aChOU0luZGV4UGF0aCAqcGF0aCkKIHsKLSAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHBhdGgu
bGVuZ3RoOwotICAgIAorICAgIGF1dG8gbGVuZ3RoID0gcGF0aC5sZW5ndGg7CiAgICAgc3dpdGNo
IChsZW5ndGgpIHsKICAgICBjYXNlIDA6CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgY2FzZSAx
OgotICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBd
KTsKLSAgICBjYXNlIDI6IHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihbcGF0aCBpbmRleEF0UG9zaXRpb246
MF0pOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLycpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZE51bWJlcihbcGF0aCBpbmRleEF0UG9zaXRpb246MV0pOwotICAgICAgICBy
ZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwotICAgIH0KLSAgICBkZWZhdWx0OiB7Ci0g
ICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBdKTsKLSAgICAgICAgZm9yIChO
U1VJbnRlZ2VyIGkgPSAxIDsgaSA8IGxlbmd0aCA7IGkrKykgewotICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJy8nKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVt
YmVyKFtwYXRoIGluZGV4QXRQb3NpdGlvbjppXSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBdKTsKKyAgICBjYXNlIDI6CisgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKFtwYXRoIGluZGV4QXRQb3NpdGlvbjowXSwgJy8nLCBbcGF0aCBpbmRl
eEF0UG9zaXRpb246MV0pOworICAgIGRlZmF1bHQ6CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9u
OjBdKTsKKyAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspCisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLycsIFtwYXRoIGluZGV4QXRQb3NpdGlvbjppXSk7
CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogfQogCkBAIC02ODgs
NCArNjg1LDMgQEAgYm9vbCBEYXRhRGV0ZWN0aW9uOjppc0RhdGFEZXRlY3RvckVsZW1lbnQoY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCAw
NjgyNmYxMjQxODdiZGJkNGYxYTQ5YzQzNzBlYzZlZjRkMGQ4ZWY1Li41MmE1NjMxNWM0YjM1OTBj
N2NhMTVhYjhmYjU0OWRhMWM3OTJhNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgogI2ltcG9ydCA8d3RmL0FTQ0lJQ1R5cGUu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElP
TikKICNpbXBvcnQgIkRhdGFEZXRlY3Rpb24uaCIKQEAgLTk3OCw3ICs5NzksNyBAQCBOU0RpY3Rp
b25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCkKICAgICAgICAgfQogCiAgICAgICAgIFN0cmluZyBmb250V2VpZ2h0ID0gX2Nh
Y2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlGb250U3R5bGUp
OwotICAgICAgICBpZiAoZm9udFdlaWdodC5zdGFydHNXaXRoKCJib2xkIikgfHwgZm9udFdlaWdo
dC50b0ludCgpID49IDcwMCkgeworICAgICAgICBpZiAoZm9udFdlaWdodC5zdGFydHNXaXRoKCJi
b2xkIikgfHwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pihmb250V2VpZ2h0
KS52YWx1ZU9yKDApID49IDcwMCkgewogICAgICAgICAgICAgLy8gPz8/IGhhbmRsZSB3ZWlnaHQg
cHJvcGVybHkgdXNpbmcgTlNGb250TWFuYWdlcgogICAgICAgICAgICAgUGxhdGZvcm1Gb250ICpv
cmlnaW5hbEZvbnQgPSBmb250OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAppbmRleCA0N2YwYjk1NDcxZWQ5YTAwODAzNGNj
ODI2YmEzNjI1ZjdkMmVlZmRlLi42MzVlOTMyM2JlNWNmNmY5OTkzNjYwMzE5MDJmMjA1NDI3NTEw
Yzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTI5LDcg
KzI5LDYgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJSZW5kZXJGcmFtZS5o
IgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTgzLDcgKzgyLDcgQEAgaW50IEhUTUxGcmFtZUVsZW1lbnQ6OmRlZmF1bHRUYWJJbmRleCgpIGNv
bnN0CiB2b2lkIEhUTUxGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09
IGZyYW1lYm9yZGVyQXR0cikgewotICAgICAgICBtX2ZyYW1lQm9yZGVyID0gcGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKTsKKyAgICAgICAgbV9m
cmFtZUJvcmRlciA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZhbHVlX29yKDApOwogICAgICAg
ICBtX2ZyYW1lQm9yZGVyU2V0ID0gIXZhbHVlLmlzTnVsbCgpOwogICAgICAgICAvLyBGSVhNRTog
SWYgd2UgYXJlIGFscmVhZHkgYXR0YWNoZWQsIHRoaXMgaGFzIG5vIGVmZmVjdC4KICAgICB9IGVs
c2UgaWYgKG5hbWUgPT0gbm9yZXNpemVBdHRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCA1Yzk2NTUwM2E0ZGFmM2QxMjcwZTAwMTMzMzgwNGIy
NDY3ZGZmN2U1Li45NWFlNmExZTU1YjJmNTUzMWU4NWFjMTk4MzkyZDg0NmQwM2M3YWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTM2LDEyICsz
NiwxMiBAQAogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1l
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAj
aW5jbHVkZSAiUmVuZGVyRnJhbWVTZXQuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMyLDcgKzEzMiw3
IEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0CiAKICAgICBpZiAobmFtZSA9PSBib3JkZXJBdHRy
KSB7CiAgICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fYm9yZGVy
ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigw
KTsKKyAgICAgICAgICAgIG1fYm9yZGVyID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkudmFsdWVf
b3IoMCk7CiAgICAgICAgICAgICBtX2JvcmRlclNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgbV9ib3JkZXJTZXQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVs
ZW1lbnQuY3BwCmluZGV4IDcyNzJhNWE3ZTZlZDc4NjBjZmQzY2YzYjQzOTY2NjE5NGE3YzljMTgu
LmM2YjhlMDVjYjk1MjIzOGZkNGVhZmI1ZTk0Yjc0YzM3MjMyYWRhMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSFJFbGVtZW50LmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVy
c2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc0LDcgKzczLDcgQEAgdm9pZCBI
VE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmEKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgQ1NTVmFsdWVBdXRv
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSB3aWR0aEF0dHIpIHsKLSAgICAg
ICAgaWYgKGF1dG8gdmFsdWVJbnRlZ2VyID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1
bms8aW50Pih2YWx1ZSk7IHZhbHVlSW50ZWdlciAmJiAhKnZhbHVlSW50ZWdlcikKKyAgICAgICAg
aWYgKGF1dG8gdmFsdWVJbnRlZ2VyID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSk7IHZhbHVlSW50
ZWdlciAmJiAhKnZhbHVlSW50ZWdlcikKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50
YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgMSwgQ1NTVW5pdFR5
cGU6OkNTU19QWCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCB2YWx1ZSk7CkBAIC05MSw3ICs5MCw3IEBAIHZv
aWQgSFRNTEhSRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hCiAgICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvciwgZGFya0dyYXlWYWx1ZSk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgaWYgKG5hbWUgPT0gc2l6ZUF0dHIpIHsKLSAgICAgICAgaW50IHNpemUgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApOworICAgICAg
ICBpbnQgc2l6ZSA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZhbHVlX29yKDApOwogICAgICAg
ICBpZiAoc2l6ZSA8PSAxKQogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCAwLCBDU1NV
bml0VHlwZTo6Q1NTX1BYKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmNwcAppbmRleCAyN2ZlZmViNTdiOWMwNTY1NWYxZGRmNWRhYWIyN2JlOTQw
NDg2NmUxLi40MjNiZjgxZTQwZTYxZWQ5NzcwNzQ1NDRjYTA1ZDhkYTIzMjQ5ZjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcApAQCAtMzUsNyArMzUsNiBAQAog
I2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtODcsNyArODYsNyBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZQogICAgIGVsc2UgaWYgKG5h
bWUgPT0gZnJhbWVib3JkZXJBdHRyKSB7CiAgICAgICAgIC8vIEZyYW1lIGJvcmRlciBkb2Vzbid0
IHJlYWxseSBtYXRjaCB0aGUgSFRNTDQgc3BlYyBkZWZpbml0aW9uIGZvciBpZnJhbWVzLiBJdCBz
aW1wbHkgYWRkcwogICAgICAgICAvLyBhIHByZXNlbnRhdGlvbmFsIGhpbnQgdGhhdCB0aGUgYm9y
ZGVyIHNob3VsZCBiZSBvZmYgaWYgc2V0IHRvIHplcm8uCi0gICAgICAgIGlmICghcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKSkgeworICAgICAg
ICBpZiAoIXBhcnNlSFRNTEludGVnZXIodmFsdWUpKSB7CiAgICAgICAgICAgICAvLyBBZGQgYSBy
dWxlIHRoYXQgbnVsbHMgb3V0IG91ciBib3JkZXIgd2lkdGguCiAgICAgICAgICAgICBhZGRQcm9w
ZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
V2lkdGgsIDAsIENTU1VuaXRUeXBlOjpDU1NfUFgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBjZTZjOWI5OTA2YTkwNGYzYmVlZjExNTlm
ZDZjYjdjYzBhOWNlMTJlLi42YTRmYTNjOTRmZmY0ZjEzZWZhYjVkYzdhOGQxODM0YTFkZGI4ZWVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTgwMiw3ICs4
MDIsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogICAgICAgICBpZiAobV9zaXplICE9IG9s
ZFNpemUgJiYgcmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5
b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSByZXN1bHRz
QXR0cikKLSAgICAgICAgbV9tYXhSZXN1bHRzID0gdmFsdWUuaXNOdWxsKCkgPyAtMSA6IHN0ZDo6
bWluKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3Io
MCksIG1heFNhdmVkUmVzdWx0cyk7CisgICAgICAgIG1fbWF4UmVzdWx0cyA9IHZhbHVlLmlzTnVs
bCgpID8gLTEgOiBzdGQ6Om1pbihwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKS52YWx1ZV9vcigwKSwg
bWF4U2F2ZWRSZXN1bHRzKTsKICAgICBlbHNlIGlmIChuYW1lID09IGF1dG9zYXZlQXR0ciB8fCBu
YW1lID09IGluY3JlbWVudGFsQXR0cikKICAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJl
ZSgpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gbWF4QXR0ciB8fCBuYW1lID09IG1pbkF0dHIgfHwg
bmFtZSA9PSBtdWx0aXBsZUF0dHIgfHwgbmFtZSA9PSBwYXR0ZXJuQXR0ciB8fCBuYW1lID09IHBy
ZWNpc2lvbkF0dHIgfHwgbmFtZSA9PSBzdGVwQXR0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVs
ZW1lbnQuY3BwCmluZGV4IGVjZTI5ZWEyMjA3OTdkOTllNDNjOWY3MTAwYmY0ZGRhODJlOWZjZmIu
LjM0MzI4M2Y4MTEyZmNkZTk3OWE0ZGYwNzFjNTM5MThiZTZmNTJmZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTElFbGVtZW50LmNwcApAQCAtMTE3LDcgKzExNywxMCBAQCB2b2lkIEhUTUxMSUVs
ZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCiBpbmxpbmUgdm9pZCBIVE1MTElFbGVtZW50Ojpw
YXJzZVZhbHVlKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIEFTU0VSVChyZW5kZXJl
cigpKTsKLSAgICBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnJlbmRlcmVyKCkpLnNldEV4cGxp
Y2l0VmFsdWUocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkpOwor
ICAgIE9wdGlvbmFsPGludD4gZXhwbGljaXRWYWx1ZTsKKyAgICBpZiAoYXV0byBwYXJzZWRWYWx1
ZSA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpKQorICAgICAgICBleHBsaWNpdFZhbHVlID0gKnBh
cnNlZFZhbHVlOworICAgIGRvd25jYXN0PFJlbmRlckxpc3RJdGVtPigqcmVuZGVyZXIoKSkuc2V0
RXhwbGljaXRWYWx1ZShleHBsaWNpdFZhbHVlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCmluZGV4IGM0ODA5ZTlmYWRmN2ZiZWY1YWIyYmU2MDBh
YjQ0YmYxODgwODE3ZDEuLjE0YTQ3Mjk4YWU2ZjcxMzRiOGUxMDY2OTcwOGQwOWMyY2MwYjNiMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKQEAgLTMyLDcg
KzMyLDYgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyTWFycXVlZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTE0OCw4ICsxNDcsOCBAQCB2b2lkIEhUTUxNYXJxdWVlRWxlbWVu
dDo6c2V0U2Nyb2xsRGVsYXkodW5zaWduZWQgc2Nyb2xsRGVsYXkpCiAgICAgCiBpbnQgSFRNTE1h
cnF1ZWVFbGVtZW50Ojpsb29wKCkgY29uc3QKIHsKLSAgICBhdXRvIGxvb3BWYWx1ZSA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihsb29wQXR0cikpOwotICAgIHJldHVybiBsb29wVmFsdWUgJiYgKmxvb3BWYWx1ZSA+
IDAgPyAqbG9vcFZhbHVlIDogLTE7CisgICAgaW50IGxvb3BWYWx1ZSA9IGdldEludGVncmFsQXR0
cmlidXRlKGxvb3BBdHRyKTsKKyAgICByZXR1cm4gbG9vcFZhbHVlID4gMCA/IGxvb3BWYWx1ZSA6
IC0xOwogfQogICAgIAogRXhjZXB0aW9uT3I8dm9pZD4gSFRNTE1hcnF1ZWVFbGVtZW50OjpzZXRM
b29wKGludCBsb29wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50
LmNwcAppbmRleCA2ODczODA1ODdhMWQ1OWU0MzY5ZmVjYmEzZjQzMjJhODdlYjQ0OGU4Li41OTNm
N2QyNDc2N2Q4NzAwNTAyZDI4NmEyNWNjNzBmZGQ5NzU1ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDMs
MTAgKzEwMiwxMCBAQCB2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTgogICAgIGlmIChuYW1lID09IG5v
d3JhcEF0dHIpCiAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVdlYmtpdE5vd3JhcCk7CiAg
ICAgZWxzZSBpZiAobmFtZSA9PSB3aWR0aEF0dHIpIHsKLSAgICAgICAgaWYgKHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3IoMCkgPiAwKSAvLyB3aWR0
aD0iMCIgaXMgaWdub3JlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklFLgorICAgICAgICBp
ZiAocGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkudmFsdWVfb3IoMCkgPiAwKSAvLyB3aWR0aD0iMCIg
aXMgaWdub3JlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklFLgogICAgICAgICAgICAgYWRk
SFRNTExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIHZhbHVlKTsKICAgICB9
IGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikgewotICAgICAgICBpZiAocGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKSA+IDApIC8vIGhlaWdo
dD0iMCIgaXMgaWdub3JlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklFLgorICAgICAgICBp
ZiAocGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkudmFsdWVfb3IoMCkgPiAwKSAvLyBoZWlnaHQ9IjAi
IGlzIGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KICAgICAgICAgICAgIGFk
ZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwgdmFsdWUpOwogICAg
IH0gZWxzZQogICAgICAgICBIVE1MVGFibGVQYXJ0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJl
c2VudGF0aW9uQXR0cmlidXRlKG5hbWUsIHZhbHVlLCBzdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAppbmRleCAwM2FmZmNjZGJiYzNhZTA3YTEyMjkw
OGMxNjRkOTU4YzUyM2I3MmNjLi41ZTI0Yjk3ZDhkNWRmYzlmOTVkMjRlNDkwMjc0N2YxZTQ4ZGFj
YzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKQEAg
LTc4LDggKzc4LDggQEAgdm9pZCBIVE1MVGFibGVDb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3QKICAgICB9IGVsc2UgaWYgKG5h
bWUgPT0gd2lkdGhBdHRyKSB7CiAgICAgICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGVDb2w+KHJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgUmVuZGVyVGFibGVDb2wmIGNvbCA9IGRvd25jYXN0PFJlbmRlclRhYmxlQ29sPigqcmVu
ZGVyZXIoKSk7Ci0gICAgICAgICAgICAgICAgaW50IG5ld1dpZHRoID0gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8aW50Pih3aWR0aCgpKS52YWx1ZU9yKDApOworICAgICAgICAgICAg
ICAgIGF1dG8mIGNvbCA9IGRvd25jYXN0PFJlbmRlclRhYmxlQ29sPigqcmVuZGVyZXIoKSk7Cisg
ICAgICAgICAgICAgICAgaW50IG5ld1dpZHRoID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkudmFs
dWVfb3IoMCk7CiAgICAgICAgICAgICAgICAgaWYgKG5ld1dpZHRoICE9IGNvbC53aWR0aCgpKQog
ICAgICAgICAgICAgICAgICAgICBjb2wuc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxj
KCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNw
cAppbmRleCA0YzAzNzYwZjE2MTQ5ODE2ZjlhYTdiZjBmMmNhZWJlY2UzNmY2MTk0Li5iZjc5ZDJj
NTAwYTEwNDYzNmQwY2I3ZTk1OGNmYjNhMzAwZmExOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJTdHlsZVBy
b3BlcnRpZXMuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9u
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAwLDcgKzM5OSw3IEBAIHZvaWQgSFRN
TFRhYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cmluCiAgICAgICAgICAgICBtX3J1bGVzQXR0ciA9IEFsbFJ1bGVzOwogICAg
IH0gZWxzZSBpZiAobmFtZSA9PSBjZWxscGFkZGluZ0F0dHIpIHsKICAgICAgICAgaWYgKCF2YWx1
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3BhZGRpbmcgPSBzdGQ6Om1heCgwLCBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApKTsKKyAgICAg
ICAgICAgIG1fcGFkZGluZyA9IHN0ZDo6bWF4KDAsIHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZh
bHVlX29yKDApKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYWRkaW5nID0gMTsKICAg
ICB9IGVsc2UgaWYgKG5hbWUgPT0gY29sc0F0dHIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCBj
NTNhOTk3MDU5NDQ4ODViYjJkOTM3MGZkMGNmYTUzYmM1NjhlYmIwLi42MzFjM2FhNmIzNzI1ZDc4
ZTg4MTlkOWYxODIzZjZiZTZhMmZjNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC01Nyw3ICs1
Nyw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXJzLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMxNyw4ICszMTcsOCBAQCB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdodCgpCiB7CiAg
ICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1faW5zcGVjdGVkUGFnZUNvbnRyb2xs
ZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsK
ICAgICBTdHJpbmcgdmFsdWUgPSBtX3NldHRpbmdzLT5nZXRQcm9wZXJ0eShpbnNwZWN0b3JBdHRh
Y2hlZEhlaWdodFNldHRpbmcpOwotICAgIHVuc2lnbmVkIHByZWZlcnJlZEhlaWdodCA9IHZhbHVl
LmlzRW1wdHkoKSA/IGRlZmF1bHRBdHRhY2hlZEhlaWdodCA6IHZhbHVlLnRvVUludCgpOwotICAg
IAorICAgIHVuc2lnbmVkIHByZWZlcnJlZEhlaWdodCA9IHZhbHVlLmlzRW1wdHkoKSA/IGRlZmF1
bHRBdHRhY2hlZEhlaWdodCA6IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2ln
bmVkPih2YWx1ZSkudmFsdWVPcigwKTsKKwogICAgIC8vIFRoaXMgY2FsbCBtaWdodCBub3QgZ28g
dGhyb3VnaCAoaWYgdGhlIHdpbmRvdyBzdGFydHMgb3V0IGRldGFjaGVkKSwgYnV0IGlmIHRoZSB3
aW5kb3cgaXMgaW5pdGlhbGx5IGNyZWF0ZWQgYXR0YWNoZWQsCiAgICAgLy8gSW5zcGVjdG9yQ29u
dHJvbGxlcjo6YXR0YWNoV2luZG93IGlzIG5ldmVyIGNhbGxlZCwgc28gd2UgbmVlZCB0byBtYWtl
IHN1cmUgdG8gc2V0IHRoZSBhdHRhY2hlZFdpbmRvd0hlaWdodC4KICAgICAvLyBGSVhNRTogQ2xl
YW4gdXAgY29kZSBzbyB3ZSBvbmx5IGhhdmUgdG8gY2FsbCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dCBpbiBJbnNwZWN0b3JDb250cm9sbGVyOjphdHRhY2hXaW5kb3cKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNWUz
NDNhNTRiYTcyMTcyOWI4MTI5MmM2MDYzOTkyNWRjMWQwZGVhMS4uYTgyNzE3Mzg4MTY5YjcxZjZm
MDMxZDI4ZDNlMjY2MmZjNDIyMWUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEyMCw2ICsxMjAsNyBAQAog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI3NTgsMjIgKzI3NTksMjAgQEAgTm9kZSogSW5zcGVj
dG9yRE9NQWdlbnQ6Om5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhdGhUb2tlbnMuc2l6
ZSgpIC0gMTsgaSArPSAyKSB7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgICAg
IHVuc2lnbmVkIGNoaWxkTnVtYmVyID0gcGF0aFRva2Vuc1tpXS50b1VJbnQoJnN1Y2Nlc3MpOwot
ICAgICAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIGF1dG8gY2hpbGROdW1iZXIgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4ocGF0aFRva2Vuc1tpXSk7CisgICAg
ICAgIGlmICghY2hpbGROdW1iZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
ICAgICBOb2RlKiBjaGlsZDsKICAgICAgICAgaWYgKGlzPEhUTUxGcmFtZU93bmVyRWxlbWVudD4o
Km5vZGUpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIWNoaWxkTnVtYmVyKTsKKyAgICAgICAgICAg
IEFTU0VSVCghKmNoaWxkTnVtYmVyKTsKICAgICAgICAgICAgIGF1dG8mIGZyYW1lT3duZXIgPSBk
b3duY2FzdDxIVE1MRnJhbWVPd25lckVsZW1lbnQ+KCpub2RlKTsKICAgICAgICAgICAgIGNoaWxk
ID0gZnJhbWVPd25lci5jb250ZW50RG9jdW1lbnQoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGlmIChjaGlsZE51bWJlciA+PSBpbm5lckNoaWxkTm9kZUNvdW50KG5vZGUpKQorICAg
ICAgICAgICAgaWYgKCpjaGlsZE51bWJlciA+PSBpbm5lckNoaWxkTm9kZUNvdW50KG5vZGUpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgICAgICAgICBjaGlsZCA9IGlu
bmVyRmlyc3RDaGlsZChub2RlKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBjaGls
ZCAmJiBqIDwgY2hpbGROdW1iZXI7ICsraikKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAw
OyBjaGlsZCAmJiBqIDwgKmNoaWxkTnVtYmVyOyArK2opCiAgICAgICAgICAgICAgICAgY2hpbGQg
PSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXgg
MDYzM2I3NTYyM2NiYjlkYWI5OWU3YTI4MTkwNmQ5YmQwYjgwNjdjNi4uYTVmZTFmMTk4Nzc5Nzg4
ZmFhOTJhMmZjM2NhMjRhMzg1ZmQ0NjQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNp
bmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRh
YmxlRWxlbWVudC5oIgpAQCAtMjU4LDcgKzI1OSw3IEBAIEJveCogVHJlZUJ1aWxkZXI6OmNyZWF0
ZUxheW91dEJveChjb25zdCBDb250YWluZXJCb3gmIHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVu
CiAgICAgICAgICAgICAgICAgYXV0byYgdGFibGVDb2xFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRN
TFRhYmxlQ29sRWxlbWVudCY+KCpyZW5kZXJlci5lbGVtZW50KCkpOwogICAgICAgICAgICAgICAg
IGF1dG8gY29sdW1uV2lkdGggPSB0YWJsZUNvbEVsZW1lbnQud2lkdGgoKTsKICAgICAgICAgICAg
ICAgICBpZiAoIWNvbHVtbldpZHRoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3gtPnNldENvbHVtbldpZHRoKGNvbHVtbldpZHRoLnRvSW50KCkpOworICAgICAg
ICAgICAgICAgICAgICBjaGlsZExheW91dEJveC0+c2V0Q29sdW1uV2lkdGgocGFyc2VIVE1MSW50
ZWdlcihjb2x1bW5XaWR0aCkudmFsdWVfb3IoMCkpOwogICAgICAgICAgICAgICAgIGlmICh0YWJs
ZUNvbEVsZW1lbnQuc3BhbigpID4gMSkKICAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRC
b3gtPnNldENvbHVtblNwYW4odGFibGVDb2xFbGVtZW50LnNwYW4oKSk7CiAgICAgICAgICAgICB9
IGVsc2UgewpAQCAtMjc2LDcgKzI3Nyw2IEBAIEJveCogVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91
dEJveChjb25zdCBDb250YWluZXJCb3gmIHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVuCiAgICAg
ICAgICAgICAgICAgYXV0byByb3dTcGFuID0gY2VsbEVsZW1lbnQucm93U3BhbigpOwogICAgICAg
ICAgICAgICAgIGlmIChyb3dTcGFuID4gMSkKICAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3gtPnNldFJvd1NwYW4ocm93U3Bhbik7Ci0KICAgICAgICAgICAgICAgICBhdXRvIGNvbHVt
blNwYW4gPSBjZWxsRWxlbWVudC5jb2xTcGFuKCk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbHVt
blNwYW4gPiAxKQogICAgICAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveC0+c2V0Q29sdW1u
U3Bhbihjb2x1bW5TcGFuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAppbmRleCA5ZDBiN2U2NGUzMWIzN2M2
YjJlOGU3ODcyZGY1OWY4M2UyNzNjMTlmLi45OWNhOWM0YTBkOTc2NjEyYTBmOGJkMzNkYTA4NGZh
NDQ2ODVlOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9J
bnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDEwICs0
NywxMCBAQCBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlOjpDcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlKCkKIAogc3RhdGljIGJvb2wgcGFyc2VBY2Nlc3NDb250cm9sTWF4QWdl
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBTZWNvbmRzJiBleHBpcnlEZWx0YSkKIHsKLSAgICAvLyBG
SVhNRTogdGhpcyB3aWxsIG5vdCBkbyB0aGUgY29ycmVjdCB0aGluZyBmb3IgYSBudW1iZXIgc3Rh
cnRpbmcgd2l0aCBhICcrJwotICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICBleHBpcnlEZWx0YSA9
IFNlY29uZHMoc3RhdGljX2Nhc3Q8ZG91YmxlPihzdHJpbmcudG9VSW50U3RyaWN0KCZvaykpKTsK
LSAgICByZXR1cm4gb2s7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHJlamVj
dCBzdHJpbmdzIHRoYXQgaGF2ZSBhIGxlYWRpbmcgIisiLgorICAgIGF1dG8gcGFyc2VkSW50ZWdl
ciA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4oc3RyaW5nKTsKKyAgICBleHBpcnlEZWx0YSA9IFNl
Y29uZHMoc3RhdGljX2Nhc3Q8ZG91YmxlPihwYXJzZWRJbnRlZ2VyLnZhbHVlT3IoMCkpKTsKKyAg
ICByZXR1cm4gcGFyc2VkSW50ZWdlci5oYXNWYWx1ZSgpOwogfQogCiBFeHBlY3RlZDxVbmlxdWVS
ZWY8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+LCBTdHJpbmc+IENyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjpjcmVhdGUoU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgcG9saWN5LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAKaW5kZXggNDgyZDliY2FkNGJjN2Jj
YmMzNDg2OGI1ZWRjNzU2M2IwMmZkNmFmNC4uNGY5MjM5MDA4ZjkwYjViNTg4MGYxYjJkNzVmMmY1
MWZkNjY5OWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9y
eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNl
ci5jcHAKQEAgLTIxLDE4ICsyMSwxOSBAQAogLy8gT3JpZ2luYWwgdmVyc2lvbiBvZiB0aGlzIGZp
bGUgY2FuIGN1cnJlbnRseSBiZSBmb3VuZCBhdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3pp
bGxhMS44L3NvdXJjZS9uZXR3ZXJrL3N0cmVhbWNvbnYvY29udmVydGVycy9QYXJzZUZUUExpc3Qu
Y3BwCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoRlRQRElSKQogI2luY2x1ZGUg
IkZUUERpcmVjdG9yeVBhcnNlci5oIgogCisjaWYgRU5BQkxFKEZUUERJUikKKworI2luY2x1ZGUg
PHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CisKIC8vIE9uIFdpbmRvd3MsIHVzZSB0aGUg
dGhyZWFkc2FmZSAqX3IgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHB0aHJlYWQuCiAjaWYgT1MoV0lO
RE9XUykgJiYgKFVTRShQVEhSRUFEUykgfHwgSEFWRShQVEhSRUFEX0gpKQogI2luY2x1ZGUgPHB0
aHJlYWQuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KLSNpbmNsdWRl
IDxzdGRpby5oPgotCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIE9TKFdJTkRPV1MpICYm
ICFkZWZpbmVkKGdtdGltZV9yKQpAQCAtMTE4MSw3ICsxMTgyLDcgQEAgRlRQRW50cnlUeXBlIHBh
cnNlT25lRlRQTGluZShjb25zdCBjaGFyKiBsaW5lLCBMaXN0U3RhdGUmIHN0YXRlLCBMaXN0UmVz
dWx0JiByZXMKICAgICAgICAgewogICAgICAgICAgIC8qIEZpcnN0IHRyeSB0byB1c2UgcmVzdWx0
LmZlX3NpemUgdG8gZmluZCAiIC0+ICIgc2VxdWVuY2UuCiAgICAgICAgICAgICAgVGhpcyBjYW4g
Z2l2ZSBwcm9wZXIgcmVzdWx0IGZvciBjYXNlcyBsaWtlICJhYWEgLT4gYmJiIC0+IGNjYyIuICov
Ci0gICAgICAgICAgdW5zaWduZWQgaW50IGZpbGVTaXplID0gcmVzdWx0LmZpbGVTaXplLnRvVUlu
dCgpOworICAgICAgICAgICAgYXV0byBmaWxlU2l6ZSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPHVuc2lnbmVkPihyZXN1bHQuZmlsZVNpemUpLnZhbHVlT3IoMCk7CiAKICAgICAg
ICAgICBpZiAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID4gKGZpbGVTaXplICsgNCkgJiYKICAgICAg
ICAgICAgICAgc3RybmNtcChyZXN1bHQuZmlsZW5hbWUgKyByZXN1bHQuZmlsZW5hbWVMZW5ndGgg
LSBmaWxlU2l6ZSAtIDQsICIgLT4gIiwgNCkgPT0gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCmluZGV4IGU2NmUwYzNhZTU4NjMxYWQy
MGMxMWIzYTBkODQ4NGUwZWYxYjQ5N2YuLjIxOTg3NTNlNzc1Njg2ZjMwZDc3ZDNmMDlhZmM1N2Y0
MDJlNzE2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1i
ZXIuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTcwLDcgKzcxLDcgQEAgRXhwZWN0ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEsIFN0cmluZz4gUHJpdmF0ZUNsaWNrTWUKIAogICAgIGF1dG8gcHJl
Zml4TGVuZ3RoID0gc2l6ZW9mKHByaXZhdGVDbGlja01lYXN1cmVtZW50VHJpZ2dlckF0dHJpYnV0
aW9uUGF0aCkgLSAxOwogICAgIGlmIChwYXRoLmxlbmd0aCgpID09IHByZWZpeExlbmd0aCArIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6
ZSkgewotICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQgPSBwYXRoLnN1
YnN0cmluZyhwcmVmaXhMZW5ndGgsIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25U
cmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSkudG9VSW50NjRTdHJpY3QoKTsKKyAgICAgICAgYXV0
byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pihw
YXRoLnN1YnN0cmluZyhwcmVmaXhMZW5ndGgsIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSkpOwogICAgICAgICBpZiAoIWF0dHJpYnV0
aW9uVHJpZ2dlckRhdGFVSW50NjQgfHwgKmF0dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQgPiBB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhFbnRyb3B5KQogICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252
ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgY29udmVyc2lvbiBkYXRhIGNvdWxk
IG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gb2Yg
Il9zLCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhFbnRyb3B5LCAiLiJfcykpOwogCkBAIC03
OCwxMSArNzksMTEgQEAgRXhwZWN0ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEsIFN0cmluZz4gUHJpdmF0ZUNsaWNrTWUKICAgICB9CiAgICAgCiAgICAg
aWYgKHBhdGgubGVuZ3RoKCkgPT0gcHJlZml4TGVuZ3RoICsgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRTaXplICsgMSArIHByaXZhdGVDbGlj
a01lYXN1cmVtZW50UHJpb3JpdHlQYXRoU2VnbWVudFNpemUpIHsKLSAgICAgICAgYXV0byBhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID0gcGF0aC5zdWJzdHJpbmcocHJlZml4TGVuZ3RoLCBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNp
emUpLnRvVUludDY0U3RyaWN0KCk7CisgICAgICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0
YVVJbnQ2NCA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocGF0aC5zdWJzdHJpbmcocHJlZml4TGVu
Z3RoLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2Vn
bWVudFNpemUpKTsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0IHx8
ICphdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID4gQXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6
TWF4RW50cm9weSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5n
KCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVk
IGJlY2F1c2UgdGhlIGNvbnZlcnNpb24gZGF0YSBjb3VsZCBub3QgYmUgcGFyc2VkIG9yIHdhcyBo
aWdoZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIG9mICJfcywgQXR0cmlidXRpb25UcmlnZ2Vy
RGF0YTo6TWF4RW50cm9weSwgIi4iX3MpKTsKIAotICAgICAgICBhdXRvIGF0dHJpYnV0aW9uUHJp
b3JpdHlVSW50NjQgPSBwYXRoLnN1YnN0cmluZyhwcmVmaXhMZW5ndGggKyBwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUgKyAxLCBwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFByaW9yaXR5UGF0aFNlZ21lbnRTaXplKS50b1VJbnQ2NFN0cmlj
dCgpOworICAgICAgICBhdXRvIGF0dHJpYnV0aW9uUHJpb3JpdHlVSW50NjQgPSBwYXJzZUludGVn
ZXI8dWludDY0X3Q+KHBhdGguc3Vic3RyaW5nKHByZWZpeExlbmd0aCArIHByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSArIDEsIHByaXZh
dGVDbGlja01lYXN1cmVtZW50UHJpb3JpdHlQYXRoU2VnbWVudFNpemUpKTsKICAgICAgICAgaWYg
KCFhdHRyaWJ1dGlvblByaW9yaXR5VUludDY0IHx8ICphdHRyaWJ1dGlvblByaW9yaXR5VUludDY0
ID4gUHJpb3JpdHk6Ok1heEVudHJvcHkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQobWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2Fz
IG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBwcmlvcml0eSBjb3VsZCBub3QgYmUgcGFyc2VkIG9y
IHdhcyBoaWdoZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIG9mICJfcywgUHJpb3JpdHk6Ok1h
eEVudHJvcHksICIuIl9zKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxl
Y3RFbGVtZW50LmNwcAppbmRleCAwMGRlOWFjODU2NzQ0OTNjNzAwZmRjNzkyMGRhNzEzMzVjOTUw
MWIwLi4wNTU3OTdmOWZiMzhkMDUzYmMyNjRkNTZiMjY3ZWNiZTczMTE4MmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0zNyw3ICszNyw2
IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTE4LDcgKzExNyw3IEBAIGludCBNYXRoTUxTZWxlY3RFbGVtZW50OjpnZXRTZWxlY3RlZEFj
dGlvbkNoaWxkQW5kSW5kZXgoRWxlbWVudComIHNlbGVjdGVkQ2hpbGQpCiAgICAgaWYgKCFzZWxl
Y3RlZENoaWxkKQogICAgICAgICByZXR1cm4gMTsKIAotICAgIGludCBzZWxlY3Rpb24gPSBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oTWF0aE1MTmFtZXM6OnNlbGVjdGlvbkF0dHIpKS52YWx1ZU9yKDApOworICAgIGlu
dCBzZWxlY3Rpb24gPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6c2VsZWN0aW9u
QXR0cik7CiAgICAgaW50IGk7CiAgICAgZm9yIChpID0gMTsgaSA8IHNlbGVjdGlvbjsgaSsrKSB7
CiAgICAgICAgIGF1dG8qIG5leHRDaGlsZCA9IHNlbGVjdGVkQ2hpbGQtPm5leHRFbGVtZW50U2li
bGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCBmMWM2Nzg1YTRhMzll
ZGUyYzQ5NTQyODExY2IxOTUyZDBiOWM0MmQzLi5kYmY2MzdjZmIyOTgwNjYxYWE2NzcwYTc4YTQ0
N2FmZWQwMzU5YTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtNDYsNiAr
NDYsNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zODMsMTIgKzM4NCwxMCBAQCB2b2lkIEV2ZW50U291cmNlOjpwYXJzZUV2ZW50
U3RyZWFtTGluZSh1bnNpZ25lZCBwb3NpdGlvbiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpZQogICAg
ICAgICBpZiAoIXZhbHVlTGVuZ3RoKQogICAgICAgICAgICAgbV9yZWNvbm5lY3REZWxheSA9IGRl
ZmF1bHRSZWNvbm5lY3REZWxheTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogRG8gd2UgcmVhbGx5IHdhbnQgdG8gaWdub3JlIHRyYWlsaW5nIGdhcmJhZ2UgaGVyZT8gU2hv
dWxkIHdlIGJlIHVzaW5nIHRoZSBzdHJpY3QgdmVyc2lvbiBpbnN0ZWFkPwotICAgICAgICAgICAg
Ly8gRklYTUU6IElmIHdlIGNhbid0IHBhcnNlIHRoZSB2YWx1ZSwgc2hvdWxkIHdlIGxlYXZlIG1f
cmVjb25uZWN0RGVsYXkgYWxvbmUgb3Igc2V0IGl0IHRvIGRlZmF1bHRSZWNvbm5lY3REZWxheT8K
LSAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICBhdXRvIHJlY29ubmVjdERlbGF5ID0g
Y2hhcmFjdGVyc1RvVUludDY0KCZtX3JlY2VpdmVCdWZmZXJbcG9zaXRpb25dLCB2YWx1ZUxlbmd0
aCwgJm9rKTsKLSAgICAgICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICAgICBtX3JlY29ubmVj
dERlbGF5ID0gcmVjb25uZWN0RGVsYXk7CisgICAgICAgICAgICAvLyBGSVhNRTogRG8gd2UgcmVh
bGx5IHdhbnQgdG8gaWdub3JlIHRyYWlsaW5nIGp1bmsgaGVyZT8KKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBXaGVuIHdlIGNhbid0IHBhcnNlIHRoZSB2YWx1ZSwgc2hvdWxkIHdlIHJlYWxseSBsZWF2
ZSBtX3JlY29ubmVjdERlbGF5IGFsb25lPyBTaG91bGRuJ3Qgd2Ugc2V0IGl0IHRvIGRlZmF1bHRS
ZWNvbm5lY3REZWxheT8KKyAgICAgICAgICAgIGlmIChhdXRvIHJlY29ubmVjdERlbGF5ID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHsgJm1fcmVjZWl2ZUJ1ZmZl
cltwb3NpdGlvbl0sIHZhbHVlTGVuZ3RoIH0pKQorICAgICAgICAgICAgICAgIG1fcmVjb25uZWN0
RGVsYXkgPSAqcmVjb25uZWN0RGVsYXk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYXRpb24uY3BwCmluZGV4IGY2MGFlYWYzNTE2ZjY3NmExNWUwNjc2MDZlMjY3NjE3YjE0NGU1
NmMuLjA5NWU0NzQ4NWYzYmM0NTY0MDIzYjExZjk5OWI5NjQ2MDIxMDA1MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTG9jYXRpb24uY3BwCkBAIC0zNCw5ICszNCwxMCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNjUsNyArMTY2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
TG9jYXRpb246OnNldFBvcnQoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmly
c3RXaW4KICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwg
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7Ci0gICAgdXJsLnNldFBvcnQocGFyc2VVSW50MTYo
cG9ydFN0cmluZykpOworICAgIHVybC5zZXRQb3J0KHBhcnNlSW50ZWdlcjx1aW50MTZfdD4ocG9y
dFN0cmluZykpOwogICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2lu
ZG93LCB1cmwuc3RyaW5nKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKaW5kZXggNzljMDY3YjcwOTVmZTIzZmY0MDM4NzE4NTBmZjVjYjM5NmU1NzNh
Yi4uNzhjMmNhMDc1ZWJhM2EyYmEzNzUyMDkxYmEzNGFjM2UwOWM3M2E3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTEwNSwyMiArMTA2LDE1IEBAIE9wdGlvbmFsPFNlY3VyaXR5T3Jp
Z2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0
IFN0CiAgICAgaWYgKHNlcGFyYXRvcjEgPT0gc2VwYXJhdG9yMikKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICAKLSAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQgc2VjdGlvbiBpcyBh
IHZhbGlkIHBvcnQgbnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QKLSAgICBib29sIHBvcnRPa2F5Owot
ICAgIGludCBwb3J0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KGRhdGFiYXNlSWRlbnRpZmll
ci5sZW5ndGgoKSAtIHNlcGFyYXRvcjIgLSAxKS50b0ludCgmcG9ydE9rYXkpOwotICAgIGJvb2wg
cG9ydEFic2VudCA9IChzZXBhcmF0b3IyID09IGRhdGFiYXNlSWRlbnRpZmllci5sZW5ndGgoKSAt
IDEpOwotICAgIGlmICghKHBvcnRPa2F5IHx8IHBvcnRBYnNlbnQpKQorICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgcG9ydCBzZWN0aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9lc24ndCBleGlz
dC4KKyAgICBhdXRvIHBvcnRMZW5ndGggPSBkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkgLSBz
ZXBhcmF0b3IyIC0gMTsKKyAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1aW50MTZfdD4oU3RyaW5nVmlldyB7IGRhdGFiYXNlSWRlbnRpZmllciB9LnJpZ2h0
KHBvcnRMZW5ndGgpKTsKKyAgICBpZiAoIXBvcnQgJiYgcG9ydExlbmd0aCkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLSAgICAKLSAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICAKKwogICAgIGF1dG8gcHJvdG9jb2wgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vi
c3RyaW5nKDAsIHNlcGFyYXRvcjEpOwogICAgIGF1dG8gaG9zdCA9IGRhdGFiYXNlSWRlbnRpZmll
ci5zdWJzdHJpbmcoc2VwYXJhdG9yMSArIDEsIHNlcGFyYXRvcjIgLSBzZXBhcmF0b3IxIC0gMSk7
Ci0gICAgaWYgKCFwb3J0KQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJv
dG9jb2wsIGhvc3QsIFdURjo6bnVsbG9wdCB9OwotCi0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2lu
RGF0YSB7IHByb3RvY29sLCBob3N0LCBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkgfTsKKyAg
ICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJvdG9jb2wsIGhvc3QsIHBvcnQgfTsKIH0K
IAogU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKaW5kZXggOTAwM2Q5N2Vl
NTU2ZGU0ZjM3NDVmMjMzZGEzY2IxMTUwMTA3NzZkMi4uOGMwYTQyYzg3MzM1NTJmN2VlYWYzODU5
NmVkZmYxYjViMmVlN2ViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dG
ZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0xMzIsNyArMTMzLDcgQEAgc3RhdGljIHZvaWQgc2V0V2luZG93RmVhdHVy
ZShXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWUKICAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZh
bHVlLCAieWVzIikpCiAgICAgICAgIG51bWVyaWNWYWx1ZSA9IDE7CiAgICAgZWxzZQotICAgICAg
ICBudW1lcmljVmFsdWUgPSB2YWx1ZS50b0ludCgpOworICAgICAgICBudW1lcmljVmFsdWUgPSBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApOwog
CiAgICAgLy8gV2UgdHJlYXQga2V5IG9mICJyZXNpemFibGUiIGhlcmUgYXMgYW4gYWRkaXRpb25h
bCBmZWF0dXJlIHJhdGhlciB0aGFuIHNldHRpbmcgcmVzaXplYWJsZSB0byB0cnVlLgogICAgIC8v
IFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIEZpcmVmb3gsIGJ1dCBjb3VsZCBhbHNvIGJlIGhhbmRs
ZWQgYXQgYW5vdGhlciBsZXZlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKaW5kZXggYjlmNTQ4ODA3
ZTNkNjRlN2QyYzE0ODdkYTU2MzYwNzY2ZmFjMGNlMi4uNmEzMzZiNWEzZTE2MmIzYzIxZmEyNTk2
OTM1NjVlNzI0NTQzYmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nUGFyc2luZ0J1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00MzUsMTQgKzQzNiwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBP
cHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpQb3J0PgogICAgIAogICAg
IGlmICghYnVmZmVyLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
Ci0gICAgYm9vbCBvazsKLSAgICBpbnQgcG9ydEludCA9IGNoYXJhY3RlcnNUb0ludFN0cmljdChi
ZWdpbiwgYnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdpbiwgJm9rKTsKLSAgICBpZiAoIW9rIHx8IHBv
cnRJbnQgPCAwIHx8IHBvcnRJbnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4
KCkpCisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBidWZmZXIucG9zaXRpb24oKSAtIGJlZ2luOwor
ICAgIGF1dG8gcG9ydEludGVnZXIgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KHsgYmVnaW4sIGxl
bmd0aCB9KS52YWx1ZU9yKDApOworICAgIGlmICghcG9ydEludGVnZXIpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKICAgICBQb3J0IHBvcnQ7Ci0gICAgcG9ydC52YWx1ZSA9IHBvcnRJ
bnQ7CisgICAgcG9ydC52YWx1ZSA9IHBvcnRJbnRlZ2VyOwogICAgIHJldHVybiBwb3J0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJl
YWRMaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJl
YWRMaW51eC5jcHAKaW5kZXggYzdlNzNmMGMxYzI1YmJhMDVmMDZiODUzMjViNWMzMDNlNzdjZGE0
OC4uYjY1OWI3NzRmMjY0MDEzYTE3Y2Y1NmU2YzEzMTAyNWVlY2NiY2UwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNw
cApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvbGludXgvQ3VycmVudFByb2Nlc3NNZW1vcnlTdGF0
dXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjAwLDIwICsyMDEsMTUgQEAgc3RhdGljIHZvaWQg
Y29sbGVjdENQVVVzYWdlKGZsb2F0IHBlcmlvZCkKIAogICAgIHN0cnVjdCBkaXJlbnQqIGRwOwog
ICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGRpcikpKSB7Ci0gICAgICAgIFN0cmluZyBuYW1lID0g
U3RyaW5nOjpmcm9tVVRGOChkcC0+ZF9uYW1lKTsKLSAgICAgICAgaWYgKG5hbWUgPT0gIi4iIHx8
IG5hbWUgPT0gIi4uIikKKyAgICAgICAgYXV0byBpZCA9IHBhcnNlSW50ZWdlcjxwaWRfdD4oZHAt
PmRfbmFtZSk7CisgICAgICAgIGlmICghaWQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBib29sIG9rOwotICAgICAgICBwaWRfdCBpZCA9IG5hbWUudG9JbnRTdHJpY3QoJm9rKTsK
LSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGF1dG8m
IGluZm8gPSB0aHJlYWRJbmZvTWFwKCkuYWRkKGlkLCBUaHJlYWRJbmZvKCkpLml0ZXJhdG9yLT52
YWx1ZTsKLSAgICAgICAgaWYgKCF0aHJlYWRDUFVVc2FnZShpZCwgcGVyaW9kLCBpbmZvKSkKLSAg
ICAgICAgICAgIHRocmVhZEluZm9NYXAoKS5yZW1vdmUoaWQpOworICAgICAgICBhdXRvJiBpbmZv
ID0gdGhyZWFkSW5mb01hcCgpLmFkZCgqaWQsIFRocmVhZEluZm8oKSkuaXRlcmF0b3ItPnZhbHVl
OworICAgICAgICBpZiAoIXRocmVhZENQVVVzYWdlKCppZCwgcGVyaW9kLCBpbmZvKSkKKyAgICAg
ICAgICAgIHRocmVhZEluZm9NYXAoKS5yZW1vdmUoKmlkKTsKIAotICAgICAgICBwcmV2aW91c1Rh
c2tzLnJlbW92ZShpZCk7CisgICAgICAgIHByZXZpb3VzVGFza3MucmVtb3ZlKCppZCk7CiAgICAg
fQogICAgIGNsb3NlZGlyKGRpcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKaW5kZXggZGIzNjQ0NzM0NTQ1Mjg3ZmMzMTM2NjNlYTk2OWNiNjM0MTYwZmY1
NC4uYzEyNGU3OGQyN2QyYTU3ODNmNmI4YzRlMDM4YTdmMTE2YzMyOGMyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0lu
dGVnZXJDb252ZXJzaW9uLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgV1RG
OjpEYXRhTXV0ZXg7CkBAIC0xMDcxLDE3ICsxMDcyLDEyIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uCiAKICAgICAvLyBTaWduYWwgdG8gZG93bnN0cmVhbSBpZiB0aGlzIGlzIGFuIEljZWNhc3Qg
c3RyZWFtLgogICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2FwczsKLSAgICBTdHJpbmcgbWV0YWRhdGFJ
bnRlcnZhbEFzU3RyaW5nID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpJY3lNZXRhSW50KTsKLSAgICBpZiAoIW1ldGFkYXRhSW50ZXJ2YWxBc1N0cmluZy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgYm9vbCBpc01ldGFkYXRhSW50ZXJ2YWxQYXJzZWQ7Ci0gICAgICAgIGlu
dCBtZXRhZGF0YUludGVydmFsID0gbWV0YWRhdGFJbnRlcnZhbEFzU3RyaW5nLnRvSW50KCZpc01l
dGFkYXRhSW50ZXJ2YWxQYXJzZWQpOwotICAgICAgICBpZiAoaXNNZXRhZGF0YUludGVydmFsUGFy
c2VkICYmIG1ldGFkYXRhSW50ZXJ2YWwgPiAwKSB7Ci0gICAgICAgICAgICBjYXBzID0gYWRvcHRH
UmVmKGdzdF9jYXBzX25ld19zaW1wbGUoImFwcGxpY2F0aW9uL3gtaWN5IiwgIm1ldGFkYXRhLWlu
dGVydmFsIiwgR19UWVBFX0lOVCwgbWV0YWRhdGFJbnRlcnZhbCwgbnVsbHB0cikpOwotCi0gICAg
ICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKTsKLSAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiUiV1OiBSZXNwb25zZSBDb250ZW50VHlwZTogJXMiLCBtX3JlcXVlc3ROdW1iZXIsIGNv
bnRlbnRUeXBlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBs
ZShjYXBzLmdldCgpLCAiY29udGVudC10eXBlIiwgR19UWVBFX1NUUklORywgY29udGVudFR5cGUu
dXRmOCgpLmRhdGEoKSwgbnVsbHB0cik7Ci0gICAgICAgIH0KKyAgICBpZiAoYXV0byBtZXRhZGF0
YUludGVydmFsID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihyZXNwb25z
ZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFJbnQpKTsgbWV0YWRhdGFJ
bnRlcnZhbCAmJiAqbWV0YWRhdGFJbnRlcnZhbCA+IDApIHsKKyAgICAgICAgY2FwcyA9IGFkb3B0
R1JlZihnc3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LWljeSIsICJtZXRhZGF0YS1p
bnRlcnZhbCIsIEdfVFlQRV9JTlQsICptZXRhZGF0YUludGVydmFsLCBudWxscHRyKSk7CisKKyAg
ICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpDb250ZW50VHlwZSk7CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAi
UiV1OiBSZXNwb25zZSBDb250ZW50VHlwZTogJXMiLCBtX3JlcXVlc3ROdW1iZXIsIGNvbnRlbnRU
eXBlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlKGNhcHMuZ2V0
KCksICJjb250ZW50LXR5cGUiLCBHX1RZUEVfU1RSSU5HLCBjb250ZW50VHlwZS51dGY4KCkuZGF0
YSgpLCBudWxscHRyKTsKICAgICB9CiAgICAgaWYgKGNhcHMpIHsKICAgICAgICAgR1NUX0RFQlVH
X09CSkVDVChzcmMsICJSJXU6IFNldCBjYXBzIHRvICUiIEdTVF9QVFJfRk9STUFULCBtX3JlcXVl
c3ROdW1iZXIsIGNhcHMuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggYmMx
NmVjZjcxNTQ5ZGU2ODU0MWU4YTVhZGE0YTk2YWFjYmFjNGFkZS4uMTdkYzE2MzQ0MzdjNjRiOTE0
ODAzMjMwODZmN2Q1ODdkYThmNWFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC00
Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIEdTVF9ERUJVR19DQVRF
R09SWSh3ZWJraXRNZWRpYVRodW5kZXJEZWJ1Z0NhdGVnb3J5KTsKICNkZWZpbmUgR1NUX0NBVF9E
RUZBVUxUIHdlYmtpdE1lZGlhVGh1bmRlckRlYnVnQ2F0ZWdvcnkKQEAgLTM0OSw4ICszNTAsMTAg
QEAgcHVibGljOgogICAgICAgICBpZiAoIXJlcXVlc3RUeXBlLmlzRW1wdHkoKSAmJiByZXF1ZXN0
VHlwZS5sZW5ndGgoKSAhPSBwYXlsb2FkLmxlbmd0aCgpKQogICAgICAgICAgICAgb2Zmc2V0ID0g
dHlwZVBvc2l0aW9uICsgNjsKIAotICAgICAgICBpZiAocmVxdWVzdFR5cGUubGVuZ3RoKCkgPT0g
MSkKLSAgICAgICAgICAgIG1fdHlwZSA9IG1ha2VPcHRpb25hbChzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpNZWRpYUtleU1lc3NhZ2VUeXBlPihyZXF1ZXN0VHlwZS50b0ludCgpKSk7CisgICAgICAgIGlm
IChyZXF1ZXN0VHlwZS5sZW5ndGgoKSA9PSAxKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhl
cmUgYXJlIHNpbXBsZXIgd2F5cyB0byBjb252ZXJ0IGEgc2luZ2xlIGRpZ2l0IHRvIGEgbnVtYmVy
IHRoYW4gY2FsbGluZyBwYXJzZUludGVnZXIuCisgICAgICAgICAgICBtX3R5cGUgPSBtYWtlT3B0
aW9uYWwoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4ocGFyc2VJbnRl
Z2VyPGludD4ocmVxdWVzdFR5cGUpLnZhbHVlT3IoMCkpKTsKKyAgICAgICAgfQogCiAgICAgICAg
IG1fcGF5bG9hZCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBheWxvYWQuY2hhcmFjdGVyczgoKSAr
IG9mZnNldCwgcGF5bG9hZC5sZW5ndGgoKSAtIG9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAppbmRleCA4NDZhOWFl
MmYyNzU0ZTVhMzMzZjI3MzU5NTk2Y2IzNjg0ZmE5YTZiLi41ZDUyYzk4ODJhMzMxNTIwODU2YTFi
NjIzMGYxZGRiMjEwODBkOWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8
d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3Rm
L1dhbGxUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lv
bi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAvKiBUaGlzIGlzIHRoZSBt
YXhpbXVtIGxpbmUgbGVuZ3RoIHdlIGFjY2VwdCBmb3IgYSBjb29raWUgbGluZS4gUkZDIDIxMDkK
QEAgLTExNywxMCArMTE4LDggQEAgc3RhdGljIHZvaWQgcGFyc2VDb29raWVBdHRyaWJ1dGVzKGNv
bnN0IFN0cmluZyYgYXR0cmlidXRlLCBib29sJiBoYXNNYXhBZ2UsIENvb2sKICAgICAgICAgcmVz
dWx0LmRvbWFpbiA9IGF0dHJpYnV0ZVZhbHVlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAK
ICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlTmFtZSwgIm1h
eC1hZ2UiKSkgewotICAgICAgICBib29sIG9rOwotICAgICAgICBkb3VibGUgbWF4QWdlU2Vjb25k
cyA9IGF0dHJpYnV0ZVZhbHVlLnRvSW50NjQoJm9rKTsKLSAgICAgICAgaWYgKG9rKSB7Ci0gICAg
ICAgICAgICByZXN1bHQuZXhwaXJlcyA9IChXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBv
Y2goKS52YWx1ZSgpICsgbWF4QWdlU2Vjb25kcykgKiBXVEY6Om1zUGVyU2Vjb25kOworICAgICAg
ICBpZiAoYXV0byBtYXhBZ2VTZWNvbmRzID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1
bms8aW50NjRfdD4oYXR0cmlidXRlVmFsdWUpKSB7CisgICAgICAgICAgICByZXN1bHQuZXhwaXJl
cyA9IChXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpICsgKm1heEFn
ZVNlY29uZHMpICogV1RGOjptc1BlclNlY29uZDsKICAgICAgICAgICAgIHJlc3VsdC5zZXNzaW9u
ID0gZmFsc2U7CiAKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgbWF4LWFnZSBhdHRyaWJ1
dGUgYXMgd2VsbCBhcyBhbiBleHBpcmVzIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKaW5kZXggOWVm
NTA3OTdjY2ZkYzUyMDZkZDA0MzA2NzIyZmJmZTgyMTAwMjRhNS4uMWE2OTQzMjU3NGFlN2ZiMDlh
OTk4YjZiYzY1NzNjNDhjYThjNjgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgog
I2luY2x1ZGUgPHd0Zi9TSEExLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2Vy
Q29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE4NywxMCArMTg4LDgg
QEAgdm9pZCBDdXJsQ2FjaGVFbnRyeTo6c2V0UmVzcG9uc2VGcm9tQ2FjaGVkSGVhZGVycyhSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICAvLyBUcnkgdG8gcGFyc2UgZXhwZWN0ZWQgY29u
dGVudCBsZW5ndGgKICAgICBsb25nIGxvbmcgY29udGVudExlbmd0aCA9IC0xOwogICAgIGlmICgh
cmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50TGVuZ3RoKS5p
c051bGwoKSkgewotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgbG9uZyBs
b25nIHBhcnNlZENvbnRlbnRMZW5ndGggPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkNvbnRlbnRMZW5ndGgpLnRvSW50NjQoJnN1Y2Nlc3MpOwotICAgICAgICBpZiAo
c3VjY2VzcykKLSAgICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSBwYXJzZWRDb250ZW50TGVuZ3Ro
OworICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50TGVuZ3RoID0gcGFyc2VJbnRlZ2VySWdu
b3JpbmdUcmFpbGluZ0p1bms8bG9uZyBsb25nPihyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnRMZW5ndGgpKSkKKyAgICAgICAgICAgIGNvbnRlbnRMZW5ndGgg
PSAqcGFyc2VkQ29udGVudExlbmd0aDsKICAgICB9CiAgICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRD
b250ZW50TGVuZ3RoKGNvbnRlbnRMZW5ndGgpOyAvLyAtMSBvbiBwYXJzZSBlcnJvciBvciBudWxs
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRl
eCAzZDRhN2UzMThmMDQ1NDg4MmE4M2FkMzcwMzkxOThlZWQ3ZDczNDFlLi42MDZjMWY2OWFhNDMy
OTg3MjJhNWM1Yzg1YjllMGFmYzZkZjM2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RvT1RGRm9udENvbnZlcnNpb24uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NT
U3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiR2x5cGguaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiU1ZHRm9udEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGb250RmFjZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdHbHlwaEVsZW1lbnQuaCIKQEAgLTQ5MCw5ICs0OTEsOSBAQCB2b2lkIFNWR1Rv
T1RGRm9udENvbnZlcnRlcjo6YXBwZW5kTkFNRVRhYmxlKCkKIHZvaWQgU1ZHVG9PVEZGb250Q29u
dmVydGVyOjphcHBlbmRPUzJUYWJsZSgpCiB7CiAgICAgaW50MTZfdCBhdmVyYWdlQWR2YW5jZSA9
IHNfb3V0cHV0VW5pdHNQZXJFbTsKLSAgICBhdXRvIGhvcml6QWR2WCA9IHBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPGludD4obV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIpKTsKKyAgICBhdXRvIGhvcml6
QWR2WCA9IHBhcnNlSFRNTEludGVnZXIobV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIpKTsKICAgICBpZiAoIWhvcml6
QWR2WCAmJiBtX21pc3NpbmdHbHlwaEVsZW1lbnQpCi0gICAgICAgIGhvcml6QWR2WCA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV9taXNzaW5nR2x5cGhFbGVtZW50LT5h
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIp
KTsKKyAgICAgICAgaG9yaXpBZHZYID0gcGFyc2VIVE1MSW50ZWdlcihtX21pc3NpbmdHbHlwaEVs
ZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6Omhvcml6X2Fk
dl94QXR0cikpOwogICAgIGlmIChob3JpekFkdlgpCiAgICAgICAgIGF2ZXJhZ2VBZHZhbmNlID0g
Y2xhbXBUbzxpbnQxNl90PihzY2FsZVVuaXRzUGVyRW0oKmhvcml6QWR2WCkpOwogCkBAIC05NDQs
MTYgKzk0NSwxNiBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kVk9SR1RhYmxl
KCkKICAgICBhcHBlbmQxNigxKTsgLy8gTWFqb3IgdmVyc2lvbgogICAgIGFwcGVuZDE2KDApOyAv
LyBNaW5vciB2ZXJzaW9uCiAKLSAgICBhdXRvIHZlcnRPcmlnaW5ZID0gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8aW50PihtX2ZvbnRFbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lBdHRyKSk7CisgICAgYXV0byB2ZXJ0
T3JpZ2luWSA9IHBhcnNlSFRNTEludGVnZXIobV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29yaWdpbl95QXR0cikpOwogICAgIGlmICgh
dmVydE9yaWdpblkgJiYgbV9taXNzaW5nR2x5cGhFbGVtZW50KQotICAgICAgICB2ZXJ0T3JpZ2lu
WSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV9taXNzaW5nR2x5cGhF
bGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29y
aWdpbl95QXR0cikpOwotICAgIGFwcGVuZDE2KGNsYW1wVG88aW50MTZfdD4oc2NhbGVVbml0c1Bl
ckVtKHZlcnRPcmlnaW5ZLnZhbHVlT3IoMCkpKSk7CisgICAgICAgIHZlcnRPcmlnaW5ZID0gcGFy
c2VIVE1MSW50ZWdlcihtX21pc3NpbmdHbHlwaEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lBdHRyKSk7CisgICAgYXBwZW5kMTYo
Y2xhbXBUbzxpbnQxNl90PihzY2FsZVVuaXRzUGVyRW0odmVydE9yaWdpblkudmFsdWVfb3IoMCkp
KSk7CiAKICAgICBhdXRvIHRhYmxlU2l6ZU9mZnNldCA9IG1fcmVzdWx0LnNpemUoKTsKICAgICBh
cHBlbmQxNigwKTsgLy8gUGxhY2UgdG8gd3JpdGUgdGFibGUgc2l6ZS4KICAgICBmb3IgKEdseXBo
IGkgPSAwOyBpIDwgbV9nbHlwaHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGF1dG8qIGds
eXBoID0gbV9nbHlwaHNbaV0uZ2x5cGhFbGVtZW50KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byB2
ZXJ0aWNhbE9yaWdpblkgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGds
eXBoLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29yaWdp
bl95QXR0cikpKSB7CisgICAgICAgICAgICBpZiAoYXV0byB2ZXJ0aWNhbE9yaWdpblkgPSBwYXJz
ZUhUTUxJbnRlZ2VyKGdseXBoLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05h
bWVzOjp2ZXJ0X29yaWdpbl95QXR0cikpKSB7CiAgICAgICAgICAgICAgICAgYXBwZW5kMTYoaSk7
CiAgICAgICAgICAgICAgICAgYXBwZW5kMTYoY2xhbXBUbzxpbnQxNl90PihzY2FsZVVuaXRzUGVy
RW0oKnZlcnRpY2FsT3JpZ2luWSkpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCA0NGZiNDVlOWViZGY1OWMzMDdlOWNhNWRjODJhZmVlYjIyN2Fj
MDUwLi45MDAwMTY1YjBhNGI0N2RjZDg5ZjNiYWFmMGQyMDllYzMwMmQzMjdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMzMsNiArMjMzLDcgQEAKICNpbmNsdWRlIDx3
dGYvVVJMSGVscGVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5j
bHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgpAQCAtMzYyLDEwICszNjMsOSBAQCB1c2luZyBKU0M6
OlByb3BlcnR5U2xvdDsKIHVzaW5nIEpTQzo6U2NyaXB0RXhlY3V0YWJsZTsKIHVzaW5nIEpTQzo6
U3RhY2tWaXNpdG9yOwogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogCiBjbGFzcyBJbnNwZWN0b3JTdHViRnJvbnRlbmQgZmluYWwgOiBwdWJsaWMg
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCwgcHVibGljIEZyb250ZW5kQ2hhbm5lbCB7CkBA
IC0xNjAxLDcgKzE2MDEsNyBAQCB2b2lkIEludGVybmFsczo6c2V0V2ViUlRDVlA5VlRCU3VwcG9y
dChib29sIHZhbHVlKQogCiB2b2lkIEludGVybmFsczo6c2V0U0ZyYW1lQ291bnRlcihSVENSdHBT
RnJhbWVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU3RyaW5nJiBjb3VudGVyKQogewotICAg
IGlmIChhdXRvIHZhbHVlID0gU3RyaW5nVmlldyhjb3VudGVyKS50b1VJbnQ2NFN0cmljdCgpKQor
ICAgIGlmIChhdXRvIHZhbHVlID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pihjb3VudGVyKSkKICAg
ICAgICAgdHJhbnNmb3JtLnNldENvdW50ZXJGb3JUZXN0aW5nKCp2YWx1ZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2Vi
RHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDhiNzlhYWU0YWQ5Njc5NzFmYjVjY2Fh
MDJlMjcwYjRkNzIyNGE2ZDQuLmYxMWJmZWRjMTQ3Y2RhM2VlNzI3MzMyYmYxNzlmMWVmMTYyMWEy
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKKysr
IGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkNvbW1hbmRSZXN1bHQuaCIKICNpbmNsdWRlICJTZXNzaW9uSG9zdC5oIgog
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViRHJpdmVyIHsKQEAgLTExOCwyMSArMTE5LDIwIEBAIGludCBXZWJEcml2ZXJTZXJ2
aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICBhdXRvIHBvc2l0aW9uID0g
dGFyZ2V0U3RyaW5nLnJldmVyc2VGaW5kKCI6Il9zKTsKICAgICAgICAgaWYgKHBvc2l0aW9uICE9
IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBtX3RhcmdldEFkZHJlc3MgPSB0YXJnZXRTdHJpbmcu
bGVmdChwb3NpdGlvbik7Ci0gICAgICAgICAgICBtX3RhcmdldFBvcnQgPSB0YXJnZXRTdHJpbmcu
c3Vic3RyaW5nKHBvc2l0aW9uICsgMSkudG9VSW50KG51bGxwdHIpOworICAgICAgICAgICAgbV90
YXJnZXRQb3J0ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KFN0
cmluZ1ZpZXcgeyB0YXJnZXRTdHJpbmcgfS5zdWJzdHJpbmcocG9zaXRpb24gKyAxKSkudmFsdWVP
cigwKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgogCi0gICAgYm9vbCBvazsKLSAgICB1bnNp
Z25lZCBwb3J0ID0gcG9ydFN0cmluZy50b1VJbnQoJm9rKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBwb3J0ICVzIHByb3ZpZGVkXG4iLCBwb3J0U3Ry
aW5nLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXI8dWludDE2
X3Q+KHBvcnRTdHJpbmcpOworICAgIGlmICghcG9ydCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIkludmFsaWQgcG9ydCAlcyBwcm92aWRlZFxuIiwgcG9ydFN0cmluZy51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICB9CiAKICAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7CiAKLSAgICBpZiAoIW1fc2VydmVyLmxpc3Rlbihob3N0LCBwb3J0
KSkKKyAgICBpZiAoIW1fc2VydmVyLmxpc3Rlbihob3N0LCAqcG9ydCkpCiAgICAgICAgIHJldHVy
biBFWElUX0ZBSUxVUkU7CiAKICAgICBSdW5Mb29wOjpydW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvZ2xpYi9XZWJEcml2ZXJTZXJ2aWNlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViRHJp
dmVyL2dsaWIvV2ViRHJpdmVyU2VydmljZUdMaWIuY3BwCmluZGV4IDk0MTc5M2QzZWFkMGU5ODYz
MmFmMzMxNzkyZjNhNzRjNWI0YjZmNGEuLmQ2ZmQyMTk5N2YzOWVkMWUwNDFjNTE4NTk2M2E2OGMx
ZjRjZWRkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9XZWJEcml2ZXJTZXJ2
aWNlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1dlYkRyaXZlclNlcnZpY2VH
TGliLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYkRyaXZlclNlcnZpY2UuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdl
ckNvbnZlcnNpb24uaD4KKwogbmFtZXNwYWNlIFdlYkRyaXZlciB7CiAKIHN0YXRpYyBib29sIHBh
cnNlVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIHVpbnQ2NF90JiBtYWpvciwgdWludDY0
X3QmIG1pbm9yLCB1aW50NjRfdCYgbWljcm8pCkBAIC0zNSwyMCArMzcsMjYgQEAgc3RhdGljIGJv
b2wgcGFyc2VWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgdWludDY0X3QmIG1ham9yLCB1
aW50NjRfdCYgbWlub3IKICAgICBWZWN0b3I8U3RyaW5nPiB0b2tlbnMgPSB2ZXJzaW9uLnNwbGl0
KCcuJyk7CiAgICAgYm9vbCBvazsKICAgICBzd2l0Y2ggKHRva2Vucy5zaXplKCkpIHsKLSAgICBj
YXNlIDM6Ci0gICAgICAgIG1pY3JvID0gdG9rZW5zWzJdLnRvSW50NjQoJm9rKTsKLSAgICAgICAg
aWYgKCFvaykKKyAgICBjYXNlIDM6IHsKKyAgICAgICAgYXV0byBwYXJzZWRNaWNybyA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0b2tlbnNbMl0pOworICAgICAg
ICBpZiAoIXBhcnNlZE1pY3JvKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBt
aWNybyA9ICpwYXJzZWRNaWNybzsKKyAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNh
c2UgMjoKLSAgICAgICAgbWlub3IgPSB0b2tlbnNbMV0udG9JbnQ2NCgmb2spOwotICAgICAgICBp
ZiAoIW9rKQorICAgIGNhc2UgMjogeworICAgICAgICBhdXRvIHBhcnNlZE1pbm9yID0gcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRva2Vuc1sxXSk7CisgICAgICAg
IGlmICghcGFyc2VkTWlub3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1p
bm9yID0gKnBhcnNlZE1pbm9yOworICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2Fz
ZSAxOgotICAgICAgICBtYWpvciA9IHRva2Vuc1swXS50b0ludDY0KCZvayk7Ci0gICAgICAgIGlm
ICghb2spCisgICAgY2FzZSAxOiB7CisgICAgICAgIGF1dG8gcGFyc2VkTWFqb3IgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odG9rZW5zWzBdKTsKKyAgICAgICAg
aWYgKCFwYXJzZWRNYWpvcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbWFq
b3IgPSAqcGFyc2VkTWFqb3I7CisgICAgfQogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tl
dC9IVFRQUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBQYXJzZXIuY3Bw
CmluZGV4IDM3YmVkMjkxZTk2MzZiZjcyN2ZiZDFkZDk4MDAwMmY4ZGY3Yzk1OWEuLjc3ZjM1MWQ5
NThhZmYxYWZlYTNmOGQwNzE3NDAwOTIxYzJhZWM2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJE
cml2ZXIvc29ja2V0L0hUVFBQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBQYXJzZXIuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSFRUUFBhcnNlci5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oPgorCiBuYW1lc3BhY2UgV2ViRHJpdmVyIHsKIAogSFRUUFBhcnNlcjo6
UGhhc2UgSFRUUFBhcnNlcjo6cGFyc2UoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTE0NSwx
MCArMTQ3LDggQEAgc2l6ZV90IEhUVFBQYXJzZXI6OmV4cGVjdGVkQm9keUxlbmd0aCgpIGNvbnN0
CiAgICAgY29uc3Qgc2l6ZV90IG5hbWVMZW5ndGggPSBzdGQ6OnN0cmxlbihuYW1lKTsKIAogICAg
IGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDogbV9tZXNzYWdlLnJlcXVlc3RIZWFkZXJzKSB7Ci0g
ICAgICAgIGlmIChoZWFkZXIuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG5hbWUpKSB7Ci0g
ICAgICAgICAgICBhdXRvIHZhbHVlID0gaGVhZGVyLnN1YnN0cmluZ1NoYXJpbmdJbXBsKG5hbWVM
ZW5ndGgpLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvSW50
KCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGhlYWRlci5zdGFydHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSkpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFp
bGluZ0p1bms8c2l6ZV90PihTdHJpbmdWaWV3IHsgaGVhZGVyIH0uc3Vic3RyaW5nKG5hbWVMZW5n
dGgpKS52YWx1ZU9yKDApOwogICAgIH0KIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAppbmRleCA1
ODM0OTVjMjZjZTMyZThiNWE1MmEwNmJhZmM2N2E4M2U3ODhjMTNlLi5iOTc4MTVlOTA0OWQ1ODUw
YjRiMzZjNDNiNDQzNTk1MzkyNGJiMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMzLDEwICsxMzQs
NyBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxpbnQ+IHBhcnNlVmVyc2lvblN0cmluZyhjb25zdCBT
dHJpbmcmIHZlcnNpb25TdHJpbmcpCiAgICAgICAgIGZvciAoZW5kUG9zID0gc3RhcnRQb3M7IGVu
ZFBvcyA8IHZlcnNpb25TdHJpbmcubGVuZ3RoKCk7ICsrZW5kUG9zKQogICAgICAgICAgICAgaWYg
KHZlcnNpb25TdHJpbmdbZW5kUG9zXSA9PSAnLicgfHwgdmVyc2lvblN0cmluZ1tlbmRQb3NdID09
ICdfJykKICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICBpbnQgdmVyc2lvbkNvbXBv
bmVudCA9IHZlcnNpb25TdHJpbmcuc3Vic3RyaW5nKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBv
cykudG9JbnQoKTsKLSAgICAgICAgdmVyc2lvbi5hcHBlbmQodmVyc2lvbkNvbXBvbmVudCk7Ci0K
KyAgICAgICAgdmVyc2lvbi5hcHBlbmQocGFyc2VJbnRlZ2VyQWxsb3dpblRyYWlsaW5nSnVuazxp
bnQ+KFN0cmluZ1ZpZXcgeyB2ZXJzaW9uU3RyaW5nIH0uc3Vic3RyaW5nKHN0YXJ0UG9zLCBlbmRQ
b3MgLSBzdGFydFBvcykpLnZhbHVlT3IoMCkpOwogICAgICAgICBzdGFydFBvcyA9IGVuZFBvcyAr
IDE7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAppbmRleCAyZjQwNWZiOGNlNGU3NDJhMDgxMTA1OThiOGM1MjdhOTI2YWFmZDRlLi5l
Mzg0MDIyYzM0MDIzYjFlMzVlMmEyZTA5NmEyMjliYjllMDMwN2E2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTc0LDYgKzc0LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbXBsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9y
dW50aW1lX3Jvb3QuaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtMTA3MSw3
ICsxMDcyLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5kbGVQb3N0KGNvbnN0IGNoYXIqIHVy
bCwgY29uc3QgY2hhciogdGFyZ2V0LCB1aW50MzJfdCBsZW4KICAgICAgICAgICAgICAgICBTdHJp
bmcgY29udGVudExlbmd0aCA9IGhlYWRlckZpZWxkcy5nZXQoSFRUUEhlYWRlck5hbWU6OkNvbnRl
bnRMZW5ndGgpOwogCiAgICAgICAgICAgICAgICAgaWYgKCFjb250ZW50TGVuZ3RoLmlzTnVsbCgp
KQotICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0gc3RkOjptaW4oY29udGVudExlbmd0
aC50b0ludCgpLCAoaW50KWRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBkYXRhTGVu
Z3RoID0gc3RkOjptaW4ocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+
KGNvbnRlbnRMZW5ndGgpLnZhbHVlT3IoMCksIGRhdGFMZW5ndGgpOwogICAgICAgICAgICAgICAg
IGhlYWRlckZpZWxkcy5yZW1vdmUoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRMZW5ndGgpOwogCiAg
ICAgICAgICAgICAgICAgcG9zdERhdGEgKz0gbG9jYXRpb247CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjJiNGI0Y2YzY2I3ZDMxYjI3ZjQyZGI3
NzA1NDNlNWNiOWFiMGFhNC4uMDFkNzNlOTFmNDA1MjU5ZjE0NGFlMjYzM2IyNzE3ZjNhNGM2Zjhk
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDIxLTA1LTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB1c2VzIG9mIHRoZSBTdHJpbmc6OnRvSW50
IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTU4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPGludD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCBjb25zdCk6
IERpdHRvLgorCiAyMDIxLTA1LTA5ICBLaGVtIFJhaiAgPHJhai5raGVtQGdtYWlsLmNvbT4KIAog
ICAgICAgICBbVG9vbHNdIEdlbmVyYXRlIG1hcnNoYWxsaW5nIGNvZGUgd2l0aG91dCBzb3VyY2Ug
cmVmZXJlbmNlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCmlu
ZGV4IDRkY2Y0YzAzNzYxMTc3MTY2NWYzM2I4Mjc4YWRiZjNmODYzNWZlZDguLjk1NTYxYThlZjYw
OTBjMjcxZTk2M2Y5MmFhYjY2NjQ0MDVhMGE1MTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9J
bnRlZ2VyQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVz
Lmg+CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtMTEzOSw3ICsxMTQwLDcgQEAgZG91YmxlIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJp
YnV0ZSkKICAgICBpZiAoYXRrQXR0cmlidXRlTmFtZS5zdGFydHNXaXRoKCJyb3ciKSB8fCBhdGtB
dHRyaWJ1dGVOYW1lLnN0YXJ0c1dpdGgoImNvbCIpKSB7CiAgICAgICAgIFN0cmluZyBhdHRyaWJ1
dGVWYWx1ZSA9IGdldEF0dHJpYnV0ZVNldFZhbHVlRm9ySWQoQVRLX09CSkVDVChtX2VsZW1lbnQu
Z2V0KCkpLCBPYmplY3RBdHRyaWJ1dGVUeXBlLCBhdGtBdHRyaWJ1dGVOYW1lKTsKICAgICAgICAg
aWYgKCFhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gYXR0cmli
dXRlVmFsdWUudG9JbnQoKTsKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazxpbnQ+KGF0dHJpYnV0ZVZhbHVlKS52YWx1ZU9yKDApOwogICAgIH0KIAog
ICAgIHJldHVybiAwOwpAQCAtMTYzMiwxMSArMTYzMyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNJbmRldGVybWluYXRlKCkgY29uc3QKIAogaW50IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKIHsKLSAgICBTdHJpbmcgbGV2ZWwgPSBn
ZXRBdHRyaWJ1dGVTZXRWYWx1ZUZvcklkKEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSwgT2Jq
ZWN0QXR0cmlidXRlVHlwZSwgImxldmVsIik7Ci0gICAgaWYgKCFsZXZlbC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBsZXZlbC50b0ludCgpOwotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oZ2V0QXR0cmlidXRlU2V0VmFs
dWVGb3JJZChBVEtfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSksIE9iamVjdEF0dHJpYnV0ZVR5cGUs
ICJsZXZlbCIpKS52YWx1ZU9yKDApOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWtBcygpCg==
</data>
<flag name="commit-queue"
          id="448972"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428139</attachid>
            <date>2021-05-09 14:37:48 -0700</date>
            <delta_ts>2021-05-09 15:52:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225580-20210509143747.patch</filename>
            <type>text/plain</type>
            <size>94423</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkzZjJhODQ0ZjUwOWE1
ZmQxZGUzZGJjM2E5ZjY1Y2RmOTkyZjE3Ni4uZDBhOTdjYzJkYjA3MDY3MDk5YjU5YzUwNjA5MWE5
ZjAwY2U3NDIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMS0wNS0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGFsbCByZW1haW5p
bmcgdXNlcyBvZiB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNl
SW5mbyk6CisgICAgICAgIFVzZSBwYXJzZUludGVnZXI8dWludDY0X3Q+IGluc3RlYWQgb2YgU3Ry
aW5nOjp0b1VJbnQ2NFN0cmljdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUpOgorICAgICAg
ICBEaXR0by4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVG
cmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgVXNlIGEgcmVm
ZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2UpOiBVc2UKKyAgICAgICAgQVND
SUlMaXRlcmFsLiBVc2UgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PiBpbnN0
ZWFkIG9mCisgICAgICAgIFN0cmluZzo6dG9JbnQuIFVzZSBhdXRvLiBVc2UgcmVmZXJlbmNlcyBp
bnN0ZWFkIG9mIHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6RGVmbGF0ZVJlc3VsdEhvbGRl
cjo6RGVmbGF0ZVJlc3VsdEhvbGRlcik6IFVzZSBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNv
cmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6On5EZWZsYXRlUmVzdWx0SG9sZGVyKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjpJbmZsYXRlUmVzdWx0SG9sZGVy
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjp+SW5mbGF0
ZVJlc3VsdEhvbGRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IpOiBQ
YXNzIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6ZGVmbGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6aW5mbGF0ZSk6IERpdHRvLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuaDogVXNlIGZvcndhcmQgZGVjbGFyYXRpb25zCisgICAgICAg
IGluc3RlYWQgb2YgaW5jbHVkZXMsIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycywgaW5p
dGlhbGl6ZSBkYXRhIG1lbWJlcnMKKyAgICAgICAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24sIGFu
ZCByZW1vdmUgYW4gdW5uZWNlc3NhcnkgZXhwbGljaXQgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aGVhZGVySGFzVmFsaWRIVFRQVmVyc2lvbik6IFVzZSBwYXJzZUludGVn
ZXI8aW50PiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ1ZpZXc6OnRvSW50U3RyaWN0LgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZSk6IERpdHRv
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVhZGluZ0xldmVs
IGNvbnN0KTogVXNlCisgICAgICAgIGdldEludGVncmFsQXR0cmlidXRlIGluc3RlYWQgb2YgQXRv
bVN0cmluZzo6dG9JbnQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6aGllcmFyY2hpY2FsTGV2ZWwgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6Z2V0SW50ZWdyYWxBdHRyaWJ1dGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAg
U2luY2UgQWNjZXNzaWJpbGl0eU9iamVjdCBoYXMgaXRzIG93biBnZXRBdHRyaWJ1dGUgZnVuY3Rp
b24sIHdlIG5lZWQgdG8KKyAgICAgICAgcmUtaW1wbGVtZW50IEVsZW1lbnQ6OmdldEludGVncmFs
QXR0cmlidXRlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
ZXRTaXplIGNvbnN0KTogVXNlIGdldEludGVncmFsQXR0cmlidXRlCisgICAgICAgIGluc3RlYWQg
b2YgQXRvbVN0cmluZzo6dG9JbnQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpwb3NJblNldCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0Lmg6IEFkZGVkIGdldEludGVncmFsQXR0cmlidXRlLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSBjb25zdCk6VXNlIGdldEludGVn
cmFsQXR0cmlidXRlCisgICAgICAgIGluc3RlYWQgb2YgQXRvbVN0cmluZzo6dG9JbnQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmF4Q29sdW1uQ291bnQgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YXhSb3dDb3VudCBj
b25zdCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENv
bHVtbkluZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsOjpheFJvd0luZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENvbHVtblNwYW4gY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93U3BhbiBjb25zdCk6IERp
dHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YXhDb2x1bW5JbmRleCBj
b25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93Ojph
eFJvd0luZGV4IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVj
dG9yUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVBTlBsdXNCKTogVXNlIHBh
cnNlSW50ZWdlcjxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludFN0cmljdAorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2Vu
aXplcjo6Y29uc3VtZUVzY2FwZSk6IFVzZSBwYXJzZUludGVnZXI8dWludDMyX3Q+IGluc3RlYWQg
b2YKKyAgICAgICAgU3RyaW5nOjp0b1VJbnRTdHJpY3QuCisKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpj
YW5QcmVzZW50RGF0YURldGVjdG9yc1VJRm9yRWxlbWVudCk6CisgICAgICAgIFVzZSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludC4K
KyAgICAgICAgQWxzbyB1c2UgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIFN0cmluZy4KKyAgICAgICAg
KFdlYkNvcmU6OmRhdGFEZXRlY3RvclN0cmluZ0ZvclBhdGgpOiBVc2UgbWFrZVN0cmluZyBpbnN0
ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JF
bGVtZW50KTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LgorCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKTogVXNlIHBhcnNlSFRNTEludGVnZXIgaW5zdGVhZAorICAgICAgICBvZiBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+LgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxMSUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExJRWxlbWVudDo6cGFyc2VWYWx1ZSk6IERpdHRvLgorICAgICAg
ICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
YXJxdWVlRWxlbWVudDo6bG9vcCBjb25zdCk6IFVzZSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZQorICAg
ICAgICBpbnN0ZWFkIG9mIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4uCisg
ICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmli
dXRlKToKKyAgICAgICAgVXNlIHBhcnNlSFRNTEludGVnZXIgaW5zdGVhZCBvZiBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+LgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ29s
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDb2xFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERp
dHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVz
dG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgVXNlIHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZzo6dG9V
SW50LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZvclBhdGgpOiBVc2UK
KyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+IGluc3Rl
YWQgb2YgU3RyaW5nOjp0b1VJbnQuCisKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVy
OjpjcmVhdGVMYXlvdXRCb3gpOiBVc2UgcGFyc2VIVE1MSW50ZWdlcgorICAgICAgICBpbnN0ZWFk
IG9mIEF0b21TdHJpbmc6OnRvSW50LgorCisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBY2Nlc3NDb250
cm9sTWF4QWdlKTogVXNlIHBhcnNlSW50ZWdlcjx1aW50NjRfdD4gaW5zdGVhZAorICAgICAgICBv
ZiBTdHJpbmc6OnRvVUludFN0cmljdC4KKworICAgICAgICAqIGxvYWRlci9GVFBEaXJlY3RvcnlQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPbmVGVFBMaW5lKTogVXNlIHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPgorICAgICAgICBpbnN0ZWFkIG9m
IFN0cmluZzo6dG9VSW50LgorCisgICAgICAgICogbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJz
ZUF0dHJpYnV0aW9uUmVxdWVzdCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDY0X3Q+
IGluc3RlYWQgb2YgU3RyaW5nOjp0b1VJbnQ2NFN0cmljdC4KKworICAgICAgICAqIG1hdGhtbC9N
YXRoTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNlbGVjdEVs
ZW1lbnQ6OmdldFNlbGVjdGVkQWN0aW9uQ2hpbGRBbmRJbmRleCk6CisgICAgICAgIFVzZSBnZXRJ
bnRlZ3JhbEF0dHJpYnV0ZSBpbnN0ZWFkIG9mIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4uCisKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGluZSk6IFVzZQorICAgICAgICBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4gaW5zdGVhZCBvZiBjaGFy
YWN0ZXJzVG9VSW50NjQuCisKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0KTogVXNlIHBhcnNlSW50ZWdlcjx1aW50MTZfdD4g
aW5zdGVhZCBvZiBwYXJzZVVJbnQxNi4KKworICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFi
YXNlSWRlbnRpZmllcik6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazx1aW50MTZfdD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LCB3aGljaAorICAgICAgICBh
bGxvd3MgdXMgdG8gcmVtb3ZlIHNvbWUgcmFuZ2UgY2hlY2tpbmcgYW5kIHR5cGUgY29udmVyc2lv
bi4KKworICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0V2luZG93RmVhdHVyZSk6IFVzZSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azxpbnQ+CisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nVmlldzo6dG9JbnQuCisKKyAgICAgICAg
KiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlUG9ydCk6IFVz
ZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDE2X3Q+IGluc3RlYWQgb2YgY2hhcmFjdGVyc1Rv
SW50U3RyaWN0LgorCisgICAgICAgICogcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGlu
dXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdENQVVVzYWdlKTogVXNlIHBhcnNlSW50
ZWdlcjxwaWRfdD4gaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmc6OnRvSW50U3RyaWN0LiBBbHNv
IHJlbW92ZWQgdW5uZWVkZWQgc3BlY2lhbCBjYXNlcyBmb3IgIi4iIGFuZAorICAgICAgICAiLi4i
IHNpbmNlIGJvdGggd2lsbCBmYWlsIHRvIHBhcnNlIGFzIGFuIGludGVnZXIsIGFuZCB0aGlzIG5v
IGxvbmdlcgorICAgICAgICBuZWVkIHRvIHB1dCBkX25hbWUgaW50byBhIFdURjo6U3RyaW5nLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHA6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVz
cG9uc2VSZWNlaXZlZCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OlBhcnNlZFJlc3BvbnNlTWVzc2FnZSk6IFVzZQorICAg
ICAgICBwYXJzZUludGVnZXI8aW50PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQgdG8gcGFyc2Ug
YSBzaW5nbGUtZGlnaXQuCisgICAgICAgIFByb2JhYmx5IHNob3VsZCB3cml0ZSB0aGlzIGFub3Ro
ZXIgd2F5LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRpbDo6cGFyc2VDb29raWVBdHRyaWJ1dGVzKTog
VXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludDY0X3Q+IGlu
c3RlYWQgb2YgU3RyaW5nOjp0b0ludDY0LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5
OjpzZXRSZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGxvbmcgbG9uZz4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50
NjQuCisKKyAgICAgICAgKiBzdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZE9TMlRhYmxlKTogVXNlIHBh
cnNlSFRNTEludGVnZXIKKyAgICAgICAgaW5zdGVhZCBvZiBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazxpbnQ+LiBNaWdodCBiZSBldmVuIGJldHRlcgorICAgICAgICB0byByZWZhY3Rv
ciB0byB1c2UgZ2V0SW50ZWdyYWxBdHRyaWJ1dGUgbGF0ZXIuCisgICAgICAgIChXZWJDb3JlOjpT
VkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZFZPUkdUYWJsZSk6IERpdHRvLgorCisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRTRnJhbWVDb3VudGVyKTogVXNlIHBhcnNlSW50ZWdlcjx1aW50NjRfdD4KKyAgICAgICAgaW5z
dGVhZCBvZiBTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdC4KKwogMjAyMS0wNS0wOSAgRnVqaWkg
SGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9d
W0NsYW5nXSBsbGQtbGluazogZXJyb3I6IHVuZGVmaW5lZCBzeW1ib2w6IHB1YmxpYzogc3RhdGlj
IGNsYXNzIEdlbmVyaWNUeXBlZEFycmF5Vmlldzw+Ojp0cnlDcmVhdGUoKSBpbiBDcnlwdG9LZXlS
U0FPcGVuU1NMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCA0ZGQzM2I0MWY5OGU1NmQ0YWFiOTg0YmNj
MTU2OGQ5NDUyM2MzOTNkLi43MjIwZWViYjY2ZWI5ZDU0YTEzNmMyYWI5MTIyNDJlMDM4Y2ZhZTJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA1LTA5ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB1c2Vz
IG9mIHRoZSBTdHJpbmc6OnRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU4MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRHJpdmVyU2VydmljZS5jcHA6
CisgICAgICAgIChXZWJEcml2ZXI6OldlYkRyaXZlclNlcnZpY2U6OnJ1bik6IFVzZQorICAgICAg
ICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4gaW5zdGVhZCBvZiBT
dHJpbmc6OnRvVUludC4KKworICAgICAgICAqIGdsaWIvV2ViRHJpdmVyU2VydmljZUdMaWIuY3Bw
OgorICAgICAgICAoV2ViRHJpdmVyOjpwYXJzZVZlcnNpb24pOiBVc2UKKyAgICAgICAgcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+IGluc3RlYWQgb2YgU3RyaW5nOjp0
b0ludDY0LAorICAgICAgICBhbmQgdGhlbiBhc3NpZ25pbmcgaW50byBhIHVpbnQ2NF90LgorCisg
ICAgICAgICogc29ja2V0L0hUVFBQYXJzZXIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpIVFRQ
UGFyc2VyOjpleHBlY3RlZEJvZHlMZW5ndGggY29uc3QpOiBVc2UKKyAgICAgICAgcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8c2l6ZV90PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQu
CisgICAgICAgIEFsc28gdXNlIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBTdHJpbmc6OnN1YnN0cmlu
Z1NoYXJpbmdJbXBsIGFuZAorICAgICAgICBkcm9wcGVkIGFuIHVubmVlZGVkIGNhbGwgdG8gU3Ry
aW5nOjpzdHJpcFdoaXRlU3BhY2UuCisKIDIwMjEtMDMtMjUgIERvbiBPbG1zdGVhZCAgPGRvbi5v
bG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVzZSBXZWJEcml2ZXJfREVSSVZF
RF9TT1VSQ0VTIHZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZGFlNjhmMWEz
OTJiYmQ1ZWQwNzVkMDQ0MWY5YTM4Mjg0ZWM5ZDFkOS4uYjk1ZDMwYzcwNjc5ZmQ0MDQ3MTIxYzll
YWFlNDgwOTBhNjJkYTk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDIxLTA1LTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB1c2VzIG9mIHRoZSBTdHJpbmc6OnRvSW50IGZhbWls
eSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTU4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZVZlcnNpb25TdHJpbmcpOiBVc2UgcGFyc2VJbnRlZ2VyQWxsb3dpblRyYWlsaW5nSnVu
azxpbnQ+CisgICAgICAgIGlzbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQuCisKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFu
ZGxlUG9zdCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1
bnNpZ25lZD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LAorICAgICAgICBhbmQgdGhlbiBhc3Np
Z25pbmcgdG8gYW4gdW5zaWduZWQuCisKIDIwMjEtMDUtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIHJlZmVyZW5j
ZXMgdG8gUGFnZUdyb3VwIGZyb20gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDM2ZDliMDQ0NmY1MDExM2I0ZWNmY2YyNGU1OGFkNzI2NDY5MTcyYzAu
LmIyNmNkNzI3YmM0MzJhMTU0OGU4MjgyMmM1YmZlOTkzODI4MWQ1NzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CkBAIC0xMDAzLDEyICsxMDA0LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
REJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0
YWJhc2VJCiAgICAgICAgIGlmIChzcWwuaXNDb2x1bW5OdWxsKDApKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIFN0cmluZyBzdHJpbmdWZXJzaW9uID0gc3FsLmdldENvbHVt
blRleHQoMCk7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGRhdGFiYXNlVmVyc2lvbiA9IHN0
cmluZ1ZlcnNpb24udG9VSW50NjRTdHJpY3QoJm9rKTsKLSAgICAgICAgaWYgKCFvaykgeworICAg
ICAgICBhdXRvIHBhcnNlZFZlcnNpb24gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHN0cmluZ1Zl
cnNpb24pOworICAgICAgICBpZiAoIXBhcnNlZFZlcnNpb24pIHsKICAgICAgICAgICAgIExPR19F
UlJPUigiRGF0YWJhc2UgdmVyc2lvbiBvbiBkaXNrICgnJXMnKSBkb2VzIG5vdCBjbGVhbmx5IGNv
bnZlcnQgdG8gYW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgdmVyc2lvbiIsIHN0cmluZ1ZlcnNp
b24udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQorICAgICAgICBkYXRhYmFzZVZlcnNpb24gPSAqcGFyc2VkVmVyc2lvbjsKICAgICB9CiAKICAg
ICBhdXRvIGRhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFz
ZU5hbWUsIGRhdGFiYXNlVmVyc2lvbiwgMCk7CkBAIC0xMTY2LDE0ICsxMTY3LDEzIEBAIE9wdGlv
bmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0
YWJhc2VOYW1lQW5kVmVyc2lvCiAKICAgICBTUUxpdGVTdGF0ZW1lbnQgdmVyc3FsKGRhdGFiYXNl
LCAiU0VMRUNUIHZhbHVlIEZST00gSURCRGF0YWJhc2VJbmZvIFdIRVJFIGtleSA9ICdEYXRhYmFz
ZVZlcnNpb24nOyJfcyk7CiAgICAgU3RyaW5nIHN0cmluZ1ZlcnNpb24gPSB2ZXJzcWwuZ2V0Q29s
dW1uVGV4dCgwKTsKLSAgICBib29sIG9rOwotICAgIHVpbnQ2NF90IGRhdGFiYXNlVmVyc2lvbiA9
IHN0cmluZ1ZlcnNpb24udG9VSW50NjRTdHJpY3QoJm9rKTsKLSAgICBpZiAoIW9rKSB7CisgICAg
YXV0byBkYXRhYmFzZVZlcnNpb24gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHN0cmluZ1ZlcnNp
b24pOworICAgIGlmIChkYXRhYmFzZVZlcnNpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJEYXRh
YmFzZSB2ZXJzaW9uIG9uIGRpc2sgKCclcycpIGRvZXMgbm90IGNsZWFubHkgY29udmVydCB0byBh
biB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciB2ZXJzaW9uIiwgc3RyaW5nVmVyc2lvbi51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAgICByZXR1
cm4gSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbiB7IGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VWZXJz
aW9uIH07CisgICAgcmV0dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24geyBkYXRhYmFzZU5h
bWUsICpkYXRhYmFzZVZlcnNpb24gfTsKIH0KIAogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIu
Y3BwCmluZGV4IGJhMzkwNjI4ZWJjYTk2ZjBjMjdiM2JkZjAwMzU2Y2I0YzY0ZmRiOTUuLjUwZjM0
NDIzMmRjODYxNWM0MjJmOTRmOTJhOWRjN2MxMWFiNDBkY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ci5jcHAKQEAgLTMzLDMzICszMywzMCBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVG
cmFtZSA6IHB1YmxpYyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IgeworY2xhc3MgV2ViU29j
a2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lIGZpbmFsIDogcHVibGljIFdlYlNvY2tldEV4dGVuc2lv
blByb2Nlc3NvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVG
cmFtZXIqKTsKLSAgICB2aXJ0dWFsIH5XZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoKSA9
IGRlZmF1bHQ7Ci0KLSAgICBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBvdmVy
cmlkZTsKLSAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZmFp
bHVyZVJlYXNvbjsgfQorICAgIGV4cGxpY2l0IFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFt
ZShXZWJTb2NrZXREZWZsYXRlRnJhbWVyJik7CiAKIHByaXZhdGU6Ci0gICAgV2ViU29ja2V0RGVm
bGF0ZUZyYW1lciogbV9mcmFtZXI7Ci0gICAgYm9vbCBtX3Jlc3BvbnNlUHJvY2Vzc2VkOworICAg
IFN0cmluZyBoYW5kc2hha2VTdHJpbmcoKSBmaW5hbDsKKyAgICBib29sIHByb2Nlc3NSZXNwb25z
ZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpIGZpbmFsOworICAgIFN0cmluZyBmYWls
dXJlUmVhc29uKCkgZmluYWwgeyByZXR1cm4gbV9mYWlsdXJlUmVhc29uOyB9CisKKyAgICBXZWJT
b2NrZXREZWZsYXRlRnJhbWVyJiBtX2ZyYW1lcjsKKyAgICBib29sIG1fcmVzcG9uc2VQcm9jZXNz
ZWQgeyBmYWxzZSB9OwogICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247CiB9OwogCiAvLyBGWElN
RTogUmVtb3ZlIHZlbmRvciBwcmVmaXggYWZ0ZXIgdGhlIHNwZWNpZmljYXRpb24gbWF0dXJlZC4K
LVdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikKLSAgICA6IFdlYlNvY2tldEV4
dGVuc2lvblByb2Nlc3NvcigieC13ZWJraXQtZGVmbGF0ZS1mcmFtZSIpCitXZWJTb2NrZXRFeHRl
bnNpb25EZWZsYXRlRnJhbWU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZShXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyJiBmcmFtZXIpCisgICAgOiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3IoIngtd2Via2l0LWRlZmxhdGUtZnJhbWUiX3MpCiAgICAgLCBtX2ZyYW1lcihmcmFtZXIpCi0g
ICAgLCBtX3Jlc3BvbnNlUHJvY2Vzc2VkKGZhbHNlKQogewotICAgIEFTU0VSVChtX2ZyYW1lcik7
CiB9CiAKIFN0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmhhbmRzaGFrZVN0
cmluZygpCkBAIC03MCwxOCArNjcsMTggQEAgU3RyaW5nIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxh
dGVGcmFtZTo6aGFuZHNoYWtlU3RyaW5nKCkKIGJvb2wgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHNl
cnZlclBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKG1fcmVzcG9uc2VQcm9jZXNzZWQpIHsKLSAgICAg
ICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGR1cGxpY2F0ZSBkZWZsYXRlLWZyYW1lIHJl
c3BvbnNlIjsKKyAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGR1cGxpY2F0ZSBk
ZWZsYXRlLWZyYW1lIHJlc3BvbnNlIl9zOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIG1fcmVzcG9uc2VQcm9jZXNzZWQgPSB0cnVlOwogCiAgICAgdW5zaWduZWQgZXhwZWN0ZWRO
dW1QYXJhbWV0ZXJzID0gMDsKICAgICBpbnQgd2luZG93Qml0cyA9IDE1OwotICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0
ZXJzLmZpbmQoIm1heF93aW5kb3dfYml0cyIpOworICAgIGF1dG8gcGFyYW1ldGVyID0gc2VydmVy
UGFyYW1ldGVycy5maW5kKCJtYXhfd2luZG93X2JpdHMiKTsKICAgICBpZiAocGFyYW1ldGVyICE9
IHNlcnZlclBhcmFtZXRlcnMuZW5kKCkpIHsKLSAgICAgICAgd2luZG93Qml0cyA9IHBhcmFtZXRl
ci0+dmFsdWUudG9JbnQoKTsKKyAgICAgICAgd2luZG93Qml0cyA9IHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPGludD4ocGFyYW1ldGVyLT52YWx1ZSkudmFsdWVPcigwKTsKICAgICAg
ICAgaWYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkgewotICAgICAgICAgICAg
bV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGludmFsaWQgbWF4X3dpbmRvd19iaXRzIHBhcmFt
ZXRlciI7CisgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgaW52YWxpZCBt
YXhfd2luZG93X2JpdHMgcGFyYW1ldGVyIl9zOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIGV4cGVjdGVkTnVtUGFyYW1ldGVycysrOwpAQCAtOTEsNyArODgs
NyBAQCBib29sIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNl
KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbgogICAgIHBhcmFtZXRlciA9IHNlcnZlclBhcmFt
ZXRlcnMuZmluZCgibm9fY29udGV4dF90YWtlb3ZlciIpOwogICAgIGlmIChwYXJhbWV0ZXIgIT0g
c2VydmVyUGFyYW1ldGVycy5lbmQoKSkgewogICAgICAgICBpZiAoIXBhcmFtZXRlci0+dmFsdWUu
aXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZh
bGlkIG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVyIjsKKyAgICAgICAgICAgIG1fZmFpbHVy
ZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVy
Il9zOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIG1vZGUg
PSBXZWJTb2NrZXREZWZsYXRlcjo6RG9Ob3RUYWtlT3ZlckNvbnRleHQ7CkBAIC05OSwyNCArOTYs
MjIgQEAgYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OnByb2Nlc3NSZXNwb25z
ZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW4KICAgICB9CiAKICAgICBpZiAoZXhwZWN0ZWRO
dW1QYXJhbWV0ZXJzICE9IHNlcnZlclBhcmFtZXRlcnMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fZmFp
bHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVy
IjsKKyAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIHVuZXhwZWN0ZWQgZGVmbGF0
ZS1mcmFtZSBwYXJhbWV0ZXIiX3M7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBtX2ZyYW1lci0+ZW5hYmxlRGVmbGF0ZSh3aW5kb3dCaXRzLCBtb2RlKTsKKyAgICBtX2ZyYW1l
ci5lbmFibGVEZWZsYXRlKHdpbmRvd0JpdHMsIG1vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1EZWZsYXRlUmVzdWx0SG9sZGVyOjpEZWZsYXRlUmVzdWx0SG9sZGVyKFdlYlNvY2tldERlZmxh
dGVGcmFtZXIqIGZyYW1lcikKK0RlZmxhdGVSZXN1bHRIb2xkZXI6OkRlZmxhdGVSZXN1bHRIb2xk
ZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciYgZnJhbWVyKQogICAgIDogbV9mcmFtZXIoZnJhbWVy
KQotICAgICwgbV9zdWNjZWVkZWQodHJ1ZSkKIHsKLSAgICBBU1NFUlQobV9mcmFtZXIpOwogfQog
CiBEZWZsYXRlUmVzdWx0SG9sZGVyOjp+RGVmbGF0ZVJlc3VsdEhvbGRlcigpCiB7Ci0gICAgbV9m
cmFtZXItPnJlc2V0RGVmbGF0ZUNvbnRleHQoKTsKKyAgICBtX2ZyYW1lci5yZXNldERlZmxhdGVD
b250ZXh0KCk7CiB9CiAKIHZvaWQgRGVmbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbChjb25zdCBTdHJp
bmcmIGZhaWx1cmVSZWFzb24pCkBAIC0xMjUsMTYgKzEyMCwxNCBAQCB2b2lkIERlZmxhdGVSZXN1
bHRIb2xkZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQogICAgIG1fZmFpbHVy
ZVJlYXNvbiA9IGZhaWx1cmVSZWFzb247CiB9CiAKLUluZmxhdGVSZXN1bHRIb2xkZXI6OkluZmxh
dGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogZnJhbWVyKQorSW5mbGF0ZVJl
c3VsdEhvbGRlcjo6SW5mbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyJiBm
cmFtZXIpCiAgICAgOiBtX2ZyYW1lcihmcmFtZXIpCi0gICAgLCBtX3N1Y2NlZWRlZCh0cnVlKQog
ewotICAgIEFTU0VSVChtX2ZyYW1lcik7CiB9CiAKIEluZmxhdGVSZXN1bHRIb2xkZXI6On5JbmZs
YXRlUmVzdWx0SG9sZGVyKCkKIHsKLSAgICBtX2ZyYW1lci0+cmVzZXRJbmZsYXRlQ29udGV4dCgp
OworICAgIG1fZnJhbWVyLnJlc2V0SW5mbGF0ZUNvbnRleHQoKTsKIH0KIAogdm9pZCBJbmZsYXRl
UmVzdWx0SG9sZGVyOjpmYWlsKGNvbnN0IFN0cmluZyYgZmFpbHVyZVJlYXNvbikKQEAgLTE0Mywx
NCArMTM2LDkgQEAgdm9pZCBJbmZsYXRlUmVzdWx0SG9sZGVyOjpmYWlsKGNvbnN0IFN0cmluZyYg
ZmFpbHVyZVJlYXNvbikKICAgICBtX2ZhaWx1cmVSZWFzb24gPSBmYWlsdXJlUmVhc29uOwogfQog
Ci1XZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyKCkKLSAgICA6
IG1fZW5hYmxlZChmYWxzZSkKLXsKLX0KLQogc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJv
Y2Vzc29yKCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25EZWZs
YXRlRnJhbWU+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZT4oKnRoaXMpOwogfQogCiB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6
OmVuYWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpDb250ZXh0
VGFrZU92ZXJNb2RlIG1vZGUpCkBAIC0xNjcsNyArMTU1LDcgQEAgdm9pZCBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRl
cjo6Q28KIAogc3RkOjp1bmlxdWVfcHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERl
ZmxhdGVGcmFtZXI6OmRlZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewotICAgIGF1dG8g
cmVzdWx0ID0gbWFrZVVuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4oKnRoaXMpOwogICAgIGlm
ICghZW5hYmxlZCgpIHx8ICFXZWJTb2NrZXRGcmFtZTo6aXNOb25Db250cm9sT3BDb2RlKGZyYW1l
Lm9wQ29kZSkgfHwgIWZyYW1lLnBheWxvYWRMZW5ndGgpCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgaWYgKCFtX2RlZmxhdGVyLT5hZGRCeXRlcyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXls
b2FkTGVuZ3RoKSB8fCAhbV9kZWZsYXRlci0+ZmluaXNoKCkpIHsKQEAgLTE4OCw3ICsxNzYsNyBA
QCB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0ZUNvbnRleHQoKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8SW5mbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBt
YWtlVW5pcXVlPEluZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0g
bWFrZVVuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPigqdGhpcyk7CiAgICAgaWYgKCFlbmFibGVk
KCkgJiYgZnJhbWUuY29tcHJlc3MpIHsKICAgICAgICAgcmVzdWx0LT5mYWlsKCJDb21wcmVzc2Vk
IGJpdCBtdXN0IGJlIDAgaWYgbm8gbmVnb3RpYXRlZCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbiIp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgKaW5kZXggNGYyNDk4
MjFkNTljYjc1M2NiZDNiNjYxMThjZTQxMWE1YjYwOTU5ZC4uNzk3YmUzYjY3NWI5ZjRjNTRiMDY3
M2FiMjQwMThkNjA0ZDE4MTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oCkBAIC0zMSwxNyArMzEs
MTggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZXIuaCIKLSNp
bmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKLSNpbmNsdWRlICJXZWJTb2Nr
ZXRGcmFtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYlNvY2tldERlZmxh
dGVGcmFtZXI7CitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I7CisKK3N0cnVjdCBX
ZWJTb2NrZXRGcmFtZTsKIAogY2xhc3MgRGVmbGF0ZVJlc3VsdEhvbGRlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRGVmbGF0ZVJlc3VsdEhv
bGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKik7CisgICAgZXhwbGljaXQgRGVmbGF0ZVJlc3Vs
dEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyJik7CiAgICAgfkRlZmxhdGVSZXN1bHRIb2xk
ZXIoKTsKIAogICAgIGJvb2wgc3VjY2VlZGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZWVkZWQ7
IH0KQEAgLTUwLDE1ICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBmYWlsKGNvbnN0IFN0cmlu
ZyYgZmFpbHVyZVJlYXNvbik7CiAKIHByaXZhdGU6Ci0gICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ciogbV9mcmFtZXI7Ci0gICAgYm9vbCBtX3N1Y2NlZWRlZDsKKyAgICBXZWJTb2NrZXREZWZsYXRl
RnJhbWVyJiBtX2ZyYW1lcjsKKyAgICBib29sIG1fc3VjY2VlZGVkIHsgdHJ1ZSB9OwogICAgIFN0
cmluZyBtX2ZhaWx1cmVSZWFzb247CiB9OwogCiBjbGFzcyBJbmZsYXRlUmVzdWx0SG9sZGVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBJbmZs
YXRlUmVzdWx0SG9sZGVyKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqKTsKKyAgICBleHBsaWNpdCBJ
bmZsYXRlUmVzdWx0SG9sZGVyKFdlYlNvY2tldERlZmxhdGVGcmFtZXImKTsKICAgICB+SW5mbGF0
ZVJlc3VsdEhvbGRlcigpOwogCiAgICAgYm9vbCBzdWNjZWVkZWQoKSBjb25zdCB7IHJldHVybiBt
X3N1Y2NlZWRlZDsgfQpAQCAtNjcsMTUgKzY4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGZhaWwo
Y29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKTsKIAogcHJpdmF0ZToKLSAgICBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyKiBtX2ZyYW1lcjsKLSAgICBib29sIG1fc3VjY2VlZGVkOworICAgIFdlYlNv
Y2tldERlZmxhdGVGcmFtZXImIG1fZnJhbWVyOworICAgIGJvb2wgbV9zdWNjZWVkZWQgeyB0cnVl
IH07CiAgICAgU3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKIH07CiAKIGNsYXNzIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXIgewogcHVibGljOgotICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIoKTsKLQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IGNyZWF0ZUV4
dGVuc2lvblByb2Nlc3NvcigpOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVkOyB9CkBAIC05MCw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZURl
ZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpDb250ZXh0VGFrZU92ZXJN
b2RlKTsKIAogcHJpdmF0ZToKLSAgICBib29sIG1fZW5hYmxlZDsKKyAgICBib29sIG1fZW5hYmxl
ZCB7IGZhbHNlIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldERlZmxhdGVyPiBtX2Rl
ZmxhdGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRJbmZsYXRlcj4gbV9pbmZsYXRl
cjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IGFlM2UxMTM1ZDFmMjkwMGQwNDRkZDZmZDdiZTU5
MzE3M2Y3YWQ5NTcuLjRlMGU4ODBiNmY0OGU1YmMzODk1MzNlYzNkY2IyY2VmZDg1YWZmYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFz
ZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVz
Lmg+CkBAIC0zNzcsMTAgKzM3OCw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoZWFkZXJIYXNWYWxp
ZEhUVFBWZXJzaW9uKFN0cmluZ1ZpZXcgaHR0cFN0YXR1c0xpbmUpCiAgICAgaWYgKGRvdFBvc2l0
aW9uID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmdWaWV3
IG1ham9yVmVyc2lvblZpZXcgPSBodHRwU3RhdHVzTGluZS5zdWJzdHJpbmcocHJlYW1ibGVMZW5n
dGgsIGRvdFBvc2l0aW9uIC0gcHJlYW1ibGVMZW5ndGgpOwotICAgIGJvb2wgaXNWYWxpZDsKLSAg
ICBpbnQgbWFqb3JWZXJzaW9uID0gbWFqb3JWZXJzaW9uVmlldy50b0ludFN0cmljdChpc1ZhbGlk
KTsKLSAgICBpZiAoIWlzVmFsaWQpCisgICAgYXV0byBtYWpvclZlcnNpb24gPSBwYXJzZUludGVn
ZXI8aW50PihodHRwU3RhdHVzTGluZS5zdWJzdHJpbmcocHJlYW1ibGVMZW5ndGgsIGRvdFBvc2l0
aW9uIC0gcHJlYW1ibGVMZW5ndGgpKTsKKyAgICBpZiAoIW1ham9yVmVyc2lvbikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgdW5zaWduZWQgbWlub3JWZXJzaW9uTGVuZ3RoOwpAQCAtMzg5
LDExICszODgsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGhlYWRlckhhc1ZhbGlkSFRUUFZlcnNp
b24oU3RyaW5nVmlldyBodHRwU3RhdHVzTGluZSkKICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQo
aHR0cFN0YXR1c0xpbmVbZG90UG9zaXRpb24gKyBtaW5vclZlcnNpb25MZW5ndGhdKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpbnQgbWlub3JWZXJzaW9uID0gKGh0dHBTdGF0dXNM
aW5lLnN1YnN0cmluZyhkb3RQb3NpdGlvbiArIDEsIG1pbm9yVmVyc2lvbkxlbmd0aCkpLnRvSW50
U3RyaWN0KGlzVmFsaWQpOwotICAgIGlmICghaXNWYWxpZCkKKyAgICBhdXRvIG1pbm9yVmVyc2lv
biA9IHBhcnNlSW50ZWdlcjxpbnQ+KGh0dHBTdGF0dXNMaW5lLnN1YnN0cmluZyhkb3RQb3NpdGlv
biArIDEsIG1pbm9yVmVyc2lvbkxlbmd0aCkpOworICAgIGlmICghbWlub3JWZXJzaW9uKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gKG1ham9yVmVyc2lvbiA+PSAxICYmIG1p
bm9yVmVyc2lvbiA+PSAxKSB8fCBtYWpvclZlcnNpb24gPj0gMjsKKyAgICByZXR1cm4gKCptYWpv
clZlcnNpb24gPj0gMSAmJiAqbWlub3JWZXJzaW9uID49IDEpIHx8ICptYWpvclZlcnNpb24gPj0g
MjsKIH0KIAogLy8gUmV0dXJucyB0aGUgaGVhZGVyIGxlbmd0aCAoaW5jbHVkaW5nICJcclxuIiks
IG9yIC0xIGlmIHdlIGhhdmUgbm90IHJlY2VpdmVkIGVub3VnaCBkYXRhIHlldC4KQEAgLTQ2MSwx
NiArNDYwLDE0IEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0dXNMaW5lKGNvbnN0
IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwKICAgICBTdHJpbmdWaWV3IHN0YXR1
c0NvZGVTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHNwYWNlMSArIDEpLCBz
cGFjZTIgLSBzcGFjZTEgLSAxKTsKICAgICBpZiAoc3RhdHVzQ29kZVN0cmluZy5sZW5ndGgoKSAh
PSAzKSAvLyBTdGF0dXMgY29kZSBtdXN0IGNvbnNpc3Qgb2YgdGhyZWUgZGlnaXRzLgogICAgICAg
ICByZXR1cm4gbGluZUxlbmd0aDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgewogICAgICAgICBpZiAoIWlzQVNDSUlEaWdp
dChzdGF0dXNDb2RlU3RyaW5nW2ldKSkgewogICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0g
bWFrZVN0cmluZygiSW52YWxpZCBzdGF0dXMgY29kZTogIiwgc3RhdHVzQ29kZVN0cmluZyk7CiAg
ICAgICAgICAgICByZXR1cm4gbGluZUxlbmd0aDsKICAgICAgICAgfQorICAgIH0KIAotICAgIGJv
b2wgb2sgPSBmYWxzZTsKLSAgICBzdGF0dXNDb2RlID0gc3RhdHVzQ29kZVN0cmluZy50b0ludFN0
cmljdChvayk7Ci0gICAgQVNTRVJUKG9rKTsKLQorICAgIHN0YXR1c0NvZGUgPSBwYXJzZUludGVn
ZXI8aW50PihzdGF0dXNDb2RlU3RyaW5nKS52YWx1ZSgpOwogICAgIHN0YXR1c1RleHQgPSBTdHJp
bmcoc3BhY2UyICsgMSwgZW5kIC0gc3BhY2UyIC0gMyk7IC8vIEV4Y2x1ZGUgIlxyXG4iLgogICAg
IHJldHVybiBsaW5lTGVuZ3RoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCBkYjM2MzQwMTcyZTdl
YjY0ZDBkZjY1MjIxZTA5N2YzMjg0Yzk5YWY5Li43OTAyNjYwOTE2MjA3YThlYTM1MzQxNzk0Y2Ri
NGU2MjAxNTQ2Nzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtNzc1LDkgKzc3NSw4IEBAIGludCBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVhZGluZ0xldmVsKCkgY29uc3QKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzSGVhZGluZygpKSB7Ci0gICAgICAgIGludCBhcmlhTGV2
ZWwgPSBnZXRBdHRyaWJ1dGUoYXJpYV9sZXZlbEF0dHIpLnRvSW50KCk7Ci0gICAgICAgIGlmIChh
cmlhTGV2ZWwgPiAwKQotICAgICAgICAgICAgcmV0dXJuIGFyaWFMZXZlbDsKKyAgICAgICAgaWYg
KGF1dG8gbGV2ZWwgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX2xldmVsQXR0cik7IGxldmVs
ID4gMCkKKyAgICAgICAgICAgIHJldHVybiBsZXZlbDsKICAgICB9CiAKICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZShoMVRhZykpCkBAIC0xNzI5LDExICsxNzI4LDExIEBAIHVuc2lnbmVkIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjpoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0CiAgICAgTm9kZSog
bm9kZSA9IHRoaXMtPm5vZGUoKTsKICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5v
ZGUpOwotICAgIGNvbnN0IEF0b21TdHJpbmcmIGFyaWFMZXZlbCA9IGVsZW1lbnQuYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xldmVsQXR0cik7Ci0gICAgaWYgKCFhcmlhTGV2
ZWwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gYXJpYUxldmVsLnRvSW50KCk7Ci0gICAgCisK
KyAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOworICAgIGlmICgh
ZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfbGV2ZWxBdHRyKS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBlbGVtZW50LmdldEludGVncmFsQXR0cmlidXRlKGFy
aWFfbGV2ZWxBdHRyKTsKKwogICAgIC8vIE9ubHkgdHJlZSBpdGVtIHdpbGwgY2FsY3VsYXRlIGl0
cyBsZXZlbCB0aHJvdWdoIHRoZSBET00gY3VycmVudGx5LgogICAgIGlmIChyb2xlVmFsdWUoKSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0pCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
aW5kZXggMGQ3MjE4Y2UxMTQ4NDdhNzRkYTZkMjk0NDBkZTVkMmQxYjZlMTVlNi4uMDY2YzE5ODMw
MDQ3OTBkMWY1ODc5ZWE5Mjg0MGNkZGFmMWZlYmVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xOTU2LDYgKzE5
NTYsMTEgQEAgY29uc3QgQXRvbVN0cmluZyYgQWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0QXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnUKICAgICByZXR1cm4gbnVsbEF0b20oKTsK
IH0KIAoraW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldEludGVncmFsQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcnNl
SFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZV9vcigwKTsKK30K
KwogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgUGxhaW5UZXh0UmFuZ2UmIHJhbmdlKQogewog
ICAgIC8vIElmIHRoaXMgaXMgYmVpbmcgY2FsbGVkIG9uIHRoZSB3ZWIgYXJlYSwgcmVkaXJlY3Qg
aXQgdG8gYmUgb24gdGhlIGJvZHksIHdoaWNoIHdpbGwgaGF2ZSBhIHJlbmRlcmVyIGFzc29jaWF0
ZWQgd2l0aCBpdC4KQEAgLTI2NjMsMTIgKzI2NjgsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzdXBwb3J0c1Bvc0luU2V0KCkgY29uc3QKICAgICAKIGludCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzZXRTaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfc2V0
c2l6ZUF0dHIpLnRvSW50KCk7CisgICAgcmV0dXJuIGdldEludGVncmFsQXR0cmlidXRlKGFyaWFf
c2V0c2l6ZUF0dHIpOwogfQogCiBpbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6cG9zSW5TZXQoKSBj
b25zdAogewotICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoYXJpYV9wb3NpbnNldEF0dHIpLnRvSW50
KCk7CisgICAgcmV0dXJuIGdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcG9zaW5zZXRBdHRyKTsK
IH0KICAgICAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjppZGVudGlmaWVyQXR0cmlidXRl
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgKaW5kZXggNTZjM2NkMzMxNzIwZjM2N2EyNjFmMGY0MGUyYWE1ZTQ4ODExYmQ1
ZS4uNGQ5YzkzMzE4YTg2NzFiM2JlMDk0MmMwZWMyZmI3NjE0ZTNlZDk3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTUx
Nyw2ICs1MTcsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFjY2Vzc2li
aWxpdHlSb2xlIGFyaWFSb2xlVG9XZWJDb3JlUm9sZShjb25zdCBTdHJpbmcmKTsKICAgICBib29s
IGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Y29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBpbnQgZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0OwogICAgIGJvb2wgaGFzVGFnTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHRhZ05hbWUoKSBjb25zdCBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwCmluZGV4IDA1YjU2M2U5YWUyNmE2YWZlNzY4ZGQxMjdhMDMxYzVjZmFjNzAyYTMuLmY2NzJm
NGExYWYwNTM1NWU2ZTczMDUwNTkzODZkMDQxOTc5ZGRiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTQ0LDcgKzQ0
LDYgQEAKICNpbmNsdWRlICJSZW5kZXJUYWJsZS5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2Vs
bC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlU2VjdGlvbi5oIgotCiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1MywxMSArMTUyLDExIEBAIGJvb2wg
QWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgCiAgICAgLy8gSWYg
dGhlIGF1dGhvciBoYXMgdXNlZCBBUklBIHRvIHNwZWNpZnkgYSB2YWxpZCBjb2x1bW4gb3Igcm93
IGNvdW50LCBhc3N1bWUgdGhleQogICAgIC8vIHdhbnQgdXMgdG8gdHJlYXQgdGhlIHRhYmxlIGFz
IGEgZGF0YSB0YWJsZS4KLSAgICBpbnQgYXhDb2x1bW5Db3VudCA9IGdldEF0dHJpYnV0ZShhcmlh
X2NvbGNvdW50QXR0cikudG9JbnQoKTsKKyAgICBpbnQgYXhDb2x1bW5Db3VudCA9IGdldEludGVn
cmFsQXR0cmlidXRlKGFyaWFfY29sY291bnRBdHRyKTsKICAgICBpZiAoYXhDb2x1bW5Db3VudCA9
PSAtMSB8fCBheENvbHVtbkNvdW50ID4gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBp
bnQgYXhSb3dDb3VudCA9IGdldEF0dHJpYnV0ZShhcmlhX3Jvd2NvdW50QXR0cikudG9JbnQoKTsK
KyAgICBpbnQgYXhSb3dDb3VudCA9IGdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcm93Y291bnRB
dHRyKTsKICAgICBpZiAoYXhSb3dDb3VudCA9PSAtMSB8fCBheFJvd0NvdW50ID4gMCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKQEAgLTIzNCwxNiArMjMzLDE2IEBAIGJvb2wgQWNjZXNzaWJpbGl0
eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAKICAgICAgICAgICAgIC8vIElmIHRoZSBhdXRo
b3IgaGFzIHVzZWQgQVJJQSB0byBzcGVjaWZ5IGEgdmFsaWQgY29sdW1uIG9yIHJvdyBpbmRleCwg
YXNzdW1lIHRoZXkgd2FudCB1cwogICAgICAgICAgICAgLy8gdG8gdHJlYXQgdGhlIHRhYmxlIGFz
IGEgZGF0YSB0YWJsZS4KLSAgICAgICAgICAgIGludCBheENvbHVtbkluZGV4ID0gIGNlbGxFbGVt
ZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfY29saW5kZXhBdHRyKS50
b0ludCgpOworICAgICAgICAgICAgaW50IGF4Q29sdW1uSW5kZXggPSBjZWxsRWxlbWVudC0+Z2V0
SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9jb2xpbmRleEF0dHIpOwogICAgICAgICAgICAgaWYgKGF4
Q29sdW1uSW5kZXggPj0gMSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAg
ICAgICAgaW50IGF4Um93SW5kZXggPSBjZWxsRWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihhcmlhX3Jvd2luZGV4QXR0cikudG9JbnQoKTsKKyAgICAgICAgICAgIGludCBh
eFJvd0luZGV4ID0gY2VsbEVsZW1lbnQtPmdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcm93aW5k
ZXhBdHRyKTsKICAgICAgICAgICAgIGlmIChheFJvd0luZGV4ID49IDEpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgICAgIGlmIChhdXRvIGNlbGxQYXJlbnRFbGVtZW50
ID0gY2VsbEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGF4Um93
SW5kZXggPSBjZWxsUGFyZW50RWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihhcmlhX3Jvd2luZGV4QXR0cikudG9JbnQoKTsKKyAgICAgICAgICAgICAgICBheFJvd0luZGV4
ID0gY2VsbFBhcmVudEVsZW1lbnQtPmdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcm93aW5kZXhB
dHRyKTsKICAgICAgICAgICAgICAgICBpZiAoYXhSb3dJbmRleCA+PSAxKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTI1MSwxMSArMjUwLDExIEBA
IGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgICAgICAg
ICAvLyBJZiB0aGUgYXV0aG9yIGhhcyB1c2VkIEFSSUEgdG8gc3BlY2lmeSBhIGNvbHVtbiBvciBy
b3cgc3Bhbiwgd2UncmUgc3VwcG9zZWQgdG8gaWdub3JlCiAgICAgICAgICAgICAvLyB0aGUgdmFs
dWUgZm9yIHRoZSBwdXJwb3NlcyBvZiBleHBvc2luZyB0aGUgc3Bhbi4gQnV0IGFzc3VtZSB0aGV5
IHdhbnQgdXMgdG8gdHJlYXQgdGhlCiAgICAgICAgICAgICAvLyB0YWJsZSBhcyBhIGRhdGEgdGFi
bGUuCi0gICAgICAgICAgICBpbnQgYXhDb2x1bW5TcGFuID0gY2VsbEVsZW1lbnQtPmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9jb2xzcGFuQXR0cikudG9JbnQoKTsKKyAgICAg
ICAgICAgIGludCBheENvbHVtblNwYW4gPSBjZWxsRWxlbWVudC0+Z2V0SW50ZWdyYWxBdHRyaWJ1
dGUoYXJpYV9jb2xzcGFuQXR0cik7CiAgICAgICAgICAgICBpZiAoYXhDb2x1bW5TcGFuID49IDEp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgICAgIGludCBheFJvd1Nw
YW4gPSBjZWxsRWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX3Jv
d3NwYW5BdHRyKS50b0ludCgpOworICAgICAgICAgICAgaW50IGF4Um93U3BhbiA9IGNlbGxFbGVt
ZW50LT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd3NwYW5BdHRyKTsKICAgICAgICAgICAg
IGlmIChheFJvd1NwYW4gPj0gMSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAt
NzA3LDggKzcwNiw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5VGFibGU6OnRpdGxlKCkgY29uc3QK
IAogaW50IEFjY2Vzc2liaWxpdHlUYWJsZTo6YXhDb2x1bW5Db3VudCgpIGNvbnN0CiB7Ci0gICAg
Y29uc3QgQXRvbVN0cmluZyYgY29sQ291bnRWYWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX2NvbGNv
dW50QXR0cik7Ci0gICAgaW50IGNvbENvdW50SW50ID0gY29sQ291bnRWYWx1ZS50b0ludCgpOwor
ICAgIGludCBjb2xDb3VudEludCA9IGdldEludGVncmFsQXR0cmlidXRlKGFyaWFfY29sY291bnRB
dHRyKTsKICAgICAvLyBUaGUgQVJJQSBzcGVjIHN0YXRlcywgIkF1dGhvcnMgbXVzdCBzZXQgdGhl
IHZhbHVlIG9mIGFyaWEtY29sY291bnQgdG8gYW4gaW50ZWdlciBlcXVhbCB0byB0aGUKICAgICAv
LyBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZnVsbCB0YWJsZS4gSWYgdGhlIHRvdGFsIG51bWJl
ciBvZiBjb2x1bW5zIGlzIHVua25vd24sIGF1dGhvcnMgbXVzdAogICAgIC8vIHNldCB0aGUgdmFs
dWUgb2YgYXJpYS1jb2xjb3VudCB0byAtMSB0byBpbmRpY2F0ZSB0aGF0IHRoZSB2YWx1ZSBzaG91
bGQgbm90IGJlIGNhbGN1bGF0ZWQgYnkKQEAgLTcyMSw4ICs3MTksNyBAQCBpbnQgQWNjZXNzaWJp
bGl0eVRhYmxlOjpheENvbHVtbkNvdW50KCkgY29uc3QKIAogaW50IEFjY2Vzc2liaWxpdHlUYWJs
ZTo6YXhSb3dDb3VudCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgcm93Q291bnRW
YWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX3Jvd2NvdW50QXR0cik7Ci0gICAgaW50IHJvd0NvdW50
SW50ID0gcm93Q291bnRWYWx1ZS50b0ludCgpOworICAgIGludCByb3dDb3VudEludCA9IGdldElu
dGVncmFsQXR0cmlidXRlKGFyaWFfcm93Y291bnRBdHRyKTsKICAgICAvLyBUaGUgQVJJQSBzcGVj
IHN0YXRlcywgIkF1dGhvcnMgbXVzdCBzZXQgdGhlIHZhbHVlIG9mIGFyaWEtcm93Y291bnQgdG8g
YW4gaW50ZWdlciBlcXVhbCB0byB0aGUKICAgICAvLyBudW1iZXIgb2Ygcm93cyBpbiB0aGUgZnVs
bCB0YWJsZS4gSWYgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzIGlzIHVua25vd24sIGF1dGhvcnMg
bXVzdCBzZXQKICAgICAvLyB0aGUgdmFsdWUgb2YgYXJpYS1yb3djb3VudCB0byAtMSB0byBpbmRp
Y2F0ZSB0aGF0IHRoZSB2YWx1ZSBzaG91bGQgbm90IGJlIGNhbGN1bGF0ZWQgYnkgdGhlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNl
bGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsLmNwcAppbmRleCBjMzc2N2JkY2M1ODU3ZjljMGEyNDFjZTExZGIwYjU2MzBlY2NiM2Y1Li4z
ZjY1MDhlMDYxYzE4MDA2ZmVlNjFlNGU0ZDFkNmIzOTc2MjhkMjcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAK
QEAgLTQwMiw5ICs0MDIsOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjp0aXRsZVVJRWxlbWVudCgpIGNvbnN0CiAgICAgCiBpbnQgQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6YXhDb2x1bW5JbmRleCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYg
Y29sSW5kZXhWYWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX2NvbGluZGV4QXR0cik7Ci0gICAgaWYg
KGNvbEluZGV4VmFsdWUudG9JbnQoKSA+PSAxKQotICAgICAgICByZXR1cm4gY29sSW5kZXhWYWx1
ZS50b0ludCgpOworICAgIGlmIChpbnQgdmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlh
X2NvbGluZGV4QXR0cik7IHZhbHVlID49IDEpCisgICAgICAgIHJldHVybiB2YWx1ZTsKIAogICAg
IC8vICJBUklBIDEuMTogSWYgdGhlIHNldCBvZiBjb2x1bW5zIHdoaWNoIGlzIHByZXNlbnQgaW4g
dGhlIERPTSBpcyBjb250aWd1b3VzLCBhbmQgaWYgdGhlcmUgYXJlIG5vIGNlbGxzIHdoaWNoIHNw
YW4gbW9yZSB0aGFuIG9uZSByb3cKICAgICAvLyBvciBjb2x1bW4gaW4gdGhhdCBzZXQsIHRoZW4g
YXV0aG9ycyBtYXkgcGxhY2UgYXJpYS1jb2xpbmRleCBvbiBlYWNoIHJvdywgc2V0dGluZyB0aGUg
dmFsdWUgdG8gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjb2x1bW4gb2YgdGhlIHNldC4iCkBAIC00
MjAsMTMgKzQxOSwxMiBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhSb3dJbmRleCgp
IGNvbnN0CiB7CiAgICAgLy8gQVJJQSAxLjE6IEF1dGhvcnMgc2hvdWxkIHBsYWNlIGFyaWEtcm93
aW5kZXggb24gZWFjaCByb3cuIEF1dGhvcnMgbWF5IGFsc28gcGxhY2UKICAgICAvLyBhcmlhLXJv
d2luZGV4IG9uIGFsbCBvZiB0aGUgY2hpbGRyZW4gb3Igb3duZWQgZWxlbWVudHMgb2YgZWFjaCBy
b3cuCi0gICAgY29uc3QgQXRvbVN0cmluZyYgcm93SW5kZXhWYWx1ZSA9IGdldEF0dHJpYnV0ZShh
cmlhX3Jvd2luZGV4QXR0cik7Ci0gICAgaWYgKHJvd0luZGV4VmFsdWUudG9JbnQoKSA+PSAxKQot
ICAgICAgICByZXR1cm4gcm93SW5kZXhWYWx1ZS50b0ludCgpOwotICAgIAorICAgIGlmIChpbnQg
dmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2luZGV4QXR0cik7IHZhbHVlID49
IDEpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKwogICAgIGlmIChBY2Nlc3NpYmlsaXR5VGFibGVS
b3cqIHBhcmVudFJvdyA9IHRoaXMtPnBhcmVudFJvdygpKQogICAgICAgICByZXR1cm4gcGFyZW50
Um93LT5heFJvd0luZGV4KCk7Ci0gICAgCisKICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTQzNywx
MSArNDM1LDEwIEBAIGludCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENvbHVtblNwYW4oKSBj
b25zdAogICAgIGlmIChoYXNBdHRyaWJ1dGUoY29sc3BhbkF0dHIpKQogICAgICAgICByZXR1cm4g
LTE7CiAKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBjb2xTcGFuVmFsdWUgPSBnZXRBdHRyaWJ1dGUo
YXJpYV9jb2xzcGFuQXR0cik7CiAgICAgLy8gQVJJQSAxLjE6IEF1dGhvcnMgbXVzdCBzZXQgdGhl
IHZhbHVlIG9mIGFyaWEtY29sc3BhbiB0byBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvciBlcXVh
bCB0byAxLgotICAgIGlmIChjb2xTcGFuVmFsdWUudG9JbnQoKSA+PSAxKQotICAgICAgICByZXR1
cm4gY29sU3BhblZhbHVlLnRvSW50KCk7Ci0gICAgCisgICAgaWYgKGludCB2YWx1ZSA9IGdldElu
dGVncmFsQXR0cmlidXRlKGFyaWFfY29sc3BhbkF0dHIpOyB2YWx1ZSA+PSAxKQorICAgICAgICBy
ZXR1cm4gdmFsdWU7CisKICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTQ1MiwxNSArNDQ5LDEzIEBA
IGludCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheFJvd1NwYW4oKSBjb25zdAogICAgIGlmICho
YXNBdHRyaWJ1dGUocm93c3BhbkF0dHIpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBjb25z
dCBBdG9tU3RyaW5nJiByb3dTcGFuVmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9yb3dzcGFuQXR0
cik7Ci0gICAgCiAgICAgLy8gQVJJQSAxLjE6IEF1dGhvcnMgbXVzdCBzZXQgdGhlIHZhbHVlIG9m
IGFyaWEtcm93c3BhbiB0byBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLgog
ICAgIC8vIFNldHRpbmcgdGhlIHZhbHVlIHRvIDAgaW5kaWNhdGVzIHRoYXQgdGhlIGNlbGwgb3Ig
Z3JpZGNlbGwgaXMgdG8gc3BhbiBhbGwgdGhlIHJlbWFpbmluZyByb3dzIGluIHRoZSByb3cgZ3Jv
dXAuCi0gICAgaWYgKHJvd1NwYW5WYWx1ZSA9PSAiMCIpCisgICAgaWYgKGdldEF0dHJpYnV0ZShh
cmlhX3Jvd3NwYW5BdHRyKSA9PSAiMCIpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChyb3dT
cGFuVmFsdWUudG9JbnQoKSA+PSAxKQotICAgICAgICByZXR1cm4gcm93U3BhblZhbHVlLnRvSW50
KCk7Ci0gICAgCisgICAgaWYgKGludCB2YWx1ZSA9IGdldEludGVncmFsQXR0cmlidXRlKGFyaWFf
cm93c3BhbkF0dHIpOyB2YWx1ZSA+PSAxKQorICAgICAgICByZXR1cm4gdmFsdWU7CisKICAgICBy
ZXR1cm4gLTE7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKaW5kZXggYWQ2ZWE0OTdkN2ZlODFhYjQ5YzZm
YjJlNzYxNjhhNGFkZWZlM2QyMy4uZWQwZmIwYjJjYTRkNWE2ODU1YjI5MzMxYWY5OGViYTQ1MjJm
NjlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlUm93LmNwcApAQCAtMTc1LDIwICsxNzUsMTQgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5VGFibGVSb3c6OmFkZENoaWxkcmVuKCkKIAogaW50IEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6
YXhDb2x1bW5JbmRleCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgY29sSW5kZXhW
YWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX2NvbGluZGV4QXR0cik7Ci0gICAgaWYgKGNvbEluZGV4
VmFsdWUudG9JbnQoKSA+PSAxKQotICAgICAgICByZXR1cm4gY29sSW5kZXhWYWx1ZS50b0ludCgp
OwotICAgIAotICAgIHJldHVybiAtMTsKKyAgICBpbnQgdmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJp
YnV0ZShhcmlhX2NvbGluZGV4QXR0cik7CisgICAgcmV0dXJuIHZhbHVlID49IDEgPyB2YWx1ZSA6
IC0xOwogfQogCiBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpheFJvd0luZGV4KCkgY29uc3QK
IHsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiByb3dJbmRleFZhbHVlID0gZ2V0QXR0cmlidXRlKGFy
aWFfcm93aW5kZXhBdHRyKTsKLSAgICBpZiAocm93SW5kZXhWYWx1ZS50b0ludCgpID49IDEpCi0g
ICAgICAgIHJldHVybiByb3dJbmRleFZhbHVlLnRvSW50KCk7Ci0gICAgCi0gICAgcmV0dXJuIC0x
OworICAgIGludCB2YWx1ZSA9IGdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcm93aW5kZXhBdHRy
KTsKKyAgICByZXR1cm4gdmFsdWUgPj0gMSA/IHZhbHVlIDogLTE7CiB9CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1NlbGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0
b3JQYXJzZXIuY3BwCmluZGV4IGVlNDNkMDhmYzBlMGVhN2YyMGQ4MGQ5MDU5NmZhZTk5MTRkNDQ3
MmUuLjMwZGU3YmMyZGFkMTk4MTlmMTFhNmRiODEzM2YwYzhkNmIwNDI1YmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JT
Y29wZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtODg0LDkgKzg4NSw5IEBAIHN0YXRpYyBib29sIGNvbnN1bWVBTlBsdXNCKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBzdGQ6OnBhaXI8aW50LCBpbnQ+JiByZXN1CiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChuU3RyaW5nLmxlbmd0aCgpID4gMikgewotICAgICAg
ICBib29sIHZhbGlkOwotICAgICAgICByZXN1bHQuc2Vjb25kID0gblN0cmluZy5zdWJzdHJpbmco
MSkudG9JbnRTdHJpY3QoJnZhbGlkKTsKLSAgICAgICAgcmV0dXJuIHZhbGlkOworICAgICAgICBh
dXRvIHBhcnNlZE51bWJlciA9IHBhcnNlSW50ZWdlcjxpbnQ+KFN0cmluZ1ZpZXcgeyBuU3RyaW5n
IH0uc3Vic3RyaW5nKDEpKTsKKyAgICAgICAgcmVzdWx0LnNlY29uZCA9IHBhcnNlZE51bWJlci52
YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gcGFyc2VkTnVtYmVyLmhhc1ZhbHVlKCk7CiAgICAg
fQogCiAgICAgTnVtZXJpY1NpZ24gc2lnbiA9IG5TdHJpbmcubGVuZ3RoKCkgPT0gMSA/IE5vU2ln
biA6IE1pbnVzU2lnbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
VG9rZW5pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNw
cAppbmRleCAxYTkzNzc2NWY2NTY0MTI5YzE3OTljMzQ1NGM1NGEzZDUwODNhNDNjLi5lZDM2MmEx
OWRmYWVmNDg3ZGYyMjFmNGQxNzI2YTFmNjBkOTcyZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NT
VG9rZW5pemVySW5wdXRTdHJlYW0uaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0
ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04MzYsMTIgKzgzNywxMSBAQCBV
Q2hhcjMyIENTU1Rva2VuaXplcjo6Y29uc3VtZUVzY2FwZSgpCiAgICAgICAgICAgICBjb25zdW1l
ZEhleERpZ2l0cysrOwogICAgICAgICB9OwogICAgICAgICBjb25zdW1lU2luZ2xlV2hpdGVzcGFj
ZUlmTmV4dCgpOwotICAgICAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgICAgIFVDaGFyMzIgY29k
ZVBvaW50ID0gaGV4Q2hhcnMudG9TdHJpbmcoKS50b1VJbnRTdHJpY3QoJm9rLCAxNik7Ci0gICAg
ICAgIEFTU0VSVChvayk7Ci0gICAgICAgIGlmICghY29kZVBvaW50IHx8ICgweEQ4MDAgPD0gY29k
ZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweERGRkYpIHx8IGNvZGVQb2ludCA+IDB4MTBGRkZGKQor
ICAgICAgICBhdXRvIGNvZGVQb2ludCA9IHBhcnNlSW50ZWdlcjx1aW50MzJfdD4oaGV4Q2hhcnMs
IDE2KTsKKyAgICAgICAgQVNTRVJUKGNvZGVQb2ludCk7CisgICAgICAgIGlmICghY29kZVBvaW50
IHx8ICgweEQ4MDAgPD0gKmNvZGVQb2ludCAmJiAqY29kZVBvaW50IDw9IDB4REZGRikgfHwgKmNv
ZGVQb2ludCA+IDB4MTBGRkZGKQogICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50Q2hhcmFj
dGVyOwotICAgICAgICByZXR1cm4gY29kZVBvaW50OworICAgICAgICByZXR1cm4gKmNvZGVQb2lu
dDsKICAgICB9CiAKICAgICBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA1NDc5NzQ0MTk2YWY5
OGI3NmY0MTc5MDM2ZWU1M2NjMTJiYzAwOWI2Li5kM2FjZWNmZjIxNmI0NmEyMzBmZWU0OGY1ZWIw
ZmU0ZjM1NTNiNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0
ZWN0aW9uLm1tCkBAIC01NCw2ICs1NCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9EYXRhRGV0
ZWN0b3JzU1BJLmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdl
ckNvbnZlcnNpb24uaD4KIAogI2ltcG9ydCAiRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oIgog
CkBAIC0xOTQsMTkgKzE5NSwyNSBAQCBib29sIERhdGFEZXRlY3Rpb246OmNhblByZXNlbnREYXRh
RGV0ZWN0b3JzVUlGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKHNvZnRMaW5r
X0RhdGFEZXRlY3RvcnNDb3JlX0REU2hvdWxkSW1tZWRpYXRlbHlTaG93QWN0aW9uU2hlZXRGb3JV
UkwoZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KGVsZW1lbnQpLmhyZWYoKSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIAotICAgIGNvbnN0IEF0b21TdHJpbmcmIHJlc3VsdEF0dHJpYnV0
ZSA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2RhdGFf
ZGV0ZWN0b3JzX3Jlc3VsdEF0dHIpOworICAgIGF1dG8mIHJlc3VsdEF0dHJpYnV0ZSA9IGVsZW1l
bnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2RhdGFfZGV0ZWN0b3Jz
X3Jlc3VsdEF0dHIpOwogICAgIGlmIChyZXN1bHRBdHRyaWJ1dGUuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgTlNBcnJheSAqcmVzdWx0cyA9IGVsZW1lbnQuZG9jdW1lbnQo
KS5mcmFtZSgpLT5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpOwogICAgIGlmICghcmVzdWx0cykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdEluZGljZXMgPSBy
ZXN1bHRBdHRyaWJ1dGUuc3RyaW5nKCkuc3BsaXQoJy8nKTsKLSAgICBERFJlc3VsdFJlZiByZXN1
bHQgPSBbW3Jlc3VsdHMgb2JqZWN0QXRJbmRleDpyZXN1bHRJbmRpY2VzWzBdLnRvSW50KCldIGNv
cmVSZXN1bHRdOwotICAgIC8vIEhhbmRsZSB0aGUgY2FzZSBvZiBhIHNpZ25hdHVyZSBibG9jaywg
d2hlcmUgd2UgbmVlZCB0byBjaGVjayB0aGUgY29ycmVjdCBzdWJyZXN1bHQuCi0gICAgZm9yIChz
aXplX3QgaSA9IDE7IGkgPCByZXN1bHRJbmRpY2VzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHJl
c3VsdHMgPSAoTlNBcnJheSAqKXNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3JlX0REUmVzdWx0R2V0
U3ViUmVzdWx0cyhyZXN1bHQpOwotICAgICAgICByZXN1bHQgPSAoRERSZXN1bHRSZWYpW3Jlc3Vs
dHMgb2JqZWN0QXRJbmRleDpyZXN1bHRJbmRpY2VzW2ldLnRvSW50KCldOworCisgICAgYXV0byBy
ZXN1bHRJbmRpY2VzID0gU3RyaW5nVmlldyB7IHJlc3VsdEF0dHJpYnV0ZSB9LnNwbGl0KCcvJyk7
CisgICAgYXV0byBpbmRleEl0ZXJhdG9yID0gcmVzdWx0SW5kaWNlcy5iZWdpbigpOworICAgIGF1
dG8gcmVzdWx0ID0gW3Jlc3VsdHNbcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50
PigqaW5kZXhJdGVyYXRvcikudmFsdWVPcigwKV0gY29yZVJlc3VsdF07CisKKyAgICAvLyBIYW5k
bGUgdGhlIGNhc2Ugb2YgYSBzaWduYXR1cmUgYmxvY2ssIHdoZXJlIHdlIG5lZWQgdG8gZm9sbG93
IHRoZSBwYXRoIGRvd24gb25lIG9yIG1vcmUgc3VicmVzdWx0IGxldmVscy4KKyAgICBpZiAoKytp
bmRleEl0ZXJhdG9yICE9IHJlc3VsdEluZGljZXMuZW5kKCkpIHsKKyAgICAgICAgZG8geworICAg
ICAgICAgICAgcmVzdWx0cyA9IChfX2JyaWRnZSBOU0FycmF5ICopc29mdExpbmtfRGF0YURldGVj
dG9yc0NvcmVfRERSZXN1bHRHZXRTdWJSZXN1bHRzKHJlc3VsdCk7CisgICAgICAgICAgICByZXN1
bHQgPSAoX19icmlkZ2UgRERSZXN1bHRSZWYpcmVzdWx0c1twYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazxpbnQ+KCppbmRleEl0ZXJhdG9yKS52YWx1ZU9yKDApXTsKKyAgICAgICAgfSB3
aGlsZSAoKytpbmRleEl0ZXJhdG9yICE9IHJlc3VsdEluZGljZXMuZW5kKCkpOwogICAgIH0KKwog
ICAgIHJldHVybiBzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNob3VsZEltbWVkaWF0ZWx5
U2hvd0FjdGlvblNoZWV0Rm9yUmVzdWx0KHJlc3VsdCk7CiB9CiAKQEAgLTMxNiwzMCArMzIzLDIw
IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YURldGVjdG9yVHlwZUZvckNhdGVnb3J5KEREUmVzdWx0
Q2F0ZWdvcnkgY2F0ZWdvcnkpCiAKIHN0YXRpYyBTdHJpbmcgZGF0YURldGVjdG9yU3RyaW5nRm9y
UGF0aChOU0luZGV4UGF0aCAqcGF0aCkKIHsKLSAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHBhdGgu
bGVuZ3RoOwotICAgIAorICAgIGF1dG8gbGVuZ3RoID0gcGF0aC5sZW5ndGg7CiAgICAgc3dpdGNo
IChsZW5ndGgpIHsKICAgICBjYXNlIDA6CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgY2FzZSAx
OgotICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBd
KTsKLSAgICBjYXNlIDI6IHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihbcGF0aCBpbmRleEF0UG9zaXRpb246
MF0pOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLycpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZE51bWJlcihbcGF0aCBpbmRleEF0UG9zaXRpb246MV0pOwotICAgICAgICBy
ZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwotICAgIH0KLSAgICBkZWZhdWx0OiB7Ci0g
ICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBdKTsKLSAgICAgICAgZm9yIChO
U1VJbnRlZ2VyIGkgPSAxIDsgaSA8IGxlbmd0aCA7IGkrKykgewotICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJy8nKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVt
YmVyKFtwYXRoIGluZGV4QXRQb3NpdGlvbjppXSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBdKTsKKyAgICBjYXNlIDI6CisgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKFtwYXRoIGluZGV4QXRQb3NpdGlvbjowXSwgJy8nLCBbcGF0aCBpbmRl
eEF0UG9zaXRpb246MV0pOworICAgIGRlZmF1bHQ6CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9u
OjBdKTsKKyAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspCisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLycsIFtwYXRoIGluZGV4QXRQb3NpdGlvbjppXSk7
CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogfQogCkBAIC02ODgs
NCArNjg1LDMgQEAgYm9vbCBEYXRhRGV0ZWN0aW9uOjppc0RhdGFEZXRlY3RvckVsZW1lbnQoY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCAw
NjgyNmYxMjQxODdiZGJkNGYxYTQ5YzQzNzBlYzZlZjRkMGQ4ZWY1Li41MmE1NjMxNWM0YjM1OTBj
N2NhMTVhYjhmYjU0OWRhMWM3OTJhNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgogI2ltcG9ydCA8d3RmL0FTQ0lJQ1R5cGUu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElP
TikKICNpbXBvcnQgIkRhdGFEZXRlY3Rpb24uaCIKQEAgLTk3OCw3ICs5NzksNyBAQCBOU0RpY3Rp
b25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCkKICAgICAgICAgfQogCiAgICAgICAgIFN0cmluZyBmb250V2VpZ2h0ID0gX2Nh
Y2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlGb250U3R5bGUp
OwotICAgICAgICBpZiAoZm9udFdlaWdodC5zdGFydHNXaXRoKCJib2xkIikgfHwgZm9udFdlaWdo
dC50b0ludCgpID49IDcwMCkgeworICAgICAgICBpZiAoZm9udFdlaWdodC5zdGFydHNXaXRoKCJi
b2xkIikgfHwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pihmb250V2VpZ2h0
KS52YWx1ZU9yKDApID49IDcwMCkgewogICAgICAgICAgICAgLy8gPz8/IGhhbmRsZSB3ZWlnaHQg
cHJvcGVybHkgdXNpbmcgTlNGb250TWFuYWdlcgogICAgICAgICAgICAgUGxhdGZvcm1Gb250ICpv
cmlnaW5hbEZvbnQgPSBmb250OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAppbmRleCA0N2YwYjk1NDcxZWQ5YTAwODAzNGNj
ODI2YmEzNjI1ZjdkMmVlZmRlLi42MzVlOTMyM2JlNWNmNmY5OTkzNjYwMzE5MDJmMjA1NDI3NTEw
Yzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTI5LDcg
KzI5LDYgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJSZW5kZXJGcmFtZS5o
IgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTgzLDcgKzgyLDcgQEAgaW50IEhUTUxGcmFtZUVsZW1lbnQ6OmRlZmF1bHRUYWJJbmRleCgpIGNv
bnN0CiB2b2lkIEhUTUxGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09
IGZyYW1lYm9yZGVyQXR0cikgewotICAgICAgICBtX2ZyYW1lQm9yZGVyID0gcGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKTsKKyAgICAgICAgbV9m
cmFtZUJvcmRlciA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZhbHVlX29yKDApOwogICAgICAg
ICBtX2ZyYW1lQm9yZGVyU2V0ID0gIXZhbHVlLmlzTnVsbCgpOwogICAgICAgICAvLyBGSVhNRTog
SWYgd2UgYXJlIGFscmVhZHkgYXR0YWNoZWQsIHRoaXMgaGFzIG5vIGVmZmVjdC4KICAgICB9IGVs
c2UgaWYgKG5hbWUgPT0gbm9yZXNpemVBdHRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCA1Yzk2NTUwM2E0ZGFmM2QxMjcwZTAwMTMzMzgwNGIy
NDY3ZGZmN2U1Li45NWFlNmExZTU1YjJmNTUzMWU4NWFjMTk4MzkyZDg0NmQwM2M3YWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTM2LDEyICsz
NiwxMiBAQAogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1l
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAj
aW5jbHVkZSAiUmVuZGVyRnJhbWVTZXQuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMyLDcgKzEzMiw3
IEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0CiAKICAgICBpZiAobmFtZSA9PSBib3JkZXJBdHRy
KSB7CiAgICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fYm9yZGVy
ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigw
KTsKKyAgICAgICAgICAgIG1fYm9yZGVyID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkudmFsdWVf
b3IoMCk7CiAgICAgICAgICAgICBtX2JvcmRlclNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgbV9ib3JkZXJTZXQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVs
ZW1lbnQuY3BwCmluZGV4IDcyNzJhNWE3ZTZlZDc4NjBjZmQzY2YzYjQzOTY2NjE5NGE3YzljMTgu
LmM2YjhlMDVjYjk1MjIzOGZkNGVhZmI1ZTk0Yjc0YzM3MjMyYWRhMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSFJFbGVtZW50LmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVy
c2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc0LDcgKzczLDcgQEAgdm9pZCBI
VE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmEKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgQ1NTVmFsdWVBdXRv
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSB3aWR0aEF0dHIpIHsKLSAgICAg
ICAgaWYgKGF1dG8gdmFsdWVJbnRlZ2VyID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1
bms8aW50Pih2YWx1ZSk7IHZhbHVlSW50ZWdlciAmJiAhKnZhbHVlSW50ZWdlcikKKyAgICAgICAg
aWYgKGF1dG8gdmFsdWVJbnRlZ2VyID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSk7IHZhbHVlSW50
ZWdlciAmJiAhKnZhbHVlSW50ZWdlcikKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50
YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgMSwgQ1NTVW5pdFR5
cGU6OkNTU19QWCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCB2YWx1ZSk7CkBAIC05MSw3ICs5MCw3IEBAIHZv
aWQgSFRNTEhSRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hCiAgICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvciwgZGFya0dyYXlWYWx1ZSk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgaWYgKG5hbWUgPT0gc2l6ZUF0dHIpIHsKLSAgICAgICAgaW50IHNpemUgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApOworICAgICAg
ICBpbnQgc2l6ZSA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZhbHVlX29yKDApOwogICAgICAg
ICBpZiAoc2l6ZSA8PSAxKQogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCAwLCBDU1NV
bml0VHlwZTo6Q1NTX1BYKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmNwcAppbmRleCAyN2ZlZmViNTdiOWMwNTY1NWYxZGRmNWRhYWIyN2JlOTQw
NDg2NmUxLi40MjNiZjgxZTQwZTYxZWQ5NzcwNzQ1NDRjYTA1ZDhkYTIzMjQ5ZjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcApAQCAtMzUsNyArMzUsNiBAQAog
I2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtODcsNyArODYsNyBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZQogICAgIGVsc2UgaWYgKG5h
bWUgPT0gZnJhbWVib3JkZXJBdHRyKSB7CiAgICAgICAgIC8vIEZyYW1lIGJvcmRlciBkb2Vzbid0
IHJlYWxseSBtYXRjaCB0aGUgSFRNTDQgc3BlYyBkZWZpbml0aW9uIGZvciBpZnJhbWVzLiBJdCBz
aW1wbHkgYWRkcwogICAgICAgICAvLyBhIHByZXNlbnRhdGlvbmFsIGhpbnQgdGhhdCB0aGUgYm9y
ZGVyIHNob3VsZCBiZSBvZmYgaWYgc2V0IHRvIHplcm8uCi0gICAgICAgIGlmICghcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKSkgeworICAgICAg
ICBpZiAoIXBhcnNlSFRNTEludGVnZXIodmFsdWUpKSB7CiAgICAgICAgICAgICAvLyBBZGQgYSBy
dWxlIHRoYXQgbnVsbHMgb3V0IG91ciBib3JkZXIgd2lkdGguCiAgICAgICAgICAgICBhZGRQcm9w
ZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
V2lkdGgsIDAsIENTU1VuaXRUeXBlOjpDU1NfUFgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBjZTZjOWI5OTA2YTkwNGYzYmVlZjExNTlm
ZDZjYjdjYzBhOWNlMTJlLi42YTRmYTNjOTRmZmY0ZjEzZWZhYjVkYzdhOGQxODM0YTFkZGI4ZWVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTgwMiw3ICs4
MDIsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogICAgICAgICBpZiAobV9zaXplICE9IG9s
ZFNpemUgJiYgcmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5
b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSByZXN1bHRz
QXR0cikKLSAgICAgICAgbV9tYXhSZXN1bHRzID0gdmFsdWUuaXNOdWxsKCkgPyAtMSA6IHN0ZDo6
bWluKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3Io
MCksIG1heFNhdmVkUmVzdWx0cyk7CisgICAgICAgIG1fbWF4UmVzdWx0cyA9IHZhbHVlLmlzTnVs
bCgpID8gLTEgOiBzdGQ6Om1pbihwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKS52YWx1ZV9vcigwKSwg
bWF4U2F2ZWRSZXN1bHRzKTsKICAgICBlbHNlIGlmIChuYW1lID09IGF1dG9zYXZlQXR0ciB8fCBu
YW1lID09IGluY3JlbWVudGFsQXR0cikKICAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJl
ZSgpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gbWF4QXR0ciB8fCBuYW1lID09IG1pbkF0dHIgfHwg
bmFtZSA9PSBtdWx0aXBsZUF0dHIgfHwgbmFtZSA9PSBwYXR0ZXJuQXR0ciB8fCBuYW1lID09IHBy
ZWNpc2lvbkF0dHIgfHwgbmFtZSA9PSBzdGVwQXR0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVs
ZW1lbnQuY3BwCmluZGV4IGVjZTI5ZWEyMjA3OTdkOTllNDNjOWY3MTAwYmY0ZGRhODJlOWZjZmIu
LjM0MzI4M2Y4MTEyZmNkZTk3OWE0ZGYwNzFjNTM5MThiZTZmNTJmZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTElFbGVtZW50LmNwcApAQCAtMTE3LDcgKzExNywxMCBAQCB2b2lkIEhUTUxMSUVs
ZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCiBpbmxpbmUgdm9pZCBIVE1MTElFbGVtZW50Ojpw
YXJzZVZhbHVlKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIEFTU0VSVChyZW5kZXJl
cigpKTsKLSAgICBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnJlbmRlcmVyKCkpLnNldEV4cGxp
Y2l0VmFsdWUocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkpOwor
ICAgIE9wdGlvbmFsPGludD4gZXhwbGljaXRWYWx1ZTsKKyAgICBpZiAoYXV0byBwYXJzZWRWYWx1
ZSA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpKQorICAgICAgICBleHBsaWNpdFZhbHVlID0gKnBh
cnNlZFZhbHVlOworICAgIGRvd25jYXN0PFJlbmRlckxpc3RJdGVtPigqcmVuZGVyZXIoKSkuc2V0
RXhwbGljaXRWYWx1ZShleHBsaWNpdFZhbHVlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCmluZGV4IGM0ODA5ZTlmYWRmN2ZiZWY1YWIyYmU2MDBh
YjQ0YmYxODgwODE3ZDEuLjE0YTQ3Mjk4YWU2ZjcxMzRiOGUxMDY2OTcwOGQwOWMyY2MwYjNiMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKQEAgLTMyLDcg
KzMyLDYgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyTWFycXVlZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTE0OCw4ICsxNDcsOCBAQCB2b2lkIEhUTUxNYXJxdWVlRWxlbWVu
dDo6c2V0U2Nyb2xsRGVsYXkodW5zaWduZWQgc2Nyb2xsRGVsYXkpCiAgICAgCiBpbnQgSFRNTE1h
cnF1ZWVFbGVtZW50Ojpsb29wKCkgY29uc3QKIHsKLSAgICBhdXRvIGxvb3BWYWx1ZSA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihsb29wQXR0cikpOwotICAgIHJldHVybiBsb29wVmFsdWUgJiYgKmxvb3BWYWx1ZSA+
IDAgPyAqbG9vcFZhbHVlIDogLTE7CisgICAgaW50IGxvb3BWYWx1ZSA9IGdldEludGVncmFsQXR0
cmlidXRlKGxvb3BBdHRyKTsKKyAgICByZXR1cm4gbG9vcFZhbHVlID4gMCA/IGxvb3BWYWx1ZSA6
IC0xOwogfQogICAgIAogRXhjZXB0aW9uT3I8dm9pZD4gSFRNTE1hcnF1ZWVFbGVtZW50OjpzZXRM
b29wKGludCBsb29wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50
LmNwcAppbmRleCA2ODczODA1ODdhMWQ1OWU0MzY5ZmVjYmEzZjQzMjJhODdlYjQ0OGU4Li41OTNm
N2QyNDc2N2Q4NzAwNTAyZDI4NmEyNWNjNzBmZGQ5NzU1ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDMs
MTAgKzEwMiwxMCBAQCB2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTgogICAgIGlmIChuYW1lID09IG5v
d3JhcEF0dHIpCiAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVdlYmtpdE5vd3JhcCk7CiAg
ICAgZWxzZSBpZiAobmFtZSA9PSB3aWR0aEF0dHIpIHsKLSAgICAgICAgaWYgKHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3IoMCkgPiAwKSAvLyB3aWR0
aD0iMCIgaXMgaWdub3JlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklFLgorICAgICAgICBp
ZiAocGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkudmFsdWVfb3IoMCkgPiAwKSAvLyB3aWR0aD0iMCIg
aXMgaWdub3JlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklFLgogICAgICAgICAgICAgYWRk
SFRNTExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIHZhbHVlKTsKICAgICB9
IGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikgewotICAgICAgICBpZiAocGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKSA+IDApIC8vIGhlaWdo
dD0iMCIgaXMgaWdub3JlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklFLgorICAgICAgICBp
ZiAocGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkudmFsdWVfb3IoMCkgPiAwKSAvLyBoZWlnaHQ9IjAi
IGlzIGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KICAgICAgICAgICAgIGFk
ZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwgdmFsdWUpOwogICAg
IH0gZWxzZQogICAgICAgICBIVE1MVGFibGVQYXJ0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJl
c2VudGF0aW9uQXR0cmlidXRlKG5hbWUsIHZhbHVlLCBzdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAppbmRleCAwM2FmZmNjZGJiYzNhZTA3YTEyMjkw
OGMxNjRkOTU4YzUyM2I3MmNjLi41ZTI0Yjk3ZDhkNWRmYzlmOTVkMjRlNDkwMjc0N2YxZTQ4ZGFj
YzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKQEAg
LTc4LDggKzc4LDggQEAgdm9pZCBIVE1MVGFibGVDb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3QKICAgICB9IGVsc2UgaWYgKG5h
bWUgPT0gd2lkdGhBdHRyKSB7CiAgICAgICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGVDb2w+KHJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgUmVuZGVyVGFibGVDb2wmIGNvbCA9IGRvd25jYXN0PFJlbmRlclRhYmxlQ29sPigqcmVu
ZGVyZXIoKSk7Ci0gICAgICAgICAgICAgICAgaW50IG5ld1dpZHRoID0gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8aW50Pih3aWR0aCgpKS52YWx1ZU9yKDApOworICAgICAgICAgICAg
ICAgIGF1dG8mIGNvbCA9IGRvd25jYXN0PFJlbmRlclRhYmxlQ29sPigqcmVuZGVyZXIoKSk7Cisg
ICAgICAgICAgICAgICAgaW50IG5ld1dpZHRoID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkudmFs
dWVfb3IoMCk7CiAgICAgICAgICAgICAgICAgaWYgKG5ld1dpZHRoICE9IGNvbC53aWR0aCgpKQog
ICAgICAgICAgICAgICAgICAgICBjb2wuc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxj
KCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNw
cAppbmRleCA0YzAzNzYwZjE2MTQ5ODE2ZjlhYTdiZjBmMmNhZWJlY2UzNmY2MTk0Li5iZjc5ZDJj
NTAwYTEwNDYzNmQwY2I3ZTk1OGNmYjNhMzAwZmExOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJTdHlsZVBy
b3BlcnRpZXMuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9u
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAwLDcgKzM5OSw3IEBAIHZvaWQgSFRN
TFRhYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cmluCiAgICAgICAgICAgICBtX3J1bGVzQXR0ciA9IEFsbFJ1bGVzOwogICAg
IH0gZWxzZSBpZiAobmFtZSA9PSBjZWxscGFkZGluZ0F0dHIpIHsKICAgICAgICAgaWYgKCF2YWx1
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3BhZGRpbmcgPSBzdGQ6Om1heCgwLCBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApKTsKKyAgICAg
ICAgICAgIG1fcGFkZGluZyA9IHN0ZDo6bWF4KDAsIHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZh
bHVlX29yKDApKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYWRkaW5nID0gMTsKICAg
ICB9IGVsc2UgaWYgKG5hbWUgPT0gY29sc0F0dHIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCBj
NTNhOTk3MDU5NDQ4ODViYjJkOTM3MGZkMGNmYTUzYmM1NjhlYmIwLi42MzFjM2FhNmIzNzI1ZDc4
ZTg4MTlkOWYxODIzZjZiZTZhMmZjNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC01Nyw3ICs1
Nyw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXJzLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMxNyw4ICszMTcsOCBAQCB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdodCgpCiB7CiAg
ICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1faW5zcGVjdGVkUGFnZUNvbnRyb2xs
ZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsK
ICAgICBTdHJpbmcgdmFsdWUgPSBtX3NldHRpbmdzLT5nZXRQcm9wZXJ0eShpbnNwZWN0b3JBdHRh
Y2hlZEhlaWdodFNldHRpbmcpOwotICAgIHVuc2lnbmVkIHByZWZlcnJlZEhlaWdodCA9IHZhbHVl
LmlzRW1wdHkoKSA/IGRlZmF1bHRBdHRhY2hlZEhlaWdodCA6IHZhbHVlLnRvVUludCgpOwotICAg
IAorICAgIHVuc2lnbmVkIHByZWZlcnJlZEhlaWdodCA9IHZhbHVlLmlzRW1wdHkoKSA/IGRlZmF1
bHRBdHRhY2hlZEhlaWdodCA6IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2ln
bmVkPih2YWx1ZSkudmFsdWVPcigwKTsKKwogICAgIC8vIFRoaXMgY2FsbCBtaWdodCBub3QgZ28g
dGhyb3VnaCAoaWYgdGhlIHdpbmRvdyBzdGFydHMgb3V0IGRldGFjaGVkKSwgYnV0IGlmIHRoZSB3
aW5kb3cgaXMgaW5pdGlhbGx5IGNyZWF0ZWQgYXR0YWNoZWQsCiAgICAgLy8gSW5zcGVjdG9yQ29u
dHJvbGxlcjo6YXR0YWNoV2luZG93IGlzIG5ldmVyIGNhbGxlZCwgc28gd2UgbmVlZCB0byBtYWtl
IHN1cmUgdG8gc2V0IHRoZSBhdHRhY2hlZFdpbmRvd0hlaWdodC4KICAgICAvLyBGSVhNRTogQ2xl
YW4gdXAgY29kZSBzbyB3ZSBvbmx5IGhhdmUgdG8gY2FsbCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dCBpbiBJbnNwZWN0b3JDb250cm9sbGVyOjphdHRhY2hXaW5kb3cKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNWUz
NDNhNTRiYTcyMTcyOWI4MTI5MmM2MDYzOTkyNWRjMWQwZGVhMS4uYTgyNzE3Mzg4MTY5YjcxZjZm
MDMxZDI4ZDNlMjY2MmZjNDIyMWUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEyMCw2ICsxMjAsNyBAQAog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI3NTgsMjIgKzI3NTksMjAgQEAgTm9kZSogSW5zcGVj
dG9yRE9NQWdlbnQ6Om5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhdGhUb2tlbnMuc2l6
ZSgpIC0gMTsgaSArPSAyKSB7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgICAg
IHVuc2lnbmVkIGNoaWxkTnVtYmVyID0gcGF0aFRva2Vuc1tpXS50b1VJbnQoJnN1Y2Nlc3MpOwot
ICAgICAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIGF1dG8gY2hpbGROdW1iZXIgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4ocGF0aFRva2Vuc1tpXSk7CisgICAg
ICAgIGlmICghY2hpbGROdW1iZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
ICAgICBOb2RlKiBjaGlsZDsKICAgICAgICAgaWYgKGlzPEhUTUxGcmFtZU93bmVyRWxlbWVudD4o
Km5vZGUpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIWNoaWxkTnVtYmVyKTsKKyAgICAgICAgICAg
IEFTU0VSVCghKmNoaWxkTnVtYmVyKTsKICAgICAgICAgICAgIGF1dG8mIGZyYW1lT3duZXIgPSBk
b3duY2FzdDxIVE1MRnJhbWVPd25lckVsZW1lbnQ+KCpub2RlKTsKICAgICAgICAgICAgIGNoaWxk
ID0gZnJhbWVPd25lci5jb250ZW50RG9jdW1lbnQoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGlmIChjaGlsZE51bWJlciA+PSBpbm5lckNoaWxkTm9kZUNvdW50KG5vZGUpKQorICAg
ICAgICAgICAgaWYgKCpjaGlsZE51bWJlciA+PSBpbm5lckNoaWxkTm9kZUNvdW50KG5vZGUpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgICAgICAgICBjaGlsZCA9IGlu
bmVyRmlyc3RDaGlsZChub2RlKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBjaGls
ZCAmJiBqIDwgY2hpbGROdW1iZXI7ICsraikKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAw
OyBjaGlsZCAmJiBqIDwgKmNoaWxkTnVtYmVyOyArK2opCiAgICAgICAgICAgICAgICAgY2hpbGQg
PSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXgg
MDYzM2I3NTYyM2NiYjlkYWI5OWU3YTI4MTkwNmQ5YmQwYjgwNjdjNi4uYTVmZTFmMTk4Nzc5Nzg4
ZmFhOTJhMmZjM2NhMjRhMzg1ZmQ0NjQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNp
bmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRh
YmxlRWxlbWVudC5oIgpAQCAtMjU4LDcgKzI1OSw3IEBAIEJveCogVHJlZUJ1aWxkZXI6OmNyZWF0
ZUxheW91dEJveChjb25zdCBDb250YWluZXJCb3gmIHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVu
CiAgICAgICAgICAgICAgICAgYXV0byYgdGFibGVDb2xFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRN
TFRhYmxlQ29sRWxlbWVudCY+KCpyZW5kZXJlci5lbGVtZW50KCkpOwogICAgICAgICAgICAgICAg
IGF1dG8gY29sdW1uV2lkdGggPSB0YWJsZUNvbEVsZW1lbnQud2lkdGgoKTsKICAgICAgICAgICAg
ICAgICBpZiAoIWNvbHVtbldpZHRoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3gtPnNldENvbHVtbldpZHRoKGNvbHVtbldpZHRoLnRvSW50KCkpOworICAgICAg
ICAgICAgICAgICAgICBjaGlsZExheW91dEJveC0+c2V0Q29sdW1uV2lkdGgocGFyc2VIVE1MSW50
ZWdlcihjb2x1bW5XaWR0aCkudmFsdWVfb3IoMCkpOwogICAgICAgICAgICAgICAgIGlmICh0YWJs
ZUNvbEVsZW1lbnQuc3BhbigpID4gMSkKICAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRC
b3gtPnNldENvbHVtblNwYW4odGFibGVDb2xFbGVtZW50LnNwYW4oKSk7CiAgICAgICAgICAgICB9
IGVsc2UgewpAQCAtMjc2LDcgKzI3Nyw2IEBAIEJveCogVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91
dEJveChjb25zdCBDb250YWluZXJCb3gmIHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVuCiAgICAg
ICAgICAgICAgICAgYXV0byByb3dTcGFuID0gY2VsbEVsZW1lbnQucm93U3BhbigpOwogICAgICAg
ICAgICAgICAgIGlmIChyb3dTcGFuID4gMSkKICAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3gtPnNldFJvd1NwYW4ocm93U3Bhbik7Ci0KICAgICAgICAgICAgICAgICBhdXRvIGNvbHVt
blNwYW4gPSBjZWxsRWxlbWVudC5jb2xTcGFuKCk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbHVt
blNwYW4gPiAxKQogICAgICAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveC0+c2V0Q29sdW1u
U3Bhbihjb2x1bW5TcGFuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAppbmRleCA5ZDBiN2U2NGUzMWIzN2M2
YjJlOGU3ODcyZGY1OWY4M2UyNzNjMTlmLi45OWNhOWM0YTBkOTc2NjEyYTBmOGJkMzNkYTA4NGZh
NDQ2ODVlOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9J
bnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDEwICs0
NywxMCBAQCBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlOjpDcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlKCkKIAogc3RhdGljIGJvb2wgcGFyc2VBY2Nlc3NDb250cm9sTWF4QWdl
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBTZWNvbmRzJiBleHBpcnlEZWx0YSkKIHsKLSAgICAvLyBG
SVhNRTogdGhpcyB3aWxsIG5vdCBkbyB0aGUgY29ycmVjdCB0aGluZyBmb3IgYSBudW1iZXIgc3Rh
cnRpbmcgd2l0aCBhICcrJwotICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICBleHBpcnlEZWx0YSA9
IFNlY29uZHMoc3RhdGljX2Nhc3Q8ZG91YmxlPihzdHJpbmcudG9VSW50U3RyaWN0KCZvaykpKTsK
LSAgICByZXR1cm4gb2s7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHJlamVj
dCBzdHJpbmdzIHRoYXQgaGF2ZSBhIGxlYWRpbmcgIisiLgorICAgIGF1dG8gcGFyc2VkSW50ZWdl
ciA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4oc3RyaW5nKTsKKyAgICBleHBpcnlEZWx0YSA9IFNl
Y29uZHMoc3RhdGljX2Nhc3Q8ZG91YmxlPihwYXJzZWRJbnRlZ2VyLnZhbHVlT3IoMCkpKTsKKyAg
ICByZXR1cm4gcGFyc2VkSW50ZWdlci5oYXNWYWx1ZSgpOwogfQogCiBFeHBlY3RlZDxVbmlxdWVS
ZWY8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+LCBTdHJpbmc+IENyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjpjcmVhdGUoU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgcG9saWN5LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAKaW5kZXggNDgyZDliY2FkNGJjN2Jj
YmMzNDg2OGI1ZWRjNzU2M2IwMmZkNmFmNC4uNGY5MjM5MDA4ZjkwYjViNTg4MGYxYjJkNzVmMmY1
MWZkNjY5OWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9y
eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNl
ci5jcHAKQEAgLTIxLDE4ICsyMSwxOSBAQAogLy8gT3JpZ2luYWwgdmVyc2lvbiBvZiB0aGlzIGZp
bGUgY2FuIGN1cnJlbnRseSBiZSBmb3VuZCBhdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3pp
bGxhMS44L3NvdXJjZS9uZXR3ZXJrL3N0cmVhbWNvbnYvY29udmVydGVycy9QYXJzZUZUUExpc3Qu
Y3BwCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoRlRQRElSKQogI2luY2x1ZGUg
IkZUUERpcmVjdG9yeVBhcnNlci5oIgogCisjaWYgRU5BQkxFKEZUUERJUikKKworI2luY2x1ZGUg
PHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CisKIC8vIE9uIFdpbmRvd3MsIHVzZSB0aGUg
dGhyZWFkc2FmZSAqX3IgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHB0aHJlYWQuCiAjaWYgT1MoV0lO
RE9XUykgJiYgKFVTRShQVEhSRUFEUykgfHwgSEFWRShQVEhSRUFEX0gpKQogI2luY2x1ZGUgPHB0
aHJlYWQuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KLSNpbmNsdWRl
IDxzdGRpby5oPgotCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIE9TKFdJTkRPV1MpICYm
ICFkZWZpbmVkKGdtdGltZV9yKQpAQCAtMTE4MSw3ICsxMTgyLDcgQEAgRlRQRW50cnlUeXBlIHBh
cnNlT25lRlRQTGluZShjb25zdCBjaGFyKiBsaW5lLCBMaXN0U3RhdGUmIHN0YXRlLCBMaXN0UmVz
dWx0JiByZXMKICAgICAgICAgewogICAgICAgICAgIC8qIEZpcnN0IHRyeSB0byB1c2UgcmVzdWx0
LmZlX3NpemUgdG8gZmluZCAiIC0+ICIgc2VxdWVuY2UuCiAgICAgICAgICAgICAgVGhpcyBjYW4g
Z2l2ZSBwcm9wZXIgcmVzdWx0IGZvciBjYXNlcyBsaWtlICJhYWEgLT4gYmJiIC0+IGNjYyIuICov
Ci0gICAgICAgICAgdW5zaWduZWQgaW50IGZpbGVTaXplID0gcmVzdWx0LmZpbGVTaXplLnRvVUlu
dCgpOworICAgICAgICAgICAgYXV0byBmaWxlU2l6ZSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPHVuc2lnbmVkPihyZXN1bHQuZmlsZVNpemUpLnZhbHVlT3IoMCk7CiAKICAgICAg
ICAgICBpZiAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID4gKGZpbGVTaXplICsgNCkgJiYKICAgICAg
ICAgICAgICAgc3RybmNtcChyZXN1bHQuZmlsZW5hbWUgKyByZXN1bHQuZmlsZW5hbWVMZW5ndGgg
LSBmaWxlU2l6ZSAtIDQsICIgLT4gIiwgNCkgPT0gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCmluZGV4IGU2NmUwYzNhZTU4NjMxYWQy
MGMxMWIzYTBkODQ4NGUwZWYxYjQ5N2YuLjIxOTg3NTNlNzc1Njg2ZjMwZDc3ZDNmMDlhZmM1N2Y0
MDJlNzE2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1i
ZXIuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTcwLDcgKzcxLDcgQEAgRXhwZWN0ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEsIFN0cmluZz4gUHJpdmF0ZUNsaWNrTWUKIAogICAgIGF1dG8gcHJl
Zml4TGVuZ3RoID0gc2l6ZW9mKHByaXZhdGVDbGlja01lYXN1cmVtZW50VHJpZ2dlckF0dHJpYnV0
aW9uUGF0aCkgLSAxOwogICAgIGlmIChwYXRoLmxlbmd0aCgpID09IHByZWZpeExlbmd0aCArIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6
ZSkgewotICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQgPSBwYXRoLnN1
YnN0cmluZyhwcmVmaXhMZW5ndGgsIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25U
cmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSkudG9VSW50NjRTdHJpY3QoKTsKKyAgICAgICAgYXV0
byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pihw
YXRoLnN1YnN0cmluZyhwcmVmaXhMZW5ndGgsIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSkpOwogICAgICAgICBpZiAoIWF0dHJpYnV0
aW9uVHJpZ2dlckRhdGFVSW50NjQgfHwgKmF0dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQgPiBB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhFbnRyb3B5KQogICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252
ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgY29udmVyc2lvbiBkYXRhIGNvdWxk
IG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gb2Yg
Il9zLCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhFbnRyb3B5LCAiLiJfcykpOwogCkBAIC03
OCwxMSArNzksMTEgQEAgRXhwZWN0ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEsIFN0cmluZz4gUHJpdmF0ZUNsaWNrTWUKICAgICB9CiAgICAgCiAgICAg
aWYgKHBhdGgubGVuZ3RoKCkgPT0gcHJlZml4TGVuZ3RoICsgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRTaXplICsgMSArIHByaXZhdGVDbGlj
a01lYXN1cmVtZW50UHJpb3JpdHlQYXRoU2VnbWVudFNpemUpIHsKLSAgICAgICAgYXV0byBhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID0gcGF0aC5zdWJzdHJpbmcocHJlZml4TGVuZ3RoLCBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNp
emUpLnRvVUludDY0U3RyaWN0KCk7CisgICAgICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0
YVVJbnQ2NCA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocGF0aC5zdWJzdHJpbmcocHJlZml4TGVu
Z3RoLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2Vn
bWVudFNpemUpKTsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0IHx8
ICphdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID4gQXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6
TWF4RW50cm9weSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5n
KCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVk
IGJlY2F1c2UgdGhlIGNvbnZlcnNpb24gZGF0YSBjb3VsZCBub3QgYmUgcGFyc2VkIG9yIHdhcyBo
aWdoZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIG9mICJfcywgQXR0cmlidXRpb25UcmlnZ2Vy
RGF0YTo6TWF4RW50cm9weSwgIi4iX3MpKTsKIAotICAgICAgICBhdXRvIGF0dHJpYnV0aW9uUHJp
b3JpdHlVSW50NjQgPSBwYXRoLnN1YnN0cmluZyhwcmVmaXhMZW5ndGggKyBwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUgKyAxLCBwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFByaW9yaXR5UGF0aFNlZ21lbnRTaXplKS50b1VJbnQ2NFN0cmlj
dCgpOworICAgICAgICBhdXRvIGF0dHJpYnV0aW9uUHJpb3JpdHlVSW50NjQgPSBwYXJzZUludGVn
ZXI8dWludDY0X3Q+KHBhdGguc3Vic3RyaW5nKHByZWZpeExlbmd0aCArIHByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSArIDEsIHByaXZh
dGVDbGlja01lYXN1cmVtZW50UHJpb3JpdHlQYXRoU2VnbWVudFNpemUpKTsKICAgICAgICAgaWYg
KCFhdHRyaWJ1dGlvblByaW9yaXR5VUludDY0IHx8ICphdHRyaWJ1dGlvblByaW9yaXR5VUludDY0
ID4gUHJpb3JpdHk6Ok1heEVudHJvcHkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQobWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2Fz
IG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBwcmlvcml0eSBjb3VsZCBub3QgYmUgcGFyc2VkIG9y
IHdhcyBoaWdoZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIG9mICJfcywgUHJpb3JpdHk6Ok1h
eEVudHJvcHksICIuIl9zKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxl
Y3RFbGVtZW50LmNwcAppbmRleCAwMGRlOWFjODU2NzQ0OTNjNzAwZmRjNzkyMGRhNzEzMzVjOTUw
MWIwLi4wNTU3OTdmOWZiMzhkMDUzYmMyNjRkNTZiMjY3ZWNiZTczMTE4MmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0zNyw3ICszNyw2
IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTE4LDcgKzExNyw3IEBAIGludCBNYXRoTUxTZWxlY3RFbGVtZW50OjpnZXRTZWxlY3RlZEFj
dGlvbkNoaWxkQW5kSW5kZXgoRWxlbWVudComIHNlbGVjdGVkQ2hpbGQpCiAgICAgaWYgKCFzZWxl
Y3RlZENoaWxkKQogICAgICAgICByZXR1cm4gMTsKIAotICAgIGludCBzZWxlY3Rpb24gPSBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oTWF0aE1MTmFtZXM6OnNlbGVjdGlvbkF0dHIpKS52YWx1ZU9yKDApOworICAgIGlu
dCBzZWxlY3Rpb24gPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6c2VsZWN0aW9u
QXR0cik7CiAgICAgaW50IGk7CiAgICAgZm9yIChpID0gMTsgaSA8IHNlbGVjdGlvbjsgaSsrKSB7
CiAgICAgICAgIGF1dG8qIG5leHRDaGlsZCA9IHNlbGVjdGVkQ2hpbGQtPm5leHRFbGVtZW50U2li
bGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCBmMWM2Nzg1YTRhMzll
ZGUyYzQ5NTQyODExY2IxOTUyZDBiOWM0MmQzLi5kYmY2MzdjZmIyOTgwNjYxYWE2NzcwYTc4YTQ0
N2FmZWQwMzU5YTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtNDYsNiAr
NDYsNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zODMsMTIgKzM4NCwxMCBAQCB2b2lkIEV2ZW50U291cmNlOjpwYXJzZUV2ZW50
U3RyZWFtTGluZSh1bnNpZ25lZCBwb3NpdGlvbiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpZQogICAg
ICAgICBpZiAoIXZhbHVlTGVuZ3RoKQogICAgICAgICAgICAgbV9yZWNvbm5lY3REZWxheSA9IGRl
ZmF1bHRSZWNvbm5lY3REZWxheTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogRG8gd2UgcmVhbGx5IHdhbnQgdG8gaWdub3JlIHRyYWlsaW5nIGdhcmJhZ2UgaGVyZT8gU2hv
dWxkIHdlIGJlIHVzaW5nIHRoZSBzdHJpY3QgdmVyc2lvbiBpbnN0ZWFkPwotICAgICAgICAgICAg
Ly8gRklYTUU6IElmIHdlIGNhbid0IHBhcnNlIHRoZSB2YWx1ZSwgc2hvdWxkIHdlIGxlYXZlIG1f
cmVjb25uZWN0RGVsYXkgYWxvbmUgb3Igc2V0IGl0IHRvIGRlZmF1bHRSZWNvbm5lY3REZWxheT8K
LSAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICBhdXRvIHJlY29ubmVjdERlbGF5ID0g
Y2hhcmFjdGVyc1RvVUludDY0KCZtX3JlY2VpdmVCdWZmZXJbcG9zaXRpb25dLCB2YWx1ZUxlbmd0
aCwgJm9rKTsKLSAgICAgICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICAgICBtX3JlY29ubmVj
dERlbGF5ID0gcmVjb25uZWN0RGVsYXk7CisgICAgICAgICAgICAvLyBGSVhNRTogRG8gd2UgcmVh
bGx5IHdhbnQgdG8gaWdub3JlIHRyYWlsaW5nIGp1bmsgaGVyZT8KKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBXaGVuIHdlIGNhbid0IHBhcnNlIHRoZSB2YWx1ZSwgc2hvdWxkIHdlIHJlYWxseSBsZWF2
ZSBtX3JlY29ubmVjdERlbGF5IGFsb25lPyBTaG91bGRuJ3Qgd2Ugc2V0IGl0IHRvIGRlZmF1bHRS
ZWNvbm5lY3REZWxheT8KKyAgICAgICAgICAgIGlmIChhdXRvIHJlY29ubmVjdERlbGF5ID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHsgJm1fcmVjZWl2ZUJ1ZmZl
cltwb3NpdGlvbl0sIHZhbHVlTGVuZ3RoIH0pKQorICAgICAgICAgICAgICAgIG1fcmVjb25uZWN0
RGVsYXkgPSAqcmVjb25uZWN0RGVsYXk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYXRpb24uY3BwCmluZGV4IGY2MGFlYWYzNTE2ZjY3NmExNWUwNjc2MDZlMjY3NjE3YjE0NGU1
NmMuLjA5NWU0NzQ4NWYzYmM0NTY0MDIzYjExZjk5OWI5NjQ2MDIxMDA1MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTG9jYXRpb24uY3BwCkBAIC0zNCw5ICszNCwxMCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNjUsNyArMTY2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
TG9jYXRpb246OnNldFBvcnQoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmly
c3RXaW4KICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwg
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7Ci0gICAgdXJsLnNldFBvcnQocGFyc2VVSW50MTYo
cG9ydFN0cmluZykpOworICAgIHVybC5zZXRQb3J0KHBhcnNlSW50ZWdlcjx1aW50MTZfdD4ocG9y
dFN0cmluZykpOwogICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2lu
ZG93LCB1cmwuc3RyaW5nKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKaW5kZXggNzljMDY3YjcwOTVmZTIzZmY0MDM4NzE4NTBmZjVjYjM5NmU1NzNh
Yi4uNzhjMmNhMDc1ZWJhM2EyYmEzNzUyMDkxYmEzNGFjM2UwOWM3M2E3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTEwNSwyMiArMTA2LDE1IEBAIE9wdGlvbmFsPFNlY3VyaXR5T3Jp
Z2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0
IFN0CiAgICAgaWYgKHNlcGFyYXRvcjEgPT0gc2VwYXJhdG9yMikKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICAKLSAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQgc2VjdGlvbiBpcyBh
IHZhbGlkIHBvcnQgbnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QKLSAgICBib29sIHBvcnRPa2F5Owot
ICAgIGludCBwb3J0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KGRhdGFiYXNlSWRlbnRpZmll
ci5sZW5ndGgoKSAtIHNlcGFyYXRvcjIgLSAxKS50b0ludCgmcG9ydE9rYXkpOwotICAgIGJvb2wg
cG9ydEFic2VudCA9IChzZXBhcmF0b3IyID09IGRhdGFiYXNlSWRlbnRpZmllci5sZW5ndGgoKSAt
IDEpOwotICAgIGlmICghKHBvcnRPa2F5IHx8IHBvcnRBYnNlbnQpKQorICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgcG9ydCBzZWN0aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9lc24ndCBleGlz
dC4KKyAgICBhdXRvIHBvcnRMZW5ndGggPSBkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkgLSBz
ZXBhcmF0b3IyIC0gMTsKKyAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1aW50MTZfdD4oU3RyaW5nVmlldyB7IGRhdGFiYXNlSWRlbnRpZmllciB9LnJpZ2h0
KHBvcnRMZW5ndGgpKTsKKyAgICBpZiAoIXBvcnQgJiYgcG9ydExlbmd0aCkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLSAgICAKLSAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICAKKwogICAgIGF1dG8gcHJvdG9jb2wgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vi
c3RyaW5nKDAsIHNlcGFyYXRvcjEpOwogICAgIGF1dG8gaG9zdCA9IGRhdGFiYXNlSWRlbnRpZmll
ci5zdWJzdHJpbmcoc2VwYXJhdG9yMSArIDEsIHNlcGFyYXRvcjIgLSBzZXBhcmF0b3IxIC0gMSk7
Ci0gICAgaWYgKCFwb3J0KQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJv
dG9jb2wsIGhvc3QsIFdURjo6bnVsbG9wdCB9OwotCi0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2lu
RGF0YSB7IHByb3RvY29sLCBob3N0LCBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkgfTsKKyAg
ICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJvdG9jb2wsIGhvc3QsIHBvcnQgfTsKIH0K
IAogU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKaW5kZXggOTAwM2Q5N2Vl
NTU2ZGU0ZjM3NDVmMjMzZGEzY2IxMTUwMTA3NzZkMi4uOGMwYTQyYzg3MzM1NTJmN2VlYWYzODU5
NmVkZmYxYjViMmVlN2ViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dG
ZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0xMzIsNyArMTMzLDcgQEAgc3RhdGljIHZvaWQgc2V0V2luZG93RmVhdHVy
ZShXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWUKICAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZh
bHVlLCAieWVzIikpCiAgICAgICAgIG51bWVyaWNWYWx1ZSA9IDE7CiAgICAgZWxzZQotICAgICAg
ICBudW1lcmljVmFsdWUgPSB2YWx1ZS50b0ludCgpOworICAgICAgICBudW1lcmljVmFsdWUgPSBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApOwog
CiAgICAgLy8gV2UgdHJlYXQga2V5IG9mICJyZXNpemFibGUiIGhlcmUgYXMgYW4gYWRkaXRpb25h
bCBmZWF0dXJlIHJhdGhlciB0aGFuIHNldHRpbmcgcmVzaXplYWJsZSB0byB0cnVlLgogICAgIC8v
IFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIEZpcmVmb3gsIGJ1dCBjb3VsZCBhbHNvIGJlIGhhbmRs
ZWQgYXQgYW5vdGhlciBsZXZlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKaW5kZXggYjlmNTQ4ODA3
ZTNkNjRlN2QyYzE0ODdkYTU2MzYwNzY2ZmFjMGNlMi4uNmEzMzZiNWEzZTE2MmIzYzIxZmEyNTk2
OTM1NjVlNzI0NTQzYmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nUGFyc2luZ0J1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00MzUsMTQgKzQzNiwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBP
cHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpQb3J0PgogICAgIAogICAg
IGlmICghYnVmZmVyLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
Ci0gICAgYm9vbCBvazsKLSAgICBpbnQgcG9ydEludCA9IGNoYXJhY3RlcnNUb0ludFN0cmljdChi
ZWdpbiwgYnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdpbiwgJm9rKTsKLSAgICBpZiAoIW9rIHx8IHBv
cnRJbnQgPCAwIHx8IHBvcnRJbnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4
KCkpCisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBidWZmZXIucG9zaXRpb24oKSAtIGJlZ2luOwor
ICAgIGF1dG8gcG9ydEludGVnZXIgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KHsgYmVnaW4sIGxl
bmd0aCB9KS52YWx1ZU9yKDApOworICAgIGlmICghcG9ydEludGVnZXIpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKICAgICBQb3J0IHBvcnQ7Ci0gICAgcG9ydC52YWx1ZSA9IHBvcnRJ
bnQ7CisgICAgcG9ydC52YWx1ZSA9IHBvcnRJbnRlZ2VyOwogICAgIHJldHVybiBwb3J0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJl
YWRMaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJl
YWRMaW51eC5jcHAKaW5kZXggYzdlNzNmMGMxYzI1YmJhMDVmMDZiODUzMjViNWMzMDNlNzdjZGE0
OC4uYjY1OWI3NzRmMjY0MDEzYTE3Y2Y1NmU2YzEzMTAyNWVlY2NiY2UwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNw
cApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvbGludXgvQ3VycmVudFByb2Nlc3NNZW1vcnlTdGF0
dXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjAwLDIwICsyMDEsMTUgQEAgc3RhdGljIHZvaWQg
Y29sbGVjdENQVVVzYWdlKGZsb2F0IHBlcmlvZCkKIAogICAgIHN0cnVjdCBkaXJlbnQqIGRwOwog
ICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGRpcikpKSB7Ci0gICAgICAgIFN0cmluZyBuYW1lID0g
U3RyaW5nOjpmcm9tVVRGOChkcC0+ZF9uYW1lKTsKLSAgICAgICAgaWYgKG5hbWUgPT0gIi4iIHx8
IG5hbWUgPT0gIi4uIikKKyAgICAgICAgYXV0byBpZCA9IHBhcnNlSW50ZWdlcjxwaWRfdD4oZHAt
PmRfbmFtZSk7CisgICAgICAgIGlmICghaWQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBib29sIG9rOwotICAgICAgICBwaWRfdCBpZCA9IG5hbWUudG9JbnRTdHJpY3QoJm9rKTsK
LSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGF1dG8m
IGluZm8gPSB0aHJlYWRJbmZvTWFwKCkuYWRkKGlkLCBUaHJlYWRJbmZvKCkpLml0ZXJhdG9yLT52
YWx1ZTsKLSAgICAgICAgaWYgKCF0aHJlYWRDUFVVc2FnZShpZCwgcGVyaW9kLCBpbmZvKSkKLSAg
ICAgICAgICAgIHRocmVhZEluZm9NYXAoKS5yZW1vdmUoaWQpOworICAgICAgICBhdXRvJiBpbmZv
ID0gdGhyZWFkSW5mb01hcCgpLmFkZCgqaWQsIFRocmVhZEluZm8oKSkuaXRlcmF0b3ItPnZhbHVl
OworICAgICAgICBpZiAoIXRocmVhZENQVVVzYWdlKCppZCwgcGVyaW9kLCBpbmZvKSkKKyAgICAg
ICAgICAgIHRocmVhZEluZm9NYXAoKS5yZW1vdmUoKmlkKTsKIAotICAgICAgICBwcmV2aW91c1Rh
c2tzLnJlbW92ZShpZCk7CisgICAgICAgIHByZXZpb3VzVGFza3MucmVtb3ZlKCppZCk7CiAgICAg
fQogICAgIGNsb3NlZGlyKGRpcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKaW5kZXggZGIzNjQ0NzM0NTQ1Mjg3ZmMzMTM2NjNlYTk2OWNiNjM0MTYwZmY1
NC4uYzEyNGU3OGQyN2QyYTU3ODNmNmI4YzRlMDM4YTdmMTE2YzMyOGMyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0lu
dGVnZXJDb252ZXJzaW9uLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgV1RG
OjpEYXRhTXV0ZXg7CkBAIC0xMDcxLDE3ICsxMDcyLDEyIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uCiAKICAgICAvLyBTaWduYWwgdG8gZG93bnN0cmVhbSBpZiB0aGlzIGlzIGFuIEljZWNhc3Qg
c3RyZWFtLgogICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2FwczsKLSAgICBTdHJpbmcgbWV0YWRhdGFJ
bnRlcnZhbEFzU3RyaW5nID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpJY3lNZXRhSW50KTsKLSAgICBpZiAoIW1ldGFkYXRhSW50ZXJ2YWxBc1N0cmluZy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgYm9vbCBpc01ldGFkYXRhSW50ZXJ2YWxQYXJzZWQ7Ci0gICAgICAgIGlu
dCBtZXRhZGF0YUludGVydmFsID0gbWV0YWRhdGFJbnRlcnZhbEFzU3RyaW5nLnRvSW50KCZpc01l
dGFkYXRhSW50ZXJ2YWxQYXJzZWQpOwotICAgICAgICBpZiAoaXNNZXRhZGF0YUludGVydmFsUGFy
c2VkICYmIG1ldGFkYXRhSW50ZXJ2YWwgPiAwKSB7Ci0gICAgICAgICAgICBjYXBzID0gYWRvcHRH
UmVmKGdzdF9jYXBzX25ld19zaW1wbGUoImFwcGxpY2F0aW9uL3gtaWN5IiwgIm1ldGFkYXRhLWlu
dGVydmFsIiwgR19UWVBFX0lOVCwgbWV0YWRhdGFJbnRlcnZhbCwgbnVsbHB0cikpOwotCi0gICAg
ICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKTsKLSAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiUiV1OiBSZXNwb25zZSBDb250ZW50VHlwZTogJXMiLCBtX3JlcXVlc3ROdW1iZXIsIGNv
bnRlbnRUeXBlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBs
ZShjYXBzLmdldCgpLCAiY29udGVudC10eXBlIiwgR19UWVBFX1NUUklORywgY29udGVudFR5cGUu
dXRmOCgpLmRhdGEoKSwgbnVsbHB0cik7Ci0gICAgICAgIH0KKyAgICBpZiAoYXV0byBtZXRhZGF0
YUludGVydmFsID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihyZXNwb25z
ZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFJbnQpKTsgbWV0YWRhdGFJ
bnRlcnZhbCAmJiAqbWV0YWRhdGFJbnRlcnZhbCA+IDApIHsKKyAgICAgICAgY2FwcyA9IGFkb3B0
R1JlZihnc3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LWljeSIsICJtZXRhZGF0YS1p
bnRlcnZhbCIsIEdfVFlQRV9JTlQsICptZXRhZGF0YUludGVydmFsLCBudWxscHRyKSk7CisKKyAg
ICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpDb250ZW50VHlwZSk7CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAi
UiV1OiBSZXNwb25zZSBDb250ZW50VHlwZTogJXMiLCBtX3JlcXVlc3ROdW1iZXIsIGNvbnRlbnRU
eXBlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlKGNhcHMuZ2V0
KCksICJjb250ZW50LXR5cGUiLCBHX1RZUEVfU1RSSU5HLCBjb250ZW50VHlwZS51dGY4KCkuZGF0
YSgpLCBudWxscHRyKTsKICAgICB9CiAgICAgaWYgKGNhcHMpIHsKICAgICAgICAgR1NUX0RFQlVH
X09CSkVDVChzcmMsICJSJXU6IFNldCBjYXBzIHRvICUiIEdTVF9QVFJfRk9STUFULCBtX3JlcXVl
c3ROdW1iZXIsIGNhcHMuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggYmMx
NmVjZjcxNTQ5ZGU2ODU0MWU4YTVhZGE0YTk2YWFjYmFjNGFkZS4uMTdkYzE2MzQ0MzdjNjRiOTE0
ODAzMjMwODZmN2Q1ODdkYThmNWFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC00
Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIEdTVF9ERUJVR19DQVRF
R09SWSh3ZWJraXRNZWRpYVRodW5kZXJEZWJ1Z0NhdGVnb3J5KTsKICNkZWZpbmUgR1NUX0NBVF9E
RUZBVUxUIHdlYmtpdE1lZGlhVGh1bmRlckRlYnVnQ2F0ZWdvcnkKQEAgLTM0OSw4ICszNTAsMTAg
QEAgcHVibGljOgogICAgICAgICBpZiAoIXJlcXVlc3RUeXBlLmlzRW1wdHkoKSAmJiByZXF1ZXN0
VHlwZS5sZW5ndGgoKSAhPSBwYXlsb2FkLmxlbmd0aCgpKQogICAgICAgICAgICAgb2Zmc2V0ID0g
dHlwZVBvc2l0aW9uICsgNjsKIAotICAgICAgICBpZiAocmVxdWVzdFR5cGUubGVuZ3RoKCkgPT0g
MSkKLSAgICAgICAgICAgIG1fdHlwZSA9IG1ha2VPcHRpb25hbChzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpNZWRpYUtleU1lc3NhZ2VUeXBlPihyZXF1ZXN0VHlwZS50b0ludCgpKSk7CisgICAgICAgIGlm
IChyZXF1ZXN0VHlwZS5sZW5ndGgoKSA9PSAxKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhl
cmUgYXJlIHNpbXBsZXIgd2F5cyB0byBjb252ZXJ0IGEgc2luZ2xlIGRpZ2l0IHRvIGEgbnVtYmVy
IHRoYW4gY2FsbGluZyBwYXJzZUludGVnZXIuCisgICAgICAgICAgICBtX3R5cGUgPSBtYWtlT3B0
aW9uYWwoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4ocGFyc2VJbnRl
Z2VyPGludD4ocmVxdWVzdFR5cGUpLnZhbHVlT3IoMCkpKTsKKyAgICAgICAgfQogCiAgICAgICAg
IG1fcGF5bG9hZCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBheWxvYWQuY2hhcmFjdGVyczgoKSAr
IG9mZnNldCwgcGF5bG9hZC5sZW5ndGgoKSAtIG9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAppbmRleCA4NDZhOWFl
MmYyNzU0ZTVhMzMzZjI3MzU5NTk2Y2IzNjg0ZmE5YTZiLi41ZDUyYzk4ODJhMzMxNTIwODU2YTFi
NjIzMGYxZGRiMjEwODBkOWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8
d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3Rm
L1dhbGxUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lv
bi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAvKiBUaGlzIGlzIHRoZSBt
YXhpbXVtIGxpbmUgbGVuZ3RoIHdlIGFjY2VwdCBmb3IgYSBjb29raWUgbGluZS4gUkZDIDIxMDkK
QEAgLTExNywxMCArMTE4LDggQEAgc3RhdGljIHZvaWQgcGFyc2VDb29raWVBdHRyaWJ1dGVzKGNv
bnN0IFN0cmluZyYgYXR0cmlidXRlLCBib29sJiBoYXNNYXhBZ2UsIENvb2sKICAgICAgICAgcmVz
dWx0LmRvbWFpbiA9IGF0dHJpYnV0ZVZhbHVlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAK
ICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlTmFtZSwgIm1h
eC1hZ2UiKSkgewotICAgICAgICBib29sIG9rOwotICAgICAgICBkb3VibGUgbWF4QWdlU2Vjb25k
cyA9IGF0dHJpYnV0ZVZhbHVlLnRvSW50NjQoJm9rKTsKLSAgICAgICAgaWYgKG9rKSB7Ci0gICAg
ICAgICAgICByZXN1bHQuZXhwaXJlcyA9IChXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBv
Y2goKS52YWx1ZSgpICsgbWF4QWdlU2Vjb25kcykgKiBXVEY6Om1zUGVyU2Vjb25kOworICAgICAg
ICBpZiAoYXV0byBtYXhBZ2VTZWNvbmRzID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1
bms8aW50NjRfdD4oYXR0cmlidXRlVmFsdWUpKSB7CisgICAgICAgICAgICByZXN1bHQuZXhwaXJl
cyA9IChXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpICsgKm1heEFn
ZVNlY29uZHMpICogV1RGOjptc1BlclNlY29uZDsKICAgICAgICAgICAgIHJlc3VsdC5zZXNzaW9u
ID0gZmFsc2U7CiAKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgbWF4LWFnZSBhdHRyaWJ1
dGUgYXMgd2VsbCBhcyBhbiBleHBpcmVzIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKaW5kZXggOWVm
NTA3OTdjY2ZkYzUyMDZkZDA0MzA2NzIyZmJmZTgyMTAwMjRhNS4uOWU3NzJlZWQxNmY0YmQzYmY2
MjJiNzMxYTEwZjU2MzZlMTAxNjJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgog
I2luY2x1ZGUgPHd0Zi9TSEExLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2Vy
Q29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE4NywxMCArMTg4LDgg
QEAgdm9pZCBDdXJsQ2FjaGVFbnRyeTo6c2V0UmVzcG9uc2VGcm9tQ2FjaGVkSGVhZGVycyhSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICAvLyBUcnkgdG8gcGFyc2UgZXhwZWN0ZWQgY29u
dGVudCBsZW5ndGgKICAgICBsb25nIGxvbmcgY29udGVudExlbmd0aCA9IC0xOwogICAgIGlmICgh
cmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50TGVuZ3RoKS5p
c051bGwoKSkgewotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgbG9uZyBs
b25nIHBhcnNlZENvbnRlbnRMZW5ndGggPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkNvbnRlbnRMZW5ndGgpLnRvSW50NjQoJnN1Y2Nlc3MpOwotICAgICAgICBpZiAo
c3VjY2VzcykKLSAgICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSBwYXJzZWRDb250ZW50TGVuZ3Ro
OworICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50TGVuZ3RoID0gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8bG9uZyBsb25nPihyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnRMZW5ndGgpKSkKKyAgICAgICAgICAgIGNvbnRlbnRMZW5ndGgg
PSAqcGFyc2VkQ29udGVudExlbmd0aDsKICAgICB9CiAgICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRD
b250ZW50TGVuZ3RoKGNvbnRlbnRMZW5ndGgpOyAvLyAtMSBvbiBwYXJzZSBlcnJvciBvciBudWxs
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRl
eCAzZDRhN2UzMThmMDQ1NDg4MmE4M2FkMzcwMzkxOThlZWQ3ZDczNDFlLi42MDZjMWY2OWFhNDMy
OTg3MjJhNWM1Yzg1YjllMGFmYzZkZjM2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RvT1RGRm9udENvbnZlcnNpb24uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NT
U3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiR2x5cGguaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiU1ZHRm9udEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGb250RmFjZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdHbHlwaEVsZW1lbnQuaCIKQEAgLTQ5MCw5ICs0OTEsOSBAQCB2b2lkIFNWR1Rv
T1RGRm9udENvbnZlcnRlcjo6YXBwZW5kTkFNRVRhYmxlKCkKIHZvaWQgU1ZHVG9PVEZGb250Q29u
dmVydGVyOjphcHBlbmRPUzJUYWJsZSgpCiB7CiAgICAgaW50MTZfdCBhdmVyYWdlQWR2YW5jZSA9
IHNfb3V0cHV0VW5pdHNQZXJFbTsKLSAgICBhdXRvIGhvcml6QWR2WCA9IHBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPGludD4obV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIpKTsKKyAgICBhdXRvIGhvcml6
QWR2WCA9IHBhcnNlSFRNTEludGVnZXIobV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIpKTsKICAgICBpZiAoIWhvcml6
QWR2WCAmJiBtX21pc3NpbmdHbHlwaEVsZW1lbnQpCi0gICAgICAgIGhvcml6QWR2WCA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV9taXNzaW5nR2x5cGhFbGVtZW50LT5h
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIp
KTsKKyAgICAgICAgaG9yaXpBZHZYID0gcGFyc2VIVE1MSW50ZWdlcihtX21pc3NpbmdHbHlwaEVs
ZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6Omhvcml6X2Fk
dl94QXR0cikpOwogICAgIGlmIChob3JpekFkdlgpCiAgICAgICAgIGF2ZXJhZ2VBZHZhbmNlID0g
Y2xhbXBUbzxpbnQxNl90PihzY2FsZVVuaXRzUGVyRW0oKmhvcml6QWR2WCkpOwogCkBAIC05NDQs
MTYgKzk0NSwxNiBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kVk9SR1RhYmxl
KCkKICAgICBhcHBlbmQxNigxKTsgLy8gTWFqb3IgdmVyc2lvbgogICAgIGFwcGVuZDE2KDApOyAv
LyBNaW5vciB2ZXJzaW9uCiAKLSAgICBhdXRvIHZlcnRPcmlnaW5ZID0gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8aW50PihtX2ZvbnRFbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lBdHRyKSk7CisgICAgYXV0byB2ZXJ0
T3JpZ2luWSA9IHBhcnNlSFRNTEludGVnZXIobV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29yaWdpbl95QXR0cikpOwogICAgIGlmICgh
dmVydE9yaWdpblkgJiYgbV9taXNzaW5nR2x5cGhFbGVtZW50KQotICAgICAgICB2ZXJ0T3JpZ2lu
WSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV9taXNzaW5nR2x5cGhF
bGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29y
aWdpbl95QXR0cikpOwotICAgIGFwcGVuZDE2KGNsYW1wVG88aW50MTZfdD4oc2NhbGVVbml0c1Bl
ckVtKHZlcnRPcmlnaW5ZLnZhbHVlT3IoMCkpKSk7CisgICAgICAgIHZlcnRPcmlnaW5ZID0gcGFy
c2VIVE1MSW50ZWdlcihtX21pc3NpbmdHbHlwaEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lBdHRyKSk7CisgICAgYXBwZW5kMTYo
Y2xhbXBUbzxpbnQxNl90PihzY2FsZVVuaXRzUGVyRW0odmVydE9yaWdpblkudmFsdWVfb3IoMCkp
KSk7CiAKICAgICBhdXRvIHRhYmxlU2l6ZU9mZnNldCA9IG1fcmVzdWx0LnNpemUoKTsKICAgICBh
cHBlbmQxNigwKTsgLy8gUGxhY2UgdG8gd3JpdGUgdGFibGUgc2l6ZS4KICAgICBmb3IgKEdseXBo
IGkgPSAwOyBpIDwgbV9nbHlwaHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGF1dG8qIGds
eXBoID0gbV9nbHlwaHNbaV0uZ2x5cGhFbGVtZW50KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byB2
ZXJ0aWNhbE9yaWdpblkgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGds
eXBoLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29yaWdp
bl95QXR0cikpKSB7CisgICAgICAgICAgICBpZiAoYXV0byB2ZXJ0aWNhbE9yaWdpblkgPSBwYXJz
ZUhUTUxJbnRlZ2VyKGdseXBoLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05h
bWVzOjp2ZXJ0X29yaWdpbl95QXR0cikpKSB7CiAgICAgICAgICAgICAgICAgYXBwZW5kMTYoaSk7
CiAgICAgICAgICAgICAgICAgYXBwZW5kMTYoY2xhbXBUbzxpbnQxNl90PihzY2FsZVVuaXRzUGVy
RW0oKnZlcnRpY2FsT3JpZ2luWSkpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCA0NGZiNDVlOWViZGY1OWMzMDdlOWNhNWRjODJhZmVlYjIyN2Fj
MDUwLi45MDAwMTY1YjBhNGI0N2RjZDg5ZjNiYWFmMGQyMDllYzMwMmQzMjdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMzMsNiArMjMzLDcgQEAKICNpbmNsdWRlIDx3
dGYvVVJMSGVscGVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5j
bHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgpAQCAtMzYyLDEwICszNjMsOSBAQCB1c2luZyBKU0M6
OlByb3BlcnR5U2xvdDsKIHVzaW5nIEpTQzo6U2NyaXB0RXhlY3V0YWJsZTsKIHVzaW5nIEpTQzo6
U3RhY2tWaXNpdG9yOwogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogCiBjbGFzcyBJbnNwZWN0b3JTdHViRnJvbnRlbmQgZmluYWwgOiBwdWJsaWMg
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCwgcHVibGljIEZyb250ZW5kQ2hhbm5lbCB7CkBA
IC0xNjAxLDcgKzE2MDEsNyBAQCB2b2lkIEludGVybmFsczo6c2V0V2ViUlRDVlA5VlRCU3VwcG9y
dChib29sIHZhbHVlKQogCiB2b2lkIEludGVybmFsczo6c2V0U0ZyYW1lQ291bnRlcihSVENSdHBT
RnJhbWVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU3RyaW5nJiBjb3VudGVyKQogewotICAg
IGlmIChhdXRvIHZhbHVlID0gU3RyaW5nVmlldyhjb3VudGVyKS50b1VJbnQ2NFN0cmljdCgpKQor
ICAgIGlmIChhdXRvIHZhbHVlID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pihjb3VudGVyKSkKICAg
ICAgICAgdHJhbnNmb3JtLnNldENvdW50ZXJGb3JUZXN0aW5nKCp2YWx1ZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2Vi
RHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDhiNzlhYWU0YWQ5Njc5NzFmYjVjY2Fh
MDJlMjcwYjRkNzIyNGE2ZDQuLmYxMWJmZWRjMTQ3Y2RhM2VlNzI3MzMyYmYxNzlmMWVmMTYyMWEy
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKKysr
IGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkNvbW1hbmRSZXN1bHQuaCIKICNpbmNsdWRlICJTZXNzaW9uSG9zdC5oIgog
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViRHJpdmVyIHsKQEAgLTExOCwyMSArMTE5LDIwIEBAIGludCBXZWJEcml2ZXJTZXJ2
aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICBhdXRvIHBvc2l0aW9uID0g
dGFyZ2V0U3RyaW5nLnJldmVyc2VGaW5kKCI6Il9zKTsKICAgICAgICAgaWYgKHBvc2l0aW9uICE9
IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBtX3RhcmdldEFkZHJlc3MgPSB0YXJnZXRTdHJpbmcu
bGVmdChwb3NpdGlvbik7Ci0gICAgICAgICAgICBtX3RhcmdldFBvcnQgPSB0YXJnZXRTdHJpbmcu
c3Vic3RyaW5nKHBvc2l0aW9uICsgMSkudG9VSW50KG51bGxwdHIpOworICAgICAgICAgICAgbV90
YXJnZXRQb3J0ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KFN0
cmluZ1ZpZXcgeyB0YXJnZXRTdHJpbmcgfS5zdWJzdHJpbmcocG9zaXRpb24gKyAxKSkudmFsdWVP
cigwKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgogCi0gICAgYm9vbCBvazsKLSAgICB1bnNp
Z25lZCBwb3J0ID0gcG9ydFN0cmluZy50b1VJbnQoJm9rKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBwb3J0ICVzIHByb3ZpZGVkXG4iLCBwb3J0U3Ry
aW5nLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXI8dWludDE2
X3Q+KHBvcnRTdHJpbmcpOworICAgIGlmICghcG9ydCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIkludmFsaWQgcG9ydCAlcyBwcm92aWRlZFxuIiwgcG9ydFN0cmluZy51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICB9CiAKICAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7CiAKLSAgICBpZiAoIW1fc2VydmVyLmxpc3Rlbihob3N0LCBwb3J0
KSkKKyAgICBpZiAoIW1fc2VydmVyLmxpc3Rlbihob3N0LCAqcG9ydCkpCiAgICAgICAgIHJldHVy
biBFWElUX0ZBSUxVUkU7CiAKICAgICBSdW5Mb29wOjpydW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvZ2xpYi9XZWJEcml2ZXJTZXJ2aWNlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViRHJp
dmVyL2dsaWIvV2ViRHJpdmVyU2VydmljZUdMaWIuY3BwCmluZGV4IDk0MTc5M2QzZWFkMGU5ODYz
MmFmMzMxNzkyZjNhNzRjNWI0YjZmNGEuLmQ2ZmQyMTk5N2YzOWVkMWUwNDFjNTE4NTk2M2E2OGMx
ZjRjZWRkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9XZWJEcml2ZXJTZXJ2
aWNlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1dlYkRyaXZlclNlcnZpY2VH
TGliLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYkRyaXZlclNlcnZpY2UuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdl
ckNvbnZlcnNpb24uaD4KKwogbmFtZXNwYWNlIFdlYkRyaXZlciB7CiAKIHN0YXRpYyBib29sIHBh
cnNlVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIHVpbnQ2NF90JiBtYWpvciwgdWludDY0
X3QmIG1pbm9yLCB1aW50NjRfdCYgbWljcm8pCkBAIC0zNSwyMCArMzcsMjYgQEAgc3RhdGljIGJv
b2wgcGFyc2VWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgdWludDY0X3QmIG1ham9yLCB1
aW50NjRfdCYgbWlub3IKICAgICBWZWN0b3I8U3RyaW5nPiB0b2tlbnMgPSB2ZXJzaW9uLnNwbGl0
KCcuJyk7CiAgICAgYm9vbCBvazsKICAgICBzd2l0Y2ggKHRva2Vucy5zaXplKCkpIHsKLSAgICBj
YXNlIDM6Ci0gICAgICAgIG1pY3JvID0gdG9rZW5zWzJdLnRvSW50NjQoJm9rKTsKLSAgICAgICAg
aWYgKCFvaykKKyAgICBjYXNlIDM6IHsKKyAgICAgICAgYXV0byBwYXJzZWRNaWNybyA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0b2tlbnNbMl0pOworICAgICAg
ICBpZiAoIXBhcnNlZE1pY3JvKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBt
aWNybyA9ICpwYXJzZWRNaWNybzsKKyAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNh
c2UgMjoKLSAgICAgICAgbWlub3IgPSB0b2tlbnNbMV0udG9JbnQ2NCgmb2spOwotICAgICAgICBp
ZiAoIW9rKQorICAgIGNhc2UgMjogeworICAgICAgICBhdXRvIHBhcnNlZE1pbm9yID0gcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRva2Vuc1sxXSk7CisgICAgICAg
IGlmICghcGFyc2VkTWlub3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1p
bm9yID0gKnBhcnNlZE1pbm9yOworICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2Fz
ZSAxOgotICAgICAgICBtYWpvciA9IHRva2Vuc1swXS50b0ludDY0KCZvayk7Ci0gICAgICAgIGlm
ICghb2spCisgICAgY2FzZSAxOiB7CisgICAgICAgIGF1dG8gcGFyc2VkTWFqb3IgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odG9rZW5zWzBdKTsKKyAgICAgICAg
aWYgKCFwYXJzZWRNYWpvcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbWFq
b3IgPSAqcGFyc2VkTWFqb3I7CisgICAgfQogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tl
dC9IVFRQUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBQYXJzZXIuY3Bw
CmluZGV4IDM3YmVkMjkxZTk2MzZiZjcyN2ZiZDFkZDk4MDAwMmY4ZGY3Yzk1OWEuLjc3ZjM1MWQ5
NThhZmYxYWZlYTNmOGQwNzE3NDAwOTIxYzJhZWM2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJE
cml2ZXIvc29ja2V0L0hUVFBQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBQYXJzZXIuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSFRUUFBhcnNlci5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oPgorCiBuYW1lc3BhY2UgV2ViRHJpdmVyIHsKIAogSFRUUFBhcnNlcjo6
UGhhc2UgSFRUUFBhcnNlcjo6cGFyc2UoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTE0NSwx
MCArMTQ3LDggQEAgc2l6ZV90IEhUVFBQYXJzZXI6OmV4cGVjdGVkQm9keUxlbmd0aCgpIGNvbnN0
CiAgICAgY29uc3Qgc2l6ZV90IG5hbWVMZW5ndGggPSBzdGQ6OnN0cmxlbihuYW1lKTsKIAogICAg
IGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDogbV9tZXNzYWdlLnJlcXVlc3RIZWFkZXJzKSB7Ci0g
ICAgICAgIGlmIChoZWFkZXIuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG5hbWUpKSB7Ci0g
ICAgICAgICAgICBhdXRvIHZhbHVlID0gaGVhZGVyLnN1YnN0cmluZ1NoYXJpbmdJbXBsKG5hbWVM
ZW5ndGgpLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvSW50
KCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGhlYWRlci5zdGFydHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSkpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFp
bGluZ0p1bms8c2l6ZV90PihTdHJpbmdWaWV3IHsgaGVhZGVyIH0uc3Vic3RyaW5nKG5hbWVMZW5n
dGgpKS52YWx1ZU9yKDApOwogICAgIH0KIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAppbmRleCA1
ODM0OTVjMjZjZTMyZThiNWE1MmEwNmJhZmM2N2E4M2U3ODhjMTNlLi5iOTc4MTVlOTA0OWQ1ODUw
YjRiMzZjNDNiNDQzNTk1MzkyNGJiMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMzLDEwICsxMzQs
NyBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxpbnQ+IHBhcnNlVmVyc2lvblN0cmluZyhjb25zdCBT
dHJpbmcmIHZlcnNpb25TdHJpbmcpCiAgICAgICAgIGZvciAoZW5kUG9zID0gc3RhcnRQb3M7IGVu
ZFBvcyA8IHZlcnNpb25TdHJpbmcubGVuZ3RoKCk7ICsrZW5kUG9zKQogICAgICAgICAgICAgaWYg
KHZlcnNpb25TdHJpbmdbZW5kUG9zXSA9PSAnLicgfHwgdmVyc2lvblN0cmluZ1tlbmRQb3NdID09
ICdfJykKICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICBpbnQgdmVyc2lvbkNvbXBv
bmVudCA9IHZlcnNpb25TdHJpbmcuc3Vic3RyaW5nKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBv
cykudG9JbnQoKTsKLSAgICAgICAgdmVyc2lvbi5hcHBlbmQodmVyc2lvbkNvbXBvbmVudCk7Ci0K
KyAgICAgICAgdmVyc2lvbi5hcHBlbmQocGFyc2VJbnRlZ2VyQWxsb3dpblRyYWlsaW5nSnVuazxp
bnQ+KFN0cmluZ1ZpZXcgeyB2ZXJzaW9uU3RyaW5nIH0uc3Vic3RyaW5nKHN0YXJ0UG9zLCBlbmRQ
b3MgLSBzdGFydFBvcykpLnZhbHVlT3IoMCkpOwogICAgICAgICBzdGFydFBvcyA9IGVuZFBvcyAr
IDE7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAppbmRleCAyZjQwNWZiOGNlNGU3NDJhMDgxMTA1OThiOGM1MjdhOTI2YWFmZDRlLi5l
Mzg0MDIyYzM0MDIzYjFlMzVlMmEyZTA5NmEyMjliYjllMDMwN2E2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTc0LDYgKzc0LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbXBsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9y
dW50aW1lX3Jvb3QuaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtMTA3MSw3
ICsxMDcyLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5kbGVQb3N0KGNvbnN0IGNoYXIqIHVy
bCwgY29uc3QgY2hhciogdGFyZ2V0LCB1aW50MzJfdCBsZW4KICAgICAgICAgICAgICAgICBTdHJp
bmcgY29udGVudExlbmd0aCA9IGhlYWRlckZpZWxkcy5nZXQoSFRUUEhlYWRlck5hbWU6OkNvbnRl
bnRMZW5ndGgpOwogCiAgICAgICAgICAgICAgICAgaWYgKCFjb250ZW50TGVuZ3RoLmlzTnVsbCgp
KQotICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0gc3RkOjptaW4oY29udGVudExlbmd0
aC50b0ludCgpLCAoaW50KWRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBkYXRhTGVu
Z3RoID0gc3RkOjptaW4ocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+
KGNvbnRlbnRMZW5ndGgpLnZhbHVlT3IoMCksIGRhdGFMZW5ndGgpOwogICAgICAgICAgICAgICAg
IGhlYWRlckZpZWxkcy5yZW1vdmUoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRMZW5ndGgpOwogCiAg
ICAgICAgICAgICAgICAgcG9zdERhdGEgKz0gbG9jYXRpb247CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjJiNGI0Y2YzY2I3ZDMxYjI3ZjQyZGI3
NzA1NDNlNWNiOWFiMGFhNC4uMDFkNzNlOTFmNDA1MjU5ZjE0NGFlMjYzM2IyNzE3ZjNhNGM2Zjhk
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDIxLTA1LTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB1c2VzIG9mIHRoZSBTdHJpbmc6OnRvSW50
IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTU4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPGludD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCBjb25zdCk6
IERpdHRvLgorCiAyMDIxLTA1LTA5ICBLaGVtIFJhaiAgPHJhai5raGVtQGdtYWlsLmNvbT4KIAog
ICAgICAgICBbVG9vbHNdIEdlbmVyYXRlIG1hcnNoYWxsaW5nIGNvZGUgd2l0aG91dCBzb3VyY2Ug
cmVmZXJlbmNlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCmlu
ZGV4IDRkY2Y0YzAzNzYxMTc3MTY2NWYzM2I4Mjc4YWRiZjNmODYzNWZlZDguLjk1NTYxYThlZjYw
OTBjMjcxZTk2M2Y5MmFhYjY2NjQ0MDVhMGE1MTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9J
bnRlZ2VyQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVz
Lmg+CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtMTEzOSw3ICsxMTQwLDcgQEAgZG91YmxlIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJp
YnV0ZSkKICAgICBpZiAoYXRrQXR0cmlidXRlTmFtZS5zdGFydHNXaXRoKCJyb3ciKSB8fCBhdGtB
dHRyaWJ1dGVOYW1lLnN0YXJ0c1dpdGgoImNvbCIpKSB7CiAgICAgICAgIFN0cmluZyBhdHRyaWJ1
dGVWYWx1ZSA9IGdldEF0dHJpYnV0ZVNldFZhbHVlRm9ySWQoQVRLX09CSkVDVChtX2VsZW1lbnQu
Z2V0KCkpLCBPYmplY3RBdHRyaWJ1dGVUeXBlLCBhdGtBdHRyaWJ1dGVOYW1lKTsKICAgICAgICAg
aWYgKCFhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gYXR0cmli
dXRlVmFsdWUudG9JbnQoKTsKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazxpbnQ+KGF0dHJpYnV0ZVZhbHVlKS52YWx1ZU9yKDApOwogICAgIH0KIAog
ICAgIHJldHVybiAwOwpAQCAtMTYzMiwxMSArMTYzMyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNJbmRldGVybWluYXRlKCkgY29uc3QKIAogaW50IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKIHsKLSAgICBTdHJpbmcgbGV2ZWwgPSBn
ZXRBdHRyaWJ1dGVTZXRWYWx1ZUZvcklkKEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSwgT2Jq
ZWN0QXR0cmlidXRlVHlwZSwgImxldmVsIik7Ci0gICAgaWYgKCFsZXZlbC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBsZXZlbC50b0ludCgpOwotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oZ2V0QXR0cmlidXRlU2V0VmFs
dWVGb3JJZChBVEtfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSksIE9iamVjdEF0dHJpYnV0ZVR5cGUs
ICJsZXZlbCIpKS52YWx1ZU9yKDApOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWtBcygpCg==
</data>
<flag name="commit-queue"
          id="448974"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428140</attachid>
            <date>2021-05-09 15:02:45 -0700</date>
            <delta_ts>2021-05-09 16:09:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225580-20210509150244.patch</filename>
            <type>text/plain</type>
            <size>94424</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkzZjJhODQ0ZjUwOWE1
ZmQxZGUzZGJjM2E5ZjY1Y2RmOTkyZjE3Ni4uZDBhOTdjYzJkYjA3MDY3MDk5YjU5YzUwNjA5MWE5
ZjAwY2U3NDIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMS0wNS0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGFsbCByZW1haW5p
bmcgdXNlcyBvZiB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNl
SW5mbyk6CisgICAgICAgIFVzZSBwYXJzZUludGVnZXI8dWludDY0X3Q+IGluc3RlYWQgb2YgU3Ry
aW5nOjp0b1VJbnQ2NFN0cmljdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUpOgorICAgICAg
ICBEaXR0by4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVG
cmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgVXNlIGEgcmVm
ZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2UpOiBVc2UKKyAgICAgICAgQVND
SUlMaXRlcmFsLiBVc2UgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PiBpbnN0
ZWFkIG9mCisgICAgICAgIFN0cmluZzo6dG9JbnQuIFVzZSBhdXRvLiBVc2UgcmVmZXJlbmNlcyBp
bnN0ZWFkIG9mIHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6RGVmbGF0ZVJlc3VsdEhvbGRl
cjo6RGVmbGF0ZVJlc3VsdEhvbGRlcik6IFVzZSBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNv
cmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6On5EZWZsYXRlUmVzdWx0SG9sZGVyKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjpJbmZsYXRlUmVzdWx0SG9sZGVy
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjp+SW5mbGF0
ZVJlc3VsdEhvbGRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IpOiBQ
YXNzIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6ZGVmbGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6aW5mbGF0ZSk6IERpdHRvLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuaDogVXNlIGZvcndhcmQgZGVjbGFyYXRpb25zCisgICAgICAg
IGluc3RlYWQgb2YgaW5jbHVkZXMsIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycywgaW5p
dGlhbGl6ZSBkYXRhIG1lbWJlcnMKKyAgICAgICAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24sIGFu
ZCByZW1vdmUgYW4gdW5uZWNlc3NhcnkgZXhwbGljaXQgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aGVhZGVySGFzVmFsaWRIVFRQVmVyc2lvbik6IFVzZSBwYXJzZUludGVn
ZXI8aW50PiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ1ZpZXc6OnRvSW50U3RyaWN0LgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZSk6IERpdHRv
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVhZGluZ0xldmVs
IGNvbnN0KTogVXNlCisgICAgICAgIGdldEludGVncmFsQXR0cmlidXRlIGluc3RlYWQgb2YgQXRv
bVN0cmluZzo6dG9JbnQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6aGllcmFyY2hpY2FsTGV2ZWwgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6Z2V0SW50ZWdyYWxBdHRyaWJ1dGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAg
U2luY2UgQWNjZXNzaWJpbGl0eU9iamVjdCBoYXMgaXRzIG93biBnZXRBdHRyaWJ1dGUgZnVuY3Rp
b24sIHdlIG5lZWQgdG8KKyAgICAgICAgcmUtaW1wbGVtZW50IEVsZW1lbnQ6OmdldEludGVncmFs
QXR0cmlidXRlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
ZXRTaXplIGNvbnN0KTogVXNlIGdldEludGVncmFsQXR0cmlidXRlCisgICAgICAgIGluc3RlYWQg
b2YgQXRvbVN0cmluZzo6dG9JbnQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpwb3NJblNldCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0Lmg6IEFkZGVkIGdldEludGVncmFsQXR0cmlidXRlLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSBjb25zdCk6VXNlIGdldEludGVn
cmFsQXR0cmlidXRlCisgICAgICAgIGluc3RlYWQgb2YgQXRvbVN0cmluZzo6dG9JbnQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmF4Q29sdW1uQ291bnQgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YXhSb3dDb3VudCBj
b25zdCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENv
bHVtbkluZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsOjpheFJvd0luZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENvbHVtblNwYW4gY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93U3BhbiBjb25zdCk6IERp
dHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YXhDb2x1bW5JbmRleCBj
b25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93Ojph
eFJvd0luZGV4IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVj
dG9yUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVBTlBsdXNCKTogVXNlIHBh
cnNlSW50ZWdlcjxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludFN0cmljdAorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2Vu
aXplcjo6Y29uc3VtZUVzY2FwZSk6IFVzZSBwYXJzZUludGVnZXI8dWludDMyX3Q+IGluc3RlYWQg
b2YKKyAgICAgICAgU3RyaW5nOjp0b1VJbnRTdHJpY3QuCisKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpj
YW5QcmVzZW50RGF0YURldGVjdG9yc1VJRm9yRWxlbWVudCk6CisgICAgICAgIFVzZSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludC4K
KyAgICAgICAgQWxzbyB1c2UgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIFN0cmluZy4KKyAgICAgICAg
KFdlYkNvcmU6OmRhdGFEZXRlY3RvclN0cmluZ0ZvclBhdGgpOiBVc2UgbWFrZVN0cmluZyBpbnN0
ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JF
bGVtZW50KTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LgorCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKTogVXNlIHBhcnNlSFRNTEludGVnZXIgaW5zdGVhZAorICAgICAgICBvZiBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+LgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxMSUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExJRWxlbWVudDo6cGFyc2VWYWx1ZSk6IERpdHRvLgorICAgICAg
ICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
YXJxdWVlRWxlbWVudDo6bG9vcCBjb25zdCk6IFVzZSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZQorICAg
ICAgICBpbnN0ZWFkIG9mIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4uCisg
ICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmli
dXRlKToKKyAgICAgICAgVXNlIHBhcnNlSFRNTEludGVnZXIgaW5zdGVhZCBvZiBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+LgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ29s
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDb2xFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERp
dHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVz
dG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgVXNlIHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZzo6dG9V
SW50LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZvclBhdGgpOiBVc2UK
KyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+IGluc3Rl
YWQgb2YgU3RyaW5nOjp0b1VJbnQuCisKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVy
OjpjcmVhdGVMYXlvdXRCb3gpOiBVc2UgcGFyc2VIVE1MSW50ZWdlcgorICAgICAgICBpbnN0ZWFk
IG9mIEF0b21TdHJpbmc6OnRvSW50LgorCisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBY2Nlc3NDb250
cm9sTWF4QWdlKTogVXNlIHBhcnNlSW50ZWdlcjx1aW50NjRfdD4gaW5zdGVhZAorICAgICAgICBv
ZiBTdHJpbmc6OnRvVUludFN0cmljdC4KKworICAgICAgICAqIGxvYWRlci9GVFBEaXJlY3RvcnlQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPbmVGVFBMaW5lKTogVXNlIHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPgorICAgICAgICBpbnN0ZWFkIG9m
IFN0cmluZzo6dG9VSW50LgorCisgICAgICAgICogbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJz
ZUF0dHJpYnV0aW9uUmVxdWVzdCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDY0X3Q+
IGluc3RlYWQgb2YgU3RyaW5nOjp0b1VJbnQ2NFN0cmljdC4KKworICAgICAgICAqIG1hdGhtbC9N
YXRoTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNlbGVjdEVs
ZW1lbnQ6OmdldFNlbGVjdGVkQWN0aW9uQ2hpbGRBbmRJbmRleCk6CisgICAgICAgIFVzZSBnZXRJ
bnRlZ3JhbEF0dHJpYnV0ZSBpbnN0ZWFkIG9mIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4uCisKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGluZSk6IFVzZQorICAgICAgICBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4gaW5zdGVhZCBvZiBjaGFy
YWN0ZXJzVG9VSW50NjQuCisKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0KTogVXNlIHBhcnNlSW50ZWdlcjx1aW50MTZfdD4g
aW5zdGVhZCBvZiBwYXJzZVVJbnQxNi4KKworICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFi
YXNlSWRlbnRpZmllcik6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazx1aW50MTZfdD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LCB3aGljaAorICAgICAgICBh
bGxvd3MgdXMgdG8gcmVtb3ZlIHNvbWUgcmFuZ2UgY2hlY2tpbmcgYW5kIHR5cGUgY29udmVyc2lv
bi4KKworICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0V2luZG93RmVhdHVyZSk6IFVzZSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azxpbnQ+CisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nVmlldzo6dG9JbnQuCisKKyAgICAgICAg
KiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlUG9ydCk6IFVz
ZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDE2X3Q+IGluc3RlYWQgb2YgY2hhcmFjdGVyc1Rv
SW50U3RyaWN0LgorCisgICAgICAgICogcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGlu
dXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdENQVVVzYWdlKTogVXNlIHBhcnNlSW50
ZWdlcjxwaWRfdD4gaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmc6OnRvSW50U3RyaWN0LiBBbHNv
IHJlbW92ZWQgdW5uZWVkZWQgc3BlY2lhbCBjYXNlcyBmb3IgIi4iIGFuZAorICAgICAgICAiLi4i
IHNpbmNlIGJvdGggd2lsbCBmYWlsIHRvIHBhcnNlIGFzIGFuIGludGVnZXIsIGFuZCB0aGlzIG5v
IGxvbmdlcgorICAgICAgICBuZWVkIHRvIHB1dCBkX25hbWUgaW50byBhIFdURjo6U3RyaW5nLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHA6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVz
cG9uc2VSZWNlaXZlZCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OlBhcnNlZFJlc3BvbnNlTWVzc2FnZSk6IFVzZQorICAg
ICAgICBwYXJzZUludGVnZXI8aW50PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQgdG8gcGFyc2Ug
YSBzaW5nbGUtZGlnaXQuCisgICAgICAgIFByb2JhYmx5IHNob3VsZCB3cml0ZSB0aGlzIGFub3Ro
ZXIgd2F5LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRpbDo6cGFyc2VDb29raWVBdHRyaWJ1dGVzKTog
VXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludDY0X3Q+IGlu
c3RlYWQgb2YgU3RyaW5nOjp0b0ludDY0LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5
OjpzZXRSZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGxvbmcgbG9uZz4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50
NjQuCisKKyAgICAgICAgKiBzdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZE9TMlRhYmxlKTogVXNlIHBh
cnNlSFRNTEludGVnZXIKKyAgICAgICAgaW5zdGVhZCBvZiBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazxpbnQ+LiBNaWdodCBiZSBldmVuIGJldHRlcgorICAgICAgICB0byByZWZhY3Rv
ciB0byB1c2UgZ2V0SW50ZWdyYWxBdHRyaWJ1dGUgbGF0ZXIuCisgICAgICAgIChXZWJDb3JlOjpT
VkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZFZPUkdUYWJsZSk6IERpdHRvLgorCisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRTRnJhbWVDb3VudGVyKTogVXNlIHBhcnNlSW50ZWdlcjx1aW50NjRfdD4KKyAgICAgICAgaW5z
dGVhZCBvZiBTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdC4KKwogMjAyMS0wNS0wOSAgRnVqaWkg
SGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9d
W0NsYW5nXSBsbGQtbGluazogZXJyb3I6IHVuZGVmaW5lZCBzeW1ib2w6IHB1YmxpYzogc3RhdGlj
IGNsYXNzIEdlbmVyaWNUeXBlZEFycmF5Vmlldzw+Ojp0cnlDcmVhdGUoKSBpbiBDcnlwdG9LZXlS
U0FPcGVuU1NMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCA0ZGQzM2I0MWY5OGU1NmQ0YWFiOTg0YmNj
MTU2OGQ5NDUyM2MzOTNkLi43MjIwZWViYjY2ZWI5ZDU0YTEzNmMyYWI5MTIyNDJlMDM4Y2ZhZTJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA1LTA5ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB1c2Vz
IG9mIHRoZSBTdHJpbmc6OnRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU4MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRHJpdmVyU2VydmljZS5jcHA6
CisgICAgICAgIChXZWJEcml2ZXI6OldlYkRyaXZlclNlcnZpY2U6OnJ1bik6IFVzZQorICAgICAg
ICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4gaW5zdGVhZCBvZiBT
dHJpbmc6OnRvVUludC4KKworICAgICAgICAqIGdsaWIvV2ViRHJpdmVyU2VydmljZUdMaWIuY3Bw
OgorICAgICAgICAoV2ViRHJpdmVyOjpwYXJzZVZlcnNpb24pOiBVc2UKKyAgICAgICAgcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+IGluc3RlYWQgb2YgU3RyaW5nOjp0
b0ludDY0LAorICAgICAgICBhbmQgdGhlbiBhc3NpZ25pbmcgaW50byBhIHVpbnQ2NF90LgorCisg
ICAgICAgICogc29ja2V0L0hUVFBQYXJzZXIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpIVFRQ
UGFyc2VyOjpleHBlY3RlZEJvZHlMZW5ndGggY29uc3QpOiBVc2UKKyAgICAgICAgcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8c2l6ZV90PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQu
CisgICAgICAgIEFsc28gdXNlIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBTdHJpbmc6OnN1YnN0cmlu
Z1NoYXJpbmdJbXBsIGFuZAorICAgICAgICBkcm9wcGVkIGFuIHVubmVlZGVkIGNhbGwgdG8gU3Ry
aW5nOjpzdHJpcFdoaXRlU3BhY2UuCisKIDIwMjEtMDMtMjUgIERvbiBPbG1zdGVhZCAgPGRvbi5v
bG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVzZSBXZWJEcml2ZXJfREVSSVZF
RF9TT1VSQ0VTIHZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZGFlNjhmMWEz
OTJiYmQ1ZWQwNzVkMDQ0MWY5YTM4Mjg0ZWM5ZDFkOS4uYjk1ZDMwYzcwNjc5ZmQ0MDQ3MTIxYzll
YWFlNDgwOTBhNjJkYTk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDIxLTA1LTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB1c2VzIG9mIHRoZSBTdHJpbmc6OnRvSW50IGZhbWls
eSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTU4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZVZlcnNpb25TdHJpbmcpOiBVc2UgcGFyc2VJbnRlZ2VyQWxsb3dpblRyYWlsaW5nSnVu
azxpbnQ+CisgICAgICAgIGlzbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQuCisKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFu
ZGxlUG9zdCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1
bnNpZ25lZD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LAorICAgICAgICBhbmQgdGhlbiBhc3Np
Z25pbmcgdG8gYW4gdW5zaWduZWQuCisKIDIwMjEtMDUtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIHJlZmVyZW5j
ZXMgdG8gUGFnZUdyb3VwIGZyb20gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDM2ZDliMDQ0NmY1MDExM2I0ZWNmY2YyNGU1OGFkNzI2NDY5MTcyYzAu
LmIyNmNkNzI3YmM0MzJhMTU0OGU4MjgyMmM1YmZlOTkzODI4MWQ1NzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CkBAIC0xMDAzLDEyICsxMDA0LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
REJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0
YWJhc2VJCiAgICAgICAgIGlmIChzcWwuaXNDb2x1bW5OdWxsKDApKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIFN0cmluZyBzdHJpbmdWZXJzaW9uID0gc3FsLmdldENvbHVt
blRleHQoMCk7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGRhdGFiYXNlVmVyc2lvbiA9IHN0
cmluZ1ZlcnNpb24udG9VSW50NjRTdHJpY3QoJm9rKTsKLSAgICAgICAgaWYgKCFvaykgeworICAg
ICAgICBhdXRvIHBhcnNlZFZlcnNpb24gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHN0cmluZ1Zl
cnNpb24pOworICAgICAgICBpZiAoIXBhcnNlZFZlcnNpb24pIHsKICAgICAgICAgICAgIExPR19F
UlJPUigiRGF0YWJhc2UgdmVyc2lvbiBvbiBkaXNrICgnJXMnKSBkb2VzIG5vdCBjbGVhbmx5IGNv
bnZlcnQgdG8gYW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgdmVyc2lvbiIsIHN0cmluZ1ZlcnNp
b24udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQorICAgICAgICBkYXRhYmFzZVZlcnNpb24gPSAqcGFyc2VkVmVyc2lvbjsKICAgICB9CiAKICAg
ICBhdXRvIGRhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFz
ZU5hbWUsIGRhdGFiYXNlVmVyc2lvbiwgMCk7CkBAIC0xMTY2LDE0ICsxMTY3LDEzIEBAIE9wdGlv
bmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0
YWJhc2VOYW1lQW5kVmVyc2lvCiAKICAgICBTUUxpdGVTdGF0ZW1lbnQgdmVyc3FsKGRhdGFiYXNl
LCAiU0VMRUNUIHZhbHVlIEZST00gSURCRGF0YWJhc2VJbmZvIFdIRVJFIGtleSA9ICdEYXRhYmFz
ZVZlcnNpb24nOyJfcyk7CiAgICAgU3RyaW5nIHN0cmluZ1ZlcnNpb24gPSB2ZXJzcWwuZ2V0Q29s
dW1uVGV4dCgwKTsKLSAgICBib29sIG9rOwotICAgIHVpbnQ2NF90IGRhdGFiYXNlVmVyc2lvbiA9
IHN0cmluZ1ZlcnNpb24udG9VSW50NjRTdHJpY3QoJm9rKTsKLSAgICBpZiAoIW9rKSB7CisgICAg
YXV0byBkYXRhYmFzZVZlcnNpb24gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHN0cmluZ1ZlcnNp
b24pOworICAgIGlmIChkYXRhYmFzZVZlcnNpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJEYXRh
YmFzZSB2ZXJzaW9uIG9uIGRpc2sgKCclcycpIGRvZXMgbm90IGNsZWFubHkgY29udmVydCB0byBh
biB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciB2ZXJzaW9uIiwgc3RyaW5nVmVyc2lvbi51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAgICByZXR1
cm4gSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbiB7IGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VWZXJz
aW9uIH07CisgICAgcmV0dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24geyBkYXRhYmFzZU5h
bWUsICpkYXRhYmFzZVZlcnNpb24gfTsKIH0KIAogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIu
Y3BwCmluZGV4IGJhMzkwNjI4ZWJjYTk2ZjBjMjdiM2JkZjAwMzU2Y2I0YzY0ZmRiOTUuLjUwZjM0
NDIzMmRjODYxNWM0MjJmOTRmOTJhOWRjN2MxMWFiNDBkY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ci5jcHAKQEAgLTMzLDMzICszMywzMCBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVG
cmFtZSA6IHB1YmxpYyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IgeworY2xhc3MgV2ViU29j
a2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lIGZpbmFsIDogcHVibGljIFdlYlNvY2tldEV4dGVuc2lv
blByb2Nlc3NvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVG
cmFtZXIqKTsKLSAgICB2aXJ0dWFsIH5XZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoKSA9
IGRlZmF1bHQ7Ci0KLSAgICBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBvdmVy
cmlkZTsKLSAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZmFp
bHVyZVJlYXNvbjsgfQorICAgIGV4cGxpY2l0IFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFt
ZShXZWJTb2NrZXREZWZsYXRlRnJhbWVyJik7CiAKIHByaXZhdGU6Ci0gICAgV2ViU29ja2V0RGVm
bGF0ZUZyYW1lciogbV9mcmFtZXI7Ci0gICAgYm9vbCBtX3Jlc3BvbnNlUHJvY2Vzc2VkOworICAg
IFN0cmluZyBoYW5kc2hha2VTdHJpbmcoKSBmaW5hbDsKKyAgICBib29sIHByb2Nlc3NSZXNwb25z
ZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpIGZpbmFsOworICAgIFN0cmluZyBmYWls
dXJlUmVhc29uKCkgZmluYWwgeyByZXR1cm4gbV9mYWlsdXJlUmVhc29uOyB9CisKKyAgICBXZWJT
b2NrZXREZWZsYXRlRnJhbWVyJiBtX2ZyYW1lcjsKKyAgICBib29sIG1fcmVzcG9uc2VQcm9jZXNz
ZWQgeyBmYWxzZSB9OwogICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247CiB9OwogCiAvLyBGWElN
RTogUmVtb3ZlIHZlbmRvciBwcmVmaXggYWZ0ZXIgdGhlIHNwZWNpZmljYXRpb24gbWF0dXJlZC4K
LVdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikKLSAgICA6IFdlYlNvY2tldEV4
dGVuc2lvblByb2Nlc3NvcigieC13ZWJraXQtZGVmbGF0ZS1mcmFtZSIpCitXZWJTb2NrZXRFeHRl
bnNpb25EZWZsYXRlRnJhbWU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZShXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyJiBmcmFtZXIpCisgICAgOiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3IoIngtd2Via2l0LWRlZmxhdGUtZnJhbWUiX3MpCiAgICAgLCBtX2ZyYW1lcihmcmFtZXIpCi0g
ICAgLCBtX3Jlc3BvbnNlUHJvY2Vzc2VkKGZhbHNlKQogewotICAgIEFTU0VSVChtX2ZyYW1lcik7
CiB9CiAKIFN0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmhhbmRzaGFrZVN0
cmluZygpCkBAIC03MCwxOCArNjcsMTggQEAgU3RyaW5nIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxh
dGVGcmFtZTo6aGFuZHNoYWtlU3RyaW5nKCkKIGJvb2wgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHNl
cnZlclBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKG1fcmVzcG9uc2VQcm9jZXNzZWQpIHsKLSAgICAg
ICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGR1cGxpY2F0ZSBkZWZsYXRlLWZyYW1lIHJl
c3BvbnNlIjsKKyAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGR1cGxpY2F0ZSBk
ZWZsYXRlLWZyYW1lIHJlc3BvbnNlIl9zOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIG1fcmVzcG9uc2VQcm9jZXNzZWQgPSB0cnVlOwogCiAgICAgdW5zaWduZWQgZXhwZWN0ZWRO
dW1QYXJhbWV0ZXJzID0gMDsKICAgICBpbnQgd2luZG93Qml0cyA9IDE1OwotICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0
ZXJzLmZpbmQoIm1heF93aW5kb3dfYml0cyIpOworICAgIGF1dG8gcGFyYW1ldGVyID0gc2VydmVy
UGFyYW1ldGVycy5maW5kKCJtYXhfd2luZG93X2JpdHMiKTsKICAgICBpZiAocGFyYW1ldGVyICE9
IHNlcnZlclBhcmFtZXRlcnMuZW5kKCkpIHsKLSAgICAgICAgd2luZG93Qml0cyA9IHBhcmFtZXRl
ci0+dmFsdWUudG9JbnQoKTsKKyAgICAgICAgd2luZG93Qml0cyA9IHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPGludD4ocGFyYW1ldGVyLT52YWx1ZSkudmFsdWVPcigwKTsKICAgICAg
ICAgaWYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkgewotICAgICAgICAgICAg
bV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGludmFsaWQgbWF4X3dpbmRvd19iaXRzIHBhcmFt
ZXRlciI7CisgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgaW52YWxpZCBt
YXhfd2luZG93X2JpdHMgcGFyYW1ldGVyIl9zOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIGV4cGVjdGVkTnVtUGFyYW1ldGVycysrOwpAQCAtOTEsNyArODgs
NyBAQCBib29sIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNl
KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbgogICAgIHBhcmFtZXRlciA9IHNlcnZlclBhcmFt
ZXRlcnMuZmluZCgibm9fY29udGV4dF90YWtlb3ZlciIpOwogICAgIGlmIChwYXJhbWV0ZXIgIT0g
c2VydmVyUGFyYW1ldGVycy5lbmQoKSkgewogICAgICAgICBpZiAoIXBhcmFtZXRlci0+dmFsdWUu
aXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZh
bGlkIG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVyIjsKKyAgICAgICAgICAgIG1fZmFpbHVy
ZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVy
Il9zOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIG1vZGUg
PSBXZWJTb2NrZXREZWZsYXRlcjo6RG9Ob3RUYWtlT3ZlckNvbnRleHQ7CkBAIC05OSwyNCArOTYs
MjIgQEAgYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OnByb2Nlc3NSZXNwb25z
ZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW4KICAgICB9CiAKICAgICBpZiAoZXhwZWN0ZWRO
dW1QYXJhbWV0ZXJzICE9IHNlcnZlclBhcmFtZXRlcnMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fZmFp
bHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVy
IjsKKyAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIHVuZXhwZWN0ZWQgZGVmbGF0
ZS1mcmFtZSBwYXJhbWV0ZXIiX3M7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBtX2ZyYW1lci0+ZW5hYmxlRGVmbGF0ZSh3aW5kb3dCaXRzLCBtb2RlKTsKKyAgICBtX2ZyYW1l
ci5lbmFibGVEZWZsYXRlKHdpbmRvd0JpdHMsIG1vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1EZWZsYXRlUmVzdWx0SG9sZGVyOjpEZWZsYXRlUmVzdWx0SG9sZGVyKFdlYlNvY2tldERlZmxh
dGVGcmFtZXIqIGZyYW1lcikKK0RlZmxhdGVSZXN1bHRIb2xkZXI6OkRlZmxhdGVSZXN1bHRIb2xk
ZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciYgZnJhbWVyKQogICAgIDogbV9mcmFtZXIoZnJhbWVy
KQotICAgICwgbV9zdWNjZWVkZWQodHJ1ZSkKIHsKLSAgICBBU1NFUlQobV9mcmFtZXIpOwogfQog
CiBEZWZsYXRlUmVzdWx0SG9sZGVyOjp+RGVmbGF0ZVJlc3VsdEhvbGRlcigpCiB7Ci0gICAgbV9m
cmFtZXItPnJlc2V0RGVmbGF0ZUNvbnRleHQoKTsKKyAgICBtX2ZyYW1lci5yZXNldERlZmxhdGVD
b250ZXh0KCk7CiB9CiAKIHZvaWQgRGVmbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbChjb25zdCBTdHJp
bmcmIGZhaWx1cmVSZWFzb24pCkBAIC0xMjUsMTYgKzEyMCwxNCBAQCB2b2lkIERlZmxhdGVSZXN1
bHRIb2xkZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQogICAgIG1fZmFpbHVy
ZVJlYXNvbiA9IGZhaWx1cmVSZWFzb247CiB9CiAKLUluZmxhdGVSZXN1bHRIb2xkZXI6OkluZmxh
dGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogZnJhbWVyKQorSW5mbGF0ZVJl
c3VsdEhvbGRlcjo6SW5mbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyJiBm
cmFtZXIpCiAgICAgOiBtX2ZyYW1lcihmcmFtZXIpCi0gICAgLCBtX3N1Y2NlZWRlZCh0cnVlKQog
ewotICAgIEFTU0VSVChtX2ZyYW1lcik7CiB9CiAKIEluZmxhdGVSZXN1bHRIb2xkZXI6On5JbmZs
YXRlUmVzdWx0SG9sZGVyKCkKIHsKLSAgICBtX2ZyYW1lci0+cmVzZXRJbmZsYXRlQ29udGV4dCgp
OworICAgIG1fZnJhbWVyLnJlc2V0SW5mbGF0ZUNvbnRleHQoKTsKIH0KIAogdm9pZCBJbmZsYXRl
UmVzdWx0SG9sZGVyOjpmYWlsKGNvbnN0IFN0cmluZyYgZmFpbHVyZVJlYXNvbikKQEAgLTE0Mywx
NCArMTM2LDkgQEAgdm9pZCBJbmZsYXRlUmVzdWx0SG9sZGVyOjpmYWlsKGNvbnN0IFN0cmluZyYg
ZmFpbHVyZVJlYXNvbikKICAgICBtX2ZhaWx1cmVSZWFzb24gPSBmYWlsdXJlUmVhc29uOwogfQog
Ci1XZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyKCkKLSAgICA6
IG1fZW5hYmxlZChmYWxzZSkKLXsKLX0KLQogc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJv
Y2Vzc29yKCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25EZWZs
YXRlRnJhbWU+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZT4oKnRoaXMpOwogfQogCiB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6
OmVuYWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpDb250ZXh0
VGFrZU92ZXJNb2RlIG1vZGUpCkBAIC0xNjcsNyArMTU1LDcgQEAgdm9pZCBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRl
cjo6Q28KIAogc3RkOjp1bmlxdWVfcHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERl
ZmxhdGVGcmFtZXI6OmRlZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewotICAgIGF1dG8g
cmVzdWx0ID0gbWFrZVVuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4oKnRoaXMpOwogICAgIGlm
ICghZW5hYmxlZCgpIHx8ICFXZWJTb2NrZXRGcmFtZTo6aXNOb25Db250cm9sT3BDb2RlKGZyYW1l
Lm9wQ29kZSkgfHwgIWZyYW1lLnBheWxvYWRMZW5ndGgpCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgaWYgKCFtX2RlZmxhdGVyLT5hZGRCeXRlcyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXls
b2FkTGVuZ3RoKSB8fCAhbV9kZWZsYXRlci0+ZmluaXNoKCkpIHsKQEAgLTE4OCw3ICsxNzYsNyBA
QCB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0ZUNvbnRleHQoKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8SW5mbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBt
YWtlVW5pcXVlPEluZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0g
bWFrZVVuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPigqdGhpcyk7CiAgICAgaWYgKCFlbmFibGVk
KCkgJiYgZnJhbWUuY29tcHJlc3MpIHsKICAgICAgICAgcmVzdWx0LT5mYWlsKCJDb21wcmVzc2Vk
IGJpdCBtdXN0IGJlIDAgaWYgbm8gbmVnb3RpYXRlZCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbiIp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgKaW5kZXggNGYyNDk4
MjFkNTljYjc1M2NiZDNiNjYxMThjZTQxMWE1YjYwOTU5ZC4uNzk3YmUzYjY3NWI5ZjRjNTRiMDY3
M2FiMjQwMThkNjA0ZDE4MTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oCkBAIC0zMSwxNyArMzEs
MTggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZXIuaCIKLSNp
bmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKLSNpbmNsdWRlICJXZWJTb2Nr
ZXRGcmFtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYlNvY2tldERlZmxh
dGVGcmFtZXI7CitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I7CisKK3N0cnVjdCBX
ZWJTb2NrZXRGcmFtZTsKIAogY2xhc3MgRGVmbGF0ZVJlc3VsdEhvbGRlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRGVmbGF0ZVJlc3VsdEhv
bGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKik7CisgICAgZXhwbGljaXQgRGVmbGF0ZVJlc3Vs
dEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyJik7CiAgICAgfkRlZmxhdGVSZXN1bHRIb2xk
ZXIoKTsKIAogICAgIGJvb2wgc3VjY2VlZGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZWVkZWQ7
IH0KQEAgLTUwLDE1ICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBmYWlsKGNvbnN0IFN0cmlu
ZyYgZmFpbHVyZVJlYXNvbik7CiAKIHByaXZhdGU6Ci0gICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ciogbV9mcmFtZXI7Ci0gICAgYm9vbCBtX3N1Y2NlZWRlZDsKKyAgICBXZWJTb2NrZXREZWZsYXRl
RnJhbWVyJiBtX2ZyYW1lcjsKKyAgICBib29sIG1fc3VjY2VlZGVkIHsgdHJ1ZSB9OwogICAgIFN0
cmluZyBtX2ZhaWx1cmVSZWFzb247CiB9OwogCiBjbGFzcyBJbmZsYXRlUmVzdWx0SG9sZGVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBJbmZs
YXRlUmVzdWx0SG9sZGVyKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqKTsKKyAgICBleHBsaWNpdCBJ
bmZsYXRlUmVzdWx0SG9sZGVyKFdlYlNvY2tldERlZmxhdGVGcmFtZXImKTsKICAgICB+SW5mbGF0
ZVJlc3VsdEhvbGRlcigpOwogCiAgICAgYm9vbCBzdWNjZWVkZWQoKSBjb25zdCB7IHJldHVybiBt
X3N1Y2NlZWRlZDsgfQpAQCAtNjcsMTUgKzY4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGZhaWwo
Y29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKTsKIAogcHJpdmF0ZToKLSAgICBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyKiBtX2ZyYW1lcjsKLSAgICBib29sIG1fc3VjY2VlZGVkOworICAgIFdlYlNv
Y2tldERlZmxhdGVGcmFtZXImIG1fZnJhbWVyOworICAgIGJvb2wgbV9zdWNjZWVkZWQgeyB0cnVl
IH07CiAgICAgU3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKIH07CiAKIGNsYXNzIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXIgewogcHVibGljOgotICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIoKTsKLQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IGNyZWF0ZUV4
dGVuc2lvblByb2Nlc3NvcigpOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVkOyB9CkBAIC05MCw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZURl
ZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpDb250ZXh0VGFrZU92ZXJN
b2RlKTsKIAogcHJpdmF0ZToKLSAgICBib29sIG1fZW5hYmxlZDsKKyAgICBib29sIG1fZW5hYmxl
ZCB7IGZhbHNlIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldERlZmxhdGVyPiBtX2Rl
ZmxhdGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRJbmZsYXRlcj4gbV9pbmZsYXRl
cjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IGFlM2UxMTM1ZDFmMjkwMGQwNDRkZDZmZDdiZTU5
MzE3M2Y3YWQ5NTcuLjRlMGU4ODBiNmY0OGU1YmMzODk1MzNlYzNkY2IyY2VmZDg1YWZmYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFz
ZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVz
Lmg+CkBAIC0zNzcsMTAgKzM3OCw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoZWFkZXJIYXNWYWxp
ZEhUVFBWZXJzaW9uKFN0cmluZ1ZpZXcgaHR0cFN0YXR1c0xpbmUpCiAgICAgaWYgKGRvdFBvc2l0
aW9uID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmdWaWV3
IG1ham9yVmVyc2lvblZpZXcgPSBodHRwU3RhdHVzTGluZS5zdWJzdHJpbmcocHJlYW1ibGVMZW5n
dGgsIGRvdFBvc2l0aW9uIC0gcHJlYW1ibGVMZW5ndGgpOwotICAgIGJvb2wgaXNWYWxpZDsKLSAg
ICBpbnQgbWFqb3JWZXJzaW9uID0gbWFqb3JWZXJzaW9uVmlldy50b0ludFN0cmljdChpc1ZhbGlk
KTsKLSAgICBpZiAoIWlzVmFsaWQpCisgICAgYXV0byBtYWpvclZlcnNpb24gPSBwYXJzZUludGVn
ZXI8aW50PihodHRwU3RhdHVzTGluZS5zdWJzdHJpbmcocHJlYW1ibGVMZW5ndGgsIGRvdFBvc2l0
aW9uIC0gcHJlYW1ibGVMZW5ndGgpKTsKKyAgICBpZiAoIW1ham9yVmVyc2lvbikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgdW5zaWduZWQgbWlub3JWZXJzaW9uTGVuZ3RoOwpAQCAtMzg5
LDExICszODgsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGhlYWRlckhhc1ZhbGlkSFRUUFZlcnNp
b24oU3RyaW5nVmlldyBodHRwU3RhdHVzTGluZSkKICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQo
aHR0cFN0YXR1c0xpbmVbZG90UG9zaXRpb24gKyBtaW5vclZlcnNpb25MZW5ndGhdKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpbnQgbWlub3JWZXJzaW9uID0gKGh0dHBTdGF0dXNM
aW5lLnN1YnN0cmluZyhkb3RQb3NpdGlvbiArIDEsIG1pbm9yVmVyc2lvbkxlbmd0aCkpLnRvSW50
U3RyaWN0KGlzVmFsaWQpOwotICAgIGlmICghaXNWYWxpZCkKKyAgICBhdXRvIG1pbm9yVmVyc2lv
biA9IHBhcnNlSW50ZWdlcjxpbnQ+KGh0dHBTdGF0dXNMaW5lLnN1YnN0cmluZyhkb3RQb3NpdGlv
biArIDEsIG1pbm9yVmVyc2lvbkxlbmd0aCkpOworICAgIGlmICghbWlub3JWZXJzaW9uKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gKG1ham9yVmVyc2lvbiA+PSAxICYmIG1p
bm9yVmVyc2lvbiA+PSAxKSB8fCBtYWpvclZlcnNpb24gPj0gMjsKKyAgICByZXR1cm4gKCptYWpv
clZlcnNpb24gPj0gMSAmJiAqbWlub3JWZXJzaW9uID49IDEpIHx8ICptYWpvclZlcnNpb24gPj0g
MjsKIH0KIAogLy8gUmV0dXJucyB0aGUgaGVhZGVyIGxlbmd0aCAoaW5jbHVkaW5nICJcclxuIiks
IG9yIC0xIGlmIHdlIGhhdmUgbm90IHJlY2VpdmVkIGVub3VnaCBkYXRhIHlldC4KQEAgLTQ2MSwx
NiArNDYwLDE0IEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0dXNMaW5lKGNvbnN0
IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwKICAgICBTdHJpbmdWaWV3IHN0YXR1
c0NvZGVTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHNwYWNlMSArIDEpLCBz
cGFjZTIgLSBzcGFjZTEgLSAxKTsKICAgICBpZiAoc3RhdHVzQ29kZVN0cmluZy5sZW5ndGgoKSAh
PSAzKSAvLyBTdGF0dXMgY29kZSBtdXN0IGNvbnNpc3Qgb2YgdGhyZWUgZGlnaXRzLgogICAgICAg
ICByZXR1cm4gbGluZUxlbmd0aDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgewogICAgICAgICBpZiAoIWlzQVNDSUlEaWdp
dChzdGF0dXNDb2RlU3RyaW5nW2ldKSkgewogICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0g
bWFrZVN0cmluZygiSW52YWxpZCBzdGF0dXMgY29kZTogIiwgc3RhdHVzQ29kZVN0cmluZyk7CiAg
ICAgICAgICAgICByZXR1cm4gbGluZUxlbmd0aDsKICAgICAgICAgfQorICAgIH0KIAotICAgIGJv
b2wgb2sgPSBmYWxzZTsKLSAgICBzdGF0dXNDb2RlID0gc3RhdHVzQ29kZVN0cmluZy50b0ludFN0
cmljdChvayk7Ci0gICAgQVNTRVJUKG9rKTsKLQorICAgIHN0YXR1c0NvZGUgPSBwYXJzZUludGVn
ZXI8aW50PihzdGF0dXNDb2RlU3RyaW5nKS52YWx1ZSgpOwogICAgIHN0YXR1c1RleHQgPSBTdHJp
bmcoc3BhY2UyICsgMSwgZW5kIC0gc3BhY2UyIC0gMyk7IC8vIEV4Y2x1ZGUgIlxyXG4iLgogICAg
IHJldHVybiBsaW5lTGVuZ3RoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCBkYjM2MzQwMTcyZTdl
YjY0ZDBkZjY1MjIxZTA5N2YzMjg0Yzk5YWY5Li43OTAyNjYwOTE2MjA3YThlYTM1MzQxNzk0Y2Ri
NGU2MjAxNTQ2Nzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtNzc1LDkgKzc3NSw4IEBAIGludCBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVhZGluZ0xldmVsKCkgY29uc3QKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzSGVhZGluZygpKSB7Ci0gICAgICAgIGludCBhcmlhTGV2
ZWwgPSBnZXRBdHRyaWJ1dGUoYXJpYV9sZXZlbEF0dHIpLnRvSW50KCk7Ci0gICAgICAgIGlmIChh
cmlhTGV2ZWwgPiAwKQotICAgICAgICAgICAgcmV0dXJuIGFyaWFMZXZlbDsKKyAgICAgICAgaWYg
KGF1dG8gbGV2ZWwgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX2xldmVsQXR0cik7IGxldmVs
ID4gMCkKKyAgICAgICAgICAgIHJldHVybiBsZXZlbDsKICAgICB9CiAKICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZShoMVRhZykpCkBAIC0xNzI5LDExICsxNzI4LDExIEBAIHVuc2lnbmVkIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjpoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0CiAgICAgTm9kZSog
bm9kZSA9IHRoaXMtPm5vZGUoKTsKICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5v
ZGUpOwotICAgIGNvbnN0IEF0b21TdHJpbmcmIGFyaWFMZXZlbCA9IGVsZW1lbnQuYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xldmVsQXR0cik7Ci0gICAgaWYgKCFhcmlhTGV2
ZWwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gYXJpYUxldmVsLnRvSW50KCk7Ci0gICAgCisK
KyAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOworICAgIGlmICgh
ZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfbGV2ZWxBdHRyKS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBlbGVtZW50LmdldEludGVncmFsQXR0cmlidXRlKGFy
aWFfbGV2ZWxBdHRyKTsKKwogICAgIC8vIE9ubHkgdHJlZSBpdGVtIHdpbGwgY2FsY3VsYXRlIGl0
cyBsZXZlbCB0aHJvdWdoIHRoZSBET00gY3VycmVudGx5LgogICAgIGlmIChyb2xlVmFsdWUoKSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0pCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
aW5kZXggMGQ3MjE4Y2UxMTQ4NDdhNzRkYTZkMjk0NDBkZTVkMmQxYjZlMTVlNi4uMDY2YzE5ODMw
MDQ3OTBkMWY1ODc5ZWE5Mjg0MGNkZGFmMWZlYmVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xOTU2LDYgKzE5
NTYsMTEgQEAgY29uc3QgQXRvbVN0cmluZyYgQWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0QXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnUKICAgICByZXR1cm4gbnVsbEF0b20oKTsK
IH0KIAoraW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldEludGVncmFsQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcnNl
SFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZV9vcigwKTsKK30K
KwogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgUGxhaW5UZXh0UmFuZ2UmIHJhbmdlKQogewog
ICAgIC8vIElmIHRoaXMgaXMgYmVpbmcgY2FsbGVkIG9uIHRoZSB3ZWIgYXJlYSwgcmVkaXJlY3Qg
aXQgdG8gYmUgb24gdGhlIGJvZHksIHdoaWNoIHdpbGwgaGF2ZSBhIHJlbmRlcmVyIGFzc29jaWF0
ZWQgd2l0aCBpdC4KQEAgLTI2NjMsMTIgKzI2NjgsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzdXBwb3J0c1Bvc0luU2V0KCkgY29uc3QKICAgICAKIGludCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzZXRTaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfc2V0
c2l6ZUF0dHIpLnRvSW50KCk7CisgICAgcmV0dXJuIGdldEludGVncmFsQXR0cmlidXRlKGFyaWFf
c2V0c2l6ZUF0dHIpOwogfQogCiBpbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6cG9zSW5TZXQoKSBj
b25zdAogewotICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoYXJpYV9wb3NpbnNldEF0dHIpLnRvSW50
KCk7CisgICAgcmV0dXJuIGdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcG9zaW5zZXRBdHRyKTsK
IH0KICAgICAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjppZGVudGlmaWVyQXR0cmlidXRl
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgKaW5kZXggNTZjM2NkMzMxNzIwZjM2N2EyNjFmMGY0MGUyYWE1ZTQ4ODExYmQ1
ZS4uNGQ5YzkzMzE4YTg2NzFiM2JlMDk0MmMwZWMyZmI3NjE0ZTNlZDk3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTUx
Nyw2ICs1MTcsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFjY2Vzc2li
aWxpdHlSb2xlIGFyaWFSb2xlVG9XZWJDb3JlUm9sZShjb25zdCBTdHJpbmcmKTsKICAgICBib29s
IGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Y29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBpbnQgZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0OwogICAgIGJvb2wgaGFzVGFnTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHRhZ05hbWUoKSBjb25zdCBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwCmluZGV4IDA1YjU2M2U5YWUyNmE2YWZlNzY4ZGQxMjdhMDMxYzVjZmFjNzAyYTMuLmY2NzJm
NGExYWYwNTM1NWU2ZTczMDUwNTkzODZkMDQxOTc5ZGRiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTQ0LDcgKzQ0
LDYgQEAKICNpbmNsdWRlICJSZW5kZXJUYWJsZS5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2Vs
bC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlU2VjdGlvbi5oIgotCiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1MywxMSArMTUyLDExIEBAIGJvb2wg
QWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgCiAgICAgLy8gSWYg
dGhlIGF1dGhvciBoYXMgdXNlZCBBUklBIHRvIHNwZWNpZnkgYSB2YWxpZCBjb2x1bW4gb3Igcm93
IGNvdW50LCBhc3N1bWUgdGhleQogICAgIC8vIHdhbnQgdXMgdG8gdHJlYXQgdGhlIHRhYmxlIGFz
IGEgZGF0YSB0YWJsZS4KLSAgICBpbnQgYXhDb2x1bW5Db3VudCA9IGdldEF0dHJpYnV0ZShhcmlh
X2NvbGNvdW50QXR0cikudG9JbnQoKTsKKyAgICBpbnQgYXhDb2x1bW5Db3VudCA9IGdldEludGVn
cmFsQXR0cmlidXRlKGFyaWFfY29sY291bnRBdHRyKTsKICAgICBpZiAoYXhDb2x1bW5Db3VudCA9
PSAtMSB8fCBheENvbHVtbkNvdW50ID4gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBp
bnQgYXhSb3dDb3VudCA9IGdldEF0dHJpYnV0ZShhcmlhX3Jvd2NvdW50QXR0cikudG9JbnQoKTsK
KyAgICBpbnQgYXhSb3dDb3VudCA9IGdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcm93Y291bnRB
dHRyKTsKICAgICBpZiAoYXhSb3dDb3VudCA9PSAtMSB8fCBheFJvd0NvdW50ID4gMCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKQEAgLTIzNCwxNiArMjMzLDE2IEBAIGJvb2wgQWNjZXNzaWJpbGl0
eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAKICAgICAgICAgICAgIC8vIElmIHRoZSBhdXRo
b3IgaGFzIHVzZWQgQVJJQSB0byBzcGVjaWZ5IGEgdmFsaWQgY29sdW1uIG9yIHJvdyBpbmRleCwg
YXNzdW1lIHRoZXkgd2FudCB1cwogICAgICAgICAgICAgLy8gdG8gdHJlYXQgdGhlIHRhYmxlIGFz
IGEgZGF0YSB0YWJsZS4KLSAgICAgICAgICAgIGludCBheENvbHVtbkluZGV4ID0gIGNlbGxFbGVt
ZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfY29saW5kZXhBdHRyKS50
b0ludCgpOworICAgICAgICAgICAgaW50IGF4Q29sdW1uSW5kZXggPSBjZWxsRWxlbWVudC0+Z2V0
SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9jb2xpbmRleEF0dHIpOwogICAgICAgICAgICAgaWYgKGF4
Q29sdW1uSW5kZXggPj0gMSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAg
ICAgICAgaW50IGF4Um93SW5kZXggPSBjZWxsRWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihhcmlhX3Jvd2luZGV4QXR0cikudG9JbnQoKTsKKyAgICAgICAgICAgIGludCBh
eFJvd0luZGV4ID0gY2VsbEVsZW1lbnQtPmdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcm93aW5k
ZXhBdHRyKTsKICAgICAgICAgICAgIGlmIChheFJvd0luZGV4ID49IDEpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgICAgIGlmIChhdXRvIGNlbGxQYXJlbnRFbGVtZW50
ID0gY2VsbEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGF4Um93
SW5kZXggPSBjZWxsUGFyZW50RWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihhcmlhX3Jvd2luZGV4QXR0cikudG9JbnQoKTsKKyAgICAgICAgICAgICAgICBheFJvd0luZGV4
ID0gY2VsbFBhcmVudEVsZW1lbnQtPmdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcm93aW5kZXhB
dHRyKTsKICAgICAgICAgICAgICAgICBpZiAoYXhSb3dJbmRleCA+PSAxKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTI1MSwxMSArMjUwLDExIEBA
IGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgICAgICAg
ICAvLyBJZiB0aGUgYXV0aG9yIGhhcyB1c2VkIEFSSUEgdG8gc3BlY2lmeSBhIGNvbHVtbiBvciBy
b3cgc3Bhbiwgd2UncmUgc3VwcG9zZWQgdG8gaWdub3JlCiAgICAgICAgICAgICAvLyB0aGUgdmFs
dWUgZm9yIHRoZSBwdXJwb3NlcyBvZiBleHBvc2luZyB0aGUgc3Bhbi4gQnV0IGFzc3VtZSB0aGV5
IHdhbnQgdXMgdG8gdHJlYXQgdGhlCiAgICAgICAgICAgICAvLyB0YWJsZSBhcyBhIGRhdGEgdGFi
bGUuCi0gICAgICAgICAgICBpbnQgYXhDb2x1bW5TcGFuID0gY2VsbEVsZW1lbnQtPmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9jb2xzcGFuQXR0cikudG9JbnQoKTsKKyAgICAg
ICAgICAgIGludCBheENvbHVtblNwYW4gPSBjZWxsRWxlbWVudC0+Z2V0SW50ZWdyYWxBdHRyaWJ1
dGUoYXJpYV9jb2xzcGFuQXR0cik7CiAgICAgICAgICAgICBpZiAoYXhDb2x1bW5TcGFuID49IDEp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgICAgIGludCBheFJvd1Nw
YW4gPSBjZWxsRWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX3Jv
d3NwYW5BdHRyKS50b0ludCgpOworICAgICAgICAgICAgaW50IGF4Um93U3BhbiA9IGNlbGxFbGVt
ZW50LT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd3NwYW5BdHRyKTsKICAgICAgICAgICAg
IGlmIChheFJvd1NwYW4gPj0gMSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAt
NzA3LDggKzcwNiw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5VGFibGU6OnRpdGxlKCkgY29uc3QK
IAogaW50IEFjY2Vzc2liaWxpdHlUYWJsZTo6YXhDb2x1bW5Db3VudCgpIGNvbnN0CiB7Ci0gICAg
Y29uc3QgQXRvbVN0cmluZyYgY29sQ291bnRWYWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX2NvbGNv
dW50QXR0cik7Ci0gICAgaW50IGNvbENvdW50SW50ID0gY29sQ291bnRWYWx1ZS50b0ludCgpOwor
ICAgIGludCBjb2xDb3VudEludCA9IGdldEludGVncmFsQXR0cmlidXRlKGFyaWFfY29sY291bnRB
dHRyKTsKICAgICAvLyBUaGUgQVJJQSBzcGVjIHN0YXRlcywgIkF1dGhvcnMgbXVzdCBzZXQgdGhl
IHZhbHVlIG9mIGFyaWEtY29sY291bnQgdG8gYW4gaW50ZWdlciBlcXVhbCB0byB0aGUKICAgICAv
LyBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZnVsbCB0YWJsZS4gSWYgdGhlIHRvdGFsIG51bWJl
ciBvZiBjb2x1bW5zIGlzIHVua25vd24sIGF1dGhvcnMgbXVzdAogICAgIC8vIHNldCB0aGUgdmFs
dWUgb2YgYXJpYS1jb2xjb3VudCB0byAtMSB0byBpbmRpY2F0ZSB0aGF0IHRoZSB2YWx1ZSBzaG91
bGQgbm90IGJlIGNhbGN1bGF0ZWQgYnkKQEAgLTcyMSw4ICs3MTksNyBAQCBpbnQgQWNjZXNzaWJp
bGl0eVRhYmxlOjpheENvbHVtbkNvdW50KCkgY29uc3QKIAogaW50IEFjY2Vzc2liaWxpdHlUYWJs
ZTo6YXhSb3dDb3VudCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgcm93Q291bnRW
YWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX3Jvd2NvdW50QXR0cik7Ci0gICAgaW50IHJvd0NvdW50
SW50ID0gcm93Q291bnRWYWx1ZS50b0ludCgpOworICAgIGludCByb3dDb3VudEludCA9IGdldElu
dGVncmFsQXR0cmlidXRlKGFyaWFfcm93Y291bnRBdHRyKTsKICAgICAvLyBUaGUgQVJJQSBzcGVj
IHN0YXRlcywgIkF1dGhvcnMgbXVzdCBzZXQgdGhlIHZhbHVlIG9mIGFyaWEtcm93Y291bnQgdG8g
YW4gaW50ZWdlciBlcXVhbCB0byB0aGUKICAgICAvLyBudW1iZXIgb2Ygcm93cyBpbiB0aGUgZnVs
bCB0YWJsZS4gSWYgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzIGlzIHVua25vd24sIGF1dGhvcnMg
bXVzdCBzZXQKICAgICAvLyB0aGUgdmFsdWUgb2YgYXJpYS1yb3djb3VudCB0byAtMSB0byBpbmRp
Y2F0ZSB0aGF0IHRoZSB2YWx1ZSBzaG91bGQgbm90IGJlIGNhbGN1bGF0ZWQgYnkgdGhlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNl
bGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsLmNwcAppbmRleCBjMzc2N2JkY2M1ODU3ZjljMGEyNDFjZTExZGIwYjU2MzBlY2NiM2Y1Li4z
ZjY1MDhlMDYxYzE4MDA2ZmVlNjFlNGU0ZDFkNmIzOTc2MjhkMjcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAK
QEAgLTQwMiw5ICs0MDIsOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjp0aXRsZVVJRWxlbWVudCgpIGNvbnN0CiAgICAgCiBpbnQgQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6YXhDb2x1bW5JbmRleCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYg
Y29sSW5kZXhWYWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX2NvbGluZGV4QXR0cik7Ci0gICAgaWYg
KGNvbEluZGV4VmFsdWUudG9JbnQoKSA+PSAxKQotICAgICAgICByZXR1cm4gY29sSW5kZXhWYWx1
ZS50b0ludCgpOworICAgIGlmIChpbnQgdmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlh
X2NvbGluZGV4QXR0cik7IHZhbHVlID49IDEpCisgICAgICAgIHJldHVybiB2YWx1ZTsKIAogICAg
IC8vICJBUklBIDEuMTogSWYgdGhlIHNldCBvZiBjb2x1bW5zIHdoaWNoIGlzIHByZXNlbnQgaW4g
dGhlIERPTSBpcyBjb250aWd1b3VzLCBhbmQgaWYgdGhlcmUgYXJlIG5vIGNlbGxzIHdoaWNoIHNw
YW4gbW9yZSB0aGFuIG9uZSByb3cKICAgICAvLyBvciBjb2x1bW4gaW4gdGhhdCBzZXQsIHRoZW4g
YXV0aG9ycyBtYXkgcGxhY2UgYXJpYS1jb2xpbmRleCBvbiBlYWNoIHJvdywgc2V0dGluZyB0aGUg
dmFsdWUgdG8gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjb2x1bW4gb2YgdGhlIHNldC4iCkBAIC00
MjAsMTMgKzQxOSwxMiBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhSb3dJbmRleCgp
IGNvbnN0CiB7CiAgICAgLy8gQVJJQSAxLjE6IEF1dGhvcnMgc2hvdWxkIHBsYWNlIGFyaWEtcm93
aW5kZXggb24gZWFjaCByb3cuIEF1dGhvcnMgbWF5IGFsc28gcGxhY2UKICAgICAvLyBhcmlhLXJv
d2luZGV4IG9uIGFsbCBvZiB0aGUgY2hpbGRyZW4gb3Igb3duZWQgZWxlbWVudHMgb2YgZWFjaCBy
b3cuCi0gICAgY29uc3QgQXRvbVN0cmluZyYgcm93SW5kZXhWYWx1ZSA9IGdldEF0dHJpYnV0ZShh
cmlhX3Jvd2luZGV4QXR0cik7Ci0gICAgaWYgKHJvd0luZGV4VmFsdWUudG9JbnQoKSA+PSAxKQot
ICAgICAgICByZXR1cm4gcm93SW5kZXhWYWx1ZS50b0ludCgpOwotICAgIAorICAgIGlmIChpbnQg
dmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2luZGV4QXR0cik7IHZhbHVlID49
IDEpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKwogICAgIGlmIChBY2Nlc3NpYmlsaXR5VGFibGVS
b3cqIHBhcmVudFJvdyA9IHRoaXMtPnBhcmVudFJvdygpKQogICAgICAgICByZXR1cm4gcGFyZW50
Um93LT5heFJvd0luZGV4KCk7Ci0gICAgCisKICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTQzNywx
MSArNDM1LDEwIEBAIGludCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENvbHVtblNwYW4oKSBj
b25zdAogICAgIGlmIChoYXNBdHRyaWJ1dGUoY29sc3BhbkF0dHIpKQogICAgICAgICByZXR1cm4g
LTE7CiAKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBjb2xTcGFuVmFsdWUgPSBnZXRBdHRyaWJ1dGUo
YXJpYV9jb2xzcGFuQXR0cik7CiAgICAgLy8gQVJJQSAxLjE6IEF1dGhvcnMgbXVzdCBzZXQgdGhl
IHZhbHVlIG9mIGFyaWEtY29sc3BhbiB0byBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvciBlcXVh
bCB0byAxLgotICAgIGlmIChjb2xTcGFuVmFsdWUudG9JbnQoKSA+PSAxKQotICAgICAgICByZXR1
cm4gY29sU3BhblZhbHVlLnRvSW50KCk7Ci0gICAgCisgICAgaWYgKGludCB2YWx1ZSA9IGdldElu
dGVncmFsQXR0cmlidXRlKGFyaWFfY29sc3BhbkF0dHIpOyB2YWx1ZSA+PSAxKQorICAgICAgICBy
ZXR1cm4gdmFsdWU7CisKICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTQ1MiwxNSArNDQ5LDEzIEBA
IGludCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheFJvd1NwYW4oKSBjb25zdAogICAgIGlmICho
YXNBdHRyaWJ1dGUocm93c3BhbkF0dHIpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBjb25z
dCBBdG9tU3RyaW5nJiByb3dTcGFuVmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9yb3dzcGFuQXR0
cik7Ci0gICAgCiAgICAgLy8gQVJJQSAxLjE6IEF1dGhvcnMgbXVzdCBzZXQgdGhlIHZhbHVlIG9m
IGFyaWEtcm93c3BhbiB0byBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLgog
ICAgIC8vIFNldHRpbmcgdGhlIHZhbHVlIHRvIDAgaW5kaWNhdGVzIHRoYXQgdGhlIGNlbGwgb3Ig
Z3JpZGNlbGwgaXMgdG8gc3BhbiBhbGwgdGhlIHJlbWFpbmluZyByb3dzIGluIHRoZSByb3cgZ3Jv
dXAuCi0gICAgaWYgKHJvd1NwYW5WYWx1ZSA9PSAiMCIpCisgICAgaWYgKGdldEF0dHJpYnV0ZShh
cmlhX3Jvd3NwYW5BdHRyKSA9PSAiMCIpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChyb3dT
cGFuVmFsdWUudG9JbnQoKSA+PSAxKQotICAgICAgICByZXR1cm4gcm93U3BhblZhbHVlLnRvSW50
KCk7Ci0gICAgCisgICAgaWYgKGludCB2YWx1ZSA9IGdldEludGVncmFsQXR0cmlidXRlKGFyaWFf
cm93c3BhbkF0dHIpOyB2YWx1ZSA+PSAxKQorICAgICAgICByZXR1cm4gdmFsdWU7CisKICAgICBy
ZXR1cm4gLTE7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKaW5kZXggYWQ2ZWE0OTdkN2ZlODFhYjQ5YzZm
YjJlNzYxNjhhNGFkZWZlM2QyMy4uZWQwZmIwYjJjYTRkNWE2ODU1YjI5MzMxYWY5OGViYTQ1MjJm
NjlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlUm93LmNwcApAQCAtMTc1LDIwICsxNzUsMTQgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5VGFibGVSb3c6OmFkZENoaWxkcmVuKCkKIAogaW50IEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6
YXhDb2x1bW5JbmRleCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgY29sSW5kZXhW
YWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX2NvbGluZGV4QXR0cik7Ci0gICAgaWYgKGNvbEluZGV4
VmFsdWUudG9JbnQoKSA+PSAxKQotICAgICAgICByZXR1cm4gY29sSW5kZXhWYWx1ZS50b0ludCgp
OwotICAgIAotICAgIHJldHVybiAtMTsKKyAgICBpbnQgdmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJp
YnV0ZShhcmlhX2NvbGluZGV4QXR0cik7CisgICAgcmV0dXJuIHZhbHVlID49IDEgPyB2YWx1ZSA6
IC0xOwogfQogCiBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpheFJvd0luZGV4KCkgY29uc3QK
IHsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiByb3dJbmRleFZhbHVlID0gZ2V0QXR0cmlidXRlKGFy
aWFfcm93aW5kZXhBdHRyKTsKLSAgICBpZiAocm93SW5kZXhWYWx1ZS50b0ludCgpID49IDEpCi0g
ICAgICAgIHJldHVybiByb3dJbmRleFZhbHVlLnRvSW50KCk7Ci0gICAgCi0gICAgcmV0dXJuIC0x
OworICAgIGludCB2YWx1ZSA9IGdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcm93aW5kZXhBdHRy
KTsKKyAgICByZXR1cm4gdmFsdWUgPj0gMSA/IHZhbHVlIDogLTE7CiB9CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1NlbGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0
b3JQYXJzZXIuY3BwCmluZGV4IGVlNDNkMDhmYzBlMGVhN2YyMGQ4MGQ5MDU5NmZhZTk5MTRkNDQ3
MmUuLjMwZGU3YmMyZGFkMTk4MTlmMTFhNmRiODEzM2YwYzhkNmIwNDI1YmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JT
Y29wZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtODg0LDkgKzg4NSw5IEBAIHN0YXRpYyBib29sIGNvbnN1bWVBTlBsdXNCKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBzdGQ6OnBhaXI8aW50LCBpbnQ+JiByZXN1CiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChuU3RyaW5nLmxlbmd0aCgpID4gMikgewotICAgICAg
ICBib29sIHZhbGlkOwotICAgICAgICByZXN1bHQuc2Vjb25kID0gblN0cmluZy5zdWJzdHJpbmco
MSkudG9JbnRTdHJpY3QoJnZhbGlkKTsKLSAgICAgICAgcmV0dXJuIHZhbGlkOworICAgICAgICBh
dXRvIHBhcnNlZE51bWJlciA9IHBhcnNlSW50ZWdlcjxpbnQ+KFN0cmluZ1ZpZXcgeyBuU3RyaW5n
IH0uc3Vic3RyaW5nKDEpKTsKKyAgICAgICAgcmVzdWx0LnNlY29uZCA9IHBhcnNlZE51bWJlci52
YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gcGFyc2VkTnVtYmVyLmhhc1ZhbHVlKCk7CiAgICAg
fQogCiAgICAgTnVtZXJpY1NpZ24gc2lnbiA9IG5TdHJpbmcubGVuZ3RoKCkgPT0gMSA/IE5vU2ln
biA6IE1pbnVzU2lnbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
VG9rZW5pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNw
cAppbmRleCAxYTkzNzc2NWY2NTY0MTI5YzE3OTljMzQ1NGM1NGEzZDUwODNhNDNjLi5lZDM2MmEx
OWRmYWVmNDg3ZGYyMjFmNGQxNzI2YTFmNjBkOTcyZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NT
VG9rZW5pemVySW5wdXRTdHJlYW0uaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0
ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04MzYsMTIgKzgzNywxMSBAQCBV
Q2hhcjMyIENTU1Rva2VuaXplcjo6Y29uc3VtZUVzY2FwZSgpCiAgICAgICAgICAgICBjb25zdW1l
ZEhleERpZ2l0cysrOwogICAgICAgICB9OwogICAgICAgICBjb25zdW1lU2luZ2xlV2hpdGVzcGFj
ZUlmTmV4dCgpOwotICAgICAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgICAgIFVDaGFyMzIgY29k
ZVBvaW50ID0gaGV4Q2hhcnMudG9TdHJpbmcoKS50b1VJbnRTdHJpY3QoJm9rLCAxNik7Ci0gICAg
ICAgIEFTU0VSVChvayk7Ci0gICAgICAgIGlmICghY29kZVBvaW50IHx8ICgweEQ4MDAgPD0gY29k
ZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweERGRkYpIHx8IGNvZGVQb2ludCA+IDB4MTBGRkZGKQor
ICAgICAgICBhdXRvIGNvZGVQb2ludCA9IHBhcnNlSW50ZWdlcjx1aW50MzJfdD4oaGV4Q2hhcnMs
IDE2KTsKKyAgICAgICAgQVNTRVJUKGNvZGVQb2ludCk7CisgICAgICAgIGlmICghY29kZVBvaW50
IHx8ICgweEQ4MDAgPD0gKmNvZGVQb2ludCAmJiAqY29kZVBvaW50IDw9IDB4REZGRikgfHwgKmNv
ZGVQb2ludCA+IDB4MTBGRkZGKQogICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50Q2hhcmFj
dGVyOwotICAgICAgICByZXR1cm4gY29kZVBvaW50OworICAgICAgICByZXR1cm4gKmNvZGVQb2lu
dDsKICAgICB9CiAKICAgICBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA1NDc5NzQ0MTk2YWY5
OGI3NmY0MTc5MDM2ZWU1M2NjMTJiYzAwOWI2Li5kM2FjZWNmZjIxNmI0NmEyMzBmZWU0OGY1ZWIw
ZmU0ZjM1NTNiNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0
ZWN0aW9uLm1tCkBAIC01NCw2ICs1NCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9EYXRhRGV0
ZWN0b3JzU1BJLmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdl
ckNvbnZlcnNpb24uaD4KIAogI2ltcG9ydCAiRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oIgog
CkBAIC0xOTQsMTkgKzE5NSwyNSBAQCBib29sIERhdGFEZXRlY3Rpb246OmNhblByZXNlbnREYXRh
RGV0ZWN0b3JzVUlGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKHNvZnRMaW5r
X0RhdGFEZXRlY3RvcnNDb3JlX0REU2hvdWxkSW1tZWRpYXRlbHlTaG93QWN0aW9uU2hlZXRGb3JV
UkwoZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KGVsZW1lbnQpLmhyZWYoKSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIAotICAgIGNvbnN0IEF0b21TdHJpbmcmIHJlc3VsdEF0dHJpYnV0
ZSA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2RhdGFf
ZGV0ZWN0b3JzX3Jlc3VsdEF0dHIpOworICAgIGF1dG8mIHJlc3VsdEF0dHJpYnV0ZSA9IGVsZW1l
bnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2RhdGFfZGV0ZWN0b3Jz
X3Jlc3VsdEF0dHIpOwogICAgIGlmIChyZXN1bHRBdHRyaWJ1dGUuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgTlNBcnJheSAqcmVzdWx0cyA9IGVsZW1lbnQuZG9jdW1lbnQo
KS5mcmFtZSgpLT5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpOwogICAgIGlmICghcmVzdWx0cykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdEluZGljZXMgPSBy
ZXN1bHRBdHRyaWJ1dGUuc3RyaW5nKCkuc3BsaXQoJy8nKTsKLSAgICBERFJlc3VsdFJlZiByZXN1
bHQgPSBbW3Jlc3VsdHMgb2JqZWN0QXRJbmRleDpyZXN1bHRJbmRpY2VzWzBdLnRvSW50KCldIGNv
cmVSZXN1bHRdOwotICAgIC8vIEhhbmRsZSB0aGUgY2FzZSBvZiBhIHNpZ25hdHVyZSBibG9jaywg
d2hlcmUgd2UgbmVlZCB0byBjaGVjayB0aGUgY29ycmVjdCBzdWJyZXN1bHQuCi0gICAgZm9yIChz
aXplX3QgaSA9IDE7IGkgPCByZXN1bHRJbmRpY2VzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHJl
c3VsdHMgPSAoTlNBcnJheSAqKXNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3JlX0REUmVzdWx0R2V0
U3ViUmVzdWx0cyhyZXN1bHQpOwotICAgICAgICByZXN1bHQgPSAoRERSZXN1bHRSZWYpW3Jlc3Vs
dHMgb2JqZWN0QXRJbmRleDpyZXN1bHRJbmRpY2VzW2ldLnRvSW50KCldOworCisgICAgYXV0byBy
ZXN1bHRJbmRpY2VzID0gU3RyaW5nVmlldyB7IHJlc3VsdEF0dHJpYnV0ZSB9LnNwbGl0KCcvJyk7
CisgICAgYXV0byBpbmRleEl0ZXJhdG9yID0gcmVzdWx0SW5kaWNlcy5iZWdpbigpOworICAgIGF1
dG8gcmVzdWx0ID0gW3Jlc3VsdHNbcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50
PigqaW5kZXhJdGVyYXRvcikudmFsdWVPcigwKV0gY29yZVJlc3VsdF07CisKKyAgICAvLyBIYW5k
bGUgdGhlIGNhc2Ugb2YgYSBzaWduYXR1cmUgYmxvY2ssIHdoZXJlIHdlIG5lZWQgdG8gZm9sbG93
IHRoZSBwYXRoIGRvd24gb25lIG9yIG1vcmUgc3VicmVzdWx0IGxldmVscy4KKyAgICBpZiAoKytp
bmRleEl0ZXJhdG9yICE9IHJlc3VsdEluZGljZXMuZW5kKCkpIHsKKyAgICAgICAgZG8geworICAg
ICAgICAgICAgcmVzdWx0cyA9IChfX2JyaWRnZSBOU0FycmF5ICopc29mdExpbmtfRGF0YURldGVj
dG9yc0NvcmVfRERSZXN1bHRHZXRTdWJSZXN1bHRzKHJlc3VsdCk7CisgICAgICAgICAgICByZXN1
bHQgPSAoX19icmlkZ2UgRERSZXN1bHRSZWYpcmVzdWx0c1twYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazxpbnQ+KCppbmRleEl0ZXJhdG9yKS52YWx1ZU9yKDApXTsKKyAgICAgICAgfSB3
aGlsZSAoKytpbmRleEl0ZXJhdG9yICE9IHJlc3VsdEluZGljZXMuZW5kKCkpOwogICAgIH0KKwog
ICAgIHJldHVybiBzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNob3VsZEltbWVkaWF0ZWx5
U2hvd0FjdGlvblNoZWV0Rm9yUmVzdWx0KHJlc3VsdCk7CiB9CiAKQEAgLTMxNiwzMCArMzIzLDIw
IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YURldGVjdG9yVHlwZUZvckNhdGVnb3J5KEREUmVzdWx0
Q2F0ZWdvcnkgY2F0ZWdvcnkpCiAKIHN0YXRpYyBTdHJpbmcgZGF0YURldGVjdG9yU3RyaW5nRm9y
UGF0aChOU0luZGV4UGF0aCAqcGF0aCkKIHsKLSAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHBhdGgu
bGVuZ3RoOwotICAgIAorICAgIGF1dG8gbGVuZ3RoID0gcGF0aC5sZW5ndGg7CiAgICAgc3dpdGNo
IChsZW5ndGgpIHsKICAgICBjYXNlIDA6CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgY2FzZSAx
OgotICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBd
KTsKLSAgICBjYXNlIDI6IHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihbcGF0aCBpbmRleEF0UG9zaXRpb246
MF0pOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLycpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZE51bWJlcihbcGF0aCBpbmRleEF0UG9zaXRpb246MV0pOwotICAgICAgICBy
ZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwotICAgIH0KLSAgICBkZWZhdWx0OiB7Ci0g
ICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBdKTsKLSAgICAgICAgZm9yIChO
U1VJbnRlZ2VyIGkgPSAxIDsgaSA8IGxlbmd0aCA7IGkrKykgewotICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJy8nKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVt
YmVyKFtwYXRoIGluZGV4QXRQb3NpdGlvbjppXSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBdKTsKKyAgICBjYXNlIDI6CisgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKFtwYXRoIGluZGV4QXRQb3NpdGlvbjowXSwgJy8nLCBbcGF0aCBpbmRl
eEF0UG9zaXRpb246MV0pOworICAgIGRlZmF1bHQ6CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9u
OjBdKTsKKyAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspCisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLycsIFtwYXRoIGluZGV4QXRQb3NpdGlvbjppXSk7
CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogfQogCkBAIC02ODgs
NCArNjg1LDMgQEAgYm9vbCBEYXRhRGV0ZWN0aW9uOjppc0RhdGFEZXRlY3RvckVsZW1lbnQoY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCAw
NjgyNmYxMjQxODdiZGJkNGYxYTQ5YzQzNzBlYzZlZjRkMGQ4ZWY1Li41MmE1NjMxNWM0YjM1OTBj
N2NhMTVhYjhmYjU0OWRhMWM3OTJhNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgogI2ltcG9ydCA8d3RmL0FTQ0lJQ1R5cGUu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElP
TikKICNpbXBvcnQgIkRhdGFEZXRlY3Rpb24uaCIKQEAgLTk3OCw3ICs5NzksNyBAQCBOU0RpY3Rp
b25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCkKICAgICAgICAgfQogCiAgICAgICAgIFN0cmluZyBmb250V2VpZ2h0ID0gX2Nh
Y2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlGb250U3R5bGUp
OwotICAgICAgICBpZiAoZm9udFdlaWdodC5zdGFydHNXaXRoKCJib2xkIikgfHwgZm9udFdlaWdo
dC50b0ludCgpID49IDcwMCkgeworICAgICAgICBpZiAoZm9udFdlaWdodC5zdGFydHNXaXRoKCJi
b2xkIikgfHwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pihmb250V2VpZ2h0
KS52YWx1ZU9yKDApID49IDcwMCkgewogICAgICAgICAgICAgLy8gPz8/IGhhbmRsZSB3ZWlnaHQg
cHJvcGVybHkgdXNpbmcgTlNGb250TWFuYWdlcgogICAgICAgICAgICAgUGxhdGZvcm1Gb250ICpv
cmlnaW5hbEZvbnQgPSBmb250OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAppbmRleCA0N2YwYjk1NDcxZWQ5YTAwODAzNGNj
ODI2YmEzNjI1ZjdkMmVlZmRlLi42MzVlOTMyM2JlNWNmNmY5OTkzNjYwMzE5MDJmMjA1NDI3NTEw
Yzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTI5LDcg
KzI5LDYgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJSZW5kZXJGcmFtZS5o
IgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTgzLDcgKzgyLDcgQEAgaW50IEhUTUxGcmFtZUVsZW1lbnQ6OmRlZmF1bHRUYWJJbmRleCgpIGNv
bnN0CiB2b2lkIEhUTUxGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09
IGZyYW1lYm9yZGVyQXR0cikgewotICAgICAgICBtX2ZyYW1lQm9yZGVyID0gcGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKTsKKyAgICAgICAgbV9m
cmFtZUJvcmRlciA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZhbHVlX29yKDApOwogICAgICAg
ICBtX2ZyYW1lQm9yZGVyU2V0ID0gIXZhbHVlLmlzTnVsbCgpOwogICAgICAgICAvLyBGSVhNRTog
SWYgd2UgYXJlIGFscmVhZHkgYXR0YWNoZWQsIHRoaXMgaGFzIG5vIGVmZmVjdC4KICAgICB9IGVs
c2UgaWYgKG5hbWUgPT0gbm9yZXNpemVBdHRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCA1Yzk2NTUwM2E0ZGFmM2QxMjcwZTAwMTMzMzgwNGIy
NDY3ZGZmN2U1Li45NWFlNmExZTU1YjJmNTUzMWU4NWFjMTk4MzkyZDg0NmQwM2M3YWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTM2LDEyICsz
NiwxMiBAQAogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1l
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAj
aW5jbHVkZSAiUmVuZGVyRnJhbWVTZXQuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMyLDcgKzEzMiw3
IEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0CiAKICAgICBpZiAobmFtZSA9PSBib3JkZXJBdHRy
KSB7CiAgICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fYm9yZGVy
ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigw
KTsKKyAgICAgICAgICAgIG1fYm9yZGVyID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkudmFsdWVf
b3IoMCk7CiAgICAgICAgICAgICBtX2JvcmRlclNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgbV9ib3JkZXJTZXQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVs
ZW1lbnQuY3BwCmluZGV4IDcyNzJhNWE3ZTZlZDc4NjBjZmQzY2YzYjQzOTY2NjE5NGE3YzljMTgu
LmM2YjhlMDVjYjk1MjIzOGZkNGVhZmI1ZTk0Yjc0YzM3MjMyYWRhMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSFJFbGVtZW50LmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVy
c2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc0LDcgKzczLDcgQEAgdm9pZCBI
VE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmEKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgQ1NTVmFsdWVBdXRv
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSB3aWR0aEF0dHIpIHsKLSAgICAg
ICAgaWYgKGF1dG8gdmFsdWVJbnRlZ2VyID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1
bms8aW50Pih2YWx1ZSk7IHZhbHVlSW50ZWdlciAmJiAhKnZhbHVlSW50ZWdlcikKKyAgICAgICAg
aWYgKGF1dG8gdmFsdWVJbnRlZ2VyID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSk7IHZhbHVlSW50
ZWdlciAmJiAhKnZhbHVlSW50ZWdlcikKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50
YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgMSwgQ1NTVW5pdFR5
cGU6OkNTU19QWCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCB2YWx1ZSk7CkBAIC05MSw3ICs5MCw3IEBAIHZv
aWQgSFRNTEhSRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hCiAgICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvciwgZGFya0dyYXlWYWx1ZSk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgaWYgKG5hbWUgPT0gc2l6ZUF0dHIpIHsKLSAgICAgICAgaW50IHNpemUgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApOworICAgICAg
ICBpbnQgc2l6ZSA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZhbHVlX29yKDApOwogICAgICAg
ICBpZiAoc2l6ZSA8PSAxKQogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCAwLCBDU1NV
bml0VHlwZTo6Q1NTX1BYKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmNwcAppbmRleCAyN2ZlZmViNTdiOWMwNTY1NWYxZGRmNWRhYWIyN2JlOTQw
NDg2NmUxLi40MjNiZjgxZTQwZTYxZWQ5NzcwNzQ1NDRjYTA1ZDhkYTIzMjQ5ZjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcApAQCAtMzUsNyArMzUsNiBAQAog
I2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtODcsNyArODYsNyBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZQogICAgIGVsc2UgaWYgKG5h
bWUgPT0gZnJhbWVib3JkZXJBdHRyKSB7CiAgICAgICAgIC8vIEZyYW1lIGJvcmRlciBkb2Vzbid0
IHJlYWxseSBtYXRjaCB0aGUgSFRNTDQgc3BlYyBkZWZpbml0aW9uIGZvciBpZnJhbWVzLiBJdCBz
aW1wbHkgYWRkcwogICAgICAgICAvLyBhIHByZXNlbnRhdGlvbmFsIGhpbnQgdGhhdCB0aGUgYm9y
ZGVyIHNob3VsZCBiZSBvZmYgaWYgc2V0IHRvIHplcm8uCi0gICAgICAgIGlmICghcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKSkgeworICAgICAg
ICBpZiAoIXBhcnNlSFRNTEludGVnZXIodmFsdWUpKSB7CiAgICAgICAgICAgICAvLyBBZGQgYSBy
dWxlIHRoYXQgbnVsbHMgb3V0IG91ciBib3JkZXIgd2lkdGguCiAgICAgICAgICAgICBhZGRQcm9w
ZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
V2lkdGgsIDAsIENTU1VuaXRUeXBlOjpDU1NfUFgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBjZTZjOWI5OTA2YTkwNGYzYmVlZjExNTlm
ZDZjYjdjYzBhOWNlMTJlLi42YTRmYTNjOTRmZmY0ZjEzZWZhYjVkYzdhOGQxODM0YTFkZGI4ZWVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTgwMiw3ICs4
MDIsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogICAgICAgICBpZiAobV9zaXplICE9IG9s
ZFNpemUgJiYgcmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5
b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSByZXN1bHRz
QXR0cikKLSAgICAgICAgbV9tYXhSZXN1bHRzID0gdmFsdWUuaXNOdWxsKCkgPyAtMSA6IHN0ZDo6
bWluKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3Io
MCksIG1heFNhdmVkUmVzdWx0cyk7CisgICAgICAgIG1fbWF4UmVzdWx0cyA9IHZhbHVlLmlzTnVs
bCgpID8gLTEgOiBzdGQ6Om1pbihwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKS52YWx1ZV9vcigwKSwg
bWF4U2F2ZWRSZXN1bHRzKTsKICAgICBlbHNlIGlmIChuYW1lID09IGF1dG9zYXZlQXR0ciB8fCBu
YW1lID09IGluY3JlbWVudGFsQXR0cikKICAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJl
ZSgpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gbWF4QXR0ciB8fCBuYW1lID09IG1pbkF0dHIgfHwg
bmFtZSA9PSBtdWx0aXBsZUF0dHIgfHwgbmFtZSA9PSBwYXR0ZXJuQXR0ciB8fCBuYW1lID09IHBy
ZWNpc2lvbkF0dHIgfHwgbmFtZSA9PSBzdGVwQXR0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVs
ZW1lbnQuY3BwCmluZGV4IGVjZTI5ZWEyMjA3OTdkOTllNDNjOWY3MTAwYmY0ZGRhODJlOWZjZmIu
LjM0MzI4M2Y4MTEyZmNkZTk3OWE0ZGYwNzFjNTM5MThiZTZmNTJmZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTElFbGVtZW50LmNwcApAQCAtMTE3LDcgKzExNywxMCBAQCB2b2lkIEhUTUxMSUVs
ZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCiBpbmxpbmUgdm9pZCBIVE1MTElFbGVtZW50Ojpw
YXJzZVZhbHVlKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIEFTU0VSVChyZW5kZXJl
cigpKTsKLSAgICBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnJlbmRlcmVyKCkpLnNldEV4cGxp
Y2l0VmFsdWUocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkpOwor
ICAgIE9wdGlvbmFsPGludD4gZXhwbGljaXRWYWx1ZTsKKyAgICBpZiAoYXV0byBwYXJzZWRWYWx1
ZSA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpKQorICAgICAgICBleHBsaWNpdFZhbHVlID0gKnBh
cnNlZFZhbHVlOworICAgIGRvd25jYXN0PFJlbmRlckxpc3RJdGVtPigqcmVuZGVyZXIoKSkuc2V0
RXhwbGljaXRWYWx1ZShleHBsaWNpdFZhbHVlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCmluZGV4IGM0ODA5ZTlmYWRmN2ZiZWY1YWIyYmU2MDBh
YjQ0YmYxODgwODE3ZDEuLjE0YTQ3Mjk4YWU2ZjcxMzRiOGUxMDY2OTcwOGQwOWMyY2MwYjNiMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKQEAgLTMyLDcg
KzMyLDYgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyTWFycXVlZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTE0OCw4ICsxNDcsOCBAQCB2b2lkIEhUTUxNYXJxdWVlRWxlbWVu
dDo6c2V0U2Nyb2xsRGVsYXkodW5zaWduZWQgc2Nyb2xsRGVsYXkpCiAgICAgCiBpbnQgSFRNTE1h
cnF1ZWVFbGVtZW50Ojpsb29wKCkgY29uc3QKIHsKLSAgICBhdXRvIGxvb3BWYWx1ZSA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihsb29wQXR0cikpOwotICAgIHJldHVybiBsb29wVmFsdWUgJiYgKmxvb3BWYWx1ZSA+
IDAgPyAqbG9vcFZhbHVlIDogLTE7CisgICAgaW50IGxvb3BWYWx1ZSA9IGdldEludGVncmFsQXR0
cmlidXRlKGxvb3BBdHRyKTsKKyAgICByZXR1cm4gbG9vcFZhbHVlID4gMCA/IGxvb3BWYWx1ZSA6
IC0xOwogfQogICAgIAogRXhjZXB0aW9uT3I8dm9pZD4gSFRNTE1hcnF1ZWVFbGVtZW50OjpzZXRM
b29wKGludCBsb29wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50
LmNwcAppbmRleCA2ODczODA1ODdhMWQ1OWU0MzY5ZmVjYmEzZjQzMjJhODdlYjQ0OGU4Li41OTNm
N2QyNDc2N2Q4NzAwNTAyZDI4NmEyNWNjNzBmZGQ5NzU1ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDMs
MTAgKzEwMiwxMCBAQCB2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTgogICAgIGlmIChuYW1lID09IG5v
d3JhcEF0dHIpCiAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVdlYmtpdE5vd3JhcCk7CiAg
ICAgZWxzZSBpZiAobmFtZSA9PSB3aWR0aEF0dHIpIHsKLSAgICAgICAgaWYgKHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3IoMCkgPiAwKSAvLyB3aWR0
aD0iMCIgaXMgaWdub3JlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklFLgorICAgICAgICBp
ZiAocGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkudmFsdWVfb3IoMCkgPiAwKSAvLyB3aWR0aD0iMCIg
aXMgaWdub3JlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklFLgogICAgICAgICAgICAgYWRk
SFRNTExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIHZhbHVlKTsKICAgICB9
IGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikgewotICAgICAgICBpZiAocGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKSA+IDApIC8vIGhlaWdo
dD0iMCIgaXMgaWdub3JlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklFLgorICAgICAgICBp
ZiAocGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkudmFsdWVfb3IoMCkgPiAwKSAvLyBoZWlnaHQ9IjAi
IGlzIGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KICAgICAgICAgICAgIGFk
ZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwgdmFsdWUpOwogICAg
IH0gZWxzZQogICAgICAgICBIVE1MVGFibGVQYXJ0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJl
c2VudGF0aW9uQXR0cmlidXRlKG5hbWUsIHZhbHVlLCBzdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAppbmRleCAwM2FmZmNjZGJiYzNhZTA3YTEyMjkw
OGMxNjRkOTU4YzUyM2I3MmNjLi41ZTI0Yjk3ZDhkNWRmYzlmOTVkMjRlNDkwMjc0N2YxZTQ4ZGFj
YzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKQEAg
LTc4LDggKzc4LDggQEAgdm9pZCBIVE1MVGFibGVDb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3QKICAgICB9IGVsc2UgaWYgKG5h
bWUgPT0gd2lkdGhBdHRyKSB7CiAgICAgICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGVDb2w+KHJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgUmVuZGVyVGFibGVDb2wmIGNvbCA9IGRvd25jYXN0PFJlbmRlclRhYmxlQ29sPigqcmVu
ZGVyZXIoKSk7Ci0gICAgICAgICAgICAgICAgaW50IG5ld1dpZHRoID0gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8aW50Pih3aWR0aCgpKS52YWx1ZU9yKDApOworICAgICAgICAgICAg
ICAgIGF1dG8mIGNvbCA9IGRvd25jYXN0PFJlbmRlclRhYmxlQ29sPigqcmVuZGVyZXIoKSk7Cisg
ICAgICAgICAgICAgICAgaW50IG5ld1dpZHRoID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkudmFs
dWVfb3IoMCk7CiAgICAgICAgICAgICAgICAgaWYgKG5ld1dpZHRoICE9IGNvbC53aWR0aCgpKQog
ICAgICAgICAgICAgICAgICAgICBjb2wuc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxj
KCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNw
cAppbmRleCA0YzAzNzYwZjE2MTQ5ODE2ZjlhYTdiZjBmMmNhZWJlY2UzNmY2MTk0Li5iZjc5ZDJj
NTAwYTEwNDYzNmQwY2I3ZTk1OGNmYjNhMzAwZmExOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJTdHlsZVBy
b3BlcnRpZXMuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9u
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAwLDcgKzM5OSw3IEBAIHZvaWQgSFRN
TFRhYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cmluCiAgICAgICAgICAgICBtX3J1bGVzQXR0ciA9IEFsbFJ1bGVzOwogICAg
IH0gZWxzZSBpZiAobmFtZSA9PSBjZWxscGFkZGluZ0F0dHIpIHsKICAgICAgICAgaWYgKCF2YWx1
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3BhZGRpbmcgPSBzdGQ6Om1heCgwLCBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApKTsKKyAgICAg
ICAgICAgIG1fcGFkZGluZyA9IHN0ZDo6bWF4KDAsIHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZh
bHVlX29yKDApKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYWRkaW5nID0gMTsKICAg
ICB9IGVsc2UgaWYgKG5hbWUgPT0gY29sc0F0dHIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCBj
NTNhOTk3MDU5NDQ4ODViYjJkOTM3MGZkMGNmYTUzYmM1NjhlYmIwLi42MzFjM2FhNmIzNzI1ZDc4
ZTg4MTlkOWYxODIzZjZiZTZhMmZjNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC01Nyw3ICs1
Nyw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXJzLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMxNyw4ICszMTcsOCBAQCB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdodCgpCiB7CiAg
ICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1faW5zcGVjdGVkUGFnZUNvbnRyb2xs
ZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsK
ICAgICBTdHJpbmcgdmFsdWUgPSBtX3NldHRpbmdzLT5nZXRQcm9wZXJ0eShpbnNwZWN0b3JBdHRh
Y2hlZEhlaWdodFNldHRpbmcpOwotICAgIHVuc2lnbmVkIHByZWZlcnJlZEhlaWdodCA9IHZhbHVl
LmlzRW1wdHkoKSA/IGRlZmF1bHRBdHRhY2hlZEhlaWdodCA6IHZhbHVlLnRvVUludCgpOwotICAg
IAorICAgIHVuc2lnbmVkIHByZWZlcnJlZEhlaWdodCA9IHZhbHVlLmlzRW1wdHkoKSA/IGRlZmF1
bHRBdHRhY2hlZEhlaWdodCA6IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2ln
bmVkPih2YWx1ZSkudmFsdWVPcigwKTsKKwogICAgIC8vIFRoaXMgY2FsbCBtaWdodCBub3QgZ28g
dGhyb3VnaCAoaWYgdGhlIHdpbmRvdyBzdGFydHMgb3V0IGRldGFjaGVkKSwgYnV0IGlmIHRoZSB3
aW5kb3cgaXMgaW5pdGlhbGx5IGNyZWF0ZWQgYXR0YWNoZWQsCiAgICAgLy8gSW5zcGVjdG9yQ29u
dHJvbGxlcjo6YXR0YWNoV2luZG93IGlzIG5ldmVyIGNhbGxlZCwgc28gd2UgbmVlZCB0byBtYWtl
IHN1cmUgdG8gc2V0IHRoZSBhdHRhY2hlZFdpbmRvd0hlaWdodC4KICAgICAvLyBGSVhNRTogQ2xl
YW4gdXAgY29kZSBzbyB3ZSBvbmx5IGhhdmUgdG8gY2FsbCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dCBpbiBJbnNwZWN0b3JDb250cm9sbGVyOjphdHRhY2hXaW5kb3cKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNWUz
NDNhNTRiYTcyMTcyOWI4MTI5MmM2MDYzOTkyNWRjMWQwZGVhMS4uYTgyNzE3Mzg4MTY5YjcxZjZm
MDMxZDI4ZDNlMjY2MmZjNDIyMWUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEyMCw2ICsxMjAsNyBAQAog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI3NTgsMjIgKzI3NTksMjAgQEAgTm9kZSogSW5zcGVj
dG9yRE9NQWdlbnQ6Om5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhdGhUb2tlbnMuc2l6
ZSgpIC0gMTsgaSArPSAyKSB7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgICAg
IHVuc2lnbmVkIGNoaWxkTnVtYmVyID0gcGF0aFRva2Vuc1tpXS50b1VJbnQoJnN1Y2Nlc3MpOwot
ICAgICAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIGF1dG8gY2hpbGROdW1iZXIgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4ocGF0aFRva2Vuc1tpXSk7CisgICAg
ICAgIGlmICghY2hpbGROdW1iZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
ICAgICBOb2RlKiBjaGlsZDsKICAgICAgICAgaWYgKGlzPEhUTUxGcmFtZU93bmVyRWxlbWVudD4o
Km5vZGUpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIWNoaWxkTnVtYmVyKTsKKyAgICAgICAgICAg
IEFTU0VSVCghKmNoaWxkTnVtYmVyKTsKICAgICAgICAgICAgIGF1dG8mIGZyYW1lT3duZXIgPSBk
b3duY2FzdDxIVE1MRnJhbWVPd25lckVsZW1lbnQ+KCpub2RlKTsKICAgICAgICAgICAgIGNoaWxk
ID0gZnJhbWVPd25lci5jb250ZW50RG9jdW1lbnQoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGlmIChjaGlsZE51bWJlciA+PSBpbm5lckNoaWxkTm9kZUNvdW50KG5vZGUpKQorICAg
ICAgICAgICAgaWYgKCpjaGlsZE51bWJlciA+PSBpbm5lckNoaWxkTm9kZUNvdW50KG5vZGUpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgICAgICAgICBjaGlsZCA9IGlu
bmVyRmlyc3RDaGlsZChub2RlKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBjaGls
ZCAmJiBqIDwgY2hpbGROdW1iZXI7ICsraikKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAw
OyBjaGlsZCAmJiBqIDwgKmNoaWxkTnVtYmVyOyArK2opCiAgICAgICAgICAgICAgICAgY2hpbGQg
PSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXgg
MDYzM2I3NTYyM2NiYjlkYWI5OWU3YTI4MTkwNmQ5YmQwYjgwNjdjNi4uYTVmZTFmMTk4Nzc5Nzg4
ZmFhOTJhMmZjM2NhMjRhMzg1ZmQ0NjQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNp
bmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRh
YmxlRWxlbWVudC5oIgpAQCAtMjU4LDcgKzI1OSw3IEBAIEJveCogVHJlZUJ1aWxkZXI6OmNyZWF0
ZUxheW91dEJveChjb25zdCBDb250YWluZXJCb3gmIHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVu
CiAgICAgICAgICAgICAgICAgYXV0byYgdGFibGVDb2xFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRN
TFRhYmxlQ29sRWxlbWVudCY+KCpyZW5kZXJlci5lbGVtZW50KCkpOwogICAgICAgICAgICAgICAg
IGF1dG8gY29sdW1uV2lkdGggPSB0YWJsZUNvbEVsZW1lbnQud2lkdGgoKTsKICAgICAgICAgICAg
ICAgICBpZiAoIWNvbHVtbldpZHRoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3gtPnNldENvbHVtbldpZHRoKGNvbHVtbldpZHRoLnRvSW50KCkpOworICAgICAg
ICAgICAgICAgICAgICBjaGlsZExheW91dEJveC0+c2V0Q29sdW1uV2lkdGgocGFyc2VIVE1MSW50
ZWdlcihjb2x1bW5XaWR0aCkudmFsdWVfb3IoMCkpOwogICAgICAgICAgICAgICAgIGlmICh0YWJs
ZUNvbEVsZW1lbnQuc3BhbigpID4gMSkKICAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRC
b3gtPnNldENvbHVtblNwYW4odGFibGVDb2xFbGVtZW50LnNwYW4oKSk7CiAgICAgICAgICAgICB9
IGVsc2UgewpAQCAtMjc2LDcgKzI3Nyw2IEBAIEJveCogVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91
dEJveChjb25zdCBDb250YWluZXJCb3gmIHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVuCiAgICAg
ICAgICAgICAgICAgYXV0byByb3dTcGFuID0gY2VsbEVsZW1lbnQucm93U3BhbigpOwogICAgICAg
ICAgICAgICAgIGlmIChyb3dTcGFuID4gMSkKICAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3gtPnNldFJvd1NwYW4ocm93U3Bhbik7Ci0KICAgICAgICAgICAgICAgICBhdXRvIGNvbHVt
blNwYW4gPSBjZWxsRWxlbWVudC5jb2xTcGFuKCk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbHVt
blNwYW4gPiAxKQogICAgICAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveC0+c2V0Q29sdW1u
U3Bhbihjb2x1bW5TcGFuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAppbmRleCA5ZDBiN2U2NGUzMWIzN2M2
YjJlOGU3ODcyZGY1OWY4M2UyNzNjMTlmLi45OWNhOWM0YTBkOTc2NjEyYTBmOGJkMzNkYTA4NGZh
NDQ2ODVlOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9J
bnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDEwICs0
NywxMCBAQCBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlOjpDcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlKCkKIAogc3RhdGljIGJvb2wgcGFyc2VBY2Nlc3NDb250cm9sTWF4QWdl
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBTZWNvbmRzJiBleHBpcnlEZWx0YSkKIHsKLSAgICAvLyBG
SVhNRTogdGhpcyB3aWxsIG5vdCBkbyB0aGUgY29ycmVjdCB0aGluZyBmb3IgYSBudW1iZXIgc3Rh
cnRpbmcgd2l0aCBhICcrJwotICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICBleHBpcnlEZWx0YSA9
IFNlY29uZHMoc3RhdGljX2Nhc3Q8ZG91YmxlPihzdHJpbmcudG9VSW50U3RyaWN0KCZvaykpKTsK
LSAgICByZXR1cm4gb2s7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHJlamVj
dCBzdHJpbmdzIHRoYXQgaGF2ZSBhIGxlYWRpbmcgIisiLgorICAgIGF1dG8gcGFyc2VkSW50ZWdl
ciA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4oc3RyaW5nKTsKKyAgICBleHBpcnlEZWx0YSA9IFNl
Y29uZHMoc3RhdGljX2Nhc3Q8ZG91YmxlPihwYXJzZWRJbnRlZ2VyLnZhbHVlT3IoMCkpKTsKKyAg
ICByZXR1cm4gcGFyc2VkSW50ZWdlci5oYXNWYWx1ZSgpOwogfQogCiBFeHBlY3RlZDxVbmlxdWVS
ZWY8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+LCBTdHJpbmc+IENyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjpjcmVhdGUoU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgcG9saWN5LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAKaW5kZXggNDgyZDliY2FkNGJjN2Jj
YmMzNDg2OGI1ZWRjNzU2M2IwMmZkNmFmNC4uNGY5MjM5MDA4ZjkwYjViNTg4MGYxYjJkNzVmMmY1
MWZkNjY5OWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9y
eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNl
ci5jcHAKQEAgLTIxLDE4ICsyMSwxOSBAQAogLy8gT3JpZ2luYWwgdmVyc2lvbiBvZiB0aGlzIGZp
bGUgY2FuIGN1cnJlbnRseSBiZSBmb3VuZCBhdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3pp
bGxhMS44L3NvdXJjZS9uZXR3ZXJrL3N0cmVhbWNvbnYvY29udmVydGVycy9QYXJzZUZUUExpc3Qu
Y3BwCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoRlRQRElSKQogI2luY2x1ZGUg
IkZUUERpcmVjdG9yeVBhcnNlci5oIgogCisjaWYgRU5BQkxFKEZUUERJUikKKworI2luY2x1ZGUg
PHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CisKIC8vIE9uIFdpbmRvd3MsIHVzZSB0aGUg
dGhyZWFkc2FmZSAqX3IgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHB0aHJlYWQuCiAjaWYgT1MoV0lO
RE9XUykgJiYgKFVTRShQVEhSRUFEUykgfHwgSEFWRShQVEhSRUFEX0gpKQogI2luY2x1ZGUgPHB0
aHJlYWQuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KLSNpbmNsdWRl
IDxzdGRpby5oPgotCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIE9TKFdJTkRPV1MpICYm
ICFkZWZpbmVkKGdtdGltZV9yKQpAQCAtMTE4MSw3ICsxMTgyLDcgQEAgRlRQRW50cnlUeXBlIHBh
cnNlT25lRlRQTGluZShjb25zdCBjaGFyKiBsaW5lLCBMaXN0U3RhdGUmIHN0YXRlLCBMaXN0UmVz
dWx0JiByZXMKICAgICAgICAgewogICAgICAgICAgIC8qIEZpcnN0IHRyeSB0byB1c2UgcmVzdWx0
LmZlX3NpemUgdG8gZmluZCAiIC0+ICIgc2VxdWVuY2UuCiAgICAgICAgICAgICAgVGhpcyBjYW4g
Z2l2ZSBwcm9wZXIgcmVzdWx0IGZvciBjYXNlcyBsaWtlICJhYWEgLT4gYmJiIC0+IGNjYyIuICov
Ci0gICAgICAgICAgdW5zaWduZWQgaW50IGZpbGVTaXplID0gcmVzdWx0LmZpbGVTaXplLnRvVUlu
dCgpOworICAgICAgICAgICAgYXV0byBmaWxlU2l6ZSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPHVuc2lnbmVkPihyZXN1bHQuZmlsZVNpemUpLnZhbHVlT3IoMCk7CiAKICAgICAg
ICAgICBpZiAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID4gKGZpbGVTaXplICsgNCkgJiYKICAgICAg
ICAgICAgICAgc3RybmNtcChyZXN1bHQuZmlsZW5hbWUgKyByZXN1bHQuZmlsZW5hbWVMZW5ndGgg
LSBmaWxlU2l6ZSAtIDQsICIgLT4gIiwgNCkgPT0gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCmluZGV4IGU2NmUwYzNhZTU4NjMxYWQy
MGMxMWIzYTBkODQ4NGUwZWYxYjQ5N2YuLjIxOTg3NTNlNzc1Njg2ZjMwZDc3ZDNmMDlhZmM1N2Y0
MDJlNzE2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1i
ZXIuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTcwLDcgKzcxLDcgQEAgRXhwZWN0ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEsIFN0cmluZz4gUHJpdmF0ZUNsaWNrTWUKIAogICAgIGF1dG8gcHJl
Zml4TGVuZ3RoID0gc2l6ZW9mKHByaXZhdGVDbGlja01lYXN1cmVtZW50VHJpZ2dlckF0dHJpYnV0
aW9uUGF0aCkgLSAxOwogICAgIGlmIChwYXRoLmxlbmd0aCgpID09IHByZWZpeExlbmd0aCArIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6
ZSkgewotICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQgPSBwYXRoLnN1
YnN0cmluZyhwcmVmaXhMZW5ndGgsIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25U
cmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSkudG9VSW50NjRTdHJpY3QoKTsKKyAgICAgICAgYXV0
byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pihw
YXRoLnN1YnN0cmluZyhwcmVmaXhMZW5ndGgsIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSkpOwogICAgICAgICBpZiAoIWF0dHJpYnV0
aW9uVHJpZ2dlckRhdGFVSW50NjQgfHwgKmF0dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQgPiBB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhFbnRyb3B5KQogICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252
ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgY29udmVyc2lvbiBkYXRhIGNvdWxk
IG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gb2Yg
Il9zLCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhFbnRyb3B5LCAiLiJfcykpOwogCkBAIC03
OCwxMSArNzksMTEgQEAgRXhwZWN0ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEsIFN0cmluZz4gUHJpdmF0ZUNsaWNrTWUKICAgICB9CiAgICAgCiAgICAg
aWYgKHBhdGgubGVuZ3RoKCkgPT0gcHJlZml4TGVuZ3RoICsgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRTaXplICsgMSArIHByaXZhdGVDbGlj
a01lYXN1cmVtZW50UHJpb3JpdHlQYXRoU2VnbWVudFNpemUpIHsKLSAgICAgICAgYXV0byBhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID0gcGF0aC5zdWJzdHJpbmcocHJlZml4TGVuZ3RoLCBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNp
emUpLnRvVUludDY0U3RyaWN0KCk7CisgICAgICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0
YVVJbnQ2NCA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocGF0aC5zdWJzdHJpbmcocHJlZml4TGVu
Z3RoLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2Vn
bWVudFNpemUpKTsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0IHx8
ICphdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID4gQXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6
TWF4RW50cm9weSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5n
KCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVk
IGJlY2F1c2UgdGhlIGNvbnZlcnNpb24gZGF0YSBjb3VsZCBub3QgYmUgcGFyc2VkIG9yIHdhcyBo
aWdoZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIG9mICJfcywgQXR0cmlidXRpb25UcmlnZ2Vy
RGF0YTo6TWF4RW50cm9weSwgIi4iX3MpKTsKIAotICAgICAgICBhdXRvIGF0dHJpYnV0aW9uUHJp
b3JpdHlVSW50NjQgPSBwYXRoLnN1YnN0cmluZyhwcmVmaXhMZW5ndGggKyBwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUgKyAxLCBwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFByaW9yaXR5UGF0aFNlZ21lbnRTaXplKS50b1VJbnQ2NFN0cmlj
dCgpOworICAgICAgICBhdXRvIGF0dHJpYnV0aW9uUHJpb3JpdHlVSW50NjQgPSBwYXJzZUludGVn
ZXI8dWludDY0X3Q+KHBhdGguc3Vic3RyaW5nKHByZWZpeExlbmd0aCArIHByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSArIDEsIHByaXZh
dGVDbGlja01lYXN1cmVtZW50UHJpb3JpdHlQYXRoU2VnbWVudFNpemUpKTsKICAgICAgICAgaWYg
KCFhdHRyaWJ1dGlvblByaW9yaXR5VUludDY0IHx8ICphdHRyaWJ1dGlvblByaW9yaXR5VUludDY0
ID4gUHJpb3JpdHk6Ok1heEVudHJvcHkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQobWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2Fz
IG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBwcmlvcml0eSBjb3VsZCBub3QgYmUgcGFyc2VkIG9y
IHdhcyBoaWdoZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIG9mICJfcywgUHJpb3JpdHk6Ok1h
eEVudHJvcHksICIuIl9zKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxl
Y3RFbGVtZW50LmNwcAppbmRleCAwMGRlOWFjODU2NzQ0OTNjNzAwZmRjNzkyMGRhNzEzMzVjOTUw
MWIwLi4wNTU3OTdmOWZiMzhkMDUzYmMyNjRkNTZiMjY3ZWNiZTczMTE4MmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0zNyw3ICszNyw2
IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTE4LDcgKzExNyw3IEBAIGludCBNYXRoTUxTZWxlY3RFbGVtZW50OjpnZXRTZWxlY3RlZEFj
dGlvbkNoaWxkQW5kSW5kZXgoRWxlbWVudComIHNlbGVjdGVkQ2hpbGQpCiAgICAgaWYgKCFzZWxl
Y3RlZENoaWxkKQogICAgICAgICByZXR1cm4gMTsKIAotICAgIGludCBzZWxlY3Rpb24gPSBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oTWF0aE1MTmFtZXM6OnNlbGVjdGlvbkF0dHIpKS52YWx1ZU9yKDApOworICAgIGlu
dCBzZWxlY3Rpb24gPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6c2VsZWN0aW9u
QXR0cik7CiAgICAgaW50IGk7CiAgICAgZm9yIChpID0gMTsgaSA8IHNlbGVjdGlvbjsgaSsrKSB7
CiAgICAgICAgIGF1dG8qIG5leHRDaGlsZCA9IHNlbGVjdGVkQ2hpbGQtPm5leHRFbGVtZW50U2li
bGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCBmMWM2Nzg1YTRhMzll
ZGUyYzQ5NTQyODExY2IxOTUyZDBiOWM0MmQzLi5kYmY2MzdjZmIyOTgwNjYxYWE2NzcwYTc4YTQ0
N2FmZWQwMzU5YTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtNDYsNiAr
NDYsNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zODMsMTIgKzM4NCwxMCBAQCB2b2lkIEV2ZW50U291cmNlOjpwYXJzZUV2ZW50
U3RyZWFtTGluZSh1bnNpZ25lZCBwb3NpdGlvbiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpZQogICAg
ICAgICBpZiAoIXZhbHVlTGVuZ3RoKQogICAgICAgICAgICAgbV9yZWNvbm5lY3REZWxheSA9IGRl
ZmF1bHRSZWNvbm5lY3REZWxheTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogRG8gd2UgcmVhbGx5IHdhbnQgdG8gaWdub3JlIHRyYWlsaW5nIGdhcmJhZ2UgaGVyZT8gU2hv
dWxkIHdlIGJlIHVzaW5nIHRoZSBzdHJpY3QgdmVyc2lvbiBpbnN0ZWFkPwotICAgICAgICAgICAg
Ly8gRklYTUU6IElmIHdlIGNhbid0IHBhcnNlIHRoZSB2YWx1ZSwgc2hvdWxkIHdlIGxlYXZlIG1f
cmVjb25uZWN0RGVsYXkgYWxvbmUgb3Igc2V0IGl0IHRvIGRlZmF1bHRSZWNvbm5lY3REZWxheT8K
LSAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICBhdXRvIHJlY29ubmVjdERlbGF5ID0g
Y2hhcmFjdGVyc1RvVUludDY0KCZtX3JlY2VpdmVCdWZmZXJbcG9zaXRpb25dLCB2YWx1ZUxlbmd0
aCwgJm9rKTsKLSAgICAgICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICAgICBtX3JlY29ubmVj
dERlbGF5ID0gcmVjb25uZWN0RGVsYXk7CisgICAgICAgICAgICAvLyBGSVhNRTogRG8gd2UgcmVh
bGx5IHdhbnQgdG8gaWdub3JlIHRyYWlsaW5nIGp1bmsgaGVyZT8KKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBXaGVuIHdlIGNhbid0IHBhcnNlIHRoZSB2YWx1ZSwgc2hvdWxkIHdlIHJlYWxseSBsZWF2
ZSBtX3JlY29ubmVjdERlbGF5IGFsb25lPyBTaG91bGRuJ3Qgd2Ugc2V0IGl0IHRvIGRlZmF1bHRS
ZWNvbm5lY3REZWxheT8KKyAgICAgICAgICAgIGlmIChhdXRvIHJlY29ubmVjdERlbGF5ID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHsgJm1fcmVjZWl2ZUJ1ZmZl
cltwb3NpdGlvbl0sIHZhbHVlTGVuZ3RoIH0pKQorICAgICAgICAgICAgICAgIG1fcmVjb25uZWN0
RGVsYXkgPSAqcmVjb25uZWN0RGVsYXk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYXRpb24uY3BwCmluZGV4IGY2MGFlYWYzNTE2ZjY3NmExNWUwNjc2MDZlMjY3NjE3YjE0NGU1
NmMuLjA5NWU0NzQ4NWYzYmM0NTY0MDIzYjExZjk5OWI5NjQ2MDIxMDA1MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTG9jYXRpb24uY3BwCkBAIC0zNCw5ICszNCwxMCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNjUsNyArMTY2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
TG9jYXRpb246OnNldFBvcnQoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmly
c3RXaW4KICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwg
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7Ci0gICAgdXJsLnNldFBvcnQocGFyc2VVSW50MTYo
cG9ydFN0cmluZykpOworICAgIHVybC5zZXRQb3J0KHBhcnNlSW50ZWdlcjx1aW50MTZfdD4ocG9y
dFN0cmluZykpOwogICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2lu
ZG93LCB1cmwuc3RyaW5nKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKaW5kZXggNzljMDY3YjcwOTVmZTIzZmY0MDM4NzE4NTBmZjVjYjM5NmU1NzNh
Yi4uNzhjMmNhMDc1ZWJhM2EyYmEzNzUyMDkxYmEzNGFjM2UwOWM3M2E3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTEwNSwyMiArMTA2LDE1IEBAIE9wdGlvbmFsPFNlY3VyaXR5T3Jp
Z2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0
IFN0CiAgICAgaWYgKHNlcGFyYXRvcjEgPT0gc2VwYXJhdG9yMikKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICAKLSAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQgc2VjdGlvbiBpcyBh
IHZhbGlkIHBvcnQgbnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QKLSAgICBib29sIHBvcnRPa2F5Owot
ICAgIGludCBwb3J0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KGRhdGFiYXNlSWRlbnRpZmll
ci5sZW5ndGgoKSAtIHNlcGFyYXRvcjIgLSAxKS50b0ludCgmcG9ydE9rYXkpOwotICAgIGJvb2wg
cG9ydEFic2VudCA9IChzZXBhcmF0b3IyID09IGRhdGFiYXNlSWRlbnRpZmllci5sZW5ndGgoKSAt
IDEpOwotICAgIGlmICghKHBvcnRPa2F5IHx8IHBvcnRBYnNlbnQpKQorICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgcG9ydCBzZWN0aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9lc24ndCBleGlz
dC4KKyAgICBhdXRvIHBvcnRMZW5ndGggPSBkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkgLSBz
ZXBhcmF0b3IyIC0gMTsKKyAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1aW50MTZfdD4oU3RyaW5nVmlldyB7IGRhdGFiYXNlSWRlbnRpZmllciB9LnJpZ2h0
KHBvcnRMZW5ndGgpKTsKKyAgICBpZiAoIXBvcnQgJiYgcG9ydExlbmd0aCkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLSAgICAKLSAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICAKKwogICAgIGF1dG8gcHJvdG9jb2wgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vi
c3RyaW5nKDAsIHNlcGFyYXRvcjEpOwogICAgIGF1dG8gaG9zdCA9IGRhdGFiYXNlSWRlbnRpZmll
ci5zdWJzdHJpbmcoc2VwYXJhdG9yMSArIDEsIHNlcGFyYXRvcjIgLSBzZXBhcmF0b3IxIC0gMSk7
Ci0gICAgaWYgKCFwb3J0KQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJv
dG9jb2wsIGhvc3QsIFdURjo6bnVsbG9wdCB9OwotCi0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2lu
RGF0YSB7IHByb3RvY29sLCBob3N0LCBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkgfTsKKyAg
ICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJvdG9jb2wsIGhvc3QsIHBvcnQgfTsKIH0K
IAogU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKaW5kZXggOTAwM2Q5N2Vl
NTU2ZGU0ZjM3NDVmMjMzZGEzY2IxMTUwMTA3NzZkMi4uOGMwYTQyYzg3MzM1NTJmN2VlYWYzODU5
NmVkZmYxYjViMmVlN2ViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dG
ZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0xMzIsNyArMTMzLDcgQEAgc3RhdGljIHZvaWQgc2V0V2luZG93RmVhdHVy
ZShXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWUKICAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZh
bHVlLCAieWVzIikpCiAgICAgICAgIG51bWVyaWNWYWx1ZSA9IDE7CiAgICAgZWxzZQotICAgICAg
ICBudW1lcmljVmFsdWUgPSB2YWx1ZS50b0ludCgpOworICAgICAgICBudW1lcmljVmFsdWUgPSBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApOwog
CiAgICAgLy8gV2UgdHJlYXQga2V5IG9mICJyZXNpemFibGUiIGhlcmUgYXMgYW4gYWRkaXRpb25h
bCBmZWF0dXJlIHJhdGhlciB0aGFuIHNldHRpbmcgcmVzaXplYWJsZSB0byB0cnVlLgogICAgIC8v
IFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIEZpcmVmb3gsIGJ1dCBjb3VsZCBhbHNvIGJlIGhhbmRs
ZWQgYXQgYW5vdGhlciBsZXZlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKaW5kZXggYjlmNTQ4ODA3
ZTNkNjRlN2QyYzE0ODdkYTU2MzYwNzY2ZmFjMGNlMi4uNmEzMzZiNWEzZTE2MmIzYzIxZmEyNTk2
OTM1NjVlNzI0NTQzYmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nUGFyc2luZ0J1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00MzUsMTQgKzQzNiwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBP
cHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpQb3J0PgogICAgIAogICAg
IGlmICghYnVmZmVyLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
Ci0gICAgYm9vbCBvazsKLSAgICBpbnQgcG9ydEludCA9IGNoYXJhY3RlcnNUb0ludFN0cmljdChi
ZWdpbiwgYnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdpbiwgJm9rKTsKLSAgICBpZiAoIW9rIHx8IHBv
cnRJbnQgPCAwIHx8IHBvcnRJbnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4
KCkpCisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBidWZmZXIucG9zaXRpb24oKSAtIGJlZ2luOwor
ICAgIGF1dG8gcG9ydEludGVnZXIgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KHsgYmVnaW4sIGxl
bmd0aCB9KS52YWx1ZU9yKDApOworICAgIGlmICghcG9ydEludGVnZXIpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKICAgICBQb3J0IHBvcnQ7Ci0gICAgcG9ydC52YWx1ZSA9IHBvcnRJ
bnQ7CisgICAgcG9ydC52YWx1ZSA9IHBvcnRJbnRlZ2VyOwogICAgIHJldHVybiBwb3J0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJl
YWRMaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJl
YWRMaW51eC5jcHAKaW5kZXggYzdlNzNmMGMxYzI1YmJhMDVmMDZiODUzMjViNWMzMDNlNzdjZGE0
OC4uYjY1OWI3NzRmMjY0MDEzYTE3Y2Y1NmU2YzEzMTAyNWVlY2NiY2UwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNw
cApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvbGludXgvQ3VycmVudFByb2Nlc3NNZW1vcnlTdGF0
dXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjAwLDIwICsyMDEsMTUgQEAgc3RhdGljIHZvaWQg
Y29sbGVjdENQVVVzYWdlKGZsb2F0IHBlcmlvZCkKIAogICAgIHN0cnVjdCBkaXJlbnQqIGRwOwog
ICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGRpcikpKSB7Ci0gICAgICAgIFN0cmluZyBuYW1lID0g
U3RyaW5nOjpmcm9tVVRGOChkcC0+ZF9uYW1lKTsKLSAgICAgICAgaWYgKG5hbWUgPT0gIi4iIHx8
IG5hbWUgPT0gIi4uIikKKyAgICAgICAgYXV0byBpZCA9IHBhcnNlSW50ZWdlcjxwaWRfdD4oZHAt
PmRfbmFtZSk7CisgICAgICAgIGlmICghaWQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBib29sIG9rOwotICAgICAgICBwaWRfdCBpZCA9IG5hbWUudG9JbnRTdHJpY3QoJm9rKTsK
LSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGF1dG8m
IGluZm8gPSB0aHJlYWRJbmZvTWFwKCkuYWRkKGlkLCBUaHJlYWRJbmZvKCkpLml0ZXJhdG9yLT52
YWx1ZTsKLSAgICAgICAgaWYgKCF0aHJlYWRDUFVVc2FnZShpZCwgcGVyaW9kLCBpbmZvKSkKLSAg
ICAgICAgICAgIHRocmVhZEluZm9NYXAoKS5yZW1vdmUoaWQpOworICAgICAgICBhdXRvJiBpbmZv
ID0gdGhyZWFkSW5mb01hcCgpLmFkZCgqaWQsIFRocmVhZEluZm8oKSkuaXRlcmF0b3ItPnZhbHVl
OworICAgICAgICBpZiAoIXRocmVhZENQVVVzYWdlKCppZCwgcGVyaW9kLCBpbmZvKSkKKyAgICAg
ICAgICAgIHRocmVhZEluZm9NYXAoKS5yZW1vdmUoKmlkKTsKIAotICAgICAgICBwcmV2aW91c1Rh
c2tzLnJlbW92ZShpZCk7CisgICAgICAgIHByZXZpb3VzVGFza3MucmVtb3ZlKCppZCk7CiAgICAg
fQogICAgIGNsb3NlZGlyKGRpcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKaW5kZXggZGIzNjQ0NzM0NTQ1Mjg3ZmMzMTM2NjNlYTk2OWNiNjM0MTYwZmY1
NC4uYzEyNGU3OGQyN2QyYTU3ODNmNmI4YzRlMDM4YTdmMTE2YzMyOGMyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0lu
dGVnZXJDb252ZXJzaW9uLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgV1RG
OjpEYXRhTXV0ZXg7CkBAIC0xMDcxLDE3ICsxMDcyLDEyIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uCiAKICAgICAvLyBTaWduYWwgdG8gZG93bnN0cmVhbSBpZiB0aGlzIGlzIGFuIEljZWNhc3Qg
c3RyZWFtLgogICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2FwczsKLSAgICBTdHJpbmcgbWV0YWRhdGFJ
bnRlcnZhbEFzU3RyaW5nID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpJY3lNZXRhSW50KTsKLSAgICBpZiAoIW1ldGFkYXRhSW50ZXJ2YWxBc1N0cmluZy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgYm9vbCBpc01ldGFkYXRhSW50ZXJ2YWxQYXJzZWQ7Ci0gICAgICAgIGlu
dCBtZXRhZGF0YUludGVydmFsID0gbWV0YWRhdGFJbnRlcnZhbEFzU3RyaW5nLnRvSW50KCZpc01l
dGFkYXRhSW50ZXJ2YWxQYXJzZWQpOwotICAgICAgICBpZiAoaXNNZXRhZGF0YUludGVydmFsUGFy
c2VkICYmIG1ldGFkYXRhSW50ZXJ2YWwgPiAwKSB7Ci0gICAgICAgICAgICBjYXBzID0gYWRvcHRH
UmVmKGdzdF9jYXBzX25ld19zaW1wbGUoImFwcGxpY2F0aW9uL3gtaWN5IiwgIm1ldGFkYXRhLWlu
dGVydmFsIiwgR19UWVBFX0lOVCwgbWV0YWRhdGFJbnRlcnZhbCwgbnVsbHB0cikpOwotCi0gICAg
ICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKTsKLSAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiUiV1OiBSZXNwb25zZSBDb250ZW50VHlwZTogJXMiLCBtX3JlcXVlc3ROdW1iZXIsIGNv
bnRlbnRUeXBlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBs
ZShjYXBzLmdldCgpLCAiY29udGVudC10eXBlIiwgR19UWVBFX1NUUklORywgY29udGVudFR5cGUu
dXRmOCgpLmRhdGEoKSwgbnVsbHB0cik7Ci0gICAgICAgIH0KKyAgICBpZiAoYXV0byBtZXRhZGF0
YUludGVydmFsID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihyZXNwb25z
ZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFJbnQpKTsgbWV0YWRhdGFJ
bnRlcnZhbCAmJiAqbWV0YWRhdGFJbnRlcnZhbCA+IDApIHsKKyAgICAgICAgY2FwcyA9IGFkb3B0
R1JlZihnc3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LWljeSIsICJtZXRhZGF0YS1p
bnRlcnZhbCIsIEdfVFlQRV9JTlQsICptZXRhZGF0YUludGVydmFsLCBudWxscHRyKSk7CisKKyAg
ICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpDb250ZW50VHlwZSk7CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAi
UiV1OiBSZXNwb25zZSBDb250ZW50VHlwZTogJXMiLCBtX3JlcXVlc3ROdW1iZXIsIGNvbnRlbnRU
eXBlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlKGNhcHMuZ2V0
KCksICJjb250ZW50LXR5cGUiLCBHX1RZUEVfU1RSSU5HLCBjb250ZW50VHlwZS51dGY4KCkuZGF0
YSgpLCBudWxscHRyKTsKICAgICB9CiAgICAgaWYgKGNhcHMpIHsKICAgICAgICAgR1NUX0RFQlVH
X09CSkVDVChzcmMsICJSJXU6IFNldCBjYXBzIHRvICUiIEdTVF9QVFJfRk9STUFULCBtX3JlcXVl
c3ROdW1iZXIsIGNhcHMuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggYmMx
NmVjZjcxNTQ5ZGU2ODU0MWU4YTVhZGE0YTk2YWFjYmFjNGFkZS4uMTdkYzE2MzQ0MzdjNjRiOTE0
ODAzMjMwODZmN2Q1ODdkYThmNWFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC00
Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIEdTVF9ERUJVR19DQVRF
R09SWSh3ZWJraXRNZWRpYVRodW5kZXJEZWJ1Z0NhdGVnb3J5KTsKICNkZWZpbmUgR1NUX0NBVF9E
RUZBVUxUIHdlYmtpdE1lZGlhVGh1bmRlckRlYnVnQ2F0ZWdvcnkKQEAgLTM0OSw4ICszNTAsMTAg
QEAgcHVibGljOgogICAgICAgICBpZiAoIXJlcXVlc3RUeXBlLmlzRW1wdHkoKSAmJiByZXF1ZXN0
VHlwZS5sZW5ndGgoKSAhPSBwYXlsb2FkLmxlbmd0aCgpKQogICAgICAgICAgICAgb2Zmc2V0ID0g
dHlwZVBvc2l0aW9uICsgNjsKIAotICAgICAgICBpZiAocmVxdWVzdFR5cGUubGVuZ3RoKCkgPT0g
MSkKLSAgICAgICAgICAgIG1fdHlwZSA9IG1ha2VPcHRpb25hbChzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpNZWRpYUtleU1lc3NhZ2VUeXBlPihyZXF1ZXN0VHlwZS50b0ludCgpKSk7CisgICAgICAgIGlm
IChyZXF1ZXN0VHlwZS5sZW5ndGgoKSA9PSAxKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhl
cmUgYXJlIHNpbXBsZXIgd2F5cyB0byBjb252ZXJ0IGEgc2luZ2xlIGRpZ2l0IHRvIGEgbnVtYmVy
IHRoYW4gY2FsbGluZyBwYXJzZUludGVnZXIuCisgICAgICAgICAgICBtX3R5cGUgPSBtYWtlT3B0
aW9uYWwoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4ocGFyc2VJbnRl
Z2VyPGludD4ocmVxdWVzdFR5cGUpLnZhbHVlT3IoMCkpKTsKKyAgICAgICAgfQogCiAgICAgICAg
IG1fcGF5bG9hZCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBheWxvYWQuY2hhcmFjdGVyczgoKSAr
IG9mZnNldCwgcGF5bG9hZC5sZW5ndGgoKSAtIG9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAppbmRleCA4NDZhOWFl
MmYyNzU0ZTVhMzMzZjI3MzU5NTk2Y2IzNjg0ZmE5YTZiLi41ZDUyYzk4ODJhMzMxNTIwODU2YTFi
NjIzMGYxZGRiMjEwODBkOWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8
d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3Rm
L1dhbGxUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lv
bi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAvKiBUaGlzIGlzIHRoZSBt
YXhpbXVtIGxpbmUgbGVuZ3RoIHdlIGFjY2VwdCBmb3IgYSBjb29raWUgbGluZS4gUkZDIDIxMDkK
QEAgLTExNywxMCArMTE4LDggQEAgc3RhdGljIHZvaWQgcGFyc2VDb29raWVBdHRyaWJ1dGVzKGNv
bnN0IFN0cmluZyYgYXR0cmlidXRlLCBib29sJiBoYXNNYXhBZ2UsIENvb2sKICAgICAgICAgcmVz
dWx0LmRvbWFpbiA9IGF0dHJpYnV0ZVZhbHVlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAK
ICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlTmFtZSwgIm1h
eC1hZ2UiKSkgewotICAgICAgICBib29sIG9rOwotICAgICAgICBkb3VibGUgbWF4QWdlU2Vjb25k
cyA9IGF0dHJpYnV0ZVZhbHVlLnRvSW50NjQoJm9rKTsKLSAgICAgICAgaWYgKG9rKSB7Ci0gICAg
ICAgICAgICByZXN1bHQuZXhwaXJlcyA9IChXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBv
Y2goKS52YWx1ZSgpICsgbWF4QWdlU2Vjb25kcykgKiBXVEY6Om1zUGVyU2Vjb25kOworICAgICAg
ICBpZiAoYXV0byBtYXhBZ2VTZWNvbmRzID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1
bms8aW50NjRfdD4oYXR0cmlidXRlVmFsdWUpKSB7CisgICAgICAgICAgICByZXN1bHQuZXhwaXJl
cyA9IChXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpICsgKm1heEFn
ZVNlY29uZHMpICogV1RGOjptc1BlclNlY29uZDsKICAgICAgICAgICAgIHJlc3VsdC5zZXNzaW9u
ID0gZmFsc2U7CiAKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgbWF4LWFnZSBhdHRyaWJ1
dGUgYXMgd2VsbCBhcyBhbiBleHBpcmVzIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKaW5kZXggOWVm
NTA3OTdjY2ZkYzUyMDZkZDA0MzA2NzIyZmJmZTgyMTAwMjRhNS4uOWU3NzJlZWQxNmY0YmQzYmY2
MjJiNzMxYTEwZjU2MzZlMTAxNjJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgog
I2luY2x1ZGUgPHd0Zi9TSEExLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2Vy
Q29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE4NywxMCArMTg4LDgg
QEAgdm9pZCBDdXJsQ2FjaGVFbnRyeTo6c2V0UmVzcG9uc2VGcm9tQ2FjaGVkSGVhZGVycyhSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICAvLyBUcnkgdG8gcGFyc2UgZXhwZWN0ZWQgY29u
dGVudCBsZW5ndGgKICAgICBsb25nIGxvbmcgY29udGVudExlbmd0aCA9IC0xOwogICAgIGlmICgh
cmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50TGVuZ3RoKS5p
c051bGwoKSkgewotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgbG9uZyBs
b25nIHBhcnNlZENvbnRlbnRMZW5ndGggPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkNvbnRlbnRMZW5ndGgpLnRvSW50NjQoJnN1Y2Nlc3MpOwotICAgICAgICBpZiAo
c3VjY2VzcykKLSAgICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSBwYXJzZWRDb250ZW50TGVuZ3Ro
OworICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50TGVuZ3RoID0gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8bG9uZyBsb25nPihyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnRMZW5ndGgpKSkKKyAgICAgICAgICAgIGNvbnRlbnRMZW5ndGgg
PSAqcGFyc2VkQ29udGVudExlbmd0aDsKICAgICB9CiAgICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRD
b250ZW50TGVuZ3RoKGNvbnRlbnRMZW5ndGgpOyAvLyAtMSBvbiBwYXJzZSBlcnJvciBvciBudWxs
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRl
eCAzZDRhN2UzMThmMDQ1NDg4MmE4M2FkMzcwMzkxOThlZWQ3ZDczNDFlLi42MDZjMWY2OWFhNDMy
OTg3MjJhNWM1Yzg1YjllMGFmYzZkZjM2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RvT1RGRm9udENvbnZlcnNpb24uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NT
U3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiR2x5cGguaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiU1ZHRm9udEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGb250RmFjZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdHbHlwaEVsZW1lbnQuaCIKQEAgLTQ5MCw5ICs0OTEsOSBAQCB2b2lkIFNWR1Rv
T1RGRm9udENvbnZlcnRlcjo6YXBwZW5kTkFNRVRhYmxlKCkKIHZvaWQgU1ZHVG9PVEZGb250Q29u
dmVydGVyOjphcHBlbmRPUzJUYWJsZSgpCiB7CiAgICAgaW50MTZfdCBhdmVyYWdlQWR2YW5jZSA9
IHNfb3V0cHV0VW5pdHNQZXJFbTsKLSAgICBhdXRvIGhvcml6QWR2WCA9IHBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPGludD4obV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIpKTsKKyAgICBhdXRvIGhvcml6
QWR2WCA9IHBhcnNlSFRNTEludGVnZXIobV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIpKTsKICAgICBpZiAoIWhvcml6
QWR2WCAmJiBtX21pc3NpbmdHbHlwaEVsZW1lbnQpCi0gICAgICAgIGhvcml6QWR2WCA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV9taXNzaW5nR2x5cGhFbGVtZW50LT5h
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIp
KTsKKyAgICAgICAgaG9yaXpBZHZYID0gcGFyc2VIVE1MSW50ZWdlcihtX21pc3NpbmdHbHlwaEVs
ZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6Omhvcml6X2Fk
dl94QXR0cikpOwogICAgIGlmIChob3JpekFkdlgpCiAgICAgICAgIGF2ZXJhZ2VBZHZhbmNlID0g
Y2xhbXBUbzxpbnQxNl90PihzY2FsZVVuaXRzUGVyRW0oKmhvcml6QWR2WCkpOwogCkBAIC05NDQs
MTYgKzk0NSwxNiBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kVk9SR1RhYmxl
KCkKICAgICBhcHBlbmQxNigxKTsgLy8gTWFqb3IgdmVyc2lvbgogICAgIGFwcGVuZDE2KDApOyAv
LyBNaW5vciB2ZXJzaW9uCiAKLSAgICBhdXRvIHZlcnRPcmlnaW5ZID0gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8aW50PihtX2ZvbnRFbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lBdHRyKSk7CisgICAgYXV0byB2ZXJ0
T3JpZ2luWSA9IHBhcnNlSFRNTEludGVnZXIobV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29yaWdpbl95QXR0cikpOwogICAgIGlmICgh
dmVydE9yaWdpblkgJiYgbV9taXNzaW5nR2x5cGhFbGVtZW50KQotICAgICAgICB2ZXJ0T3JpZ2lu
WSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV9taXNzaW5nR2x5cGhF
bGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29y
aWdpbl95QXR0cikpOwotICAgIGFwcGVuZDE2KGNsYW1wVG88aW50MTZfdD4oc2NhbGVVbml0c1Bl
ckVtKHZlcnRPcmlnaW5ZLnZhbHVlT3IoMCkpKSk7CisgICAgICAgIHZlcnRPcmlnaW5ZID0gcGFy
c2VIVE1MSW50ZWdlcihtX21pc3NpbmdHbHlwaEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lBdHRyKSk7CisgICAgYXBwZW5kMTYo
Y2xhbXBUbzxpbnQxNl90PihzY2FsZVVuaXRzUGVyRW0odmVydE9yaWdpblkudmFsdWVfb3IoMCkp
KSk7CiAKICAgICBhdXRvIHRhYmxlU2l6ZU9mZnNldCA9IG1fcmVzdWx0LnNpemUoKTsKICAgICBh
cHBlbmQxNigwKTsgLy8gUGxhY2UgdG8gd3JpdGUgdGFibGUgc2l6ZS4KICAgICBmb3IgKEdseXBo
IGkgPSAwOyBpIDwgbV9nbHlwaHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGF1dG8qIGds
eXBoID0gbV9nbHlwaHNbaV0uZ2x5cGhFbGVtZW50KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byB2
ZXJ0aWNhbE9yaWdpblkgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGds
eXBoLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29yaWdp
bl95QXR0cikpKSB7CisgICAgICAgICAgICBpZiAoYXV0byB2ZXJ0aWNhbE9yaWdpblkgPSBwYXJz
ZUhUTUxJbnRlZ2VyKGdseXBoLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05h
bWVzOjp2ZXJ0X29yaWdpbl95QXR0cikpKSB7CiAgICAgICAgICAgICAgICAgYXBwZW5kMTYoaSk7
CiAgICAgICAgICAgICAgICAgYXBwZW5kMTYoY2xhbXBUbzxpbnQxNl90PihzY2FsZVVuaXRzUGVy
RW0oKnZlcnRpY2FsT3JpZ2luWSkpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCA0NGZiNDVlOWViZGY1OWMzMDdlOWNhNWRjODJhZmVlYjIyN2Fj
MDUwLi45MDAwMTY1YjBhNGI0N2RjZDg5ZjNiYWFmMGQyMDllYzMwMmQzMjdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMzMsNiArMjMzLDcgQEAKICNpbmNsdWRlIDx3
dGYvVVJMSGVscGVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5j
bHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgpAQCAtMzYyLDEwICszNjMsOSBAQCB1c2luZyBKU0M6
OlByb3BlcnR5U2xvdDsKIHVzaW5nIEpTQzo6U2NyaXB0RXhlY3V0YWJsZTsKIHVzaW5nIEpTQzo6
U3RhY2tWaXNpdG9yOwogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogCiBjbGFzcyBJbnNwZWN0b3JTdHViRnJvbnRlbmQgZmluYWwgOiBwdWJsaWMg
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCwgcHVibGljIEZyb250ZW5kQ2hhbm5lbCB7CkBA
IC0xNjAxLDcgKzE2MDEsNyBAQCB2b2lkIEludGVybmFsczo6c2V0V2ViUlRDVlA5VlRCU3VwcG9y
dChib29sIHZhbHVlKQogCiB2b2lkIEludGVybmFsczo6c2V0U0ZyYW1lQ291bnRlcihSVENSdHBT
RnJhbWVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU3RyaW5nJiBjb3VudGVyKQogewotICAg
IGlmIChhdXRvIHZhbHVlID0gU3RyaW5nVmlldyhjb3VudGVyKS50b1VJbnQ2NFN0cmljdCgpKQor
ICAgIGlmIChhdXRvIHZhbHVlID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pihjb3VudGVyKSkKICAg
ICAgICAgdHJhbnNmb3JtLnNldENvdW50ZXJGb3JUZXN0aW5nKCp2YWx1ZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2Vi
RHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDhiNzlhYWU0YWQ5Njc5NzFmYjVjY2Fh
MDJlMjcwYjRkNzIyNGE2ZDQuLmYxMWJmZWRjMTQ3Y2RhM2VlNzI3MzMyYmYxNzlmMWVmMTYyMWEy
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKKysr
IGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkNvbW1hbmRSZXN1bHQuaCIKICNpbmNsdWRlICJTZXNzaW9uSG9zdC5oIgog
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViRHJpdmVyIHsKQEAgLTExOCwyMSArMTE5LDIwIEBAIGludCBXZWJEcml2ZXJTZXJ2
aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICBhdXRvIHBvc2l0aW9uID0g
dGFyZ2V0U3RyaW5nLnJldmVyc2VGaW5kKCI6Il9zKTsKICAgICAgICAgaWYgKHBvc2l0aW9uICE9
IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBtX3RhcmdldEFkZHJlc3MgPSB0YXJnZXRTdHJpbmcu
bGVmdChwb3NpdGlvbik7Ci0gICAgICAgICAgICBtX3RhcmdldFBvcnQgPSB0YXJnZXRTdHJpbmcu
c3Vic3RyaW5nKHBvc2l0aW9uICsgMSkudG9VSW50KG51bGxwdHIpOworICAgICAgICAgICAgbV90
YXJnZXRQb3J0ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KFN0
cmluZ1ZpZXcgeyB0YXJnZXRTdHJpbmcgfS5zdWJzdHJpbmcocG9zaXRpb24gKyAxKSkudmFsdWVP
cigwKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgogCi0gICAgYm9vbCBvazsKLSAgICB1bnNp
Z25lZCBwb3J0ID0gcG9ydFN0cmluZy50b1VJbnQoJm9rKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBwb3J0ICVzIHByb3ZpZGVkXG4iLCBwb3J0U3Ry
aW5nLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXI8dWludDE2
X3Q+KHBvcnRTdHJpbmcpOworICAgIGlmICghcG9ydCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIkludmFsaWQgcG9ydCAlcyBwcm92aWRlZFxuIiwgcG9ydFN0cmluZy51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICB9CiAKICAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7CiAKLSAgICBpZiAoIW1fc2VydmVyLmxpc3Rlbihob3N0LCBwb3J0
KSkKKyAgICBpZiAoIW1fc2VydmVyLmxpc3Rlbihob3N0LCAqcG9ydCkpCiAgICAgICAgIHJldHVy
biBFWElUX0ZBSUxVUkU7CiAKICAgICBSdW5Mb29wOjpydW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvZ2xpYi9XZWJEcml2ZXJTZXJ2aWNlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViRHJp
dmVyL2dsaWIvV2ViRHJpdmVyU2VydmljZUdMaWIuY3BwCmluZGV4IDk0MTc5M2QzZWFkMGU5ODYz
MmFmMzMxNzkyZjNhNzRjNWI0YjZmNGEuLmQ2ZmQyMTk5N2YzOWVkMWUwNDFjNTE4NTk2M2E2OGMx
ZjRjZWRkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9XZWJEcml2ZXJTZXJ2
aWNlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1dlYkRyaXZlclNlcnZpY2VH
TGliLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYkRyaXZlclNlcnZpY2UuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdl
ckNvbnZlcnNpb24uaD4KKwogbmFtZXNwYWNlIFdlYkRyaXZlciB7CiAKIHN0YXRpYyBib29sIHBh
cnNlVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIHVpbnQ2NF90JiBtYWpvciwgdWludDY0
X3QmIG1pbm9yLCB1aW50NjRfdCYgbWljcm8pCkBAIC0zNSwyMCArMzcsMjYgQEAgc3RhdGljIGJv
b2wgcGFyc2VWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgdWludDY0X3QmIG1ham9yLCB1
aW50NjRfdCYgbWlub3IKICAgICBWZWN0b3I8U3RyaW5nPiB0b2tlbnMgPSB2ZXJzaW9uLnNwbGl0
KCcuJyk7CiAgICAgYm9vbCBvazsKICAgICBzd2l0Y2ggKHRva2Vucy5zaXplKCkpIHsKLSAgICBj
YXNlIDM6Ci0gICAgICAgIG1pY3JvID0gdG9rZW5zWzJdLnRvSW50NjQoJm9rKTsKLSAgICAgICAg
aWYgKCFvaykKKyAgICBjYXNlIDM6IHsKKyAgICAgICAgYXV0byBwYXJzZWRNaWNybyA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0b2tlbnNbMl0pOworICAgICAg
ICBpZiAoIXBhcnNlZE1pY3JvKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBt
aWNybyA9ICpwYXJzZWRNaWNybzsKKyAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNh
c2UgMjoKLSAgICAgICAgbWlub3IgPSB0b2tlbnNbMV0udG9JbnQ2NCgmb2spOwotICAgICAgICBp
ZiAoIW9rKQorICAgIGNhc2UgMjogeworICAgICAgICBhdXRvIHBhcnNlZE1pbm9yID0gcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRva2Vuc1sxXSk7CisgICAgICAg
IGlmICghcGFyc2VkTWlub3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1p
bm9yID0gKnBhcnNlZE1pbm9yOworICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2Fz
ZSAxOgotICAgICAgICBtYWpvciA9IHRva2Vuc1swXS50b0ludDY0KCZvayk7Ci0gICAgICAgIGlm
ICghb2spCisgICAgY2FzZSAxOiB7CisgICAgICAgIGF1dG8gcGFyc2VkTWFqb3IgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odG9rZW5zWzBdKTsKKyAgICAgICAg
aWYgKCFwYXJzZWRNYWpvcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbWFq
b3IgPSAqcGFyc2VkTWFqb3I7CisgICAgfQogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tl
dC9IVFRQUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBQYXJzZXIuY3Bw
CmluZGV4IDM3YmVkMjkxZTk2MzZiZjcyN2ZiZDFkZDk4MDAwMmY4ZGY3Yzk1OWEuLjc3ZjM1MWQ5
NThhZmYxYWZlYTNmOGQwNzE3NDAwOTIxYzJhZWM2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJE
cml2ZXIvc29ja2V0L0hUVFBQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBQYXJzZXIuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSFRUUFBhcnNlci5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oPgorCiBuYW1lc3BhY2UgV2ViRHJpdmVyIHsKIAogSFRUUFBhcnNlcjo6
UGhhc2UgSFRUUFBhcnNlcjo6cGFyc2UoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTE0NSwx
MCArMTQ3LDggQEAgc2l6ZV90IEhUVFBQYXJzZXI6OmV4cGVjdGVkQm9keUxlbmd0aCgpIGNvbnN0
CiAgICAgY29uc3Qgc2l6ZV90IG5hbWVMZW5ndGggPSBzdGQ6OnN0cmxlbihuYW1lKTsKIAogICAg
IGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDogbV9tZXNzYWdlLnJlcXVlc3RIZWFkZXJzKSB7Ci0g
ICAgICAgIGlmIChoZWFkZXIuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG5hbWUpKSB7Ci0g
ICAgICAgICAgICBhdXRvIHZhbHVlID0gaGVhZGVyLnN1YnN0cmluZ1NoYXJpbmdJbXBsKG5hbWVM
ZW5ndGgpLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvSW50
KCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGhlYWRlci5zdGFydHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSkpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFp
bGluZ0p1bms8c2l6ZV90PihTdHJpbmdWaWV3IHsgaGVhZGVyIH0uc3Vic3RyaW5nKG5hbWVMZW5n
dGgpKS52YWx1ZU9yKDApOwogICAgIH0KIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAppbmRleCA1
ODM0OTVjMjZjZTMyZThiNWE1MmEwNmJhZmM2N2E4M2U3ODhjMTNlLi5mNjMzYzM0YTEzNGIwYjY1
YmU4YWExMWI2NTZiM2ZlOTBlMjFlMDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMzLDEwICsxMzQs
NyBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxpbnQ+IHBhcnNlVmVyc2lvblN0cmluZyhjb25zdCBT
dHJpbmcmIHZlcnNpb25TdHJpbmcpCiAgICAgICAgIGZvciAoZW5kUG9zID0gc3RhcnRQb3M7IGVu
ZFBvcyA8IHZlcnNpb25TdHJpbmcubGVuZ3RoKCk7ICsrZW5kUG9zKQogICAgICAgICAgICAgaWYg
KHZlcnNpb25TdHJpbmdbZW5kUG9zXSA9PSAnLicgfHwgdmVyc2lvblN0cmluZ1tlbmRQb3NdID09
ICdfJykKICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICBpbnQgdmVyc2lvbkNvbXBv
bmVudCA9IHZlcnNpb25TdHJpbmcuc3Vic3RyaW5nKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBv
cykudG9JbnQoKTsKLSAgICAgICAgdmVyc2lvbi5hcHBlbmQodmVyc2lvbkNvbXBvbmVudCk7Ci0K
KyAgICAgICAgdmVyc2lvbi5hcHBlbmQocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8
aW50PihTdHJpbmdWaWV3IHsgdmVyc2lvblN0cmluZyB9LnN1YnN0cmluZyhzdGFydFBvcywgZW5k
UG9zIC0gc3RhcnRQb3MpKS52YWx1ZU9yKDApKTsKICAgICAgICAgc3RhcnRQb3MgPSBlbmRQb3Mg
KyAxOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKaW5kZXggMmY0MDVmYjhjZTRlNzQyYTA4MTEwNTk4YjhjNTI3YTkyNmFhZmQ0ZS4u
ZTM4NDAyMmMzNDAyM2IxZTM1ZTJhMmUwOTZhMjI5YmI5ZTAzMDdhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC03NCw2ICs3NCw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9ucHJ1bnRpbWVfaW1wbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
cnVudGltZV9yb290Lmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTEwNzEs
NyArMTA3Miw3IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdChjb25zdCBjaGFyKiB1
cmwsIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyX3QgbGVuCiAgICAgICAgICAgICAgICAgU3Ry
aW5nIGNvbnRlbnRMZW5ndGggPSBoZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpDb250
ZW50TGVuZ3RoKTsKIAogICAgICAgICAgICAgICAgIGlmICghY29udGVudExlbmd0aC5pc051bGwo
KSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0ZDo6bWluKGNvbnRlbnRMZW5n
dGgudG9JbnQoKSwgKGludClkYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxl
bmd0aCA9IHN0ZDo6bWluKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVk
Pihjb250ZW50TGVuZ3RoKS52YWx1ZU9yKDApLCBkYXRhTGVuZ3RoKTsKICAgICAgICAgICAgICAg
ICBoZWFkZXJGaWVsZHMucmVtb3ZlKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50TGVuZ3RoKTsKIAog
ICAgICAgICAgICAgICAgIHBvc3REYXRhICs9IGxvY2F0aW9uOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYyYjRiNGNmM2NiN2QzMWIyN2Y0MmRi
NzcwNTQzZTVjYjlhYjBhYTQuLjAxZDczZTkxZjQwNTI1OWYxNDRhZTI2MzNiMjcxN2YzYTRjNmY4
ZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAyMS0wNS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIGFsbCByZW1haW5pbmcgdXNlcyBvZiB0aGUgU3RyaW5nOjp0b0lu
dCBmYW1pbHkgb2YgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjU1ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZSk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludC4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwgY29uc3Qp
OiBEaXR0by4KKwogMjAyMS0wNS0wOSAgS2hlbSBSYWogIDxyYWoua2hlbUBnbWFpbC5jb20+CiAK
ICAgICAgICAgW1Rvb2xzXSBHZW5lcmF0ZSBtYXJzaGFsbGluZyBjb2RlIHdpdGhvdXQgc291cmNl
IHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApp
bmRleCA0ZGNmNGMwMzc2MTE3NzE2NjVmMzNiODI3OGFkYmYzZjg2MzVmZWQ4Li45NTU2MWE4ZWY2
MDkwYzI3MWU5NjNmOTJhYWI2NjY0NDA1YTBhNTEzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPHd0Zi9n
bGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1Rv
SW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1l
cy5oPgogCiBuYW1lc3BhY2UgV1RSIHsKQEAgLTExMzksNyArMTE0MCw3IEBAIGRvdWJsZSBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpCiAgICAgaWYgKGF0a0F0dHJpYnV0ZU5hbWUuc3RhcnRzV2l0aCgicm93IikgfHwgYXRr
QXR0cmlidXRlTmFtZS5zdGFydHNXaXRoKCJjb2wiKSkgewogICAgICAgICBTdHJpbmcgYXR0cmli
dXRlVmFsdWUgPSBnZXRBdHRyaWJ1dGVTZXRWYWx1ZUZvcklkKEFUS19PQkpFQ1QobV9lbGVtZW50
LmdldCgpKSwgT2JqZWN0QXR0cmlidXRlVHlwZSwgYXRrQXR0cmlidXRlTmFtZSk7CiAgICAgICAg
IGlmICghYXR0cmlidXRlVmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIGF0dHJp
YnV0ZVZhbHVlLnRvSW50KCk7CisgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8aW50PihhdHRyaWJ1dGVWYWx1ZSkudmFsdWVPcigwKTsKICAgICB9CiAK
ICAgICByZXR1cm4gMDsKQEAgLTE2MzIsMTEgKzE2MzMsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0CiAKIGludCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIGxldmVsID0g
Z2V0QXR0cmlidXRlU2V0VmFsdWVGb3JJZChBVEtfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSksIE9i
amVjdEF0dHJpYnV0ZVR5cGUsICJsZXZlbCIpOwotICAgIGlmICghbGV2ZWwuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gbGV2ZWwudG9JbnQoKTsKLQotICAgIHJldHVybiAwOworICAgIHJldHVy
biBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGdldEF0dHJpYnV0ZVNldFZh
bHVlRm9ySWQoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpLCBPYmplY3RBdHRyaWJ1dGVUeXBl
LCAibGV2ZWwiKSkudmFsdWVPcigwKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFrQXMoKQo=
</data>
<flag name="commit-queue"
          id="448975"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428141</attachid>
            <date>2021-05-09 15:43:43 -0700</date>
            <delta_ts>2021-05-09 16:26:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225580-20210509154342.patch</filename>
            <type>text/plain</type>
            <size>94437</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkzZjJhODQ0ZjUwOWE1
ZmQxZGUzZGJjM2E5ZjY1Y2RmOTkyZjE3Ni4uZDBhOTdjYzJkYjA3MDY3MDk5YjU5YzUwNjA5MWE5
ZjAwY2U3NDIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMS0wNS0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGFsbCByZW1haW5p
bmcgdXNlcyBvZiB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNl
SW5mbyk6CisgICAgICAgIFVzZSBwYXJzZUludGVnZXI8dWludDY0X3Q+IGluc3RlYWQgb2YgU3Ry
aW5nOjp0b1VJbnQ2NFN0cmljdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUpOgorICAgICAg
ICBEaXR0by4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVG
cmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgVXNlIGEgcmVm
ZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2UpOiBVc2UKKyAgICAgICAgQVND
SUlMaXRlcmFsLiBVc2UgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PiBpbnN0
ZWFkIG9mCisgICAgICAgIFN0cmluZzo6dG9JbnQuIFVzZSBhdXRvLiBVc2UgcmVmZXJlbmNlcyBp
bnN0ZWFkIG9mIHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6RGVmbGF0ZVJlc3VsdEhvbGRl
cjo6RGVmbGF0ZVJlc3VsdEhvbGRlcik6IFVzZSBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNv
cmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6On5EZWZsYXRlUmVzdWx0SG9sZGVyKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjpJbmZsYXRlUmVzdWx0SG9sZGVy
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjp+SW5mbGF0
ZVJlc3VsdEhvbGRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IpOiBQ
YXNzIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6ZGVmbGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6aW5mbGF0ZSk6IERpdHRvLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuaDogVXNlIGZvcndhcmQgZGVjbGFyYXRpb25zCisgICAgICAg
IGluc3RlYWQgb2YgaW5jbHVkZXMsIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycywgaW5p
dGlhbGl6ZSBkYXRhIG1lbWJlcnMKKyAgICAgICAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24sIGFu
ZCByZW1vdmUgYW4gdW5uZWNlc3NhcnkgZXhwbGljaXQgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aGVhZGVySGFzVmFsaWRIVFRQVmVyc2lvbik6IFVzZSBwYXJzZUludGVn
ZXI8aW50PiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ1ZpZXc6OnRvSW50U3RyaWN0LgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZSk6IERpdHRv
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVhZGluZ0xldmVs
IGNvbnN0KTogVXNlCisgICAgICAgIGdldEludGVncmFsQXR0cmlidXRlIGluc3RlYWQgb2YgQXRv
bVN0cmluZzo6dG9JbnQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6aGllcmFyY2hpY2FsTGV2ZWwgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6Z2V0SW50ZWdyYWxBdHRyaWJ1dGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAg
U2luY2UgQWNjZXNzaWJpbGl0eU9iamVjdCBoYXMgaXRzIG93biBnZXRBdHRyaWJ1dGUgZnVuY3Rp
b24sIHdlIG5lZWQgdG8KKyAgICAgICAgcmUtaW1wbGVtZW50IEVsZW1lbnQ6OmdldEludGVncmFs
QXR0cmlidXRlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
ZXRTaXplIGNvbnN0KTogVXNlIGdldEludGVncmFsQXR0cmlidXRlCisgICAgICAgIGluc3RlYWQg
b2YgQXRvbVN0cmluZzo6dG9JbnQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpwb3NJblNldCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0Lmg6IEFkZGVkIGdldEludGVncmFsQXR0cmlidXRlLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSBjb25zdCk6VXNlIGdldEludGVn
cmFsQXR0cmlidXRlCisgICAgICAgIGluc3RlYWQgb2YgQXRvbVN0cmluZzo6dG9JbnQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmF4Q29sdW1uQ291bnQgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YXhSb3dDb3VudCBj
b25zdCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENv
bHVtbkluZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsOjpheFJvd0luZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENvbHVtblNwYW4gY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93U3BhbiBjb25zdCk6IERp
dHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YXhDb2x1bW5JbmRleCBj
b25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93Ojph
eFJvd0luZGV4IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVj
dG9yUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVBTlBsdXNCKTogVXNlIHBh
cnNlSW50ZWdlcjxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludFN0cmljdAorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2Vu
aXplcjo6Y29uc3VtZUVzY2FwZSk6IFVzZSBwYXJzZUludGVnZXI8dWludDMyX3Q+IGluc3RlYWQg
b2YKKyAgICAgICAgU3RyaW5nOjp0b1VJbnRTdHJpY3QuCisKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpj
YW5QcmVzZW50RGF0YURldGVjdG9yc1VJRm9yRWxlbWVudCk6CisgICAgICAgIFVzZSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludC4K
KyAgICAgICAgQWxzbyB1c2UgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIFN0cmluZy4KKyAgICAgICAg
KFdlYkNvcmU6OmRhdGFEZXRlY3RvclN0cmluZ0ZvclBhdGgpOiBVc2UgbWFrZVN0cmluZyBpbnN0
ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JF
bGVtZW50KTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LgorCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKTogVXNlIHBhcnNlSFRNTEludGVnZXIgaW5zdGVhZAorICAgICAgICBvZiBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+LgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxMSUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExJRWxlbWVudDo6cGFyc2VWYWx1ZSk6IERpdHRvLgorICAgICAg
ICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
YXJxdWVlRWxlbWVudDo6bG9vcCBjb25zdCk6IFVzZSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZQorICAg
ICAgICBpbnN0ZWFkIG9mIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4uCisg
ICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmli
dXRlKToKKyAgICAgICAgVXNlIHBhcnNlSFRNTEludGVnZXIgaW5zdGVhZCBvZiBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+LgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ29s
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDb2xFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERp
dHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVz
dG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgVXNlIHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZzo6dG9V
SW50LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZvclBhdGgpOiBVc2UK
KyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+IGluc3Rl
YWQgb2YgU3RyaW5nOjp0b1VJbnQuCisKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVy
OjpjcmVhdGVMYXlvdXRCb3gpOiBVc2UgcGFyc2VIVE1MSW50ZWdlcgorICAgICAgICBpbnN0ZWFk
IG9mIEF0b21TdHJpbmc6OnRvSW50LgorCisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBY2Nlc3NDb250
cm9sTWF4QWdlKTogVXNlIHBhcnNlSW50ZWdlcjx1aW50NjRfdD4gaW5zdGVhZAorICAgICAgICBv
ZiBTdHJpbmc6OnRvVUludFN0cmljdC4KKworICAgICAgICAqIGxvYWRlci9GVFBEaXJlY3RvcnlQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPbmVGVFBMaW5lKTogVXNlIHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPgorICAgICAgICBpbnN0ZWFkIG9m
IFN0cmluZzo6dG9VSW50LgorCisgICAgICAgICogbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJz
ZUF0dHJpYnV0aW9uUmVxdWVzdCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDY0X3Q+
IGluc3RlYWQgb2YgU3RyaW5nOjp0b1VJbnQ2NFN0cmljdC4KKworICAgICAgICAqIG1hdGhtbC9N
YXRoTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNlbGVjdEVs
ZW1lbnQ6OmdldFNlbGVjdGVkQWN0aW9uQ2hpbGRBbmRJbmRleCk6CisgICAgICAgIFVzZSBnZXRJ
bnRlZ3JhbEF0dHJpYnV0ZSBpbnN0ZWFkIG9mIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4uCisKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGluZSk6IFVzZQorICAgICAgICBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4gaW5zdGVhZCBvZiBjaGFy
YWN0ZXJzVG9VSW50NjQuCisKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0KTogVXNlIHBhcnNlSW50ZWdlcjx1aW50MTZfdD4g
aW5zdGVhZCBvZiBwYXJzZVVJbnQxNi4KKworICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFi
YXNlSWRlbnRpZmllcik6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazx1aW50MTZfdD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LCB3aGljaAorICAgICAgICBh
bGxvd3MgdXMgdG8gcmVtb3ZlIHNvbWUgcmFuZ2UgY2hlY2tpbmcgYW5kIHR5cGUgY29udmVyc2lv
bi4KKworICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0V2luZG93RmVhdHVyZSk6IFVzZSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azxpbnQ+CisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nVmlldzo6dG9JbnQuCisKKyAgICAgICAg
KiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlUG9ydCk6IFVz
ZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDE2X3Q+IGluc3RlYWQgb2YgY2hhcmFjdGVyc1Rv
SW50U3RyaWN0LgorCisgICAgICAgICogcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGlu
dXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdENQVVVzYWdlKTogVXNlIHBhcnNlSW50
ZWdlcjxwaWRfdD4gaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmc6OnRvSW50U3RyaWN0LiBBbHNv
IHJlbW92ZWQgdW5uZWVkZWQgc3BlY2lhbCBjYXNlcyBmb3IgIi4iIGFuZAorICAgICAgICAiLi4i
IHNpbmNlIGJvdGggd2lsbCBmYWlsIHRvIHBhcnNlIGFzIGFuIGludGVnZXIsIGFuZCB0aGlzIG5v
IGxvbmdlcgorICAgICAgICBuZWVkIHRvIHB1dCBkX25hbWUgaW50byBhIFdURjo6U3RyaW5nLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHA6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVz
cG9uc2VSZWNlaXZlZCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OlBhcnNlZFJlc3BvbnNlTWVzc2FnZSk6IFVzZQorICAg
ICAgICBwYXJzZUludGVnZXI8aW50PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQgdG8gcGFyc2Ug
YSBzaW5nbGUtZGlnaXQuCisgICAgICAgIFByb2JhYmx5IHNob3VsZCB3cml0ZSB0aGlzIGFub3Ro
ZXIgd2F5LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRpbDo6cGFyc2VDb29raWVBdHRyaWJ1dGVzKTog
VXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludDY0X3Q+IGlu
c3RlYWQgb2YgU3RyaW5nOjp0b0ludDY0LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5
OjpzZXRSZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGxvbmcgbG9uZz4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50
NjQuCisKKyAgICAgICAgKiBzdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZE9TMlRhYmxlKTogVXNlIHBh
cnNlSFRNTEludGVnZXIKKyAgICAgICAgaW5zdGVhZCBvZiBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazxpbnQ+LiBNaWdodCBiZSBldmVuIGJldHRlcgorICAgICAgICB0byByZWZhY3Rv
ciB0byB1c2UgZ2V0SW50ZWdyYWxBdHRyaWJ1dGUgbGF0ZXIuCisgICAgICAgIChXZWJDb3JlOjpT
VkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZFZPUkdUYWJsZSk6IERpdHRvLgorCisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRTRnJhbWVDb3VudGVyKTogVXNlIHBhcnNlSW50ZWdlcjx1aW50NjRfdD4KKyAgICAgICAgaW5z
dGVhZCBvZiBTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdC4KKwogMjAyMS0wNS0wOSAgRnVqaWkg
SGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9d
W0NsYW5nXSBsbGQtbGluazogZXJyb3I6IHVuZGVmaW5lZCBzeW1ib2w6IHB1YmxpYzogc3RhdGlj
IGNsYXNzIEdlbmVyaWNUeXBlZEFycmF5Vmlldzw+Ojp0cnlDcmVhdGUoKSBpbiBDcnlwdG9LZXlS
U0FPcGVuU1NMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCA0ZGQzM2I0MWY5OGU1NmQ0YWFiOTg0YmNj
MTU2OGQ5NDUyM2MzOTNkLi43MjIwZWViYjY2ZWI5ZDU0YTEzNmMyYWI5MTIyNDJlMDM4Y2ZhZTJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA1LTA5ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB1c2Vz
IG9mIHRoZSBTdHJpbmc6OnRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU4MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRHJpdmVyU2VydmljZS5jcHA6
CisgICAgICAgIChXZWJEcml2ZXI6OldlYkRyaXZlclNlcnZpY2U6OnJ1bik6IFVzZQorICAgICAg
ICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4gaW5zdGVhZCBvZiBT
dHJpbmc6OnRvVUludC4KKworICAgICAgICAqIGdsaWIvV2ViRHJpdmVyU2VydmljZUdMaWIuY3Bw
OgorICAgICAgICAoV2ViRHJpdmVyOjpwYXJzZVZlcnNpb24pOiBVc2UKKyAgICAgICAgcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+IGluc3RlYWQgb2YgU3RyaW5nOjp0
b0ludDY0LAorICAgICAgICBhbmQgdGhlbiBhc3NpZ25pbmcgaW50byBhIHVpbnQ2NF90LgorCisg
ICAgICAgICogc29ja2V0L0hUVFBQYXJzZXIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpIVFRQ
UGFyc2VyOjpleHBlY3RlZEJvZHlMZW5ndGggY29uc3QpOiBVc2UKKyAgICAgICAgcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8c2l6ZV90PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQu
CisgICAgICAgIEFsc28gdXNlIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBTdHJpbmc6OnN1YnN0cmlu
Z1NoYXJpbmdJbXBsIGFuZAorICAgICAgICBkcm9wcGVkIGFuIHVubmVlZGVkIGNhbGwgdG8gU3Ry
aW5nOjpzdHJpcFdoaXRlU3BhY2UuCisKIDIwMjEtMDMtMjUgIERvbiBPbG1zdGVhZCAgPGRvbi5v
bG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVzZSBXZWJEcml2ZXJfREVSSVZF
RF9TT1VSQ0VTIHZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZGFlNjhmMWEz
OTJiYmQ1ZWQwNzVkMDQ0MWY5YTM4Mjg0ZWM5ZDFkOS4uYjk1ZDMwYzcwNjc5ZmQ0MDQ3MTIxYzll
YWFlNDgwOTBhNjJkYTk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDIxLTA1LTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB1c2VzIG9mIHRoZSBTdHJpbmc6OnRvSW50IGZhbWls
eSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTU4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZVZlcnNpb25TdHJpbmcpOiBVc2UgcGFyc2VJbnRlZ2VyQWxsb3dpblRyYWlsaW5nSnVu
azxpbnQ+CisgICAgICAgIGlzbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQuCisKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFu
ZGxlUG9zdCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1
bnNpZ25lZD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LAorICAgICAgICBhbmQgdGhlbiBhc3Np
Z25pbmcgdG8gYW4gdW5zaWduZWQuCisKIDIwMjEtMDUtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIHJlZmVyZW5j
ZXMgdG8gUGFnZUdyb3VwIGZyb20gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDM2ZDliMDQ0NmY1MDExM2I0ZWNmY2YyNGU1OGFkNzI2NDY5MTcyYzAu
LjRlNzMxYmVjMGE4YTZiYzA0ZjM5YmU2ZjdjOGQ0ZDlhMTIxNDQ3OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CkBAIC0xMDAzLDEyICsxMDA0LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
REJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0
YWJhc2VJCiAgICAgICAgIGlmIChzcWwuaXNDb2x1bW5OdWxsKDApKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIFN0cmluZyBzdHJpbmdWZXJzaW9uID0gc3FsLmdldENvbHVt
blRleHQoMCk7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGRhdGFiYXNlVmVyc2lvbiA9IHN0
cmluZ1ZlcnNpb24udG9VSW50NjRTdHJpY3QoJm9rKTsKLSAgICAgICAgaWYgKCFvaykgeworICAg
ICAgICBhdXRvIHBhcnNlZFZlcnNpb24gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHN0cmluZ1Zl
cnNpb24pOworICAgICAgICBpZiAoIXBhcnNlZFZlcnNpb24pIHsKICAgICAgICAgICAgIExPR19F
UlJPUigiRGF0YWJhc2UgdmVyc2lvbiBvbiBkaXNrICgnJXMnKSBkb2VzIG5vdCBjbGVhbmx5IGNv
bnZlcnQgdG8gYW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgdmVyc2lvbiIsIHN0cmluZ1ZlcnNp
b24udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQorICAgICAgICBkYXRhYmFzZVZlcnNpb24gPSAqcGFyc2VkVmVyc2lvbjsKICAgICB9CiAKICAg
ICBhdXRvIGRhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFz
ZU5hbWUsIGRhdGFiYXNlVmVyc2lvbiwgMCk7CkBAIC0xMTY2LDE0ICsxMTY3LDEzIEBAIE9wdGlv
bmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0
YWJhc2VOYW1lQW5kVmVyc2lvCiAKICAgICBTUUxpdGVTdGF0ZW1lbnQgdmVyc3FsKGRhdGFiYXNl
LCAiU0VMRUNUIHZhbHVlIEZST00gSURCRGF0YWJhc2VJbmZvIFdIRVJFIGtleSA9ICdEYXRhYmFz
ZVZlcnNpb24nOyJfcyk7CiAgICAgU3RyaW5nIHN0cmluZ1ZlcnNpb24gPSB2ZXJzcWwuZ2V0Q29s
dW1uVGV4dCgwKTsKLSAgICBib29sIG9rOwotICAgIHVpbnQ2NF90IGRhdGFiYXNlVmVyc2lvbiA9
IHN0cmluZ1ZlcnNpb24udG9VSW50NjRTdHJpY3QoJm9rKTsKLSAgICBpZiAoIW9rKSB7CisgICAg
YXV0byBkYXRhYmFzZVZlcnNpb24gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHN0cmluZ1ZlcnNp
b24pOworICAgIGlmICghZGF0YWJhc2VWZXJzaW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiRGF0
YWJhc2UgdmVyc2lvbiBvbiBkaXNrICgnJXMnKSBkb2VzIG5vdCBjbGVhbmx5IGNvbnZlcnQgdG8g
YW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgdmVyc2lvbiIsIHN0cmluZ1ZlcnNpb24udXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgcmV0
dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24geyBkYXRhYmFzZU5hbWUsIGRhdGFiYXNlVmVy
c2lvbiB9OworICAgIHJldHVybiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIHsgZGF0YWJhc2VO
YW1lLCAqZGF0YWJhc2VWZXJzaW9uIH07CiB9CiAKIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhVcGdyYWRlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmNwcAppbmRleCBiYTM5MDYyOGViY2E5NmYwYzI3YjNiZGYwMDM1NmNiNGM2NGZkYjk1Li41MGYz
NDQyMzJkYzg2MTVjNDIyZjk0ZjkyYTlkYzdjMTFhYjQwZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFt
ZXIuY3BwCkBAIC0zMywzMyArMzMsMzAgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRl
RnJhbWUgOiBwdWJsaWMgV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yIHsKK2NsYXNzIFdlYlNv
Y2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZSBmaW5hbCA6IHB1YmxpYyBXZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IGV4cGxpY2l0IFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZShXZWJTb2NrZXREZWZsYXRl
RnJhbWVyKik7Ci0gICAgdmlydHVhbCB+V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKCkg
PSBkZWZhdWx0OwotCi0gICAgU3RyaW5nIGhhbmRzaGFrZVN0cmluZygpIG92ZXJyaWRlOwotICAg
IGJvb2wgcHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jikgb3Zl
cnJpZGU7Ci0gICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBvdmVycmlkZSB7IHJldHVybiBtX2Zh
aWx1cmVSZWFzb247IH0KKyAgICBleHBsaWNpdCBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJh
bWUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciYpOwogCiBwcml2YXRlOgotICAgIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXIqIG1fZnJhbWVyOwotICAgIGJvb2wgbV9yZXNwb25zZVByb2Nlc3NlZDsKKyAg
ICBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgZmluYWw7CisgICAgYm9vbCBwcm9jZXNzUmVzcG9u
c2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBmaW5hbDsKKyAgICBTdHJpbmcgZmFp
bHVyZVJlYXNvbigpIGZpbmFsIHsgcmV0dXJuIG1fZmFpbHVyZVJlYXNvbjsgfQorCisgICAgV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lciYgbV9mcmFtZXI7CisgICAgYm9vbCBtX3Jlc3BvbnNlUHJvY2Vz
c2VkIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9mYWlsdXJlUmVhc29uOwogfTsKIAogLy8gRlhJ
TUU6IFJlbW92ZSB2ZW5kb3IgcHJlZml4IGFmdGVyIHRoZSBzcGVjaWZpY2F0aW9uIG1hdHVyZWQu
Ci1XZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxh
dGVGcmFtZShXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCi0gICAgOiBXZWJTb2NrZXRF
eHRlbnNpb25Qcm9jZXNzb3IoIngtd2Via2l0LWRlZmxhdGUtZnJhbWUiKQorV2ViU29ja2V0RXh0
ZW5zaW9uRGVmbGF0ZUZyYW1lOjpXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoV2ViU29j
a2V0RGVmbGF0ZUZyYW1lciYgZnJhbWVyKQorICAgIDogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vz
c29yKCJ4LXdlYmtpdC1kZWZsYXRlLWZyYW1lIl9zKQogICAgICwgbV9mcmFtZXIoZnJhbWVyKQot
ICAgICwgbV9yZXNwb25zZVByb2Nlc3NlZChmYWxzZSkKIHsKLSAgICBBU1NFUlQobV9mcmFtZXIp
OwogfQogCiBTdHJpbmcgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpoYW5kc2hha2VT
dHJpbmcoKQpAQCAtNzAsMTggKzY3LDE4IEBAIFN0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EZWZs
YXRlRnJhbWU6OmhhbmRzaGFrZVN0cmluZygpCiBib29sIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxh
dGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBz
ZXJ2ZXJQYXJhbWV0ZXJzKQogewogICAgIGlmIChtX3Jlc3BvbnNlUHJvY2Vzc2VkKSB7Ci0gICAg
ICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBkdXBsaWNhdGUgZGVmbGF0ZS1mcmFtZSBy
ZXNwb25zZSI7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBkdXBsaWNhdGUg
ZGVmbGF0ZS1mcmFtZSByZXNwb25zZSJfczsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICBtX3Jlc3BvbnNlUHJvY2Vzc2VkID0gdHJ1ZTsKIAogICAgIHVuc2lnbmVkIGV4cGVjdGVk
TnVtUGFyYW1ldGVycyA9IDA7CiAgICAgaW50IHdpbmRvd0JpdHMgPSAxNTsKLSAgICBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgcGFyYW1ldGVyID0gc2VydmVyUGFyYW1l
dGVycy5maW5kKCJtYXhfd2luZG93X2JpdHMiKTsKKyAgICBhdXRvIHBhcmFtZXRlciA9IHNlcnZl
clBhcmFtZXRlcnMuZmluZCgibWF4X3dpbmRvd19iaXRzIik7CiAgICAgaWYgKHBhcmFtZXRlciAh
PSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7Ci0gICAgICAgIHdpbmRvd0JpdHMgPSBwYXJhbWV0
ZXItPnZhbHVlLnRvSW50KCk7CisgICAgICAgIHdpbmRvd0JpdHMgPSBwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazxpbnQ+KHBhcmFtZXRlci0+dmFsdWUpLnZhbHVlT3IoMCk7CiAgICAg
ICAgIGlmICh3aW5kb3dCaXRzIDwgOCB8fCB3aW5kb3dCaXRzID4gMTUpIHsKLSAgICAgICAgICAg
IG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG1heF93aW5kb3dfYml0cyBwYXJh
bWV0ZXIiOworICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGludmFsaWQg
bWF4X3dpbmRvd19iaXRzIHBhcmFtZXRlciJfczsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogICAgICAgICBleHBlY3RlZE51bVBhcmFtZXRlcnMrKzsKQEAgLTkxLDcgKzg4
LDcgQEAgYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OnByb2Nlc3NSZXNwb25z
ZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW4KICAgICBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJh
bWV0ZXJzLmZpbmQoIm5vX2NvbnRleHRfdGFrZW92ZXIiKTsKICAgICBpZiAocGFyYW1ldGVyICE9
IHNlcnZlclBhcmFtZXRlcnMuZW5kKCkpIHsKICAgICAgICAgaWYgKCFwYXJhbWV0ZXItPnZhbHVl
LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgaW52
YWxpZCBub19jb250ZXh0X3Rha2VvdmVyIHBhcmFtZXRlciI7CisgICAgICAgICAgICBtX2ZhaWx1
cmVSZWFzb24gPSAiUmVjZWl2ZWQgaW52YWxpZCBub19jb250ZXh0X3Rha2VvdmVyIHBhcmFtZXRl
ciJfczsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBtb2Rl
ID0gV2ViU29ja2V0RGVmbGF0ZXI6OkRvTm90VGFrZU92ZXJDb250ZXh0OwpAQCAtOTksMjQgKzk2
LDIyIEBAIGJvb2wgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVzcG9u
c2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluCiAgICAgfQogCiAgICAgaWYgKGV4cGVjdGVk
TnVtUGFyYW1ldGVycyAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLnNpemUoKSkgewotICAgICAgICBtX2Zh
aWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgdW5leHBlY3RlZCBkZWZsYXRlLWZyYW1lIHBhcmFtZXRl
ciI7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxh
dGUtZnJhbWUgcGFyYW1ldGVyIl9zOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgbV9mcmFtZXItPmVuYWJsZURlZmxhdGUod2luZG93Qml0cywgbW9kZSk7CisgICAgbV9mcmFt
ZXIuZW5hYmxlRGVmbGF0ZSh3aW5kb3dCaXRzLCBtb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotRGVmbGF0ZVJlc3VsdEhvbGRlcjo6RGVmbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZs
YXRlRnJhbWVyKiBmcmFtZXIpCitEZWZsYXRlUmVzdWx0SG9sZGVyOjpEZWZsYXRlUmVzdWx0SG9s
ZGVyKFdlYlNvY2tldERlZmxhdGVGcmFtZXImIGZyYW1lcikKICAgICA6IG1fZnJhbWVyKGZyYW1l
cikKLSAgICAsIG1fc3VjY2VlZGVkKHRydWUpCiB7Ci0gICAgQVNTRVJUKG1fZnJhbWVyKTsKIH0K
IAogRGVmbGF0ZVJlc3VsdEhvbGRlcjo6fkRlZmxhdGVSZXN1bHRIb2xkZXIoKQogewotICAgIG1f
ZnJhbWVyLT5yZXNldERlZmxhdGVDb250ZXh0KCk7CisgICAgbV9mcmFtZXIucmVzZXREZWZsYXRl
Q29udGV4dCgpOwogfQogCiB2b2lkIERlZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwoY29uc3QgU3Ry
aW5nJiBmYWlsdXJlUmVhc29uKQpAQCAtMTI1LDE2ICsxMjAsMTQgQEAgdm9pZCBEZWZsYXRlUmVz
dWx0SG9sZGVyOjpmYWlsKGNvbnN0IFN0cmluZyYgZmFpbHVyZVJlYXNvbikKICAgICBtX2ZhaWx1
cmVSZWFzb24gPSBmYWlsdXJlUmVhc29uOwogfQogCi1JbmZsYXRlUmVzdWx0SG9sZGVyOjpJbmZs
YXRlUmVzdWx0SG9sZGVyKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikKK0luZmxhdGVS
ZXN1bHRIb2xkZXI6OkluZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciYg
ZnJhbWVyKQogICAgIDogbV9mcmFtZXIoZnJhbWVyKQotICAgICwgbV9zdWNjZWVkZWQodHJ1ZSkK
IHsKLSAgICBBU1NFUlQobV9mcmFtZXIpOwogfQogCiBJbmZsYXRlUmVzdWx0SG9sZGVyOjp+SW5m
bGF0ZVJlc3VsdEhvbGRlcigpCiB7Ci0gICAgbV9mcmFtZXItPnJlc2V0SW5mbGF0ZUNvbnRleHQo
KTsKKyAgICBtX2ZyYW1lci5yZXNldEluZmxhdGVDb250ZXh0KCk7CiB9CiAKIHZvaWQgSW5mbGF0
ZVJlc3VsdEhvbGRlcjo6ZmFpbChjb25zdCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pCkBAIC0xNDMs
MTQgKzEzNiw5IEBAIHZvaWQgSW5mbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbChjb25zdCBTdHJpbmcm
IGZhaWx1cmVSZWFzb24pCiAgICAgbV9mYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbjsKIH0K
IAotV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcigpCi0gICAg
OiBtX2VuYWJsZWQoZmFsc2UpCi17Ci19Ci0KIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRFeHRl
bnNpb25Qcm9jZXNzb3I+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNyZWF0ZUV4dGVuc2lvblBy
b2Nlc3NvcigpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0RXh0ZW5zaW9uRGVm
bGF0ZUZyYW1lPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRFeHRlbnNp
b25EZWZsYXRlRnJhbWU+KCp0aGlzKTsKIH0KIAogdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
OjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRlcjo6Q29udGV4
dFRha2VPdmVyTW9kZSBtb2RlKQpAQCAtMTY3LDcgKzE1NSw3IEBAIHZvaWQgV2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0
ZXI6OkNvCiAKIHN0ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKLSAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CisgICAgYXV0
byByZXN1bHQgPSBtYWtlVW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KCp0aGlzKTsKICAgICBp
ZiAoIWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFt
ZS5vcENvZGUpIHx8ICFmcmFtZS5wYXlsb2FkTGVuZ3RoKQogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIGlmICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5
bG9hZExlbmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7CkBAIC0xODgsNyArMTc2LDcg
QEAgdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpyZXNldERlZmxhdGVDb250ZXh0KCkKIAog
c3RkOjp1bmlxdWVfcHRyPEluZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFt
ZXI6OmluZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewotICAgIGF1dG8gcmVzdWx0ID0g
bWFrZVVuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9
IG1ha2VVbmlxdWU8SW5mbGF0ZVJlc3VsdEhvbGRlcj4oKnRoaXMpOwogICAgIGlmICghZW5hYmxl
ZCgpICYmIGZyYW1lLmNvbXByZXNzKSB7CiAgICAgICAgIHJlc3VsdC0+ZmFpbCgiQ29tcHJlc3Nl
ZCBiaXQgbXVzdCBiZSAwIGlmIG5vIG5lZ290aWF0ZWQgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24i
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oCmluZGV4IDRmMjQ5
ODIxZDU5Y2I3NTNjYmQzYjY2MTE4Y2U0MTFhNWI2MDk1OWQuLjc5N2JlM2I2NzViOWY0YzU0YjA2
NzNhYjI0MDE4ZDYwNGQxODE2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaApAQCAtMzEsMTcgKzMx
LDE4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYlNvY2tldERlZmxhdGVyLmgiCi0j
aW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgiCi0jaW5jbHVkZSAiV2ViU29j
a2V0RnJhbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyOworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yOworCitzdHJ1Y3Qg
V2ViU29ja2V0RnJhbWU7CiAKIGNsYXNzIERlZmxhdGVSZXN1bHRIb2xkZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IERlZmxhdGVSZXN1bHRI
b2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOworICAgIGV4cGxpY2l0IERlZmxhdGVSZXN1
bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciYpOwogICAgIH5EZWZsYXRlUmVzdWx0SG9s
ZGVyKCk7CiAKICAgICBib29sIHN1Y2NlZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2VlZGVk
OyB9CkBAIC01MCwxNSArNTEsMTUgQEAgcHVibGljOgogICAgIHZvaWQgZmFpbChjb25zdCBTdHJp
bmcmIGZhaWx1cmVSZWFzb24pOwogCiBwcml2YXRlOgotICAgIFdlYlNvY2tldERlZmxhdGVGcmFt
ZXIqIG1fZnJhbWVyOwotICAgIGJvb2wgbV9zdWNjZWVkZWQ7CisgICAgV2ViU29ja2V0RGVmbGF0
ZUZyYW1lciYgbV9mcmFtZXI7CisgICAgYm9vbCBtX3N1Y2NlZWRlZCB7IHRydWUgfTsKICAgICBT
dHJpbmcgbV9mYWlsdXJlUmVhc29uOwogfTsKIAogY2xhc3MgSW5mbGF0ZVJlc3VsdEhvbGRlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgSW5m
bGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKik7CisgICAgZXhwbGljaXQg
SW5mbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyJik7CiAgICAgfkluZmxh
dGVSZXN1bHRIb2xkZXIoKTsKIAogICAgIGJvb2wgc3VjY2VlZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9zdWNjZWVkZWQ7IH0KQEAgLTY3LDE1ICs2OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmYWls
KGNvbnN0IFN0cmluZyYgZmFpbHVyZVJlYXNvbik7CiAKIHByaXZhdGU6Ci0gICAgV2ViU29ja2V0
RGVmbGF0ZUZyYW1lciogbV9mcmFtZXI7Ci0gICAgYm9vbCBtX3N1Y2NlZWRlZDsKKyAgICBXZWJT
b2NrZXREZWZsYXRlRnJhbWVyJiBtX2ZyYW1lcjsKKyAgICBib29sIG1fc3VjY2VlZGVkIHsgdHJ1
ZSB9OwogICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247CiB9OwogCiBjbGFzcyBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyIHsKIHB1YmxpYzoKLSAgICBXZWJTb2NrZXREZWZsYXRlRnJhbWVyKCk7Ci0K
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBjcmVhdGVF
eHRlbnNpb25Qcm9jZXNzb3IoKTsKIAogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZW5hYmxlZDsgfQpAQCAtOTAsNyArODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGVE
ZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRlcjo6Q29udGV4dFRha2VPdmVy
TW9kZSk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBtX2VuYWJsZWQ7CisgICAgYm9vbCBtX2VuYWJs
ZWQgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXREZWZsYXRlcj4gbV9k
ZWZsYXRlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0SW5mbGF0ZXI+IG1faW5mbGF0
ZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCBhZTNlMTEzNWQxZjI5MDBkMDQ0ZGQ2ZmQ3YmU1
OTMxNzNmN2FkOTU3Li40ZTBlODgwYjZmNDhlNWJjMzg5NTMzZWMzZGNiMmNlZmQ4NWFmZmFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jh
c2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29u
dmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1l
cy5oPgpAQCAtMzc3LDEwICszNzgsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGVhZGVySGFzVmFs
aWRIVFRQVmVyc2lvbihTdHJpbmdWaWV3IGh0dHBTdGF0dXNMaW5lKQogICAgIGlmIChkb3RQb3Np
dGlvbiA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nVmll
dyBtYWpvclZlcnNpb25WaWV3ID0gaHR0cFN0YXR1c0xpbmUuc3Vic3RyaW5nKHByZWFtYmxlTGVu
Z3RoLCBkb3RQb3NpdGlvbiAtIHByZWFtYmxlTGVuZ3RoKTsKLSAgICBib29sIGlzVmFsaWQ7Ci0g
ICAgaW50IG1ham9yVmVyc2lvbiA9IG1ham9yVmVyc2lvblZpZXcudG9JbnRTdHJpY3QoaXNWYWxp
ZCk7Ci0gICAgaWYgKCFpc1ZhbGlkKQorICAgIGF1dG8gbWFqb3JWZXJzaW9uID0gcGFyc2VJbnRl
Z2VyPGludD4oaHR0cFN0YXR1c0xpbmUuc3Vic3RyaW5nKHByZWFtYmxlTGVuZ3RoLCBkb3RQb3Np
dGlvbiAtIHByZWFtYmxlTGVuZ3RoKSk7CisgICAgaWYgKCFtYWpvclZlcnNpb24pCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIHVuc2lnbmVkIG1pbm9yVmVyc2lvbkxlbmd0aDsKQEAgLTM4
OSwxMSArMzg4LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoZWFkZXJIYXNWYWxpZEhUVFBWZXJz
aW9uKFN0cmluZ1ZpZXcgaHR0cFN0YXR1c0xpbmUpCiAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0
KGh0dHBTdGF0dXNMaW5lW2RvdFBvc2l0aW9uICsgbWlub3JWZXJzaW9uTGVuZ3RoXSkpCiAgICAg
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgaW50IG1pbm9yVmVyc2lvbiA9IChodHRwU3RhdHVz
TGluZS5zdWJzdHJpbmcoZG90UG9zaXRpb24gKyAxLCBtaW5vclZlcnNpb25MZW5ndGgpKS50b0lu
dFN0cmljdChpc1ZhbGlkKTsKLSAgICBpZiAoIWlzVmFsaWQpCisgICAgYXV0byBtaW5vclZlcnNp
b24gPSBwYXJzZUludGVnZXI8aW50PihodHRwU3RhdHVzTGluZS5zdWJzdHJpbmcoZG90UG9zaXRp
b24gKyAxLCBtaW5vclZlcnNpb25MZW5ndGgpKTsKKyAgICBpZiAoIW1pbm9yVmVyc2lvbikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIChtYWpvclZlcnNpb24gPj0gMSAmJiBt
aW5vclZlcnNpb24gPj0gMSkgfHwgbWFqb3JWZXJzaW9uID49IDI7CisgICAgcmV0dXJuICgqbWFq
b3JWZXJzaW9uID49IDEgJiYgKm1pbm9yVmVyc2lvbiA+PSAxKSB8fCAqbWFqb3JWZXJzaW9uID49
IDI7CiB9CiAKIC8vIFJldHVybnMgdGhlIGhlYWRlciBsZW5ndGggKGluY2x1ZGluZyAiXHJcbiIp
LCBvciAtMSBpZiB3ZSBoYXZlIG5vdCByZWNlaXZlZCBlbm91Z2ggZGF0YSB5ZXQuCkBAIC00NjEs
MTYgKzQ2MCwxNCBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZShjb25z
dCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsCiAgICAgU3RyaW5nVmlldyBzdGF0
dXNDb2RlU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzcGFjZTEgKyAxKSwg
c3BhY2UyIC0gc3BhY2UxIC0gMSk7CiAgICAgaWYgKHN0YXR1c0NvZGVTdHJpbmcubGVuZ3RoKCkg
IT0gMykgLy8gU3RhdHVzIGNvZGUgbXVzdCBjb25zaXN0IG9mIHRocmVlIGRpZ2l0cy4KICAgICAg
ICAgcmV0dXJuIGxpbmVMZW5ndGg7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKICAgICAgICAgaWYgKCFpc0FTQ0lJRGln
aXQoc3RhdHVzQ29kZVN0cmluZ1tpXSkpIHsKICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9
IG1ha2VTdHJpbmcoIkludmFsaWQgc3RhdHVzIGNvZGU6ICIsIHN0YXR1c0NvZGVTdHJpbmcpOwog
ICAgICAgICAgICAgcmV0dXJuIGxpbmVMZW5ndGg7CiAgICAgICAgIH0KKyAgICB9CiAKLSAgICBi
b29sIG9rID0gZmFsc2U7Ci0gICAgc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGVTdHJpbmcudG9JbnRT
dHJpY3Qob2spOwotICAgIEFTU0VSVChvayk7Ci0KKyAgICBzdGF0dXNDb2RlID0gcGFyc2VJbnRl
Z2VyPGludD4oc3RhdHVzQ29kZVN0cmluZykudmFsdWUoKTsKICAgICBzdGF0dXNUZXh0ID0gU3Ry
aW5nKHNwYWNlMiArIDEsIGVuZCAtIHNwYWNlMiAtIDMpOyAvLyBFeGNsdWRlICJcclxuIi4KICAg
ICByZXR1cm4gbGluZUxlbmd0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggZGIzNjM0MDE3MmU3
ZWI2NGQwZGY2NTIyMWUwOTdmMzI4NGM5OWFmOS4uNzkwMjY2MDkxNjIwN2E4ZWEzNTM0MTc5NGNk
YjRlNjIwMTU0Njc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTc3NSw5ICs3NzUsOCBAQCBpbnQg
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhlYWRpbmdMZXZlbCgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmIChpc0hlYWRpbmcoKSkgewotICAgICAgICBpbnQgYXJpYUxl
dmVsID0gZ2V0QXR0cmlidXRlKGFyaWFfbGV2ZWxBdHRyKS50b0ludCgpOwotICAgICAgICBpZiAo
YXJpYUxldmVsID4gMCkKLSAgICAgICAgICAgIHJldHVybiBhcmlhTGV2ZWw7CisgICAgICAgIGlm
IChhdXRvIGxldmVsID0gZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9sZXZlbEF0dHIpOyBsZXZl
bCA+IDApCisgICAgICAgICAgICByZXR1cm4gbGV2ZWw7CiAgICAgfQogCiAgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUoaDFUYWcpKQpAQCAtMTcyOSwxMSArMTcyOCwxMSBAQCB1bnNpZ25lZCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAogICAgIE5vZGUq
IG5vZGUgPSB0aGlzLT5ub2RlKCk7CiAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpu
b2RlKTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhTGV2ZWwgPSBlbGVtZW50LmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9sZXZlbEF0dHIpOwotICAgIGlmICghYXJpYUxl
dmVsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGFyaWFMZXZlbC50b0ludCgpOwotICAgIAor
CisgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKKyAgICBpZiAo
IWVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xldmVsQXR0ciku
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZWxlbWVudC5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShh
cmlhX2xldmVsQXR0cik7CisKICAgICAvLyBPbmx5IHRyZWUgaXRlbSB3aWxsIGNhbGN1bGF0ZSBp
dHMgbGV2ZWwgdGhyb3VnaCB0aGUgRE9NIGN1cnJlbnRseS4KICAgICBpZiAocm9sZVZhbHVlKCkg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CmluZGV4IDBkNzIxOGNlMTE0ODQ3YTc0ZGE2ZDI5NDQwZGU1ZDJkMWI2ZTE1ZTYuLjA2NmMxOTgz
MDA0NzkwZDFmNTg3OWVhOTI4NDBjZGRhZjFmZWJlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMTk1Niw2ICsx
OTU2LDExIEBAIGNvbnN0IEF0b21TdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1CiAgICAgcmV0dXJuIG51bGxBdG9tKCk7
CiB9CiAKK2ludCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAoreworICAgIHJldHVybiBwYXJz
ZUhUTUxJbnRlZ2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVfb3IoMCk7Cit9
CisKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZVRleHRJblJhbmdlKGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5nZSkKIHsK
ICAgICAvLyBJZiB0aGlzIGlzIGJlaW5nIGNhbGxlZCBvbiB0aGUgd2ViIGFyZWEsIHJlZGlyZWN0
IGl0IHRvIGJlIG9uIHRoZSBib2R5LCB3aGljaCB3aWxsIGhhdmUgYSByZW5kZXJlciBhc3NvY2lh
dGVkIHdpdGggaXQuCkBAIC0yNjYzLDEyICsyNjY4LDEyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6c3VwcG9ydHNQb3NJblNldCgpIGNvbnN0CiAgICAgCiBpbnQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6c2V0U2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEF0dHJpYnV0ZShhcmlhX3Nl
dHNpemVBdHRyKS50b0ludCgpOworICAgIHJldHVybiBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlh
X3NldHNpemVBdHRyKTsKIH0KIAogaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBvc0luU2V0KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfcG9zaW5zZXRBdHRyKS50b0lu
dCgpOworICAgIHJldHVybiBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Bvc2luc2V0QXR0cik7
CiB9CiAgICAgCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6aWRlbnRpZmllckF0dHJpYnV0
ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCmluZGV4IDU2YzNjZDMzMTcyMGYzNjdhMjYxZjBmNDBlMmFhNWU0ODgxMWJk
NWUuLjRkOWM5MzMxOGE4NjcxYjNiZTA5NDJjMGVjMmZiNzYxNGUzZWQ5NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC01
MTcsNiArNTE3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBY2Nlc3Np
YmlsaXR5Um9sZSBhcmlhUm9sZVRvV2ViQ29yZVJvbGUoY29uc3QgU3RyaW5nJik7CiAgICAgYm9v
bCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgaW50IGdldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdDsKICAgICBib29sIGhhc1RhZ05hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyB0YWdOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmNwcAppbmRleCAwNWI1NjNlOWFlMjZhNmFmZTc2OGRkMTI3YTAzMWM1Y2ZhYzcwMmEzLi5mNjcy
ZjRhMWFmMDUzNTVlNmU3MzA1MDU5Mzg2ZDA0MTk3OWRkYjJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC00NCw3ICs0
NCw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNl
bGwuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVNlY3Rpb24uaCIKLQogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTMsMTEgKzE1MiwxMSBAQCBib29s
IEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgIAogICAgIC8vIElm
IHRoZSBhdXRob3IgaGFzIHVzZWQgQVJJQSB0byBzcGVjaWZ5IGEgdmFsaWQgY29sdW1uIG9yIHJv
dyBjb3VudCwgYXNzdW1lIHRoZXkKICAgICAvLyB3YW50IHVzIHRvIHRyZWF0IHRoZSB0YWJsZSBh
cyBhIGRhdGEgdGFibGUuCi0gICAgaW50IGF4Q29sdW1uQ291bnQgPSBnZXRBdHRyaWJ1dGUoYXJp
YV9jb2xjb3VudEF0dHIpLnRvSW50KCk7CisgICAgaW50IGF4Q29sdW1uQ291bnQgPSBnZXRJbnRl
Z3JhbEF0dHJpYnV0ZShhcmlhX2NvbGNvdW50QXR0cik7CiAgICAgaWYgKGF4Q29sdW1uQ291bnQg
PT0gLTEgfHwgYXhDb2x1bW5Db3VudCA+IDApCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
aW50IGF4Um93Q291bnQgPSBnZXRBdHRyaWJ1dGUoYXJpYV9yb3djb3VudEF0dHIpLnRvSW50KCk7
CisgICAgaW50IGF4Um93Q291bnQgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2NvdW50
QXR0cik7CiAgICAgaWYgKGF4Um93Q291bnQgPT0gLTEgfHwgYXhSb3dDb3VudCA+IDApCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCkBAIC0yMzQsMTYgKzIzMywxNiBAQCBib29sIEFjY2Vzc2liaWxp
dHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogCiAgICAgICAgICAgICAvLyBJZiB0aGUgYXV0
aG9yIGhhcyB1c2VkIEFSSUEgdG8gc3BlY2lmeSBhIHZhbGlkIGNvbHVtbiBvciByb3cgaW5kZXgs
IGFzc3VtZSB0aGV5IHdhbnQgdXMKICAgICAgICAgICAgIC8vIHRvIHRyZWF0IHRoZSB0YWJsZSBh
cyBhIGRhdGEgdGFibGUuCi0gICAgICAgICAgICBpbnQgYXhDb2x1bW5JbmRleCA9ICBjZWxsRWxl
bWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2NvbGluZGV4QXR0ciku
dG9JbnQoKTsKKyAgICAgICAgICAgIGludCBheENvbHVtbkluZGV4ID0gY2VsbEVsZW1lbnQtPmdl
dEludGVncmFsQXR0cmlidXRlKGFyaWFfY29saW5kZXhBdHRyKTsKICAgICAgICAgICAgIGlmIChh
eENvbHVtbkluZGV4ID49IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAg
ICAgICAgIGludCBheFJvd0luZGV4ID0gY2VsbEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oYXJpYV9yb3dpbmRleEF0dHIpLnRvSW50KCk7CisgICAgICAgICAgICBpbnQg
YXhSb3dJbmRleCA9IGNlbGxFbGVtZW50LT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2lu
ZGV4QXR0cik7CiAgICAgICAgICAgICBpZiAoYXhSb3dJbmRleCA+PSAxKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgICAgICBpZiAoYXV0byBjZWxsUGFyZW50RWxlbWVu
dCA9IGNlbGxFbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBheFJv
d0luZGV4ID0gY2VsbFBhcmVudEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oYXJpYV9yb3dpbmRleEF0dHIpLnRvSW50KCk7CisgICAgICAgICAgICAgICAgYXhSb3dJbmRl
eCA9IGNlbGxQYXJlbnRFbGVtZW50LT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2luZGV4
QXR0cik7CiAgICAgICAgICAgICAgICAgaWYgKGF4Um93SW5kZXggPj0gMSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0yNTEsMTEgKzI1MCwxMSBA
QCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgICAgICAg
ICAgLy8gSWYgdGhlIGF1dGhvciBoYXMgdXNlZCBBUklBIHRvIHNwZWNpZnkgYSBjb2x1bW4gb3Ig
cm93IHNwYW4sIHdlJ3JlIHN1cHBvc2VkIHRvIGlnbm9yZQogICAgICAgICAgICAgLy8gdGhlIHZh
bHVlIGZvciB0aGUgcHVycG9zZXMgb2YgZXhwb3NpbmcgdGhlIHNwYW4uIEJ1dCBhc3N1bWUgdGhl
eSB3YW50IHVzIHRvIHRyZWF0IHRoZQogICAgICAgICAgICAgLy8gdGFibGUgYXMgYSBkYXRhIHRh
YmxlLgotICAgICAgICAgICAgaW50IGF4Q29sdW1uU3BhbiA9IGNlbGxFbGVtZW50LT5hdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfY29sc3BhbkF0dHIpLnRvSW50KCk7CisgICAg
ICAgICAgICBpbnQgYXhDb2x1bW5TcGFuID0gY2VsbEVsZW1lbnQtPmdldEludGVncmFsQXR0cmli
dXRlKGFyaWFfY29sc3BhbkF0dHIpOwogICAgICAgICAgICAgaWYgKGF4Q29sdW1uU3BhbiA+PSAx
KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgICAgICBpbnQgYXhSb3dT
cGFuID0gY2VsbEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9y
b3dzcGFuQXR0cikudG9JbnQoKTsKKyAgICAgICAgICAgIGludCBheFJvd1NwYW4gPSBjZWxsRWxl
bWVudC0+Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9yb3dzcGFuQXR0cik7CiAgICAgICAgICAg
ICBpZiAoYXhSb3dTcGFuID49IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAg
LTcwNyw4ICs3MDYsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVRhYmxlOjp0aXRsZSgpIGNvbnN0
CiAKIGludCBBY2Nlc3NpYmlsaXR5VGFibGU6OmF4Q29sdW1uQ291bnQoKSBjb25zdAogewotICAg
IGNvbnN0IEF0b21TdHJpbmcmIGNvbENvdW50VmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9jb2xj
b3VudEF0dHIpOwotICAgIGludCBjb2xDb3VudEludCA9IGNvbENvdW50VmFsdWUudG9JbnQoKTsK
KyAgICBpbnQgY29sQ291bnRJbnQgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX2NvbGNvdW50
QXR0cik7CiAgICAgLy8gVGhlIEFSSUEgc3BlYyBzdGF0ZXMsICJBdXRob3JzIG11c3Qgc2V0IHRo
ZSB2YWx1ZSBvZiBhcmlhLWNvbGNvdW50IHRvIGFuIGludGVnZXIgZXF1YWwgdG8gdGhlCiAgICAg
Ly8gbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGZ1bGwgdGFibGUuIElmIHRoZSB0b3RhbCBudW1i
ZXIgb2YgY29sdW1ucyBpcyB1bmtub3duLCBhdXRob3JzIG11c3QKICAgICAvLyBzZXQgdGhlIHZh
bHVlIG9mIGFyaWEtY29sY291bnQgdG8gLTEgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdmFsdWUgc2hv
dWxkIG5vdCBiZSBjYWxjdWxhdGVkIGJ5CkBAIC03MjEsOCArNzE5LDcgQEAgaW50IEFjY2Vzc2li
aWxpdHlUYWJsZTo6YXhDb2x1bW5Db3VudCgpIGNvbnN0CiAKIGludCBBY2Nlc3NpYmlsaXR5VGFi
bGU6OmF4Um93Q291bnQoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21TdHJpbmcmIHJvd0NvdW50
VmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9yb3djb3VudEF0dHIpOwotICAgIGludCByb3dDb3Vu
dEludCA9IHJvd0NvdW50VmFsdWUudG9JbnQoKTsKKyAgICBpbnQgcm93Q291bnRJbnQgPSBnZXRJ
bnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2NvdW50QXR0cik7CiAgICAgLy8gVGhlIEFSSUEgc3Bl
YyBzdGF0ZXMsICJBdXRob3JzIG11c3Qgc2V0IHRoZSB2YWx1ZSBvZiBhcmlhLXJvd2NvdW50IHRv
IGFuIGludGVnZXIgZXF1YWwgdG8gdGhlCiAgICAgLy8gbnVtYmVyIG9mIHJvd3MgaW4gdGhlIGZ1
bGwgdGFibGUuIElmIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyBpcyB1bmtub3duLCBhdXRob3Jz
IG11c3Qgc2V0CiAgICAgLy8gdGhlIHZhbHVlIG9mIGFyaWEtcm93Y291bnQgdG8gLTEgdG8gaW5k
aWNhdGUgdGhhdCB0aGUgdmFsdWUgc2hvdWxkIG5vdCBiZSBjYWxjdWxhdGVkIGJ5IHRoZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbC5jcHAKaW5kZXggYzM3NjdiZGNjNTg1N2Y5YzBhMjQxY2UxMWRiMGI1NjMwZWNjYjNmNS4u
M2Y2NTA4ZTA2MWMxODAwNmZlZTYxZTRlNGQxZDZiMzk3NjI4ZDI3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3Bw
CkBAIC00MDIsOSArNDAyLDggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6dGl0bGVVSUVsZW1lbnQoKSBjb25zdAogICAgIAogaW50IEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OmF4Q29sdW1uSW5kZXgoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21TdHJpbmcm
IGNvbEluZGV4VmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9jb2xpbmRleEF0dHIpOwotICAgIGlm
IChjb2xJbmRleFZhbHVlLnRvSW50KCkgPj0gMSkKLSAgICAgICAgcmV0dXJuIGNvbEluZGV4VmFs
dWUudG9JbnQoKTsKKyAgICBpZiAoaW50IHZhbHVlID0gZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJp
YV9jb2xpbmRleEF0dHIpOyB2YWx1ZSA+PSAxKQorICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAg
ICAvLyAiQVJJQSAxLjE6IElmIHRoZSBzZXQgb2YgY29sdW1ucyB3aGljaCBpcyBwcmVzZW50IGlu
IHRoZSBET00gaXMgY29udGlndW91cywgYW5kIGlmIHRoZXJlIGFyZSBubyBjZWxscyB3aGljaCBz
cGFuIG1vcmUgdGhhbiBvbmUgcm93CiAgICAgLy8gb3IgY29sdW1uIGluIHRoYXQgc2V0LCB0aGVu
IGF1dGhvcnMgbWF5IHBsYWNlIGFyaWEtY29saW5kZXggb24gZWFjaCByb3csIHNldHRpbmcgdGhl
IHZhbHVlIHRvIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY29sdW1uIG9mIHRoZSBzZXQuIgpAQCAt
NDIwLDEzICs0MTksMTIgQEAgaW50IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93SW5kZXgo
KSBjb25zdAogewogICAgIC8vIEFSSUEgMS4xOiBBdXRob3JzIHNob3VsZCBwbGFjZSBhcmlhLXJv
d2luZGV4IG9uIGVhY2ggcm93LiBBdXRob3JzIG1heSBhbHNvIHBsYWNlCiAgICAgLy8gYXJpYS1y
b3dpbmRleCBvbiBhbGwgb2YgdGhlIGNoaWxkcmVuIG9yIG93bmVkIGVsZW1lbnRzIG9mIGVhY2gg
cm93LgotICAgIGNvbnN0IEF0b21TdHJpbmcmIHJvd0luZGV4VmFsdWUgPSBnZXRBdHRyaWJ1dGUo
YXJpYV9yb3dpbmRleEF0dHIpOwotICAgIGlmIChyb3dJbmRleFZhbHVlLnRvSW50KCkgPj0gMSkK
LSAgICAgICAgcmV0dXJuIHJvd0luZGV4VmFsdWUudG9JbnQoKTsKLSAgICAKKyAgICBpZiAoaW50
IHZhbHVlID0gZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9yb3dpbmRleEF0dHIpOyB2YWx1ZSA+
PSAxKQorICAgICAgICByZXR1cm4gdmFsdWU7CisKICAgICBpZiAoQWNjZXNzaWJpbGl0eVRhYmxl
Um93KiBwYXJlbnRSb3cgPSB0aGlzLT5wYXJlbnRSb3coKSkKICAgICAgICAgcmV0dXJuIHBhcmVu
dFJvdy0+YXhSb3dJbmRleCgpOwotICAgIAorCiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC00Mzcs
MTEgKzQzNSwxMCBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhDb2x1bW5TcGFuKCkg
Y29uc3QKICAgICBpZiAoaGFzQXR0cmlidXRlKGNvbHNwYW5BdHRyKSkKICAgICAgICAgcmV0dXJu
IC0xOwogCi0gICAgY29uc3QgQXRvbVN0cmluZyYgY29sU3BhblZhbHVlID0gZ2V0QXR0cmlidXRl
KGFyaWFfY29sc3BhbkF0dHIpOwogICAgIC8vIEFSSUEgMS4xOiBBdXRob3JzIG11c3Qgc2V0IHRo
ZSB2YWx1ZSBvZiBhcmlhLWNvbHNwYW4gdG8gYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3IgZXF1
YWwgdG8gMS4KLSAgICBpZiAoY29sU3BhblZhbHVlLnRvSW50KCkgPj0gMSkKLSAgICAgICAgcmV0
dXJuIGNvbFNwYW5WYWx1ZS50b0ludCgpOwotICAgIAorICAgIGlmIChpbnQgdmFsdWUgPSBnZXRJ
bnRlZ3JhbEF0dHJpYnV0ZShhcmlhX2NvbHNwYW5BdHRyKTsgdmFsdWUgPj0gMSkKKyAgICAgICAg
cmV0dXJuIHZhbHVlOworCiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC00NTIsMTUgKzQ0OSwxMyBA
QCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhSb3dTcGFuKCkgY29uc3QKICAgICBpZiAo
aGFzQXR0cmlidXRlKHJvd3NwYW5BdHRyKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29u
c3QgQXRvbVN0cmluZyYgcm93U3BhblZhbHVlID0gZ2V0QXR0cmlidXRlKGFyaWFfcm93c3BhbkF0
dHIpOwotICAgIAogICAgIC8vIEFSSUEgMS4xOiBBdXRob3JzIG11c3Qgc2V0IHRoZSB2YWx1ZSBv
ZiBhcmlhLXJvd3NwYW4gdG8gYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMC4K
ICAgICAvLyBTZXR0aW5nIHRoZSB2YWx1ZSB0byAwIGluZGljYXRlcyB0aGF0IHRoZSBjZWxsIG9y
IGdyaWRjZWxsIGlzIHRvIHNwYW4gYWxsIHRoZSByZW1haW5pbmcgcm93cyBpbiB0aGUgcm93IGdy
b3VwLgotICAgIGlmIChyb3dTcGFuVmFsdWUgPT0gIjAiKQorICAgIGlmIChnZXRBdHRyaWJ1dGUo
YXJpYV9yb3dzcGFuQXR0cikgPT0gIjAiKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAocm93
U3BhblZhbHVlLnRvSW50KCkgPj0gMSkKLSAgICAgICAgcmV0dXJuIHJvd1NwYW5WYWx1ZS50b0lu
dCgpOwotICAgIAorICAgIGlmIChpbnQgdmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlh
X3Jvd3NwYW5BdHRyKTsgdmFsdWUgPj0gMSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworCiAgICAg
cmV0dXJuIC0xOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCmluZGV4IGFkNmVhNDk3ZDdmZTgxYWI0OWM2
ZmIyZTc2MTY4YTRhZGVmZTNkMjMuLmVkMGZiMGIyY2E0ZDVhNjg1NWIyOTMzMWFmOThlYmE0NTIy
ZjY5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZVJvdy5jcHAKQEAgLTE3NSwyMCArMTc1LDE0IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVRhYmxlUm93OjphZGRDaGlsZHJlbigpCiAKIGludCBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6
OmF4Q29sdW1uSW5kZXgoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21TdHJpbmcmIGNvbEluZGV4
VmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9jb2xpbmRleEF0dHIpOwotICAgIGlmIChjb2xJbmRl
eFZhbHVlLnRvSW50KCkgPj0gMSkKLSAgICAgICAgcmV0dXJuIGNvbEluZGV4VmFsdWUudG9JbnQo
KTsKLSAgICAKLSAgICByZXR1cm4gLTE7CisgICAgaW50IHZhbHVlID0gZ2V0SW50ZWdyYWxBdHRy
aWJ1dGUoYXJpYV9jb2xpbmRleEF0dHIpOworICAgIHJldHVybiB2YWx1ZSA+PSAxID8gdmFsdWUg
OiAtMTsKIH0KIAogaW50IEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YXhSb3dJbmRleCgpIGNvbnN0
CiB7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgcm93SW5kZXhWYWx1ZSA9IGdldEF0dHJpYnV0ZShh
cmlhX3Jvd2luZGV4QXR0cik7Ci0gICAgaWYgKHJvd0luZGV4VmFsdWUudG9JbnQoKSA+PSAxKQot
ICAgICAgICByZXR1cm4gcm93SW5kZXhWYWx1ZS50b0ludCgpOwotICAgIAotICAgIHJldHVybiAt
MTsKKyAgICBpbnQgdmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2luZGV4QXR0
cik7CisgICAgcmV0dXJuIHZhbHVlID49IDEgPyB2YWx1ZSA6IC0xOwogfQogICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NTZWxlY3RvclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVj
dG9yUGFyc2VyLmNwcAppbmRleCBlZTQzZDA4ZmMwZTBlYTdmMjBkODBkOTA1OTZmYWU5OTE0ZDQ0
NzJlLi4zMGRlN2JjMmRhZDE5ODE5ZjExYTZkYjgxMzNmMGM4ZDZiMDQyNWJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9y
U2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTg4NCw5ICs4ODUsOSBAQCBzdGF0aWMgYm9vbCBjb25zdW1lQU5QbHVzQihDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgc3RkOjpwYWlyPGludCwgaW50PiYgcmVzdQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoblN0cmluZy5sZW5ndGgoKSA+IDIpIHsKLSAgICAg
ICAgYm9vbCB2YWxpZDsKLSAgICAgICAgcmVzdWx0LnNlY29uZCA9IG5TdHJpbmcuc3Vic3RyaW5n
KDEpLnRvSW50U3RyaWN0KCZ2YWxpZCk7Ci0gICAgICAgIHJldHVybiB2YWxpZDsKKyAgICAgICAg
YXV0byBwYXJzZWROdW1iZXIgPSBwYXJzZUludGVnZXI8aW50PihTdHJpbmdWaWV3IHsgblN0cmlu
ZyB9LnN1YnN0cmluZygxKSk7CisgICAgICAgIHJlc3VsdC5zZWNvbmQgPSBwYXJzZWROdW1iZXIu
dmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJuIHBhcnNlZE51bWJlci5oYXNWYWx1ZSgpOwogICAg
IH0KIAogICAgIE51bWVyaWNTaWduIHNpZ24gPSBuU3RyaW5nLmxlbmd0aCgpID09IDEgPyBOb1Np
Z24gOiBNaW51c1NpZ247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Rva2VuaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5j
cHAKaW5kZXggMWE5Mzc3NjVmNjU2NDEyOWMxNzk5YzM0NTRjNTRhM2Q1MDgzYTQzYy4uZWQzNjJh
MTlkZmFlZjQ4N2RmMjIxZjRkMTcyNmExZjYwZDk3MmYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkNT
U1Rva2VuaXplcklucHV0U3RyZWFtLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFj
dGVyTmFtZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODM2LDEyICs4MzcsMTEgQEAg
VUNoYXIzMiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVFc2NhcGUoKQogICAgICAgICAgICAgY29uc3Vt
ZWRIZXhEaWdpdHMrKzsKICAgICAgICAgfTsKICAgICAgICAgY29uc3VtZVNpbmdsZVdoaXRlc3Bh
Y2VJZk5leHQoKTsKLSAgICAgICAgYm9vbCBvayA9IGZhbHNlOwotICAgICAgICBVQ2hhcjMyIGNv
ZGVQb2ludCA9IGhleENoYXJzLnRvU3RyaW5nKCkudG9VSW50U3RyaWN0KCZvaywgMTYpOwotICAg
ICAgICBBU1NFUlQob2spOwotICAgICAgICBpZiAoIWNvZGVQb2ludCB8fCAoMHhEODAwIDw9IGNv
ZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhERkZGKSB8fCBjb2RlUG9pbnQgPiAweDEwRkZGRikK
KyAgICAgICAgYXV0byBjb2RlUG9pbnQgPSBwYXJzZUludGVnZXI8dWludDMyX3Q+KGhleENoYXJz
LCAxNik7CisgICAgICAgIEFTU0VSVChjb2RlUG9pbnQpOworICAgICAgICBpZiAoIWNvZGVQb2lu
dCB8fCAoMHhEODAwIDw9ICpjb2RlUG9pbnQgJiYgKmNvZGVQb2ludCA8PSAweERGRkYpIHx8ICpj
b2RlUG9pbnQgPiAweDEwRkZGRikKICAgICAgICAgICAgIHJldHVybiByZXBsYWNlbWVudENoYXJh
Y3RlcjsKLSAgICAgICAgcmV0dXJuIGNvZGVQb2ludDsKKyAgICAgICAgcmV0dXJuICpjb2RlUG9p
bnQ7CiAgICAgfQogCiAgICAgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggNTQ3OTc0NDE5NmFm
OThiNzZmNDE3OTAzNmVlNTNjYzEyYmMwMDliNi4uZDNhY2VjZmYyMTZiNDZhMjMwZmVlNDhmNWVi
MGZlNGYzNTUzYjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9E
YXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURl
dGVjdGlvbi5tbQpAQCAtNTQsNiArNTQsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvRGF0YURl
dGVjdG9yc1NQSS5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmg+CiAKICNpbXBvcnQgIkRhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCIK
IApAQCAtMTk0LDE5ICsxOTUsMjUgQEAgYm9vbCBEYXRhRGV0ZWN0aW9uOjpjYW5QcmVzZW50RGF0
YURldGVjdG9yc1VJRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogICAgIGlmIChzb2Z0TGlu
a19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNob3VsZEltbWVkaWF0ZWx5U2hvd0FjdGlvblNoZWV0Rm9y
VVJMKGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PihlbGVtZW50KS5ocmVmKCkpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICBjb25zdCBBdG9tU3RyaW5nJiByZXN1bHRBdHRyaWJ1
dGUgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oeF9hcHBsZV9kYXRh
X2RldGVjdG9yc19yZXN1bHRBdHRyKTsKKyAgICBhdXRvJiByZXN1bHRBdHRyaWJ1dGUgPSBlbGVt
ZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oeF9hcHBsZV9kYXRhX2RldGVjdG9y
c19yZXN1bHRBdHRyKTsKICAgICBpZiAocmVzdWx0QXR0cmlidXRlLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIE5TQXJyYXkgKnJlc3VsdHMgPSBlbGVtZW50LmRvY3VtZW50
KCkuZnJhbWUoKS0+ZGF0YURldGVjdGlvblJlc3VsdHMoKTsKICAgICBpZiAoIXJlc3VsdHMpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHRJbmRpY2VzID0g
cmVzdWx0QXR0cmlidXRlLnN0cmluZygpLnNwbGl0KCcvJyk7Ci0gICAgRERSZXN1bHRSZWYgcmVz
dWx0ID0gW1tyZXN1bHRzIG9iamVjdEF0SW5kZXg6cmVzdWx0SW5kaWNlc1swXS50b0ludCgpXSBj
b3JlUmVzdWx0XTsKLSAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugb2YgYSBzaWduYXR1cmUgYmxvY2ss
IHdoZXJlIHdlIG5lZWQgdG8gY2hlY2sgdGhlIGNvcnJlY3Qgc3VicmVzdWx0LgotICAgIGZvciAo
c2l6ZV90IGkgPSAxOyBpIDwgcmVzdWx0SW5kaWNlcy5zaXplKCk7IGkrKykgewotICAgICAgICBy
ZXN1bHRzID0gKE5TQXJyYXkgKilzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFJlc3VsdEdl
dFN1YlJlc3VsdHMocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gKEREUmVzdWx0UmVmKVtyZXN1
bHRzIG9iamVjdEF0SW5kZXg6cmVzdWx0SW5kaWNlc1tpXS50b0ludCgpXTsKKworICAgIGF1dG8g
cmVzdWx0SW5kaWNlcyA9IFN0cmluZ1ZpZXcgeyByZXN1bHRBdHRyaWJ1dGUgfS5zcGxpdCgnLycp
OworICAgIGF1dG8gaW5kZXhJdGVyYXRvciA9IHJlc3VsdEluZGljZXMuYmVnaW4oKTsKKyAgICBh
dXRvIHJlc3VsdCA9IFtyZXN1bHRzW3BhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4oKmluZGV4SXRlcmF0b3IpLnZhbHVlT3IoMCldIGNvcmVSZXN1bHRdOworCisgICAgLy8gSGFu
ZGxlIHRoZSBjYXNlIG9mIGEgc2lnbmF0dXJlIGJsb2NrLCB3aGVyZSB3ZSBuZWVkIHRvIGZvbGxv
dyB0aGUgcGF0aCBkb3duIG9uZSBvciBtb3JlIHN1YnJlc3VsdCBsZXZlbHMuCisgICAgaWYgKCsr
aW5kZXhJdGVyYXRvciAhPSByZXN1bHRJbmRpY2VzLmVuZCgpKSB7CisgICAgICAgIGRvIHsKKyAg
ICAgICAgICAgIHJlc3VsdHMgPSAoX19icmlkZ2UgTlNBcnJheSAqKXNvZnRMaW5rX0RhdGFEZXRl
Y3RvcnNDb3JlX0REUmVzdWx0R2V0U3ViUmVzdWx0cyhyZXN1bHQpOworICAgICAgICAgICAgcmVz
dWx0ID0gKF9fYnJpZGdlIEREUmVzdWx0UmVmKXJlc3VsdHNbcGFyc2VJbnRlZ2VyQWxsb3dpbmdU
cmFpbGluZ0p1bms8aW50PigqaW5kZXhJdGVyYXRvcikudmFsdWVPcigwKV07CisgICAgICAgIH0g
d2hpbGUgKCsraW5kZXhJdGVyYXRvciAhPSByZXN1bHRJbmRpY2VzLmVuZCgpKTsKICAgICB9CisK
ICAgICByZXR1cm4gc29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTaG91bGRJbW1lZGlhdGVs
eVNob3dBY3Rpb25TaGVldEZvclJlc3VsdChyZXN1bHQpOwogfQogCkBAIC0zMTYsMzAgKzMyMywy
MCBAQCBzdGF0aWMgTlNTdHJpbmcgKmRhdGFEZXRlY3RvclR5cGVGb3JDYXRlZ29yeShERFJlc3Vs
dENhdGVnb3J5IGNhdGVnb3J5KQogCiBzdGF0aWMgU3RyaW5nIGRhdGFEZXRlY3RvclN0cmluZ0Zv
clBhdGgoTlNJbmRleFBhdGggKnBhdGgpCiB7Ci0gICAgTlNVSW50ZWdlciBsZW5ndGggPSBwYXRo
Lmxlbmd0aDsKLSAgICAKKyAgICBhdXRvIGxlbmd0aCA9IHBhdGgubGVuZ3RoOwogICAgIHN3aXRj
aCAobGVuZ3RoKSB7CiAgICAgY2FzZSAwOgogICAgICAgICByZXR1cm4geyB9OwogICAgIGNhc2Ug
MToKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKFtwYXRoIGluZGV4QXRQb3NpdGlvbjow
XSk7Ci0gICAgY2FzZSAyOiB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9u
OjBdKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy8nKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjFdKTsKLSAgICAgICAg
cmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgZGVmYXVsdDogewot
ICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTnVtYmVyKFtwYXRoIGluZGV4QXRQb3NpdGlvbjowXSk7Ci0gICAgICAgIGZvciAo
TlNVSW50ZWdlciBpID0gMSA7IGkgPCBsZW5ndGggOyBpKyspIHsKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCcvJyk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51
bWJlcihbcGF0aCBpbmRleEF0UG9zaXRpb246aV0pOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0
dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLSAgICB9CisgICAgICAgIHJldHVybiBtYWtl
U3RyaW5nKFtwYXRoIGluZGV4QXRQb3NpdGlvbjowXSk7CisgICAgY2FzZSAyOgorICAgICAgICBy
ZXR1cm4gbWFrZVN0cmluZyhbcGF0aCBpbmRleEF0UG9zaXRpb246MF0sICcvJywgW3BhdGggaW5k
ZXhBdFBvc2l0aW9uOjFdKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKFtwYXRoIGluZGV4QXRQb3NpdGlv
bjowXSk7CisgICAgICAgIGZvciAoTlNVSW50ZWdlciBpID0gMTsgaSA8IGxlbmd0aDsgaSsrKQor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8nLCBbcGF0aCBpbmRleEF0UG9zaXRpb246aV0p
OworICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIH0KIApAQCAtNjg4
LDQgKzY4NSwzIEBAIGJvb2wgRGF0YURldGVjdGlvbjo6aXNEYXRhRGV0ZWN0b3JFbGVtZW50KGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXgg
MDY4MjZmMTI0MTg3YmRiZDRmMWE0OWM0MzcwZWM2ZWY0ZDBkOGVmNS4uNTJhNTYzMTVjNGIzNTkw
YzdjYTE1YWI4ZmI1NDlkYTFjNzkyYTQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNjcsNiArNjcsNyBAQAogI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9BU0NJSUNUeXBl
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW1wb3J0IDx3dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJ
T04pCiAjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uLmgiCkBAIC05NzgsNyArOTc5LDcgQEAgTlNEaWN0
aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgICAgIH0KIAogICAgICAgICBTdHJpbmcgZm9udFdlaWdodCA9IF9j
YWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5Rm9udFN0eWxl
KTsKLSAgICAgICAgaWYgKGZvbnRXZWlnaHQuc3RhcnRzV2l0aCgiYm9sZCIpIHx8IGZvbnRXZWln
aHQudG9JbnQoKSA+PSA3MDApIHsKKyAgICAgICAgaWYgKGZvbnRXZWlnaHQuc3RhcnRzV2l0aCgi
Ym9sZCIpIHx8IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oZm9udFdlaWdo
dCkudmFsdWVPcigwKSA+PSA3MDApIHsKICAgICAgICAgICAgIC8vID8/PyBoYW5kbGUgd2VpZ2h0
IHByb3Blcmx5IHVzaW5nIE5TRm9udE1hbmFnZXIKICAgICAgICAgICAgIFBsYXRmb3JtRm9udCAq
b3JpZ2luYWxGb250ID0gZm9udDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKaW5kZXggNDdmMGI5NTQ3MWVkOWEwMDgwMzRj
YzgyNmJhMzYyNWY3ZDJlZWZkZS4uNjM1ZTkzMjNiZTVjZjZmOTk5MzY2MDMxOTAyZjIwNTQyNzUx
MGM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCkBAIC0yOSw3
ICsyOSw2IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnJhbWUu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC04Myw3ICs4Miw3IEBAIGludCBIVE1MRnJhbWVFbGVtZW50OjpkZWZhdWx0VGFiSW5kZXgoKSBj
b25zdAogdm9pZCBIVE1MRnJhbWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9
PSBmcmFtZWJvcmRlckF0dHIpIHsKLSAgICAgICAgbV9mcmFtZUJvcmRlciA9IHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3IoMCk7CisgICAgICAgIG1f
ZnJhbWVCb3JkZXIgPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKS52YWx1ZV9vcigwKTsKICAgICAg
ICAgbV9mcmFtZUJvcmRlclNldCA9ICF2YWx1ZS5pc051bGwoKTsKICAgICAgICAgLy8gRklYTUU6
IElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGhhcyBubyBlZmZlY3QuCiAgICAgfSBl
bHNlIGlmIChuYW1lID09IG5vcmVzaXplQXR0cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXggNWM5NjU1MDNhNGRhZjNkMTI3MGUwMDEzMzM4MDRi
MjQ2N2RmZjdlNS4uOTVhZTZhMWU1NWIyZjU1MzFlODVhYzE5ODM5MmQ4NDZkMDNjN2FmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCkBAIC0zNiwxMiAr
MzYsMTIgQEAKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxGcmFt
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2Vy
SWRpb21zLmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgog
I2luY2x1ZGUgIlJlbmRlckZyYW1lU2V0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzMiw3ICsxMzIs
NyBAQCB2b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdAogCiAgICAgaWYgKG5hbWUgPT0gYm9yZGVyQXR0
cikgewogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBtX2JvcmRl
ciA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3Io
MCk7CisgICAgICAgICAgICBtX2JvcmRlciA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZhbHVl
X29yKDApOwogICAgICAgICAgICAgbV9ib3JkZXJTZXQgPSB0cnVlOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIG1fYm9yZGVyU2V0ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJF
bGVtZW50LmNwcAppbmRleCA3MjcyYTVhN2U2ZWQ3ODYwY2ZkM2NmM2I0Mzk2NjYxOTRhN2M5YzE4
Li5jNmI4ZTA1Y2I5NTIyMzhmZDRlYWZiNWU5NGI3NGMzNzIzMmFkYTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZl
cnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NCw3ICs3Myw3IEBAIHZvaWQg
SFRNTEhSRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hCiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9u
QXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIENTU1ZhbHVlQXV0
byk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKSB7Ci0gICAg
ICAgIGlmIChhdXRvIHZhbHVlSW50ZWdlciA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4odmFsdWUpOyB2YWx1ZUludGVnZXIgJiYgISp2YWx1ZUludGVnZXIpCisgICAgICAg
IGlmIChhdXRvIHZhbHVlSW50ZWdlciA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpOyB2YWx1ZUlu
dGVnZXIgJiYgISp2YWx1ZUludGVnZXIpCiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIDEsIENTU1VuaXRU
eXBlOjpDU1NfUFgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhZGRIVE1MTGVuZ3RoVG9T
dHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgdmFsdWUpOwpAQCAtOTEsNyArOTAsNyBAQCB2
b2lkIEhUTUxIUkVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYQogICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGRhcmtHcmF5VmFsdWUpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChuYW1lID09IHNpemVBdHRyKSB7Ci0gICAgICAgIGludCBzaXplID0gcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKTsKKyAgICAg
ICAgaW50IHNpemUgPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKS52YWx1ZV9vcigwKTsKICAgICAg
ICAgaWYgKHNpemUgPD0gMSkKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgMCwgQ1NT
VW5pdFR5cGU6OkNTU19QWCk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5jcHAKaW5kZXggMjdmZWZlYjU3YjljMDU2NTVmMWRkZjVkYWFiMjdiZTk0
MDQ4NjZlMS4uNWM4M2QxZTZlM2E4NzgwYWZlYjEwODVlNWY3Yjg0YWNkZDkxYzM4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAgLTM1LDcgKzM1LDYgQEAK
ICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTg3LDcgKzg2LDcgQEAgdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9y
UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUKICAgICBlbHNlIGlmIChu
YW1lID09IGZyYW1lYm9yZGVyQXR0cikgewogICAgICAgICAvLyBGcmFtZSBib3JkZXIgZG9lc24n
dCByZWFsbHkgbWF0Y2ggdGhlIEhUTUw0IHNwZWMgZGVmaW5pdGlvbiBmb3IgaWZyYW1lcy4gSXQg
c2ltcGx5IGFkZHMKICAgICAgICAgLy8gYSBwcmVzZW50YXRpb25hbCBoaW50IHRoYXQgdGhlIGJv
cmRlciBzaG91bGQgYmUgb2ZmIGlmIHNldCB0byB6ZXJvLgotICAgICAgICBpZiAoIXBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3IoMCkpIHsKKyAgICAg
ICAgaWYgKCFwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKS52YWx1ZV9vcigwKSkgewogICAgICAgICAg
ICAgLy8gQWRkIGEgcnVsZSB0aGF0IG51bGxzIG91dCBvdXIgYm9yZGVyIHdpZHRoLgogICAgICAg
ICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQ
cm9wZXJ0eUJvcmRlcldpZHRoLCAwLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggY2U2YzliOTkwNmE5
MDRmM2JlZWYxMTU5ZmQ2Y2I3Y2MwYTljZTEyZS4uNmE0ZmEzYzk0ZmZmNGYxM2VmYWI1ZGM3YThk
MTgzNGExZGRiOGVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CkBAIC04MDIsNyArODAyLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW4KICAgICAgICAgaWYg
KG1fc2l6ZSAhPSBvbGRTaXplICYmIHJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZW5kZXJlcigp
LT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICB9IGVsc2UgaWYgKG5h
bWUgPT0gcmVzdWx0c0F0dHIpCi0gICAgICAgIG1fbWF4UmVzdWx0cyA9IHZhbHVlLmlzTnVsbCgp
ID8gLTEgOiBzdGQ6Om1pbihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZh
bHVlKS52YWx1ZU9yKDApLCBtYXhTYXZlZFJlc3VsdHMpOworICAgICAgICBtX21heFJlc3VsdHMg
PSB2YWx1ZS5pc051bGwoKSA/IC0xIDogc3RkOjptaW4ocGFyc2VIVE1MSW50ZWdlcih2YWx1ZSku
dmFsdWVfb3IoMCksIG1heFNhdmVkUmVzdWx0cyk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBhdXRv
c2F2ZUF0dHIgfHwgbmFtZSA9PSBpbmNyZW1lbnRhbEF0dHIpCiAgICAgICAgIGludmFsaWRhdGVT
dHlsZUZvclN1YnRyZWUoKTsKICAgICBlbHNlIGlmIChuYW1lID09IG1heEF0dHIgfHwgbmFtZSA9
PSBtaW5BdHRyIHx8IG5hbWUgPT0gbXVsdGlwbGVBdHRyIHx8IG5hbWUgPT0gcGF0dGVybkF0dHIg
fHwgbmFtZSA9PSBwcmVjaXNpb25BdHRyIHx8IG5hbWUgPT0gc3RlcEF0dHIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTElFbGVtZW50LmNwcAppbmRleCBlY2UyOWVhMjIwNzk3ZDk5ZTQzYzlmNzEwMGJm
NGRkYTgyZTlmY2ZiLi4zNDMyODNmODExMmZjZGU5NzlhNGRmMDcxYzUzOTE4YmU2ZjUyZmYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKQEAgLTExNyw3ICsxMTcsMTAgQEAg
dm9pZCBIVE1MTElFbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogaW5saW5lIHZvaWQgSFRN
TExJRWxlbWVudDo6cGFyc2VWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBB
U1NFUlQocmVuZGVyZXIoKSk7Ci0gICAgZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpyZW5kZXJl
cigpKS5zZXRFeHBsaWNpdFZhbHVlKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4odmFsdWUpKTsKKyAgICBPcHRpb25hbDxpbnQ+IGV4cGxpY2l0VmFsdWU7CisgICAgaWYgKGF1
dG8gcGFyc2VkVmFsdWUgPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKSkKKyAgICAgICAgZXhwbGlj
aXRWYWx1ZSA9ICpwYXJzZWRWYWx1ZTsKKyAgICBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnJl
bmRlcmVyKCkpLnNldEV4cGxpY2l0VmFsdWUoZXhwbGljaXRWYWx1ZSk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAppbmRleCBjNDgwOWU5ZmFkZjdm
YmVmNWFiMmJlNjAwYWI0NGJmMTg4MDgxN2QxLi4xNGE0NzI5OGFlNmY3MTM0YjhlMTA2Njk3MDhk
MDljMmNjMGIzYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQu
Y3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YS5oIgogI2luY2x1ZGUgIlJlbmRlck1hcnF1ZWUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24u
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNDgsOCArMTQ3LDggQEAgdm9pZCBIVE1M
TWFycXVlZUVsZW1lbnQ6OnNldFNjcm9sbERlbGF5KHVuc2lnbmVkIHNjcm9sbERlbGF5KQogICAg
IAogaW50IEhUTUxNYXJxdWVlRWxlbWVudDo6bG9vcCgpIGNvbnN0CiB7Ci0gICAgYXV0byBsb29w
VmFsdWUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24obG9vcEF0dHIpKTsKLSAgICByZXR1cm4gbG9vcFZhbHVlICYm
ICpsb29wVmFsdWUgPiAwID8gKmxvb3BWYWx1ZSA6IC0xOworICAgIGludCBsb29wVmFsdWUgPSBn
ZXRJbnRlZ3JhbEF0dHJpYnV0ZShsb29wQXR0cik7CisgICAgcmV0dXJuIGxvb3BWYWx1ZSA+IDAg
PyBsb29wVmFsdWUgOiAtMTsKIH0KICAgICAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxNYXJxdWVl
RWxlbWVudDo6c2V0TG9vcChpbnQgbG9vcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5jcHAKaW5kZXggNjg3MzgwNTg3YTFkNTllNDM2OWZlY2JhM2Y0MzIyYTg3
ZWI0NDhlOC4uNTkzZjdkMjQ3NjdkODcwMDUwMmQyODZhMjVjYzcwZmRkOTc1NWQ5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKQEAgLTMyLDcgKzMy
LDYgQEAKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFi
bGVDZWxsLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTAzLDEwICsxMDIsMTAgQEAgdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29s
bGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE4KICAgICBp
ZiAobmFtZSA9PSBub3dyYXBBdHRyKQogICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9u
QXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVXZWJr
aXROb3dyYXApOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKSB7Ci0gICAgICAgIGlm
IChwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDAp
ID4gMCkgLy8gd2lkdGg9IjAiIGlzIGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5J
RS4KKyAgICAgICAgaWYgKHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZhbHVlX29yKDApID4gMCkg
Ly8gd2lkdGg9IjAiIGlzIGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KICAg
ICAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCB2
YWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGhlaWdodEF0dHIpIHsKLSAgICAgICAgaWYg
KHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3IoMCkg
PiAwKSAvLyBoZWlnaHQ9IjAiIGlzIGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5J
RS4KKyAgICAgICAgaWYgKHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZhbHVlX29yKDApID4gMCkg
Ly8gaGVpZ2h0PSIwIiBpcyBpZ25vcmVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luSUUuCiAg
ICAgICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQs
IHZhbHVlKTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmNvbGxl
Y3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKaW5kZXggMDNhZmZjY2Ri
YmMzYWUwN2ExMjI5MDhjMTY0ZDk1OGM1MjNiNzJjYy4uNWUyNGI5N2Q4ZDVkZmM5Zjk1ZDI0ZTQ5
MDI3NDdmMWU0OGRhY2MxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVs
ZW1lbnQuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHZvaWQgSFRNTFRhYmxlQ29sRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0CiAgICAg
fSBlbHNlIGlmIChuYW1lID09IHdpZHRoQXR0cikgewogICAgICAgICBpZiAoIXZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRhYmxlQ29sPihyZW5kZXJlcigpKSkg
ewotICAgICAgICAgICAgICAgIFJlbmRlclRhYmxlQ29sJiBjb2wgPSBkb3duY2FzdDxSZW5kZXJU
YWJsZUNvbD4oKnJlbmRlcmVyKCkpOwotICAgICAgICAgICAgICAgIGludCBuZXdXaWR0aCA9IHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4od2lkdGgoKSkudmFsdWVPcigwKTsK
KyAgICAgICAgICAgICAgICBhdXRvJiBjb2wgPSBkb3duY2FzdDxSZW5kZXJUYWJsZUNvbD4oKnJl
bmRlcmVyKCkpOworICAgICAgICAgICAgICAgIGludCBuZXdXaWR0aCA9IHBhcnNlSFRNTEludGVn
ZXIodmFsdWUpLnZhbHVlX29yKDApOwogICAgICAgICAgICAgICAgIGlmIChuZXdXaWR0aCAhPSBj
b2wud2lkdGgoKSkKICAgICAgICAgICAgICAgICAgICAgY29sLnNldE5lZWRzTGF5b3V0QW5kUHJl
ZldpZHRoc1JlY2FsYygpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5jcHAKaW5kZXggNGMwMzc2MGYxNjE0OTgxNmY5YWE3YmYwZjJjYWViZWNlMzZm
NjE5NC4uYmY3OWQyYzUwMGExMDQ2MzZkMGNiN2U5NThjZmIzYTMwMGZhMTkxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5j
bHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwMCw3ICszOTks
NyBAQCB2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogICAgICAgICAgICAgbV9ydWxlc0F0dHIgPSBB
bGxSdWxlczsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY2VsbHBhZGRpbmdBdHRyKSB7CiAgICAg
ICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9wYWRkaW5nID0gc3RkOjpt
YXgoMCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVP
cigwKSk7CisgICAgICAgICAgICBtX3BhZGRpbmcgPSBzdGQ6Om1heCgwLCBwYXJzZUhUTUxJbnRl
Z2VyKHZhbHVlKS52YWx1ZV9vcigwKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcGFk
ZGluZyA9IDE7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGNvbHNBdHRyKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAKaW5kZXggYzUzYTk5NzA1OTQ0ODg1YmIyZDkzNzBmZDBjZmE1M2JjNTY4ZWJiMC4uNjMx
YzNhYTZiMzcyNWQ3OGU4ODE5ZDlmMTgyM2Y2YmU2YTJmYzQyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cApAQCAtNTcsNyArNTcsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KLQorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMTcsOCArMzE3LDggQEAg
dm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpyZXN0b3JlQXR0YWNoZWRXaW5kb3dI
ZWlnaHQoKQogewogICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VIZWlnaHQgPSBtX2luc3BlY3Rl
ZFBhZ2VDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNp
YmxlSGVpZ2h0KCk7CiAgICAgU3RyaW5nIHZhbHVlID0gbV9zZXR0aW5ncy0+Z2V0UHJvcGVydHko
aW5zcGVjdG9yQXR0YWNoZWRIZWlnaHRTZXR0aW5nKTsKLSAgICB1bnNpZ25lZCBwcmVmZXJyZWRI
ZWlnaHQgPSB2YWx1ZS5pc0VtcHR5KCkgPyBkZWZhdWx0QXR0YWNoZWRIZWlnaHQgOiB2YWx1ZS50
b1VJbnQoKTsKLSAgICAKKyAgICB1bnNpZ25lZCBwcmVmZXJyZWRIZWlnaHQgPSB2YWx1ZS5pc0Vt
cHR5KCkgPyBkZWZhdWx0QXR0YWNoZWRIZWlnaHQgOiBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1bnNpZ25lZD4odmFsdWUpLnZhbHVlT3IoMCk7CisKICAgICAvLyBUaGlzIGNhbGwg
bWlnaHQgbm90IGdvIHRocm91Z2ggKGlmIHRoZSB3aW5kb3cgc3RhcnRzIG91dCBkZXRhY2hlZCks
IGJ1dCBpZiB0aGUgd2luZG93IGlzIGluaXRpYWxseSBjcmVhdGVkIGF0dGFjaGVkLAogICAgIC8v
IEluc3BlY3RvckNvbnRyb2xsZXI6OmF0dGFjaFdpbmRvdyBpcyBuZXZlciBjYWxsZWQsIHNvIHdl
IG5lZWQgdG8gbWFrZSBzdXJlIHRvIHNldCB0aGUgYXR0YWNoZWRXaW5kb3dIZWlnaHQuCiAgICAg
Ly8gRklYTUU6IENsZWFuIHVwIGNvZGUgc28gd2Ugb25seSBoYXZlIHRvIGNhbGwgc2V0QXR0YWNo
ZWRXaW5kb3dIZWlnaHQgaW4gSW5zcGVjdG9yQ29udHJvbGxlcjo6YXR0YWNoV2luZG93CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCmluZGV4IDVlMzQzYTU0YmE3MjE3MjliODEyOTJjNjA2Mzk5MjVkYzFkMGRlYTEuLmE4Mjcx
NzM4ODE2OWI3MWY2ZjAzMWQyOGQzZTI2NjJmYzQyMjFlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMjAs
NiArMTIwLDcgQEAKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNzU4LDIyICsyNzU5LDIwIEBA
IE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojpub2RlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
YXRoVG9rZW5zLnNpemUoKSAtIDE7IGkgKz0gMikgewotICAgICAgICBib29sIHN1Y2Nlc3MgPSB0
cnVlOwotICAgICAgICB1bnNpZ25lZCBjaGlsZE51bWJlciA9IHBhdGhUb2tlbnNbaV0udG9VSW50
KCZzdWNjZXNzKTsKLSAgICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICBhdXRvIGNoaWxkTnVt
YmVyID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KHBhdGhUb2tl
bnNbaV0pOworICAgICAgICBpZiAoIWNoaWxkTnVtYmVyKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAgICAgTm9kZSogY2hpbGQ7CiAgICAgICAgIGlmIChpczxIVE1MRnJhbWVP
d25lckVsZW1lbnQ+KCpub2RlKSkgewotICAgICAgICAgICAgQVNTRVJUKCFjaGlsZE51bWJlcik7
CisgICAgICAgICAgICBBU1NFUlQoISpjaGlsZE51bWJlcik7CiAgICAgICAgICAgICBhdXRvJiBm
cmFtZU93bmVyID0gZG93bmNhc3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50Pigqbm9kZSk7CiAgICAg
ICAgICAgICBjaGlsZCA9IGZyYW1lT3duZXIuY29udGVudERvY3VtZW50KCk7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBpZiAoY2hpbGROdW1iZXIgPj0gaW5uZXJDaGlsZE5vZGVDb3Vu
dChub2RlKSkKKyAgICAgICAgICAgIGlmICgqY2hpbGROdW1iZXIgPj0gaW5uZXJDaGlsZE5vZGVD
b3VudChub2RlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgICAgICAg
ICAgY2hpbGQgPSBpbm5lckZpcnN0Q2hpbGQobm9kZSk7Ci0gICAgICAgICAgICBmb3IgKHNpemVf
dCBqID0gMDsgY2hpbGQgJiYgaiA8IGNoaWxkTnVtYmVyOyArK2opCisgICAgICAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgY2hpbGQgJiYgaiA8ICpjaGlsZE51bWJlcjsgKytqKQogICAgICAgICAg
ICAgICAgIGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCk7CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxk
ZXIuY3BwCmluZGV4IDA2MzNiNzU2MjNjYmI5ZGFiOTllN2EyODE5MDZkOWJkMGI4MDY3YzYuLmE1
ZmUxZjE5ODc3OTc4OGZhYTkyYTJmYzNjYTI0YTM4NWZkNDY0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxU
YWJsZUNlbGxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ29sRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKQEAgLTI1OCw3ICsyNTksNyBAQCBCb3gqIFRyZWVC
dWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyQm94JiBwYXJlbnRDb250YWlu
ZXIsIGNvbnN0IFJlbgogICAgICAgICAgICAgICAgIGF1dG8mIHRhYmxlQ29sRWxlbWVudCA9IHN0
YXRpY19jYXN0PEhUTUxUYWJsZUNvbEVsZW1lbnQmPigqcmVuZGVyZXIuZWxlbWVudCgpKTsKICAg
ICAgICAgICAgICAgICBhdXRvIGNvbHVtbldpZHRoID0gdGFibGVDb2xFbGVtZW50LndpZHRoKCk7
CiAgICAgICAgICAgICAgICAgaWYgKCFjb2x1bW5XaWR0aC5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICAgICAgICAgIGNoaWxkTGF5b3V0Qm94LT5zZXRDb2x1bW5XaWR0aChjb2x1bW5XaWR0aC50b0lu
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gtPnNldENvbHVtbldpZHRo
KHBhcnNlSFRNTEludGVnZXIoY29sdW1uV2lkdGgpLnZhbHVlX29yKDApKTsKICAgICAgICAgICAg
ICAgICBpZiAodGFibGVDb2xFbGVtZW50LnNwYW4oKSA+IDEpCiAgICAgICAgICAgICAgICAgICAg
IGNoaWxkTGF5b3V0Qm94LT5zZXRDb2x1bW5TcGFuKHRhYmxlQ29sRWxlbWVudC5zcGFuKCkpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTI3Niw3ICsyNzcsNiBAQCBCb3gqIFRyZWVCdWlsZGVy
OjpjcmVhdGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyQm94JiBwYXJlbnRDb250YWluZXIsIGNv
bnN0IFJlbgogICAgICAgICAgICAgICAgIGF1dG8gcm93U3BhbiA9IGNlbGxFbGVtZW50LnJvd1Nw
YW4oKTsKICAgICAgICAgICAgICAgICBpZiAocm93U3BhbiA+IDEpCiAgICAgICAgICAgICAgICAg
ICAgIGNoaWxkTGF5b3V0Qm94LT5zZXRSb3dTcGFuKHJvd1NwYW4pOwotCiAgICAgICAgICAgICAg
ICAgYXV0byBjb2x1bW5TcGFuID0gY2VsbEVsZW1lbnQuY29sU3BhbigpOwogICAgICAgICAgICAg
ICAgIGlmIChjb2x1bW5TcGFuID4gMSkKICAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRC
b3gtPnNldENvbHVtblNwYW4oY29sdW1uU3Bhbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKaW5kZXggOWQw
YjdlNjRlMzFiMzdjNmIyZThlNzg3MmRmNTlmODNlMjczYzE5Zi4uOTljYTljNGEwZDk3NjYxMmEw
ZjhiZDMzZGEwODRmYTQ0Njg1ZTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00NiwxMCArNDcsMTAgQEAgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6Q3Jv
c3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZSgpCiAKIHN0YXRpYyBib29sIHBhcnNlQWNjZXNz
Q29udHJvbE1heEFnZShjb25zdCBTdHJpbmcmIHN0cmluZywgU2Vjb25kcyYgZXhwaXJ5RGVsdGEp
CiB7Ci0gICAgLy8gRklYTUU6IHRoaXMgd2lsbCBub3QgZG8gdGhlIGNvcnJlY3QgdGhpbmcgZm9y
IGEgbnVtYmVyIHN0YXJ0aW5nIHdpdGggYSAnKycKLSAgICBib29sIG9rID0gZmFsc2U7Ci0gICAg
ZXhwaXJ5RGVsdGEgPSBTZWNvbmRzKHN0YXRpY19jYXN0PGRvdWJsZT4oc3RyaW5nLnRvVUludFN0
cmljdCgmb2spKSk7Ci0gICAgcmV0dXJuIG9rOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBw
cm9iYWJseSByZWplY3Qgc3RyaW5ncyB0aGF0IGhhdmUgYSBsZWFkaW5nICIrIi4KKyAgICBhdXRv
IHBhcnNlZEludGVnZXIgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHN0cmluZyk7CisgICAgZXhw
aXJ5RGVsdGEgPSBTZWNvbmRzKHN0YXRpY19jYXN0PGRvdWJsZT4ocGFyc2VkSW50ZWdlci52YWx1
ZU9yKDApKSk7CisgICAgcmV0dXJuIHBhcnNlZEludGVnZXIuaGFzVmFsdWUoKTsKIH0KIAogRXhw
ZWN0ZWQ8VW5pcXVlUmVmPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPiwgU3Ry
aW5nPiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6Y3JlYXRlKFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHBvbGljeSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCmluZGV4IDQ4
MmQ5YmNhZDRiYzdiY2JjMzQ4NjhiNWVkYzc1NjNiMDJmZDZhZjQuLjRmOTIzOTAwOGY5MGI1YjU4
ODBmMWIyZDc1ZjJmNTFmZDY2OTlmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBE
aXJlY3RvcnlQYXJzZXIuY3BwCkBAIC0yMSwxOCArMjEsMTkgQEAKIC8vIE9yaWdpbmFsIHZlcnNp
b24gb2YgdGhpcyBmaWxlIGNhbiBjdXJyZW50bHkgYmUgZm91bmQgYXQ6IGh0dHA6Ly9teHIubW96
aWxsYS5vcmcvbW96aWxsYTEuOC9zb3VyY2UvbmV0d2Vyay9zdHJlYW1jb252L2NvbnZlcnRlcnMv
UGFyc2VGVFBMaXN0LmNwcAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKEZUUERJ
UikKICNpbmNsdWRlICJGVFBEaXJlY3RvcnlQYXJzZXIuaCIKIAorI2lmIEVOQUJMRShGVFBESVIp
CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgorCiAvLyBPbiBXaW5k
b3dzLCB1c2UgdGhlIHRocmVhZHNhZmUgKl9yIGZ1bmN0aW9ucyBwcm92aWRlZCBieSBwdGhyZWFk
LgogI2lmIE9TKFdJTkRPV1MpICYmIChVU0UoUFRIUkVBRFMpIHx8IEhBVkUoUFRIUkVBRF9IKSkK
ICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBP
UyhXSU5ET1dTKSAmJiAhZGVmaW5lZChnbXRpbWVfcikKQEAgLTExODEsNyArMTE4Miw3IEBAIEZU
UEVudHJ5VHlwZSBwYXJzZU9uZUZUUExpbmUoY29uc3QgY2hhciogbGluZSwgTGlzdFN0YXRlJiBz
dGF0ZSwgTGlzdFJlc3VsdCYgcmVzCiAgICAgICAgIHsKICAgICAgICAgICAvKiBGaXJzdCB0cnkg
dG8gdXNlIHJlc3VsdC5mZV9zaXplIHRvIGZpbmQgIiAtPiAiIHNlcXVlbmNlLgogICAgICAgICAg
ICAgIFRoaXMgY2FuIGdpdmUgcHJvcGVyIHJlc3VsdCBmb3IgY2FzZXMgbGlrZSAiYWFhIC0+IGJi
YiAtPiBjY2MiLiAqLwotICAgICAgICAgIHVuc2lnbmVkIGludCBmaWxlU2l6ZSA9IHJlc3VsdC5m
aWxlU2l6ZS50b1VJbnQoKTsKKyAgICAgICAgICAgIGF1dG8gZmlsZVNpemUgPSBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4ocmVzdWx0LmZpbGVTaXplKS52YWx1ZU9y
KDApOwogCiAgICAgICAgICAgaWYgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA+IChmaWxlU2l6ZSAr
IDQpICYmCiAgICAgICAgICAgICAgIHN0cm5jbXAocmVzdWx0LmZpbGVuYW1lICsgcmVzdWx0LmZp
bGVuYW1lTGVuZ3RoIC0gZmlsZVNpemUgLSA0LCAiIC0+ICIsIDQpID09IDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAppbmRleCBlNjZl
MGMzYWU1ODYzMWFkMjBjMTFiM2EwZDg0ODRlMGVmMWI0OTdmLi4yMTk4NzUzZTc3NTY4NmYzMGQ3
N2QzZjA5YWZjNTdmNDAyZTcxNjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3
dGYvUmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJD
b252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03MCw3ICs3MSw3IEBAIEV4cGVjdGVkPFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBTdHJpbmc+IFByaXZhdGVDbGlja01lCiAK
ICAgICBhdXRvIHByZWZpeExlbmd0aCA9IHNpemVvZihwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRy
aWdnZXJBdHRyaWJ1dGlvblBhdGgpIC0gMTsKICAgICBpZiAocGF0aC5sZW5ndGgoKSA9PSBwcmVm
aXhMZW5ndGggKyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQ
YXRoU2VnbWVudFNpemUpIHsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUlu
dDY0ID0gcGF0aC5zdWJzdHJpbmcocHJlZml4TGVuZ3RoLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUpLnRvVUludDY0U3RyaWN0KCk7
CisgICAgICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCA9IHBhcnNlSW50ZWdl
cjx1aW50NjRfdD4ocGF0aC5zdWJzdHJpbmcocHJlZml4TGVuZ3RoLCBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUpKTsKICAgICAgICAg
aWYgKCFhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0IHx8ICphdHRyaWJ1dGlvblRyaWdnZXJE
YXRhVUludDY0ID4gQXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6TWF4RW50cm9weSkKICAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFz
dXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIGNvbnZlcnNp
b24gZGF0YSBjb3VsZCBub3QgYmUgcGFyc2VkIG9yIHdhcyBoaWdoZXIgdGhhbiB0aGUgYWxsb3dl
ZCBtYXhpbXVtIG9mICJfcywgQXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6TWF4RW50cm9weSwgIi4i
X3MpKTsKIApAQCAtNzgsMTEgKzc5LDExIEBAIEV4cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBTdHJpbmc+IFByaXZhdGVDbGlja01lCiAgICAg
fQogICAgIAogICAgIGlmIChwYXRoLmxlbmd0aCgpID09IHByZWZpeExlbmd0aCArIHByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSArIDEg
KyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFByaW9yaXR5UGF0aFNlZ21lbnRTaXplKSB7Ci0gICAg
ICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCA9IHBhdGguc3Vic3RyaW5nKHBy
ZWZpeExlbmd0aCwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
UGF0aFNlZ21lbnRTaXplKS50b1VJbnQ2NFN0cmljdCgpOworICAgICAgICBhdXRvIGF0dHJpYnV0
aW9uVHJpZ2dlckRhdGFVSW50NjQgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHBhdGguc3Vic3Ry
aW5nKHByZWZpeExlbmd0aCwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhUGF0aFNlZ21lbnRTaXplKSk7CiAgICAgICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YVVJbnQ2NCB8fCAqYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCA+IEF0dHJpYnV0aW9u
VHJpZ2dlckRhdGE6Ok1heEVudHJvcHkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQobWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2Fz
IG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIGRhdGEgY291bGQgbm90IGJlIHBh
cnNlZCBvciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3MsIEF0dHJp
YnV0aW9uVHJpZ2dlckRhdGE6Ok1heEVudHJvcHksICIuIl9zKSk7CiAKLSAgICAgICAgYXV0byBh
dHRyaWJ1dGlvblByaW9yaXR5VUludDY0ID0gcGF0aC5zdWJzdHJpbmcocHJlZml4TGVuZ3RoICsg
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRT
aXplICsgMSwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRQcmlvcml0eVBhdGhTZWdtZW50U2l6ZSku
dG9VSW50NjRTdHJpY3QoKTsKKyAgICAgICAgYXV0byBhdHRyaWJ1dGlvblByaW9yaXR5VUludDY0
ID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90PihwYXRoLnN1YnN0cmluZyhwcmVmaXhMZW5ndGggKyBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNp
emUgKyAxLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFByaW9yaXR5UGF0aFNlZ21lbnRTaXplKSk7
CiAgICAgICAgIGlmICghYXR0cmlidXRpb25Qcmlvcml0eVVJbnQ2NCB8fCAqYXR0cmlidXRpb25Q
cmlvcml0eVVJbnQ2NCA+IFByaW9yaXR5OjpNYXhFbnRyb3B5KQogICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBD
b252ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgcHJpb3JpdHkgY291bGQgbm90
IGJlIHBhcnNlZCBvciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3Ms
IFByaW9yaXR5OjpNYXhFbnRyb3B5LCAiLiJfcykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggMDBkZTlhYzg1Njc0NDkzYzcwMGZkYzc5
MjBkYTcxMzM1Yzk1MDFiMC4uMDU1Nzk3ZjlmYjM4ZDA1M2JjMjY0ZDU2YjI2N2VjYmU3MzExODJk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmNwcApA
QCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyLmgiCiAjaW5jbHVk
ZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTExOCw3ICsxMTcsNyBAQCBpbnQgTWF0aE1MU2VsZWN0RWxlbWVudDo6
Z2V0U2VsZWN0ZWRBY3Rpb25DaGlsZEFuZEluZGV4KEVsZW1lbnQqJiBzZWxlY3RlZENoaWxkKQog
ICAgIGlmICghc2VsZWN0ZWRDaGlsZCkKICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICBpbnQgc2Vs
ZWN0aW9uID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihhdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKE1hdGhNTE5hbWVzOjpzZWxlY3Rpb25BdHRyKSkudmFsdWVP
cigwKTsKKyAgICBpbnQgc2VsZWN0aW9uID0gZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoTWF0aE1MTmFt
ZXM6OnNlbGVjdGlvbkF0dHIpOwogICAgIGludCBpOwogICAgIGZvciAoaSA9IDE7IGkgPCBzZWxl
Y3Rpb247IGkrKykgewogICAgICAgICBhdXRvKiBuZXh0Q2hpbGQgPSBzZWxlY3RlZENoaWxkLT5u
ZXh0RWxlbWVudFNpYmxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXgg
ZjFjNjc4NWE0YTM5ZWRlMmM0OTU0MjgxMWNiMTk1MmQwYjljNDJkMy4uZGJmNjM3Y2ZiMjk4MDY2
MWFhNjc3MGE3OGE0NDdhZmVkMDM1OWE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5j
cHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgzLDEyICszODQsMTAgQEAgdm9pZCBFdmVudFNvdXJj
ZTo6cGFyc2VFdmVudFN0cmVhbUxpbmUodW5zaWduZWQgcG9zaXRpb24sIE9wdGlvbmFsPHVuc2ln
bmVkPiBmaWUKICAgICAgICAgaWYgKCF2YWx1ZUxlbmd0aCkKICAgICAgICAgICAgIG1fcmVjb25u
ZWN0RGVsYXkgPSBkZWZhdWx0UmVjb25uZWN0RGVsYXk7CiAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSB3YW50IHRvIGlnbm9yZSB0cmFpbGluZyBnYXJi
YWdlIGhlcmU/IFNob3VsZCB3ZSBiZSB1c2luZyB0aGUgc3RyaWN0IHZlcnNpb24gaW5zdGVhZD8K
LSAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBjYW4ndCBwYXJzZSB0aGUgdmFsdWUsIHNob3Vs
ZCB3ZSBsZWF2ZSBtX3JlY29ubmVjdERlbGF5IGFsb25lIG9yIHNldCBpdCB0byBkZWZhdWx0UmVj
b25uZWN0RGVsYXk/Ci0gICAgICAgICAgICBib29sIG9rOwotICAgICAgICAgICAgYXV0byByZWNv
bm5lY3REZWxheSA9IGNoYXJhY3RlcnNUb1VJbnQ2NCgmbV9yZWNlaXZlQnVmZmVyW3Bvc2l0aW9u
XSwgdmFsdWVMZW5ndGgsICZvayk7Ci0gICAgICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAg
ICAgbV9yZWNvbm5lY3REZWxheSA9IHJlY29ubmVjdERlbGF5OworICAgICAgICAgICAgLy8gRklY
TUU6IERvIHdlIHJlYWxseSB3YW50IHRvIGlnbm9yZSB0cmFpbGluZyBqdW5rIGhlcmU/CisgICAg
ICAgICAgICAvLyBGSVhNRTogV2hlbiB3ZSBjYW4ndCBwYXJzZSB0aGUgdmFsdWUsIHNob3VsZCB3
ZSByZWFsbHkgbGVhdmUgbV9yZWNvbm5lY3REZWxheSBhbG9uZT8gU2hvdWxkbid0IHdlIHNldCBp
dCB0byBkZWZhdWx0UmVjb25uZWN0RGVsYXk/CisgICAgICAgICAgICBpZiAoYXV0byByZWNvbm5l
Y3REZWxheSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih7ICZt
X3JlY2VpdmVCdWZmZXJbcG9zaXRpb25dLCB2YWx1ZUxlbmd0aCB9KSkKKyAgICAgICAgICAgICAg
ICBtX3JlY29ubmVjdERlbGF5ID0gKnJlY29ubmVjdERlbGF5OwogICAgICAgICB9CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAppbmRleCBmNjBhZWFmMzUxNmY2NzZhMTVlMDY3NjA2
ZTI2NzYxN2IxNDRlNTZjLi4wOTVlNDc0ODVmM2JjNDU2NDAyM2IxMWY5OTliOTY0NjAyMTAwNTA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcApAQCAtMzQsOSArMzQsMTAgQEAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlv
blNjaGVkdWxlci5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0jaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJz
aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTY1LDcgKzE2Niw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQb3J0KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBE
T01XaW5kb3cmIGZpcnN0V2luCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwotICAgIHVybC5zZXRQb3J0
KHBhcnNlVUludDE2KHBvcnRTdHJpbmcpKTsKKyAgICB1cmwuc2V0UG9ydChwYXJzZUludGVnZXI8
dWludDE2X3Q+KHBvcnRTdHJpbmcpKTsKICAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2lu
ZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDc5YzA2N2I3MDk1ZmUyM2ZmNDAzODcxODUw
ZmY1Y2IzOTZlNTczYWIuLjc4YzJjYTA3NWViYTNhMmJhMzc1MjA5MWJhMzRhYzNlMDljNzNhNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
TnVtYmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24u
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDUsMjIgKzEwNiwxNSBAQCBPcHRpb25h
bDxTZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRl
bnRpZmllcihjb25zdCBTdAogICAgIGlmIChzZXBhcmF0b3IxID09IHNlcGFyYXRvcjIpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgLy8gTWFrZSBzdXJlIHRoZSBwb3J0
IHNlY3Rpb24gaXMgYSB2YWxpZCBwb3J0IG51bWJlciBvciBkb2Vzbid0IGV4aXN0Ci0gICAgYm9v
bCBwb3J0T2theTsKLSAgICBpbnQgcG9ydCA9IGRhdGFiYXNlSWRlbnRpZmllci5yaWdodChkYXRh
YmFzZUlkZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0b3IyIC0gMSkudG9JbnQoJnBvcnRPa2F5
KTsKLSAgICBib29sIHBvcnRBYnNlbnQgPSAoc2VwYXJhdG9yMiA9PSBkYXRhYmFzZUlkZW50aWZp
ZXIubGVuZ3RoKCkgLSAxKTsKLSAgICBpZiAoIShwb3J0T2theSB8fCBwb3J0QWJzZW50KSkKKyAg
ICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQgc2VjdGlvbiBpcyBhIHZhbGlkIHBvcnQgbnVtYmVyIG9y
IGRvZXNuJ3QgZXhpc3QuCisgICAgYXV0byBwb3J0TGVuZ3RoID0gZGF0YWJhc2VJZGVudGlmaWVy
Lmxlbmd0aCgpIC0gc2VwYXJhdG9yMiAtIDE7CisgICAgYXV0byBwb3J0ID0gcGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KFN0cmluZ1ZpZXcgeyBkYXRhYmFzZUlkZW50
aWZpZXIgfS5yaWdodChwb3J0TGVuZ3RoKSk7CisgICAgaWYgKCFwb3J0ICYmIHBvcnRMZW5ndGgp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCi0gICAgaWYgKHBvcnQgPCAwIHx8
IHBvcnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisKICAgICBhdXRvIHByb3RvY29sID0gZGF0YWJhc2VJ
ZGVudGlmaWVyLnN1YnN0cmluZygwLCBzZXBhcmF0b3IxKTsKICAgICBhdXRvIGhvc3QgPSBkYXRh
YmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKHNlcGFyYXRvcjEgKyAxLCBzZXBhcmF0b3IyIC0gc2Vw
YXJhdG9yMSAtIDEpOwotICAgIGlmICghcG9ydCkKLSAgICAgICAgcmV0dXJuIFNlY3VyaXR5T3Jp
Z2luRGF0YSB7IHByb3RvY29sLCBob3N0LCBXVEY6Om51bGxvcHQgfTsKLQotICAgIHJldHVybiBT
ZWN1cml0eU9yaWdpbkRhdGEgeyBwcm90b2NvbCwgaG9zdCwgc3RhdGljX2Nhc3Q8dWludDE2X3Q+
KHBvcnQpIH07CisgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSB7IHByb3RvY29sLCBob3N0
LCBwb3J0IH07CiB9CiAKIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6Omlz
b2xhdGVkQ29weSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRv
d0ZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCmlu
ZGV4IDkwMDNkOTdlZTU1NmRlNGYzNzQ1ZjIzM2RhM2NiMTE1MDEwNzc2ZDIuLjhjMGE0MmM4NzMz
NTUyZjdlZWFmMzg1OTZlZGZmMWI1YjJlZTdlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93
RmVhdHVyZXMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMyLDcgKzEzMyw3IEBAIHN0YXRpYyB2b2lkIHNl
dFdpbmRvd0ZlYXR1cmUoV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBTdHJpbmdWaWV3IGtleSwg
U3RyaW5nVmllCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSB8fCBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh2YWx1ZSwgInllcyIpKQogICAgICAgICBudW1lcmljVmFsdWUgPSAxOwogICAg
IGVsc2UKLSAgICAgICAgbnVtZXJpY1ZhbHVlID0gdmFsdWUudG9JbnQoKTsKKyAgICAgICAgbnVt
ZXJpY1ZhbHVlID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSku
dmFsdWVPcigwKTsKIAogICAgIC8vIFdlIHRyZWF0IGtleSBvZiAicmVzaXphYmxlIiBoZXJlIGFz
IGFuIGFkZGl0aW9uYWwgZmVhdHVyZSByYXRoZXIgdGhhbiBzZXR0aW5nIHJlc2l6ZWFibGUgdG8g
dHJ1ZS4KICAgICAvLyBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBGaXJlZm94LCBidXQgY291bGQg
YWxzbyBiZSBoYW5kbGVkIGF0IGFub3RoZXIgbGV2ZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCmlu
ZGV4IGI5ZjU0ODgwN2UzZDY0ZTdkMmMxNDg3ZGE1NjM2MDc2NmZhYzBjZTIuLjZhMzM2YjVhM2Ux
NjJiM2MyMWZhMjU5NjkzNTY1ZTcyNDU0M2JlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNDM1LDE0ICs0MzYsMTQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6UG9y
dD4KICAgICAKICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgIAotICAgIGJvb2wgb2s7Ci0gICAgaW50IHBvcnRJbnQgPSBjaGFyYWN0ZXJz
VG9JbnRTdHJpY3QoYmVnaW4sIGJ1ZmZlci5wb3NpdGlvbigpIC0gYmVnaW4sICZvayk7Ci0gICAg
aWYgKCFvayB8fCBwb3J0SW50IDwgMCB8fCBwb3J0SW50ID4gc3RkOjpudW1lcmljX2xpbWl0czx1
aW50MTZfdD46Om1heCgpKQorCisgICAgdW5zaWduZWQgbGVuZ3RoID0gYnVmZmVyLnBvc2l0aW9u
KCkgLSBiZWdpbjsKKyAgICBhdXRvIHBvcnRJbnRlZ2VyID0gcGFyc2VJbnRlZ2VyPHVpbnQxNl90
Pih7IGJlZ2luLCBsZW5ndGggfSkudmFsdWVPcigwKTsKKyAgICBpZiAoIXBvcnRJbnRlZ2VyKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgUG9ydCBwb3J0OwotICAgIHBvcnQu
dmFsdWUgPSBwb3J0SW50OworICAgIHBvcnQudmFsdWUgPSBwb3J0SW50ZWdlcjsKICAgICByZXR1
cm4gcG9ydDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNv
dXJjZVVzYWdlVGhyZWFkTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNv
dXJjZVVzYWdlVGhyZWFkTGludXguY3BwCmluZGV4IGM3ZTczZjBjMWMyNWJiYTA1ZjA2Yjg1MzI1
YjVjMzAzZTc3Y2RhNDguLmI2NTliNzc0ZjI2NDAxM2ExN2NmNTZlNmMxMzEwMjVlZWNjYmNlMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVh
ZExpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VU
aHJlYWRMaW51eC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL2xpbnV4L0N1cnJlbnRQcm9j
ZXNzTWVtb3J5U3RhdHVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29u
dmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIwMCwyMCArMjAxLDE1IEBA
IHN0YXRpYyB2b2lkIGNvbGxlY3RDUFVVc2FnZShmbG9hdCBwZXJpb2QpCiAKICAgICBzdHJ1Y3Qg
ZGlyZW50KiBkcDsKICAgICB3aGlsZSAoKGRwID0gcmVhZGRpcihkaXIpKSkgewotICAgICAgICBT
dHJpbmcgbmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoZHAtPmRfbmFtZSk7Ci0gICAgICAgIGlmIChu
YW1lID09ICIuIiB8fCBuYW1lID09ICIuLiIpCisgICAgICAgIGF1dG8gaWQgPSBwYXJzZUludGVn
ZXI8cGlkX3Q+KGRwLT5kX25hbWUpOworICAgICAgICBpZiAoIWlkKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgYm9vbCBvazsKLSAgICAgICAgcGlkX3QgaWQgPSBuYW1lLnRvSW50
U3RyaWN0KCZvayk7Ci0gICAgICAgIGlmICghb2spCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBhdXRvJiBpbmZvID0gdGhyZWFkSW5mb01hcCgpLmFkZChpZCwgVGhyZWFkSW5mbygp
KS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgIGlmICghdGhyZWFkQ1BVVXNhZ2UoaWQsIHBlcmlv
ZCwgaW5mbykpCi0gICAgICAgICAgICB0aHJlYWRJbmZvTWFwKCkucmVtb3ZlKGlkKTsKKyAgICAg
ICAgYXV0byYgaW5mbyA9IHRocmVhZEluZm9NYXAoKS5hZGQoKmlkLCBUaHJlYWRJbmZvKCkpLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYgKCF0aHJlYWRDUFVVc2FnZSgqaWQsIHBlcmlvZCwg
aW5mbykpCisgICAgICAgICAgICB0aHJlYWRJbmZvTWFwKCkucmVtb3ZlKCppZCk7CiAKLSAgICAg
ICAgcHJldmlvdXNUYXNrcy5yZW1vdmUoaWQpOworICAgICAgICBwcmV2aW91c1Rhc2tzLnJlbW92
ZSgqaWQpOwogICAgIH0KICAgICBjbG9zZWRpcihkaXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGRiMzY0NDczNDU0NTI4N2ZjMzEzNjYzZWE5
NjljYjYzNDE2MGZmNTQuLmMxMjRlNzhkMjdkMmE1NzgzZjZiOGM0ZTAzOGE3ZjExNmMzMjhjMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0zOCw2
ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RG
R1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIHVzaW5nIFdURjo6RGF0YU11dGV4OwpAQCAtMTA3MSwxNyArMTA3MiwxMiBAQCB2b2lkIENh
Y2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbgogCiAgICAgLy8gU2lnbmFsIHRvIGRvd25zdHJlYW0gaWYgdGhpcyBp
cyBhbiBJY2VjYXN0IHN0cmVhbS4KICAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHM7Ci0gICAgU3Ry
aW5nIG1ldGFkYXRhSW50ZXJ2YWxBc1N0cmluZyA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6SWN5TWV0YUludCk7Ci0gICAgaWYgKCFtZXRhZGF0YUludGVydmFsQXNT
dHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGJvb2wgaXNNZXRhZGF0YUludGVydmFsUGFyc2Vk
OwotICAgICAgICBpbnQgbWV0YWRhdGFJbnRlcnZhbCA9IG1ldGFkYXRhSW50ZXJ2YWxBc1N0cmlu
Zy50b0ludCgmaXNNZXRhZGF0YUludGVydmFsUGFyc2VkKTsKLSAgICAgICAgaWYgKGlzTWV0YWRh
dGFJbnRlcnZhbFBhcnNlZCAmJiBtZXRhZGF0YUludGVydmFsID4gMCkgewotICAgICAgICAgICAg
Y2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LWljeSIs
ICJtZXRhZGF0YS1pbnRlcnZhbCIsIEdfVFlQRV9JTlQsIG1ldGFkYXRhSW50ZXJ2YWwsIG51bGxw
dHIpKTsKLQotICAgICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gcmVzcG9uc2UuaHR0cEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSk7Ci0gICAgICAgICAgICBHU1Rf
REVCVUdfT0JKRUNUKHNyYywgIlIldTogUmVzcG9uc2UgQ29udGVudFR5cGU6ICVzIiwgbV9yZXF1
ZXN0TnVtYmVyLCBjb250ZW50VHlwZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGdzdF9j
YXBzX3NldF9zaW1wbGUoY2Fwcy5nZXQoKSwgImNvbnRlbnQtdHlwZSIsIEdfVFlQRV9TVFJJTkcs
IGNvbnRlbnRUeXBlLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpOwotICAgICAgICB9CisgICAgaWYg
KGF1dG8gbWV0YWRhdGFJbnRlcnZhbCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PGludD4ocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhSW50
KSk7IG1ldGFkYXRhSW50ZXJ2YWwgJiYgKm1ldGFkYXRhSW50ZXJ2YWwgPiAwKSB7CisgICAgICAg
IGNhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X3NpbXBsZSgiYXBwbGljYXRpb24veC1pY3ki
LCAibWV0YWRhdGEtaW50ZXJ2YWwiLCBHX1RZUEVfSU5ULCAqbWV0YWRhdGFJbnRlcnZhbCwgbnVs
bHB0cikpOworCisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZSA9IHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpOworICAgICAgICBHU1RfREVCVUdf
T0JKRUNUKHNyYywgIlIldTogUmVzcG9uc2UgQ29udGVudFR5cGU6ICVzIiwgbV9yZXF1ZXN0TnVt
YmVyLCBjb250ZW50VHlwZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZ3N0X2NhcHNfc2V0X3Np
bXBsZShjYXBzLmdldCgpLCAiY29udGVudC10eXBlIiwgR19UWVBFX1NUUklORywgY29udGVudFR5
cGUudXRmOCgpLmRhdGEoKSwgbnVsbHB0cik7CiAgICAgfQogICAgIGlmIChjYXBzKSB7CiAgICAg
ICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUiV1OiBTZXQgY2FwcyB0byAlIiBHU1RfUFRSX0ZP
Uk1BVCwgbV9yZXF1ZXN0TnVtYmVyLCBjYXBzLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIu
Y3BwCmluZGV4IGJjMTZlY2Y3MTU0OWRlNjg1NDFlOGE1YWRhNGE5NmFhY2JhYzRhZGUuLjE3ZGMx
NjM0NDM3YzY0YjkxNDgwMzIzMDg2ZjdkNTg3ZGE4ZjVhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVu
ZGVyLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBH
U1RfREVCVUdfQ0FURUdPUlkod2Via2l0TWVkaWFUaHVuZGVyRGVidWdDYXRlZ29yeSk7CiAjZGVm
aW5lIEdTVF9DQVRfREVGQVVMVCB3ZWJraXRNZWRpYVRodW5kZXJEZWJ1Z0NhdGVnb3J5CkBAIC0z
NDksOCArMzUwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFyZXF1ZXN0VHlwZS5pc0VtcHR5
KCkgJiYgcmVxdWVzdFR5cGUubGVuZ3RoKCkgIT0gcGF5bG9hZC5sZW5ndGgoKSkKICAgICAgICAg
ICAgIG9mZnNldCA9IHR5cGVQb3NpdGlvbiArIDY7CiAKLSAgICAgICAgaWYgKHJlcXVlc3RUeXBl
Lmxlbmd0aCgpID09IDEpCi0gICAgICAgICAgICBtX3R5cGUgPSBtYWtlT3B0aW9uYWwoc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4ocmVxdWVzdFR5cGUudG9JbnQoKSkp
OworICAgICAgICBpZiAocmVxdWVzdFR5cGUubGVuZ3RoKCkgPT0gMSkgeworICAgICAgICAgICAg
Ly8gRklYTUU6IFRoZXJlIGFyZSBzaW1wbGVyIHdheXMgdG8gY29udmVydCBhIHNpbmdsZSBkaWdp
dCB0byBhIG51bWJlciB0aGFuIGNhbGxpbmcgcGFyc2VJbnRlZ2VyLgorICAgICAgICAgICAgbV90
eXBlID0gbWFrZU9wdGlvbmFsKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5
cGU+KHBhcnNlSW50ZWdlcjxpbnQ+KHJlcXVlc3RUeXBlKS52YWx1ZU9yKDApKSk7CisgICAgICAg
IH0KIAogICAgICAgICBtX3BheWxvYWQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwYXlsb2FkLmNo
YXJhY3RlcnM4KCkgKyBvZmZzZXQsIHBheWxvYWQubGVuZ3RoKCkgLSBvZmZzZXQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAK
aW5kZXggODQ2YTlhZTJmMjc1NGU1YTMzM2YyNzM1OTU5NmNiMzY4NGZhOWE2Yi4uNWQ1MmM5ODgy
YTMzMTUyMDg1NmExYjYyMzBmMWRkYjIxMDgwZDlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgog
I2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50
ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogLyog
VGhpcyBpcyB0aGUgbWF4aW11bSBsaW5lIGxlbmd0aCB3ZSBhY2NlcHQgZm9yIGEgY29va2llIGxp
bmUuIFJGQyAyMTA5CkBAIC0xMTcsMTAgKzExOCw4IEBAIHN0YXRpYyB2b2lkIHBhcnNlQ29va2ll
QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgYm9vbCYgaGFzTWF4QWdlLCBDb29r
CiAgICAgICAgIHJlc3VsdC5kb21haW4gPSBhdHRyaWJ1dGVWYWx1ZS5jb252ZXJ0VG9BU0NJSUxv
d2VyY2FzZSgpOwogCiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGF0dHJp
YnV0ZU5hbWUsICJtYXgtYWdlIikpIHsKLSAgICAgICAgYm9vbCBvazsKLSAgICAgICAgZG91Ymxl
IG1heEFnZVNlY29uZHMgPSBhdHRyaWJ1dGVWYWx1ZS50b0ludDY0KCZvayk7Ci0gICAgICAgIGlm
IChvaykgewotICAgICAgICAgICAgcmVzdWx0LmV4cGlyZXMgPSAoV2FsbFRpbWU6Om5vdygpLnNl
Y29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSArIG1heEFnZVNlY29uZHMpICogV1RGOjptc1BlclNl
Y29uZDsKKyAgICAgICAgaWYgKGF1dG8gbWF4QWdlU2Vjb25kcyA9IHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPGludDY0X3Q+KGF0dHJpYnV0ZVZhbHVlKSkgeworICAgICAgICAgICAg
cmVzdWx0LmV4cGlyZXMgPSAoV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKSArICptYXhBZ2VTZWNvbmRzKSAqIFdURjo6bXNQZXJTZWNvbmQ7CiAgICAgICAgICAgICBy
ZXN1bHQuc2Vzc2lvbiA9IGZhbHNlOwogCiAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIG1h
eC1hZ2UgYXR0cmlidXRlIGFzIHdlbGwgYXMgYW4gZXhwaXJlcyBhdHRyaWJ1dGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnku
Y3BwCmluZGV4IDllZjUwNzk3Y2NmZGM1MjA2ZGQwNDMwNjcyMmZiZmU4MjEwMDI0YTUuLjllNzcy
ZWVkMTZmNGJkM2JmNjIyYjczMWExMGY1NjM2ZTEwMTYyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAt
NDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9I
ZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
ODcsMTAgKzE4OCw4IEBAIHZvaWQgQ3VybENhY2hlRW50cnk6OnNldFJlc3BvbnNlRnJvbUNhY2hl
ZEhlYWRlcnMoUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgLy8gVHJ5IHRvIHBhcnNl
IGV4cGVjdGVkIGNvbnRlbnQgbGVuZ3RoCiAgICAgbG9uZyBsb25nIGNvbnRlbnRMZW5ndGggPSAt
MTsKICAgICBpZiAoIXJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29u
dGVudExlbmd0aCkuaXNOdWxsKCkpIHsKLSAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0g
ICAgICAgIGxvbmcgbG9uZyBwYXJzZWRDb250ZW50TGVuZ3RoID0gcmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50TGVuZ3RoKS50b0ludDY0KCZzdWNjZXNzKTsK
LSAgICAgICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgICAgICBjb250ZW50TGVuZ3RoID0gcGFyc2Vk
Q29udGVudExlbmd0aDsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkQ29udGVudExlbmd0aCA9IHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGxvbmcgbG9uZz4ocmVzcG9uc2UuaHR0cEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50TGVuZ3RoKSkpCisgICAgICAgICAgICBj
b250ZW50TGVuZ3RoID0gKnBhcnNlZENvbnRlbnRMZW5ndGg7CiAgICAgfQogICAgIHJlc3BvbnNl
LnNldEV4cGVjdGVkQ29udGVudExlbmd0aChjb250ZW50TGVuZ3RoKTsgLy8gLTEgb24gcGFyc2Ug
ZXJyb3Igb3IgbnVsbAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZG
b250Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVy
c2lvbi5jcHAKaW5kZXggM2Q0YTdlMzE4ZjA0NTQ4ODJhODNhZDM3MDM5MTk4ZWVkN2Q3MzQxZS4u
NjA2YzFmNjlhYTQzMjk4NzIyYTVjNWM4NWI5ZTBhZmM2ZGYzNmU0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJFbGVtZW50Q2hpbGRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkdseXBoLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9t
cy5oIgogI2luY2x1ZGUgIlNWR0ZvbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRm9udEZhY2VF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHR2x5cGhFbGVtZW50LmgiCkBAIC00OTAsOSArNDkxLDkg
QEAgdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZE5BTUVUYWJsZSgpCiB2b2lkIFNW
R1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kT1MyVGFibGUoKQogewogICAgIGludDE2X3QgYXZl
cmFnZUFkdmFuY2UgPSBzX291dHB1dFVuaXRzUGVyRW07Ci0gICAgYXV0byBob3JpekFkdlggPSBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KG1fZm9udEVsZW1lbnQuYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6aG9yaXpfYWR2X3hBdHRyKSk7Cisg
ICAgYXV0byBob3JpekFkdlggPSBwYXJzZUhUTUxJbnRlZ2VyKG1fZm9udEVsZW1lbnQuYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6aG9yaXpfYWR2X3hBdHRyKSk7CiAg
ICAgaWYgKCFob3JpekFkdlggJiYgbV9taXNzaW5nR2x5cGhFbGVtZW50KQotICAgICAgICBob3Jp
ekFkdlggPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KG1fbWlzc2luZ0ds
eXBoRWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6aG9y
aXpfYWR2X3hBdHRyKSk7CisgICAgICAgIGhvcml6QWR2WCA9IHBhcnNlSFRNTEludGVnZXIobV9t
aXNzaW5nR2x5cGhFbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05h
bWVzOjpob3Jpel9hZHZfeEF0dHIpKTsKICAgICBpZiAoaG9yaXpBZHZYKQogICAgICAgICBhdmVy
YWdlQWR2YW5jZSA9IGNsYW1wVG88aW50MTZfdD4oc2NhbGVVbml0c1BlckVtKCpob3JpekFkdlgp
KTsKIApAQCAtOTQ0LDE2ICs5NDUsMTYgQEAgdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFw
cGVuZFZPUkdUYWJsZSgpCiAgICAgYXBwZW5kMTYoMSk7IC8vIE1ham9yIHZlcnNpb24KICAgICBh
cHBlbmQxNigwKTsgLy8gTWlub3IgdmVyc2lvbgogCi0gICAgYXV0byB2ZXJ0T3JpZ2luWSA9IHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV9mb250RWxlbWVudC5hdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29yaWdpbl95QXR0cikpOwor
ICAgIGF1dG8gdmVydE9yaWdpblkgPSBwYXJzZUhUTUxJbnRlZ2VyKG1fZm9udEVsZW1lbnQuYXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6dmVydF9vcmlnaW5feUF0dHIp
KTsKICAgICBpZiAoIXZlcnRPcmlnaW5ZICYmIG1fbWlzc2luZ0dseXBoRWxlbWVudCkKLSAgICAg
ICAgdmVydE9yaWdpblkgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KG1f
bWlzc2luZ0dseXBoRWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdO
YW1lczo6dmVydF9vcmlnaW5feUF0dHIpKTsKLSAgICBhcHBlbmQxNihjbGFtcFRvPGludDE2X3Q+
KHNjYWxlVW5pdHNQZXJFbSh2ZXJ0T3JpZ2luWS52YWx1ZU9yKDApKSkpOworICAgICAgICB2ZXJ0
T3JpZ2luWSA9IHBhcnNlSFRNTEludGVnZXIobV9taXNzaW5nR2x5cGhFbGVtZW50LT5hdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29yaWdpbl95QXR0cikpOwor
ICAgIGFwcGVuZDE2KGNsYW1wVG88aW50MTZfdD4oc2NhbGVVbml0c1BlckVtKHZlcnRPcmlnaW5Z
LnZhbHVlX29yKDApKSkpOwogCiAgICAgYXV0byB0YWJsZVNpemVPZmZzZXQgPSBtX3Jlc3VsdC5z
aXplKCk7CiAgICAgYXBwZW5kMTYoMCk7IC8vIFBsYWNlIHRvIHdyaXRlIHRhYmxlIHNpemUuCiAg
ICAgZm9yIChHbHlwaCBpID0gMDsgaSA8IG1fZ2x5cGhzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBnbHlwaCA9IG1fZ2x5cGhzW2ldLmdseXBoRWxlbWVudCkgewotICAgICAgICAg
ICAgaWYgKGF1dG8gdmVydGljYWxPcmlnaW5ZID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8aW50PihnbHlwaC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1l
czo6dmVydF9vcmlnaW5feUF0dHIpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gdmVydGljYWxP
cmlnaW5ZID0gcGFyc2VIVE1MSW50ZWdlcihnbHlwaC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihTVkdOYW1lczo6dmVydF9vcmlnaW5feUF0dHIpKSkgewogICAgICAgICAgICAgICAg
IGFwcGVuZDE2KGkpOwogICAgICAgICAgICAgICAgIGFwcGVuZDE2KGNsYW1wVG88aW50MTZfdD4o
c2NhbGVVbml0c1BlckVtKCp2ZXJ0aWNhbE9yaWdpblkpKSk7CiAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNDRmYjQ1ZTllYmRmNTljMzA3ZTljYTVk
YzgyYWZlZWIyMjdhYzA1MC4uOTAwMDE2NWIwYTRiNDdkY2Q4OWYzYmFhZjBkMjA5ZWMzMDJkMzI3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjMzLDYgKzIzMyw3IEBA
CiAjaW5jbHVkZSA8d3RmL1VSTEhlbHBlcnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiAjaWYg
VVNFKENHKQogI2luY2x1ZGUgIlBERkRvY3VtZW50SW1hZ2UuaCIKQEAgLTM2MiwxMCArMzYzLDkg
QEAgdXNpbmcgSlNDOjpQcm9wZXJ0eVNsb3Q7CiB1c2luZyBKU0M6OlNjcmlwdEV4ZWN1dGFibGU7
CiB1c2luZyBKU0M6OlN0YWNrVmlzaXRvcjsKIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogY2xhc3MgSW5zcGVjdG9yU3R1YkZyb250ZW5kIGZp
bmFsIDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwsIHB1YmxpYyBGcm9udGVu
ZENoYW5uZWwgewpAQCAtMTYwMSw3ICsxNjAxLDcgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFdlYlJU
Q1ZQOVZUQlN1cHBvcnQoYm9vbCB2YWx1ZSkKIAogdm9pZCBJbnRlcm5hbHM6OnNldFNGcmFtZUNv
dW50ZXIoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFN0cmluZyYgY291
bnRlcikKIHsKLSAgICBpZiAoYXV0byB2YWx1ZSA9IFN0cmluZ1ZpZXcoY291bnRlcikudG9VSW50
NjRTdHJpY3QoKSkKKyAgICBpZiAoYXV0byB2YWx1ZSA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4o
Y291bnRlcikpCiAgICAgICAgIHRyYW5zZm9ybS5zZXRDb3VudGVyRm9yVGVzdGluZygqdmFsdWUp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3Bw
IGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCA4Yjc5YWFlNGFk
OTY3OTcxZmI1Y2NhYTAyZTI3MGI0ZDcyMjRhNmQ0Li5mMTFiZmVkYzE0N2NkYTNlZTcyNzMzMmJm
MTc5ZjFlZjE2MjFhMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNl
cnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb21tYW5kUmVzdWx0LmgiCiAjaW5jbHVkZSAiU2Vz
c2lvbkhvc3QuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkRyaXZlciB7CkBAIC0xMTgsMjEgKzExOSwyMCBAQCBpbnQg
V2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgYXV0
byBwb3NpdGlvbiA9IHRhcmdldFN0cmluZy5yZXZlcnNlRmluZCgiOiJfcyk7CiAgICAgICAgIGlm
IChwb3NpdGlvbiAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgbV90YXJnZXRBZGRyZXNzID0g
dGFyZ2V0U3RyaW5nLmxlZnQocG9zaXRpb24pOwotICAgICAgICAgICAgbV90YXJnZXRQb3J0ID0g
dGFyZ2V0U3RyaW5nLnN1YnN0cmluZyhwb3NpdGlvbiArIDEpLnRvVUludChudWxscHRyKTsKKyAg
ICAgICAgICAgIG1fdGFyZ2V0UG9ydCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PHVpbnQxNl90PihTdHJpbmdWaWV3IHsgdGFyZ2V0U3RyaW5nIH0uc3Vic3RyaW5nKHBvc2l0aW9u
ICsgMSkpLnZhbHVlT3IoMCk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKIAotICAgIGJvb2wg
b2s7Ci0gICAgdW5zaWduZWQgcG9ydCA9IHBvcnRTdHJpbmcudG9VSW50KCZvayk7Ci0gICAgaWYg
KCFvaykgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgcG9ydCAlcyBwcm92aWRl
ZFxuIiwgcG9ydFN0cmluZy5hc2NpaSgpLmRhdGEoKSk7CisgICAgYXV0byBwb3J0ID0gcGFyc2VJ
bnRlZ2VyPHVpbnQxNl90Pihwb3J0U3RyaW5nKTsKKyAgICBpZiAoIXBvcnQpIHsKKyAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIHBvcnQgJXMgcHJvdmlkZWRcbiIsIHBvcnRTdHJpbmcu
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgfQogCiAg
ICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogCi0gICAgaWYgKCFtX3NlcnZlci5saXN0
ZW4oaG9zdCwgcG9ydCkpCisgICAgaWYgKCFtX3NlcnZlci5saXN0ZW4oaG9zdCwgKnBvcnQpKQog
ICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogCiAgICAgUnVuTG9vcDo6cnVuKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvV2ViRHJpdmVyU2VydmljZUdMaWIuY3BwIGIv
U291cmNlL1dlYkRyaXZlci9nbGliL1dlYkRyaXZlclNlcnZpY2VHTGliLmNwcAppbmRleCA5NDE3
OTNkM2VhZDBlOTg2MzJhZjMzMTc5MmYzYTc0YzViNGI2ZjRhLi5kNmZkMjE5OTdmMzllZDFlMDQx
YzUxODU5NjNhNjhjMWY0Y2VkZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIv
V2ViRHJpdmVyU2VydmljZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9XZWJE
cml2ZXJTZXJ2aWNlR0xpYi5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJEcml2ZXJTZXJ2aWNlLmgiCiAKKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CisKIG5hbWVzcGFjZSBXZWJEcml2ZXIgewogCiBz
dGF0aWMgYm9vbCBwYXJzZVZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCB1aW50NjRfdCYg
bWFqb3IsIHVpbnQ2NF90JiBtaW5vciwgdWludDY0X3QmIG1pY3JvKQpAQCAtMzUsMjAgKzM3LDI2
IEBAIHN0YXRpYyBib29sIHBhcnNlVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIHVpbnQ2
NF90JiBtYWpvciwgdWludDY0X3QmIG1pbm9yCiAgICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zID0g
dmVyc2lvbi5zcGxpdCgnLicpOwogICAgIGJvb2wgb2s7CiAgICAgc3dpdGNoICh0b2tlbnMuc2l6
ZSgpKSB7Ci0gICAgY2FzZSAzOgotICAgICAgICBtaWNybyA9IHRva2Vuc1syXS50b0ludDY0KCZv
ayk7Ci0gICAgICAgIGlmICghb2spCisgICAgY2FzZSAzOiB7CisgICAgICAgIGF1dG8gcGFyc2Vk
TWljcm8gPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odG9rZW5z
WzJdKTsKKyAgICAgICAgaWYgKCFwYXJzZWRNaWNybykKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgbWljcm8gPSAqcGFyc2VkTWljcm87CisgICAgfQogICAgICAgICBGQUxMVEhS
T1VHSDsKLSAgICBjYXNlIDI6Ci0gICAgICAgIG1pbm9yID0gdG9rZW5zWzFdLnRvSW50NjQoJm9r
KTsKLSAgICAgICAgaWYgKCFvaykKKyAgICBjYXNlIDI6IHsKKyAgICAgICAgYXV0byBwYXJzZWRN
aW5vciA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0b2tlbnNb
MV0pOworICAgICAgICBpZiAoIXBhcnNlZE1pbm9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBtaW5vciA9ICpwYXJzZWRNaW5vcjsKKyAgICB9CiAgICAgICAgIEZBTExUSFJP
VUdIOwotICAgIGNhc2UgMToKLSAgICAgICAgbWFqb3IgPSB0b2tlbnNbMF0udG9JbnQ2NCgmb2sp
OwotICAgICAgICBpZiAoIW9rKQorICAgIGNhc2UgMTogeworICAgICAgICBhdXRvIHBhcnNlZE1h
am9yID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRva2Vuc1sw
XSk7CisgICAgICAgIGlmICghcGFyc2VkTWFqb3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIG1ham9yID0gKnBhcnNlZE1ham9yOworICAgIH0KICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkRyaXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9I
VFRQUGFyc2VyLmNwcAppbmRleCAzN2JlZDI5MWU5NjM2YmY3MjdmYmQxZGQ5ODAwMDJmOGRmN2M5
NTlhLi43N2YzNTFkOTU4YWZmMWFmZWEzZjhkMDcxNzQwMDkyMWMyYWVjNjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL3NvY2tldC9IVFRQUGFyc2VyLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXIuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KKwogbmFtZXNwYWNlIFdlYkRyaXZlciB7CiAK
IEhUVFBQYXJzZXI6OlBoYXNlIEhUVFBQYXJzZXI6OnBhcnNlKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpCkBAIC0xNDUsMTAgKzE0Nyw4IEBAIHNpemVfdCBIVFRQUGFyc2VyOjpleHBlY3RlZEJvZHlM
ZW5ndGgoKSBjb25zdAogICAgIGNvbnN0IHNpemVfdCBuYW1lTGVuZ3RoID0gc3RkOjpzdHJsZW4o
bmFtZSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRlciA6IG1fbWVzc2FnZS5yZXF1ZXN0
SGVhZGVycykgewotICAgICAgICBpZiAoaGVhZGVyLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGhlYWRlci5zdWJzdHJpbmdTaGFy
aW5nSW1wbChuYW1lTGVuZ3RoKS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgICAgIHJldHVy
biB2YWx1ZS50b0ludCgpOwotICAgICAgICB9CisgICAgICAgIGlmIChoZWFkZXIuc3RhcnRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPHNpemVfdD4oU3RyaW5nVmlldyB7IGhlYWRlciB9LnN1YnN0
cmluZyhuYW1lTGVuZ3RoKSkudmFsdWVPcigwKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VX
aW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdp
bi5jcHAKaW5kZXggNTgzNDk1YzI2Y2UzMmU4YjVhNTJhMDZiYWZjNjdhODNlNzg4YzEzZS4uZjYz
M2MzNGExMzRiMGI2NWJlOGFhMTFiNjU2YjNmZTkwZTIxZTA2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTEzMywxMCArMTM0LDcgQEAgc3RhdGljIGlubGluZSBWZWN0b3I8aW50PiBwYXJzZVZlcnNpb25T
dHJpbmcoY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKQogICAgICAgICBmb3IgKGVuZFBvcyA9
IHN0YXJ0UG9zOyBlbmRQb3MgPCB2ZXJzaW9uU3RyaW5nLmxlbmd0aCgpOyArK2VuZFBvcykKICAg
ICAgICAgICAgIGlmICh2ZXJzaW9uU3RyaW5nW2VuZFBvc10gPT0gJy4nIHx8IHZlcnNpb25TdHJp
bmdbZW5kUG9zXSA9PSAnXycpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgaW50
IHZlcnNpb25Db21wb25lbnQgPSB2ZXJzaW9uU3RyaW5nLnN1YnN0cmluZyhzdGFydFBvcywgZW5k
UG9zIC0gc3RhcnRQb3MpLnRvSW50KCk7Ci0gICAgICAgIHZlcnNpb24uYXBwZW5kKHZlcnNpb25D
b21wb25lbnQpOwotCisgICAgICAgIHZlcnNpb24uYXBwZW5kKHBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rPGludD4oU3RyaW5nVmlldyB7IHZlcnNpb25TdHJpbmcgfS5zdWJzdHJpbmco
c3RhcnRQb3MsIGVuZFBvcyAtIHN0YXJ0UG9zKSkudmFsdWVPcigwKSk7CiAgICAgICAgIHN0YXJ0
UG9zID0gZW5kUG9zICsgMTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDJmNDA1ZmI4Y2U0ZTc0MmEwODExMDU5OGI4YzUy
N2E5MjZhYWZkNGUuLmUzODQwMjJjMzQwMjNiMWUzNWUyYTJlMDk2YTIyOWJiOWUwMzA3YTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAt
NzQsNiArNzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvbnBydW50aW1lX2ltcGwuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL3J1bnRpbWVfcm9vdC5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCkBAIC0xMDcxLDcgKzEwNzIsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3Qo
Y29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiB0YXJnZXQsIHVpbnQzMl90IGxlbgogICAgICAg
ICAgICAgICAgIFN0cmluZyBjb250ZW50TGVuZ3RoID0gaGVhZGVyRmllbGRzLmdldChIVFRQSGVh
ZGVyTmFtZTo6Q29udGVudExlbmd0aCk7CiAKICAgICAgICAgICAgICAgICBpZiAoIWNvbnRlbnRM
ZW5ndGguaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMZW5ndGggPSBzdGQ6Om1p
bihjb250ZW50TGVuZ3RoLnRvSW50KCksIChpbnQpZGF0YUxlbmd0aCk7CisgICAgICAgICAgICAg
ICAgICAgIGRhdGFMZW5ndGggPSBzdGQ6Om1pbihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazx1bnNpZ25lZD4oY29udGVudExlbmd0aCkudmFsdWVPcigwKSwgZGF0YUxlbmd0aCk7CiAg
ICAgICAgICAgICAgICAgaGVhZGVyRmllbGRzLnJlbW92ZShIVFRQSGVhZGVyTmFtZTo6Q29udGVu
dExlbmd0aCk7CiAKICAgICAgICAgICAgICAgICBwb3N0RGF0YSArPSBsb2NhdGlvbjsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmMmI0YjRjZjNj
YjdkMzFiMjdmNDJkYjc3MDU0M2U1Y2I5YWIwYWE0Li4wMWQ3M2U5MWY0MDUyNTlmMTQ0YWUyNjMz
YjI3MTdmM2E0YzZmOGRlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMDkgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBhbGwgcmVtYWluaW5nIHVzZXMgb2YgdGhl
IFN0cmluZzo6dG9JbnQgZmFtaWx5IG9mIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOiBVc2UKKyAgICAgICAg
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PiBpbnN0ZWFkIG9mIFN0cmluZzo6
dG9JbnQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNh
bExldmVsIGNvbnN0KTogRGl0dG8uCisKIDIwMjEtMDUtMDkgIEtoZW0gUmFqICA8cmFqLmtoZW1A
Z21haWwuY29tPgogCiAgICAgICAgIFtUb29sc10gR2VuZXJhdGUgbWFyc2hhbGxpbmcgY29kZSB3
aXRob3V0IHNvdXJjZSByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHAKaW5kZXggNGRjZjRjMDM3NjExNzcxNjY1ZjMzYjgyNzhhZGJmM2Y4NjM1ZmVk
OC4uOTU1NjFhOGVmNjA5MGMyNzFlOTYzZjkyYWFiNjY2NDQwNWEwYTUxMyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudEF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNp
bmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUv
Q2hhcmFjdGVyTmFtZXMuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBAIC0xMTM5LDcgKzExNDAsNyBA
QCBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNT
dHJpbmdSZWYgYXR0cmlidXRlKQogICAgIGlmIChhdGtBdHRyaWJ1dGVOYW1lLnN0YXJ0c1dpdGgo
InJvdyIpIHx8IGF0a0F0dHJpYnV0ZU5hbWUuc3RhcnRzV2l0aCgiY29sIikpIHsKICAgICAgICAg
U3RyaW5nIGF0dHJpYnV0ZVZhbHVlID0gZ2V0QXR0cmlidXRlU2V0VmFsdWVGb3JJZChBVEtfT0JK
RUNUKG1fZWxlbWVudC5nZXQoKSksIE9iamVjdEF0dHJpYnV0ZVR5cGUsIGF0a0F0dHJpYnV0ZU5h
bWUpOwogICAgICAgICBpZiAoIWF0dHJpYnV0ZVZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IHJldHVybiBhdHRyaWJ1dGVWYWx1ZS50b0ludCgpOworICAgICAgICAgICAgcmV0dXJuIHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oYXR0cmlidXRlVmFsdWUpLnZhbHVlT3Io
MCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0xNjMyLDExICsxNjMzLDcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAogCiBpbnQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAogewotICAgIFN0
cmluZyBsZXZlbCA9IGdldEF0dHJpYnV0ZVNldFZhbHVlRm9ySWQoQVRLX09CSkVDVChtX2VsZW1l
bnQuZ2V0KCkpLCBPYmplY3RBdHRyaWJ1dGVUeXBlLCAibGV2ZWwiKTsKLSAgICBpZiAoIWxldmVs
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGxldmVsLnRvSW50KCk7Ci0KLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihnZXRB
dHRyaWJ1dGVTZXRWYWx1ZUZvcklkKEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSwgT2JqZWN0
QXR0cmlidXRlVHlwZSwgImxldmVsIikpLnZhbHVlT3IoMCk7CiB9CiAKIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVha0FzKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428143</attachid>
            <date>2021-05-09 16:26:56 -0700</date>
            <delta_ts>2021-05-10 08:53:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225580-20210509162656.patch</filename>
            <type>text/plain</type>
            <size>94444</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkzZjJhODQ0ZjUwOWE1
ZmQxZGUzZGJjM2E5ZjY1Y2RmOTkyZjE3Ni4uZDBhOTdjYzJkYjA3MDY3MDk5YjU5YzUwNjA5MWE5
ZjAwY2U3NDIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMS0wNS0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGFsbCByZW1haW5p
bmcgdXNlcyBvZiB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNl
SW5mbyk6CisgICAgICAgIFVzZSBwYXJzZUludGVnZXI8dWludDY0X3Q+IGluc3RlYWQgb2YgU3Ry
aW5nOjp0b1VJbnQ2NFN0cmljdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUpOgorICAgICAg
ICBEaXR0by4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVG
cmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgVXNlIGEgcmVm
ZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2UpOiBVc2UKKyAgICAgICAgQVND
SUlMaXRlcmFsLiBVc2UgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PiBpbnN0
ZWFkIG9mCisgICAgICAgIFN0cmluZzo6dG9JbnQuIFVzZSBhdXRvLiBVc2UgcmVmZXJlbmNlcyBp
bnN0ZWFkIG9mIHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6RGVmbGF0ZVJlc3VsdEhvbGRl
cjo6RGVmbGF0ZVJlc3VsdEhvbGRlcik6IFVzZSBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNv
cmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6On5EZWZsYXRlUmVzdWx0SG9sZGVyKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjpJbmZsYXRlUmVzdWx0SG9sZGVy
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjp+SW5mbGF0
ZVJlc3VsdEhvbGRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IpOiBQ
YXNzIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6ZGVmbGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6aW5mbGF0ZSk6IERpdHRvLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuaDogVXNlIGZvcndhcmQgZGVjbGFyYXRpb25zCisgICAgICAg
IGluc3RlYWQgb2YgaW5jbHVkZXMsIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycywgaW5p
dGlhbGl6ZSBkYXRhIG1lbWJlcnMKKyAgICAgICAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24sIGFu
ZCByZW1vdmUgYW4gdW5uZWNlc3NhcnkgZXhwbGljaXQgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aGVhZGVySGFzVmFsaWRIVFRQVmVyc2lvbik6IFVzZSBwYXJzZUludGVn
ZXI8aW50PiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ1ZpZXc6OnRvSW50U3RyaWN0LgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZSk6IERpdHRv
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVhZGluZ0xldmVs
IGNvbnN0KTogVXNlCisgICAgICAgIGdldEludGVncmFsQXR0cmlidXRlIGluc3RlYWQgb2YgQXRv
bVN0cmluZzo6dG9JbnQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6aGllcmFyY2hpY2FsTGV2ZWwgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6Z2V0SW50ZWdyYWxBdHRyaWJ1dGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAg
U2luY2UgQWNjZXNzaWJpbGl0eU9iamVjdCBoYXMgaXRzIG93biBnZXRBdHRyaWJ1dGUgZnVuY3Rp
b24sIHdlIG5lZWQgdG8KKyAgICAgICAgcmUtaW1wbGVtZW50IEVsZW1lbnQ6OmdldEludGVncmFs
QXR0cmlidXRlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
ZXRTaXplIGNvbnN0KTogVXNlIGdldEludGVncmFsQXR0cmlidXRlCisgICAgICAgIGluc3RlYWQg
b2YgQXRvbVN0cmluZzo6dG9JbnQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpwb3NJblNldCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0Lmg6IEFkZGVkIGdldEludGVncmFsQXR0cmlidXRlLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSBjb25zdCk6VXNlIGdldEludGVn
cmFsQXR0cmlidXRlCisgICAgICAgIGluc3RlYWQgb2YgQXRvbVN0cmluZzo6dG9JbnQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmF4Q29sdW1uQ291bnQgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YXhSb3dDb3VudCBj
b25zdCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENv
bHVtbkluZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsOjpheFJvd0luZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENvbHVtblNwYW4gY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93U3BhbiBjb25zdCk6IERp
dHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YXhDb2x1bW5JbmRleCBj
b25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93Ojph
eFJvd0luZGV4IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVj
dG9yUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVBTlBsdXNCKTogVXNlIHBh
cnNlSW50ZWdlcjxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludFN0cmljdAorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2Vu
aXplcjo6Y29uc3VtZUVzY2FwZSk6IFVzZSBwYXJzZUludGVnZXI8dWludDMyX3Q+IGluc3RlYWQg
b2YKKyAgICAgICAgU3RyaW5nOjp0b1VJbnRTdHJpY3QuCisKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpj
YW5QcmVzZW50RGF0YURldGVjdG9yc1VJRm9yRWxlbWVudCk6CisgICAgICAgIFVzZSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludC4K
KyAgICAgICAgQWxzbyB1c2UgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIFN0cmluZy4KKyAgICAgICAg
KFdlYkNvcmU6OmRhdGFEZXRlY3RvclN0cmluZ0ZvclBhdGgpOiBVc2UgbWFrZVN0cmluZyBpbnN0
ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JF
bGVtZW50KTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LgorCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKTogVXNlIHBhcnNlSFRNTEludGVnZXIgaW5zdGVhZAorICAgICAgICBvZiBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+LgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxMSUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExJRWxlbWVudDo6cGFyc2VWYWx1ZSk6IERpdHRvLgorICAgICAg
ICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
YXJxdWVlRWxlbWVudDo6bG9vcCBjb25zdCk6IFVzZSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZQorICAg
ICAgICBpbnN0ZWFkIG9mIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4uCisg
ICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmli
dXRlKToKKyAgICAgICAgVXNlIHBhcnNlSFRNTEludGVnZXIgaW5zdGVhZCBvZiBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+LgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ29s
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDb2xFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERp
dHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVz
dG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgVXNlIHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZzo6dG9V
SW50LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZvclBhdGgpOiBVc2UK
KyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+IGluc3Rl
YWQgb2YgU3RyaW5nOjp0b1VJbnQuCisKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVy
OjpjcmVhdGVMYXlvdXRCb3gpOiBVc2UgcGFyc2VIVE1MSW50ZWdlcgorICAgICAgICBpbnN0ZWFk
IG9mIEF0b21TdHJpbmc6OnRvSW50LgorCisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBY2Nlc3NDb250
cm9sTWF4QWdlKTogVXNlIHBhcnNlSW50ZWdlcjx1aW50NjRfdD4gaW5zdGVhZAorICAgICAgICBv
ZiBTdHJpbmc6OnRvVUludFN0cmljdC4KKworICAgICAgICAqIGxvYWRlci9GVFBEaXJlY3RvcnlQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPbmVGVFBMaW5lKTogVXNlIHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPgorICAgICAgICBpbnN0ZWFkIG9m
IFN0cmluZzo6dG9VSW50LgorCisgICAgICAgICogbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJz
ZUF0dHJpYnV0aW9uUmVxdWVzdCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDY0X3Q+
IGluc3RlYWQgb2YgU3RyaW5nOjp0b1VJbnQ2NFN0cmljdC4KKworICAgICAgICAqIG1hdGhtbC9N
YXRoTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNlbGVjdEVs
ZW1lbnQ6OmdldFNlbGVjdGVkQWN0aW9uQ2hpbGRBbmRJbmRleCk6CisgICAgICAgIFVzZSBnZXRJ
bnRlZ3JhbEF0dHJpYnV0ZSBpbnN0ZWFkIG9mIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4uCisKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGluZSk6IFVzZQorICAgICAgICBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4gaW5zdGVhZCBvZiBjaGFy
YWN0ZXJzVG9VSW50NjQuCisKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0KTogVXNlIHBhcnNlSW50ZWdlcjx1aW50MTZfdD4g
aW5zdGVhZCBvZiBwYXJzZVVJbnQxNi4KKworICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFi
YXNlSWRlbnRpZmllcik6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazx1aW50MTZfdD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LCB3aGljaAorICAgICAgICBh
bGxvd3MgdXMgdG8gcmVtb3ZlIHNvbWUgcmFuZ2UgY2hlY2tpbmcgYW5kIHR5cGUgY29udmVyc2lv
bi4KKworICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0V2luZG93RmVhdHVyZSk6IFVzZSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azxpbnQ+CisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nVmlldzo6dG9JbnQuCisKKyAgICAgICAg
KiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlUG9ydCk6IFVz
ZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDE2X3Q+IGluc3RlYWQgb2YgY2hhcmFjdGVyc1Rv
SW50U3RyaWN0LgorCisgICAgICAgICogcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGlu
dXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdENQVVVzYWdlKTogVXNlIHBhcnNlSW50
ZWdlcjxwaWRfdD4gaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmc6OnRvSW50U3RyaWN0LiBBbHNv
IHJlbW92ZWQgdW5uZWVkZWQgc3BlY2lhbCBjYXNlcyBmb3IgIi4iIGFuZAorICAgICAgICAiLi4i
IHNpbmNlIGJvdGggd2lsbCBmYWlsIHRvIHBhcnNlIGFzIGFuIGludGVnZXIsIGFuZCB0aGlzIG5v
IGxvbmdlcgorICAgICAgICBuZWVkIHRvIHB1dCBkX25hbWUgaW50byBhIFdURjo6U3RyaW5nLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHA6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVz
cG9uc2VSZWNlaXZlZCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazxpbnQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b0ludC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OlBhcnNlZFJlc3BvbnNlTWVzc2FnZSk6IFVzZQorICAg
ICAgICBwYXJzZUludGVnZXI8aW50PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQgdG8gcGFyc2Ug
YSBzaW5nbGUtZGlnaXQuCisgICAgICAgIFByb2JhYmx5IHNob3VsZCB3cml0ZSB0aGlzIGFub3Ro
ZXIgd2F5LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRpbDo6cGFyc2VDb29raWVBdHRyaWJ1dGVzKTog
VXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludDY0X3Q+IGlu
c3RlYWQgb2YgU3RyaW5nOjp0b0ludDY0LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5
OjpzZXRSZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGxvbmcgbG9uZz4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50
NjQuCisKKyAgICAgICAgKiBzdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZE9TMlRhYmxlKTogVXNlIHBh
cnNlSFRNTEludGVnZXIKKyAgICAgICAgaW5zdGVhZCBvZiBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazxpbnQ+LiBNaWdodCBiZSBldmVuIGJldHRlcgorICAgICAgICB0byByZWZhY3Rv
ciB0byB1c2UgZ2V0SW50ZWdyYWxBdHRyaWJ1dGUgbGF0ZXIuCisgICAgICAgIChXZWJDb3JlOjpT
VkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZFZPUkdUYWJsZSk6IERpdHRvLgorCisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRTRnJhbWVDb3VudGVyKTogVXNlIHBhcnNlSW50ZWdlcjx1aW50NjRfdD4KKyAgICAgICAgaW5z
dGVhZCBvZiBTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdC4KKwogMjAyMS0wNS0wOSAgRnVqaWkg
SGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9d
W0NsYW5nXSBsbGQtbGluazogZXJyb3I6IHVuZGVmaW5lZCBzeW1ib2w6IHB1YmxpYzogc3RhdGlj
IGNsYXNzIEdlbmVyaWNUeXBlZEFycmF5Vmlldzw+Ojp0cnlDcmVhdGUoKSBpbiBDcnlwdG9LZXlS
U0FPcGVuU1NMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCA0ZGQzM2I0MWY5OGU1NmQ0YWFiOTg0YmNj
MTU2OGQ5NDUyM2MzOTNkLi43MjIwZWViYjY2ZWI5ZDU0YTEzNmMyYWI5MTIyNDJlMDM4Y2ZhZTJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA1LTA5ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB1c2Vz
IG9mIHRoZSBTdHJpbmc6OnRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU4MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRHJpdmVyU2VydmljZS5jcHA6
CisgICAgICAgIChXZWJEcml2ZXI6OldlYkRyaXZlclNlcnZpY2U6OnJ1bik6IFVzZQorICAgICAg
ICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4gaW5zdGVhZCBvZiBT
dHJpbmc6OnRvVUludC4KKworICAgICAgICAqIGdsaWIvV2ViRHJpdmVyU2VydmljZUdMaWIuY3Bw
OgorICAgICAgICAoV2ViRHJpdmVyOjpwYXJzZVZlcnNpb24pOiBVc2UKKyAgICAgICAgcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+IGluc3RlYWQgb2YgU3RyaW5nOjp0
b0ludDY0LAorICAgICAgICBhbmQgdGhlbiBhc3NpZ25pbmcgaW50byBhIHVpbnQ2NF90LgorCisg
ICAgICAgICogc29ja2V0L0hUVFBQYXJzZXIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpIVFRQ
UGFyc2VyOjpleHBlY3RlZEJvZHlMZW5ndGggY29uc3QpOiBVc2UKKyAgICAgICAgcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8c2l6ZV90PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQu
CisgICAgICAgIEFsc28gdXNlIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBTdHJpbmc6OnN1YnN0cmlu
Z1NoYXJpbmdJbXBsIGFuZAorICAgICAgICBkcm9wcGVkIGFuIHVubmVlZGVkIGNhbGwgdG8gU3Ry
aW5nOjpzdHJpcFdoaXRlU3BhY2UuCisKIDIwMjEtMDMtMjUgIERvbiBPbG1zdGVhZCAgPGRvbi5v
bG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVzZSBXZWJEcml2ZXJfREVSSVZF
RF9TT1VSQ0VTIHZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZGFlNjhmMWEz
OTJiYmQ1ZWQwNzVkMDQ0MWY5YTM4Mjg0ZWM5ZDFkOS4uYjk1ZDMwYzcwNjc5ZmQ0MDQ3MTIxYzll
YWFlNDgwOTBhNjJkYTk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDIxLTA1LTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB1c2VzIG9mIHRoZSBTdHJpbmc6OnRvSW50IGZhbWls
eSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTU4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZVZlcnNpb25TdHJpbmcpOiBVc2UgcGFyc2VJbnRlZ2VyQWxsb3dpblRyYWlsaW5nSnVu
azxpbnQ+CisgICAgICAgIGlzbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQuCisKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFu
ZGxlUG9zdCk6IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1
bnNpZ25lZD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRvSW50LAorICAgICAgICBhbmQgdGhlbiBhc3Np
Z25pbmcgdG8gYW4gdW5zaWduZWQuCisKIDIwMjEtMDUtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIHJlZmVyZW5j
ZXMgdG8gUGFnZUdyb3VwIGZyb20gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDM2ZDliMDQ0NmY1MDExM2I0ZWNmY2YyNGU1OGFkNzI2NDY5MTcyYzAu
LjRlNzMxYmVjMGE4YTZiYzA0ZjM5YmU2ZjdjOGQ0ZDlhMTIxNDQ3OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CkBAIC0xMDAzLDEyICsxMDA0LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
REJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0
YWJhc2VJCiAgICAgICAgIGlmIChzcWwuaXNDb2x1bW5OdWxsKDApKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIFN0cmluZyBzdHJpbmdWZXJzaW9uID0gc3FsLmdldENvbHVt
blRleHQoMCk7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGRhdGFiYXNlVmVyc2lvbiA9IHN0
cmluZ1ZlcnNpb24udG9VSW50NjRTdHJpY3QoJm9rKTsKLSAgICAgICAgaWYgKCFvaykgeworICAg
ICAgICBhdXRvIHBhcnNlZFZlcnNpb24gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHN0cmluZ1Zl
cnNpb24pOworICAgICAgICBpZiAoIXBhcnNlZFZlcnNpb24pIHsKICAgICAgICAgICAgIExPR19F
UlJPUigiRGF0YWJhc2UgdmVyc2lvbiBvbiBkaXNrICgnJXMnKSBkb2VzIG5vdCBjbGVhbmx5IGNv
bnZlcnQgdG8gYW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgdmVyc2lvbiIsIHN0cmluZ1ZlcnNp
b24udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQorICAgICAgICBkYXRhYmFzZVZlcnNpb24gPSAqcGFyc2VkVmVyc2lvbjsKICAgICB9CiAKICAg
ICBhdXRvIGRhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFz
ZU5hbWUsIGRhdGFiYXNlVmVyc2lvbiwgMCk7CkBAIC0xMTY2LDE0ICsxMTY3LDEzIEBAIE9wdGlv
bmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0
YWJhc2VOYW1lQW5kVmVyc2lvCiAKICAgICBTUUxpdGVTdGF0ZW1lbnQgdmVyc3FsKGRhdGFiYXNl
LCAiU0VMRUNUIHZhbHVlIEZST00gSURCRGF0YWJhc2VJbmZvIFdIRVJFIGtleSA9ICdEYXRhYmFz
ZVZlcnNpb24nOyJfcyk7CiAgICAgU3RyaW5nIHN0cmluZ1ZlcnNpb24gPSB2ZXJzcWwuZ2V0Q29s
dW1uVGV4dCgwKTsKLSAgICBib29sIG9rOwotICAgIHVpbnQ2NF90IGRhdGFiYXNlVmVyc2lvbiA9
IHN0cmluZ1ZlcnNpb24udG9VSW50NjRTdHJpY3QoJm9rKTsKLSAgICBpZiAoIW9rKSB7CisgICAg
YXV0byBkYXRhYmFzZVZlcnNpb24gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHN0cmluZ1ZlcnNp
b24pOworICAgIGlmICghZGF0YWJhc2VWZXJzaW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiRGF0
YWJhc2UgdmVyc2lvbiBvbiBkaXNrICgnJXMnKSBkb2VzIG5vdCBjbGVhbmx5IGNvbnZlcnQgdG8g
YW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgdmVyc2lvbiIsIHN0cmluZ1ZlcnNpb24udXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgcmV0
dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24geyBkYXRhYmFzZU5hbWUsIGRhdGFiYXNlVmVy
c2lvbiB9OworICAgIHJldHVybiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIHsgZGF0YWJhc2VO
YW1lLCAqZGF0YWJhc2VWZXJzaW9uIH07CiB9CiAKIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhVcGdyYWRlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmNwcAppbmRleCBiYTM5MDYyOGViY2E5NmYwYzI3YjNiZGYwMDM1NmNiNGM2NGZkYjk1Li41MGYz
NDQyMzJkYzg2MTVjNDIyZjk0ZjkyYTlkYzdjMTFhYjQwZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFt
ZXIuY3BwCkBAIC0zMywzMyArMzMsMzAgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRl
RnJhbWUgOiBwdWJsaWMgV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yIHsKK2NsYXNzIFdlYlNv
Y2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZSBmaW5hbCA6IHB1YmxpYyBXZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IGV4cGxpY2l0IFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZShXZWJTb2NrZXREZWZsYXRl
RnJhbWVyKik7Ci0gICAgdmlydHVhbCB+V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKCkg
PSBkZWZhdWx0OwotCi0gICAgU3RyaW5nIGhhbmRzaGFrZVN0cmluZygpIG92ZXJyaWRlOwotICAg
IGJvb2wgcHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jikgb3Zl
cnJpZGU7Ci0gICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBvdmVycmlkZSB7IHJldHVybiBtX2Zh
aWx1cmVSZWFzb247IH0KKyAgICBleHBsaWNpdCBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJh
bWUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciYpOwogCiBwcml2YXRlOgotICAgIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXIqIG1fZnJhbWVyOwotICAgIGJvb2wgbV9yZXNwb25zZVByb2Nlc3NlZDsKKyAg
ICBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgZmluYWw7CisgICAgYm9vbCBwcm9jZXNzUmVzcG9u
c2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBmaW5hbDsKKyAgICBTdHJpbmcgZmFp
bHVyZVJlYXNvbigpIGZpbmFsIHsgcmV0dXJuIG1fZmFpbHVyZVJlYXNvbjsgfQorCisgICAgV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lciYgbV9mcmFtZXI7CisgICAgYm9vbCBtX3Jlc3BvbnNlUHJvY2Vz
c2VkIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9mYWlsdXJlUmVhc29uOwogfTsKIAogLy8gRlhJ
TUU6IFJlbW92ZSB2ZW5kb3IgcHJlZml4IGFmdGVyIHRoZSBzcGVjaWZpY2F0aW9uIG1hdHVyZWQu
Ci1XZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxh
dGVGcmFtZShXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCi0gICAgOiBXZWJTb2NrZXRF
eHRlbnNpb25Qcm9jZXNzb3IoIngtd2Via2l0LWRlZmxhdGUtZnJhbWUiKQorV2ViU29ja2V0RXh0
ZW5zaW9uRGVmbGF0ZUZyYW1lOjpXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoV2ViU29j
a2V0RGVmbGF0ZUZyYW1lciYgZnJhbWVyKQorICAgIDogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vz
c29yKCJ4LXdlYmtpdC1kZWZsYXRlLWZyYW1lIl9zKQogICAgICwgbV9mcmFtZXIoZnJhbWVyKQot
ICAgICwgbV9yZXNwb25zZVByb2Nlc3NlZChmYWxzZSkKIHsKLSAgICBBU1NFUlQobV9mcmFtZXIp
OwogfQogCiBTdHJpbmcgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpoYW5kc2hha2VT
dHJpbmcoKQpAQCAtNzAsMTggKzY3LDE4IEBAIFN0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EZWZs
YXRlRnJhbWU6OmhhbmRzaGFrZVN0cmluZygpCiBib29sIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxh
dGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBz
ZXJ2ZXJQYXJhbWV0ZXJzKQogewogICAgIGlmIChtX3Jlc3BvbnNlUHJvY2Vzc2VkKSB7Ci0gICAg
ICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBkdXBsaWNhdGUgZGVmbGF0ZS1mcmFtZSBy
ZXNwb25zZSI7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBkdXBsaWNhdGUg
ZGVmbGF0ZS1mcmFtZSByZXNwb25zZSJfczsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICBtX3Jlc3BvbnNlUHJvY2Vzc2VkID0gdHJ1ZTsKIAogICAgIHVuc2lnbmVkIGV4cGVjdGVk
TnVtUGFyYW1ldGVycyA9IDA7CiAgICAgaW50IHdpbmRvd0JpdHMgPSAxNTsKLSAgICBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgcGFyYW1ldGVyID0gc2VydmVyUGFyYW1l
dGVycy5maW5kKCJtYXhfd2luZG93X2JpdHMiKTsKKyAgICBhdXRvIHBhcmFtZXRlciA9IHNlcnZl
clBhcmFtZXRlcnMuZmluZCgibWF4X3dpbmRvd19iaXRzIik7CiAgICAgaWYgKHBhcmFtZXRlciAh
PSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7Ci0gICAgICAgIHdpbmRvd0JpdHMgPSBwYXJhbWV0
ZXItPnZhbHVlLnRvSW50KCk7CisgICAgICAgIHdpbmRvd0JpdHMgPSBwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazxpbnQ+KHBhcmFtZXRlci0+dmFsdWUpLnZhbHVlT3IoMCk7CiAgICAg
ICAgIGlmICh3aW5kb3dCaXRzIDwgOCB8fCB3aW5kb3dCaXRzID4gMTUpIHsKLSAgICAgICAgICAg
IG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG1heF93aW5kb3dfYml0cyBwYXJh
bWV0ZXIiOworICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGludmFsaWQg
bWF4X3dpbmRvd19iaXRzIHBhcmFtZXRlciJfczsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogICAgICAgICBleHBlY3RlZE51bVBhcmFtZXRlcnMrKzsKQEAgLTkxLDcgKzg4
LDcgQEAgYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OnByb2Nlc3NSZXNwb25z
ZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW4KICAgICBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJh
bWV0ZXJzLmZpbmQoIm5vX2NvbnRleHRfdGFrZW92ZXIiKTsKICAgICBpZiAocGFyYW1ldGVyICE9
IHNlcnZlclBhcmFtZXRlcnMuZW5kKCkpIHsKICAgICAgICAgaWYgKCFwYXJhbWV0ZXItPnZhbHVl
LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgaW52
YWxpZCBub19jb250ZXh0X3Rha2VvdmVyIHBhcmFtZXRlciI7CisgICAgICAgICAgICBtX2ZhaWx1
cmVSZWFzb24gPSAiUmVjZWl2ZWQgaW52YWxpZCBub19jb250ZXh0X3Rha2VvdmVyIHBhcmFtZXRl
ciJfczsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBtb2Rl
ID0gV2ViU29ja2V0RGVmbGF0ZXI6OkRvTm90VGFrZU92ZXJDb250ZXh0OwpAQCAtOTksMjQgKzk2
LDIyIEBAIGJvb2wgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVzcG9u
c2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluCiAgICAgfQogCiAgICAgaWYgKGV4cGVjdGVk
TnVtUGFyYW1ldGVycyAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLnNpemUoKSkgewotICAgICAgICBtX2Zh
aWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgdW5leHBlY3RlZCBkZWZsYXRlLWZyYW1lIHBhcmFtZXRl
ciI7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxh
dGUtZnJhbWUgcGFyYW1ldGVyIl9zOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgbV9mcmFtZXItPmVuYWJsZURlZmxhdGUod2luZG93Qml0cywgbW9kZSk7CisgICAgbV9mcmFt
ZXIuZW5hYmxlRGVmbGF0ZSh3aW5kb3dCaXRzLCBtb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotRGVmbGF0ZVJlc3VsdEhvbGRlcjo6RGVmbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZs
YXRlRnJhbWVyKiBmcmFtZXIpCitEZWZsYXRlUmVzdWx0SG9sZGVyOjpEZWZsYXRlUmVzdWx0SG9s
ZGVyKFdlYlNvY2tldERlZmxhdGVGcmFtZXImIGZyYW1lcikKICAgICA6IG1fZnJhbWVyKGZyYW1l
cikKLSAgICAsIG1fc3VjY2VlZGVkKHRydWUpCiB7Ci0gICAgQVNTRVJUKG1fZnJhbWVyKTsKIH0K
IAogRGVmbGF0ZVJlc3VsdEhvbGRlcjo6fkRlZmxhdGVSZXN1bHRIb2xkZXIoKQogewotICAgIG1f
ZnJhbWVyLT5yZXNldERlZmxhdGVDb250ZXh0KCk7CisgICAgbV9mcmFtZXIucmVzZXREZWZsYXRl
Q29udGV4dCgpOwogfQogCiB2b2lkIERlZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwoY29uc3QgU3Ry
aW5nJiBmYWlsdXJlUmVhc29uKQpAQCAtMTI1LDE2ICsxMjAsMTQgQEAgdm9pZCBEZWZsYXRlUmVz
dWx0SG9sZGVyOjpmYWlsKGNvbnN0IFN0cmluZyYgZmFpbHVyZVJlYXNvbikKICAgICBtX2ZhaWx1
cmVSZWFzb24gPSBmYWlsdXJlUmVhc29uOwogfQogCi1JbmZsYXRlUmVzdWx0SG9sZGVyOjpJbmZs
YXRlUmVzdWx0SG9sZGVyKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikKK0luZmxhdGVS
ZXN1bHRIb2xkZXI6OkluZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciYg
ZnJhbWVyKQogICAgIDogbV9mcmFtZXIoZnJhbWVyKQotICAgICwgbV9zdWNjZWVkZWQodHJ1ZSkK
IHsKLSAgICBBU1NFUlQobV9mcmFtZXIpOwogfQogCiBJbmZsYXRlUmVzdWx0SG9sZGVyOjp+SW5m
bGF0ZVJlc3VsdEhvbGRlcigpCiB7Ci0gICAgbV9mcmFtZXItPnJlc2V0SW5mbGF0ZUNvbnRleHQo
KTsKKyAgICBtX2ZyYW1lci5yZXNldEluZmxhdGVDb250ZXh0KCk7CiB9CiAKIHZvaWQgSW5mbGF0
ZVJlc3VsdEhvbGRlcjo6ZmFpbChjb25zdCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pCkBAIC0xNDMs
MTQgKzEzNiw5IEBAIHZvaWQgSW5mbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbChjb25zdCBTdHJpbmcm
IGZhaWx1cmVSZWFzb24pCiAgICAgbV9mYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbjsKIH0K
IAotV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcigpCi0gICAg
OiBtX2VuYWJsZWQoZmFsc2UpCi17Ci19Ci0KIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRFeHRl
bnNpb25Qcm9jZXNzb3I+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNyZWF0ZUV4dGVuc2lvblBy
b2Nlc3NvcigpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0RXh0ZW5zaW9uRGVm
bGF0ZUZyYW1lPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRFeHRlbnNp
b25EZWZsYXRlRnJhbWU+KCp0aGlzKTsKIH0KIAogdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
OjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRlcjo6Q29udGV4
dFRha2VPdmVyTW9kZSBtb2RlKQpAQCAtMTY3LDcgKzE1NSw3IEBAIHZvaWQgV2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0
ZXI6OkNvCiAKIHN0ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKLSAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CisgICAgYXV0
byByZXN1bHQgPSBtYWtlVW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KCp0aGlzKTsKICAgICBp
ZiAoIWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFt
ZS5vcENvZGUpIHx8ICFmcmFtZS5wYXlsb2FkTGVuZ3RoKQogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIGlmICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5
bG9hZExlbmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7CkBAIC0xODgsNyArMTc2LDcg
QEAgdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpyZXNldERlZmxhdGVDb250ZXh0KCkKIAog
c3RkOjp1bmlxdWVfcHRyPEluZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFt
ZXI6OmluZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewotICAgIGF1dG8gcmVzdWx0ID0g
bWFrZVVuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9
IG1ha2VVbmlxdWU8SW5mbGF0ZVJlc3VsdEhvbGRlcj4oKnRoaXMpOwogICAgIGlmICghZW5hYmxl
ZCgpICYmIGZyYW1lLmNvbXByZXNzKSB7CiAgICAgICAgIHJlc3VsdC0+ZmFpbCgiQ29tcHJlc3Nl
ZCBiaXQgbXVzdCBiZSAwIGlmIG5vIG5lZ290aWF0ZWQgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24i
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oCmluZGV4IDRmMjQ5
ODIxZDU5Y2I3NTNjYmQzYjY2MTE4Y2U0MTFhNWI2MDk1OWQuLjc5N2JlM2I2NzViOWY0YzU0YjA2
NzNhYjI0MDE4ZDYwNGQxODE2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaApAQCAtMzEsMTcgKzMx
LDE4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYlNvY2tldERlZmxhdGVyLmgiCi0j
aW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgiCi0jaW5jbHVkZSAiV2ViU29j
a2V0RnJhbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyOworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yOworCitzdHJ1Y3Qg
V2ViU29ja2V0RnJhbWU7CiAKIGNsYXNzIERlZmxhdGVSZXN1bHRIb2xkZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IERlZmxhdGVSZXN1bHRI
b2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOworICAgIGV4cGxpY2l0IERlZmxhdGVSZXN1
bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciYpOwogICAgIH5EZWZsYXRlUmVzdWx0SG9s
ZGVyKCk7CiAKICAgICBib29sIHN1Y2NlZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2VlZGVk
OyB9CkBAIC01MCwxNSArNTEsMTUgQEAgcHVibGljOgogICAgIHZvaWQgZmFpbChjb25zdCBTdHJp
bmcmIGZhaWx1cmVSZWFzb24pOwogCiBwcml2YXRlOgotICAgIFdlYlNvY2tldERlZmxhdGVGcmFt
ZXIqIG1fZnJhbWVyOwotICAgIGJvb2wgbV9zdWNjZWVkZWQ7CisgICAgV2ViU29ja2V0RGVmbGF0
ZUZyYW1lciYgbV9mcmFtZXI7CisgICAgYm9vbCBtX3N1Y2NlZWRlZCB7IHRydWUgfTsKICAgICBT
dHJpbmcgbV9mYWlsdXJlUmVhc29uOwogfTsKIAogY2xhc3MgSW5mbGF0ZVJlc3VsdEhvbGRlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgSW5m
bGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKik7CisgICAgZXhwbGljaXQg
SW5mbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyJik7CiAgICAgfkluZmxh
dGVSZXN1bHRIb2xkZXIoKTsKIAogICAgIGJvb2wgc3VjY2VlZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9zdWNjZWVkZWQ7IH0KQEAgLTY3LDE1ICs2OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmYWls
KGNvbnN0IFN0cmluZyYgZmFpbHVyZVJlYXNvbik7CiAKIHByaXZhdGU6Ci0gICAgV2ViU29ja2V0
RGVmbGF0ZUZyYW1lciogbV9mcmFtZXI7Ci0gICAgYm9vbCBtX3N1Y2NlZWRlZDsKKyAgICBXZWJT
b2NrZXREZWZsYXRlRnJhbWVyJiBtX2ZyYW1lcjsKKyAgICBib29sIG1fc3VjY2VlZGVkIHsgdHJ1
ZSB9OwogICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247CiB9OwogCiBjbGFzcyBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyIHsKIHB1YmxpYzoKLSAgICBXZWJTb2NrZXREZWZsYXRlRnJhbWVyKCk7Ci0K
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBjcmVhdGVF
eHRlbnNpb25Qcm9jZXNzb3IoKTsKIAogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZW5hYmxlZDsgfQpAQCAtOTAsNyArODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGVE
ZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRlcjo6Q29udGV4dFRha2VPdmVy
TW9kZSk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBtX2VuYWJsZWQ7CisgICAgYm9vbCBtX2VuYWJs
ZWQgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXREZWZsYXRlcj4gbV9k
ZWZsYXRlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0SW5mbGF0ZXI+IG1faW5mbGF0
ZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCBhZTNlMTEzNWQxZjI5MDBkMDQ0ZGQ2ZmQ3YmU1
OTMxNzNmN2FkOTU3Li40ZTBlODgwYjZmNDhlNWJjMzg5NTMzZWMzZGNiMmNlZmQ4NWFmZmFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jh
c2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29u
dmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1l
cy5oPgpAQCAtMzc3LDEwICszNzgsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGVhZGVySGFzVmFs
aWRIVFRQVmVyc2lvbihTdHJpbmdWaWV3IGh0dHBTdGF0dXNMaW5lKQogICAgIGlmIChkb3RQb3Np
dGlvbiA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nVmll
dyBtYWpvclZlcnNpb25WaWV3ID0gaHR0cFN0YXR1c0xpbmUuc3Vic3RyaW5nKHByZWFtYmxlTGVu
Z3RoLCBkb3RQb3NpdGlvbiAtIHByZWFtYmxlTGVuZ3RoKTsKLSAgICBib29sIGlzVmFsaWQ7Ci0g
ICAgaW50IG1ham9yVmVyc2lvbiA9IG1ham9yVmVyc2lvblZpZXcudG9JbnRTdHJpY3QoaXNWYWxp
ZCk7Ci0gICAgaWYgKCFpc1ZhbGlkKQorICAgIGF1dG8gbWFqb3JWZXJzaW9uID0gcGFyc2VJbnRl
Z2VyPGludD4oaHR0cFN0YXR1c0xpbmUuc3Vic3RyaW5nKHByZWFtYmxlTGVuZ3RoLCBkb3RQb3Np
dGlvbiAtIHByZWFtYmxlTGVuZ3RoKSk7CisgICAgaWYgKCFtYWpvclZlcnNpb24pCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIHVuc2lnbmVkIG1pbm9yVmVyc2lvbkxlbmd0aDsKQEAgLTM4
OSwxMSArMzg4LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoZWFkZXJIYXNWYWxpZEhUVFBWZXJz
aW9uKFN0cmluZ1ZpZXcgaHR0cFN0YXR1c0xpbmUpCiAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0
KGh0dHBTdGF0dXNMaW5lW2RvdFBvc2l0aW9uICsgbWlub3JWZXJzaW9uTGVuZ3RoXSkpCiAgICAg
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgaW50IG1pbm9yVmVyc2lvbiA9IChodHRwU3RhdHVz
TGluZS5zdWJzdHJpbmcoZG90UG9zaXRpb24gKyAxLCBtaW5vclZlcnNpb25MZW5ndGgpKS50b0lu
dFN0cmljdChpc1ZhbGlkKTsKLSAgICBpZiAoIWlzVmFsaWQpCisgICAgYXV0byBtaW5vclZlcnNp
b24gPSBwYXJzZUludGVnZXI8aW50PihodHRwU3RhdHVzTGluZS5zdWJzdHJpbmcoZG90UG9zaXRp
b24gKyAxLCBtaW5vclZlcnNpb25MZW5ndGgpKTsKKyAgICBpZiAoIW1pbm9yVmVyc2lvbikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIChtYWpvclZlcnNpb24gPj0gMSAmJiBt
aW5vclZlcnNpb24gPj0gMSkgfHwgbWFqb3JWZXJzaW9uID49IDI7CisgICAgcmV0dXJuICgqbWFq
b3JWZXJzaW9uID49IDEgJiYgKm1pbm9yVmVyc2lvbiA+PSAxKSB8fCAqbWFqb3JWZXJzaW9uID49
IDI7CiB9CiAKIC8vIFJldHVybnMgdGhlIGhlYWRlciBsZW5ndGggKGluY2x1ZGluZyAiXHJcbiIp
LCBvciAtMSBpZiB3ZSBoYXZlIG5vdCByZWNlaXZlZCBlbm91Z2ggZGF0YSB5ZXQuCkBAIC00NjEs
MTYgKzQ2MCwxNCBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZShjb25z
dCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsCiAgICAgU3RyaW5nVmlldyBzdGF0
dXNDb2RlU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzcGFjZTEgKyAxKSwg
c3BhY2UyIC0gc3BhY2UxIC0gMSk7CiAgICAgaWYgKHN0YXR1c0NvZGVTdHJpbmcubGVuZ3RoKCkg
IT0gMykgLy8gU3RhdHVzIGNvZGUgbXVzdCBjb25zaXN0IG9mIHRocmVlIGRpZ2l0cy4KICAgICAg
ICAgcmV0dXJuIGxpbmVMZW5ndGg7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKICAgICAgICAgaWYgKCFpc0FTQ0lJRGln
aXQoc3RhdHVzQ29kZVN0cmluZ1tpXSkpIHsKICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9
IG1ha2VTdHJpbmcoIkludmFsaWQgc3RhdHVzIGNvZGU6ICIsIHN0YXR1c0NvZGVTdHJpbmcpOwog
ICAgICAgICAgICAgcmV0dXJuIGxpbmVMZW5ndGg7CiAgICAgICAgIH0KKyAgICB9CiAKLSAgICBi
b29sIG9rID0gZmFsc2U7Ci0gICAgc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGVTdHJpbmcudG9JbnRT
dHJpY3Qob2spOwotICAgIEFTU0VSVChvayk7Ci0KKyAgICBzdGF0dXNDb2RlID0gcGFyc2VJbnRl
Z2VyPGludD4oc3RhdHVzQ29kZVN0cmluZykudmFsdWUoKTsKICAgICBzdGF0dXNUZXh0ID0gU3Ry
aW5nKHNwYWNlMiArIDEsIGVuZCAtIHNwYWNlMiAtIDMpOyAvLyBFeGNsdWRlICJcclxuIi4KICAg
ICByZXR1cm4gbGluZUxlbmd0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggZGIzNjM0MDE3MmU3
ZWI2NGQwZGY2NTIyMWUwOTdmMzI4NGM5OWFmOS4uNzkwMjY2MDkxNjIwN2E4ZWEzNTM0MTc5NGNk
YjRlNjIwMTU0Njc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTc3NSw5ICs3NzUsOCBAQCBpbnQg
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhlYWRpbmdMZXZlbCgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmIChpc0hlYWRpbmcoKSkgewotICAgICAgICBpbnQgYXJpYUxl
dmVsID0gZ2V0QXR0cmlidXRlKGFyaWFfbGV2ZWxBdHRyKS50b0ludCgpOwotICAgICAgICBpZiAo
YXJpYUxldmVsID4gMCkKLSAgICAgICAgICAgIHJldHVybiBhcmlhTGV2ZWw7CisgICAgICAgIGlm
IChhdXRvIGxldmVsID0gZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9sZXZlbEF0dHIpOyBsZXZl
bCA+IDApCisgICAgICAgICAgICByZXR1cm4gbGV2ZWw7CiAgICAgfQogCiAgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUoaDFUYWcpKQpAQCAtMTcyOSwxMSArMTcyOCwxMSBAQCB1bnNpZ25lZCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAogICAgIE5vZGUq
IG5vZGUgPSB0aGlzLT5ub2RlKCk7CiAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpu
b2RlKTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhTGV2ZWwgPSBlbGVtZW50LmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9sZXZlbEF0dHIpOwotICAgIGlmICghYXJpYUxl
dmVsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGFyaWFMZXZlbC50b0ludCgpOwotICAgIAor
CisgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKKyAgICBpZiAo
IWVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xldmVsQXR0ciku
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZWxlbWVudC5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShh
cmlhX2xldmVsQXR0cik7CisKICAgICAvLyBPbmx5IHRyZWUgaXRlbSB3aWxsIGNhbGN1bGF0ZSBp
dHMgbGV2ZWwgdGhyb3VnaCB0aGUgRE9NIGN1cnJlbnRseS4KICAgICBpZiAocm9sZVZhbHVlKCkg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CmluZGV4IDBkNzIxOGNlMTE0ODQ3YTc0ZGE2ZDI5NDQwZGU1ZDJkMWI2ZTE1ZTYuLjA2NmMxOTgz
MDA0NzkwZDFmNTg3OWVhOTI4NDBjZGRhZjFmZWJlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMTk1Niw2ICsx
OTU2LDExIEBAIGNvbnN0IEF0b21TdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1CiAgICAgcmV0dXJuIG51bGxBdG9tKCk7
CiB9CiAKK2ludCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAoreworICAgIHJldHVybiBwYXJz
ZUhUTUxJbnRlZ2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVfb3IoMCk7Cit9
CisKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZVRleHRJblJhbmdlKGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5nZSkKIHsK
ICAgICAvLyBJZiB0aGlzIGlzIGJlaW5nIGNhbGxlZCBvbiB0aGUgd2ViIGFyZWEsIHJlZGlyZWN0
IGl0IHRvIGJlIG9uIHRoZSBib2R5LCB3aGljaCB3aWxsIGhhdmUgYSByZW5kZXJlciBhc3NvY2lh
dGVkIHdpdGggaXQuCkBAIC0yNjYzLDEyICsyNjY4LDEyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6c3VwcG9ydHNQb3NJblNldCgpIGNvbnN0CiAgICAgCiBpbnQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6c2V0U2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEF0dHJpYnV0ZShhcmlhX3Nl
dHNpemVBdHRyKS50b0ludCgpOworICAgIHJldHVybiBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlh
X3NldHNpemVBdHRyKTsKIH0KIAogaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBvc0luU2V0KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfcG9zaW5zZXRBdHRyKS50b0lu
dCgpOworICAgIHJldHVybiBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Bvc2luc2V0QXR0cik7
CiB9CiAgICAgCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6aWRlbnRpZmllckF0dHJpYnV0
ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCmluZGV4IDU2YzNjZDMzMTcyMGYzNjdhMjYxZjBmNDBlMmFhNWU0ODgxMWJk
NWUuLjRkOWM5MzMxOGE4NjcxYjNiZTA5NDJjMGVjMmZiNzYxNGUzZWQ5NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC01
MTcsNiArNTE3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBY2Nlc3Np
YmlsaXR5Um9sZSBhcmlhUm9sZVRvV2ViQ29yZVJvbGUoY29uc3QgU3RyaW5nJik7CiAgICAgYm9v
bCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgaW50IGdldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdDsKICAgICBib29sIGhhc1RhZ05hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyB0YWdOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmNwcAppbmRleCAwNWI1NjNlOWFlMjZhNmFmZTc2OGRkMTI3YTAzMWM1Y2ZhYzcwMmEzLi5mNjcy
ZjRhMWFmMDUzNTVlNmU3MzA1MDU5Mzg2ZDA0MTk3OWRkYjJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC00NCw3ICs0
NCw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNl
bGwuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVNlY3Rpb24uaCIKLQogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTMsMTEgKzE1MiwxMSBAQCBib29s
IEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgIAogICAgIC8vIElm
IHRoZSBhdXRob3IgaGFzIHVzZWQgQVJJQSB0byBzcGVjaWZ5IGEgdmFsaWQgY29sdW1uIG9yIHJv
dyBjb3VudCwgYXNzdW1lIHRoZXkKICAgICAvLyB3YW50IHVzIHRvIHRyZWF0IHRoZSB0YWJsZSBh
cyBhIGRhdGEgdGFibGUuCi0gICAgaW50IGF4Q29sdW1uQ291bnQgPSBnZXRBdHRyaWJ1dGUoYXJp
YV9jb2xjb3VudEF0dHIpLnRvSW50KCk7CisgICAgaW50IGF4Q29sdW1uQ291bnQgPSBnZXRJbnRl
Z3JhbEF0dHJpYnV0ZShhcmlhX2NvbGNvdW50QXR0cik7CiAgICAgaWYgKGF4Q29sdW1uQ291bnQg
PT0gLTEgfHwgYXhDb2x1bW5Db3VudCA+IDApCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
aW50IGF4Um93Q291bnQgPSBnZXRBdHRyaWJ1dGUoYXJpYV9yb3djb3VudEF0dHIpLnRvSW50KCk7
CisgICAgaW50IGF4Um93Q291bnQgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2NvdW50
QXR0cik7CiAgICAgaWYgKGF4Um93Q291bnQgPT0gLTEgfHwgYXhSb3dDb3VudCA+IDApCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCkBAIC0yMzQsMTYgKzIzMywxNiBAQCBib29sIEFjY2Vzc2liaWxp
dHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogCiAgICAgICAgICAgICAvLyBJZiB0aGUgYXV0
aG9yIGhhcyB1c2VkIEFSSUEgdG8gc3BlY2lmeSBhIHZhbGlkIGNvbHVtbiBvciByb3cgaW5kZXgs
IGFzc3VtZSB0aGV5IHdhbnQgdXMKICAgICAgICAgICAgIC8vIHRvIHRyZWF0IHRoZSB0YWJsZSBh
cyBhIGRhdGEgdGFibGUuCi0gICAgICAgICAgICBpbnQgYXhDb2x1bW5JbmRleCA9ICBjZWxsRWxl
bWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2NvbGluZGV4QXR0ciku
dG9JbnQoKTsKKyAgICAgICAgICAgIGludCBheENvbHVtbkluZGV4ID0gY2VsbEVsZW1lbnQtPmdl
dEludGVncmFsQXR0cmlidXRlKGFyaWFfY29saW5kZXhBdHRyKTsKICAgICAgICAgICAgIGlmIChh
eENvbHVtbkluZGV4ID49IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAg
ICAgICAgIGludCBheFJvd0luZGV4ID0gY2VsbEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oYXJpYV9yb3dpbmRleEF0dHIpLnRvSW50KCk7CisgICAgICAgICAgICBpbnQg
YXhSb3dJbmRleCA9IGNlbGxFbGVtZW50LT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2lu
ZGV4QXR0cik7CiAgICAgICAgICAgICBpZiAoYXhSb3dJbmRleCA+PSAxKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgICAgICBpZiAoYXV0byBjZWxsUGFyZW50RWxlbWVu
dCA9IGNlbGxFbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBheFJv
d0luZGV4ID0gY2VsbFBhcmVudEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oYXJpYV9yb3dpbmRleEF0dHIpLnRvSW50KCk7CisgICAgICAgICAgICAgICAgYXhSb3dJbmRl
eCA9IGNlbGxQYXJlbnRFbGVtZW50LT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2luZGV4
QXR0cik7CiAgICAgICAgICAgICAgICAgaWYgKGF4Um93SW5kZXggPj0gMSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0yNTEsMTEgKzI1MCwxMSBA
QCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgICAgICAg
ICAgLy8gSWYgdGhlIGF1dGhvciBoYXMgdXNlZCBBUklBIHRvIHNwZWNpZnkgYSBjb2x1bW4gb3Ig
cm93IHNwYW4sIHdlJ3JlIHN1cHBvc2VkIHRvIGlnbm9yZQogICAgICAgICAgICAgLy8gdGhlIHZh
bHVlIGZvciB0aGUgcHVycG9zZXMgb2YgZXhwb3NpbmcgdGhlIHNwYW4uIEJ1dCBhc3N1bWUgdGhl
eSB3YW50IHVzIHRvIHRyZWF0IHRoZQogICAgICAgICAgICAgLy8gdGFibGUgYXMgYSBkYXRhIHRh
YmxlLgotICAgICAgICAgICAgaW50IGF4Q29sdW1uU3BhbiA9IGNlbGxFbGVtZW50LT5hdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfY29sc3BhbkF0dHIpLnRvSW50KCk7CisgICAg
ICAgICAgICBpbnQgYXhDb2x1bW5TcGFuID0gY2VsbEVsZW1lbnQtPmdldEludGVncmFsQXR0cmli
dXRlKGFyaWFfY29sc3BhbkF0dHIpOwogICAgICAgICAgICAgaWYgKGF4Q29sdW1uU3BhbiA+PSAx
KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgICAgICBpbnQgYXhSb3dT
cGFuID0gY2VsbEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9y
b3dzcGFuQXR0cikudG9JbnQoKTsKKyAgICAgICAgICAgIGludCBheFJvd1NwYW4gPSBjZWxsRWxl
bWVudC0+Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9yb3dzcGFuQXR0cik7CiAgICAgICAgICAg
ICBpZiAoYXhSb3dTcGFuID49IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAg
LTcwNyw4ICs3MDYsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVRhYmxlOjp0aXRsZSgpIGNvbnN0
CiAKIGludCBBY2Nlc3NpYmlsaXR5VGFibGU6OmF4Q29sdW1uQ291bnQoKSBjb25zdAogewotICAg
IGNvbnN0IEF0b21TdHJpbmcmIGNvbENvdW50VmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9jb2xj
b3VudEF0dHIpOwotICAgIGludCBjb2xDb3VudEludCA9IGNvbENvdW50VmFsdWUudG9JbnQoKTsK
KyAgICBpbnQgY29sQ291bnRJbnQgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX2NvbGNvdW50
QXR0cik7CiAgICAgLy8gVGhlIEFSSUEgc3BlYyBzdGF0ZXMsICJBdXRob3JzIG11c3Qgc2V0IHRo
ZSB2YWx1ZSBvZiBhcmlhLWNvbGNvdW50IHRvIGFuIGludGVnZXIgZXF1YWwgdG8gdGhlCiAgICAg
Ly8gbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGZ1bGwgdGFibGUuIElmIHRoZSB0b3RhbCBudW1i
ZXIgb2YgY29sdW1ucyBpcyB1bmtub3duLCBhdXRob3JzIG11c3QKICAgICAvLyBzZXQgdGhlIHZh
bHVlIG9mIGFyaWEtY29sY291bnQgdG8gLTEgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdmFsdWUgc2hv
dWxkIG5vdCBiZSBjYWxjdWxhdGVkIGJ5CkBAIC03MjEsOCArNzE5LDcgQEAgaW50IEFjY2Vzc2li
aWxpdHlUYWJsZTo6YXhDb2x1bW5Db3VudCgpIGNvbnN0CiAKIGludCBBY2Nlc3NpYmlsaXR5VGFi
bGU6OmF4Um93Q291bnQoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21TdHJpbmcmIHJvd0NvdW50
VmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9yb3djb3VudEF0dHIpOwotICAgIGludCByb3dDb3Vu
dEludCA9IHJvd0NvdW50VmFsdWUudG9JbnQoKTsKKyAgICBpbnQgcm93Q291bnRJbnQgPSBnZXRJ
bnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2NvdW50QXR0cik7CiAgICAgLy8gVGhlIEFSSUEgc3Bl
YyBzdGF0ZXMsICJBdXRob3JzIG11c3Qgc2V0IHRoZSB2YWx1ZSBvZiBhcmlhLXJvd2NvdW50IHRv
IGFuIGludGVnZXIgZXF1YWwgdG8gdGhlCiAgICAgLy8gbnVtYmVyIG9mIHJvd3MgaW4gdGhlIGZ1
bGwgdGFibGUuIElmIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyBpcyB1bmtub3duLCBhdXRob3Jz
IG11c3Qgc2V0CiAgICAgLy8gdGhlIHZhbHVlIG9mIGFyaWEtcm93Y291bnQgdG8gLTEgdG8gaW5k
aWNhdGUgdGhhdCB0aGUgdmFsdWUgc2hvdWxkIG5vdCBiZSBjYWxjdWxhdGVkIGJ5IHRoZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbC5jcHAKaW5kZXggYzM3NjdiZGNjNTg1N2Y5YzBhMjQxY2UxMWRiMGI1NjMwZWNjYjNmNS4u
M2Y2NTA4ZTA2MWMxODAwNmZlZTYxZTRlNGQxZDZiMzk3NjI4ZDI3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3Bw
CkBAIC00MDIsOSArNDAyLDggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6dGl0bGVVSUVsZW1lbnQoKSBjb25zdAogICAgIAogaW50IEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OmF4Q29sdW1uSW5kZXgoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21TdHJpbmcm
IGNvbEluZGV4VmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9jb2xpbmRleEF0dHIpOwotICAgIGlm
IChjb2xJbmRleFZhbHVlLnRvSW50KCkgPj0gMSkKLSAgICAgICAgcmV0dXJuIGNvbEluZGV4VmFs
dWUudG9JbnQoKTsKKyAgICBpZiAoaW50IHZhbHVlID0gZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJp
YV9jb2xpbmRleEF0dHIpOyB2YWx1ZSA+PSAxKQorICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAg
ICAvLyAiQVJJQSAxLjE6IElmIHRoZSBzZXQgb2YgY29sdW1ucyB3aGljaCBpcyBwcmVzZW50IGlu
IHRoZSBET00gaXMgY29udGlndW91cywgYW5kIGlmIHRoZXJlIGFyZSBubyBjZWxscyB3aGljaCBz
cGFuIG1vcmUgdGhhbiBvbmUgcm93CiAgICAgLy8gb3IgY29sdW1uIGluIHRoYXQgc2V0LCB0aGVu
IGF1dGhvcnMgbWF5IHBsYWNlIGFyaWEtY29saW5kZXggb24gZWFjaCByb3csIHNldHRpbmcgdGhl
IHZhbHVlIHRvIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY29sdW1uIG9mIHRoZSBzZXQuIgpAQCAt
NDIwLDEzICs0MTksMTIgQEAgaW50IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93SW5kZXgo
KSBjb25zdAogewogICAgIC8vIEFSSUEgMS4xOiBBdXRob3JzIHNob3VsZCBwbGFjZSBhcmlhLXJv
d2luZGV4IG9uIGVhY2ggcm93LiBBdXRob3JzIG1heSBhbHNvIHBsYWNlCiAgICAgLy8gYXJpYS1y
b3dpbmRleCBvbiBhbGwgb2YgdGhlIGNoaWxkcmVuIG9yIG93bmVkIGVsZW1lbnRzIG9mIGVhY2gg
cm93LgotICAgIGNvbnN0IEF0b21TdHJpbmcmIHJvd0luZGV4VmFsdWUgPSBnZXRBdHRyaWJ1dGUo
YXJpYV9yb3dpbmRleEF0dHIpOwotICAgIGlmIChyb3dJbmRleFZhbHVlLnRvSW50KCkgPj0gMSkK
LSAgICAgICAgcmV0dXJuIHJvd0luZGV4VmFsdWUudG9JbnQoKTsKLSAgICAKKyAgICBpZiAoaW50
IHZhbHVlID0gZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9yb3dpbmRleEF0dHIpOyB2YWx1ZSA+
PSAxKQorICAgICAgICByZXR1cm4gdmFsdWU7CisKICAgICBpZiAoQWNjZXNzaWJpbGl0eVRhYmxl
Um93KiBwYXJlbnRSb3cgPSB0aGlzLT5wYXJlbnRSb3coKSkKICAgICAgICAgcmV0dXJuIHBhcmVu
dFJvdy0+YXhSb3dJbmRleCgpOwotICAgIAorCiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC00Mzcs
MTEgKzQzNSwxMCBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhDb2x1bW5TcGFuKCkg
Y29uc3QKICAgICBpZiAoaGFzQXR0cmlidXRlKGNvbHNwYW5BdHRyKSkKICAgICAgICAgcmV0dXJu
IC0xOwogCi0gICAgY29uc3QgQXRvbVN0cmluZyYgY29sU3BhblZhbHVlID0gZ2V0QXR0cmlidXRl
KGFyaWFfY29sc3BhbkF0dHIpOwogICAgIC8vIEFSSUEgMS4xOiBBdXRob3JzIG11c3Qgc2V0IHRo
ZSB2YWx1ZSBvZiBhcmlhLWNvbHNwYW4gdG8gYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3IgZXF1
YWwgdG8gMS4KLSAgICBpZiAoY29sU3BhblZhbHVlLnRvSW50KCkgPj0gMSkKLSAgICAgICAgcmV0
dXJuIGNvbFNwYW5WYWx1ZS50b0ludCgpOwotICAgIAorICAgIGlmIChpbnQgdmFsdWUgPSBnZXRJ
bnRlZ3JhbEF0dHJpYnV0ZShhcmlhX2NvbHNwYW5BdHRyKTsgdmFsdWUgPj0gMSkKKyAgICAgICAg
cmV0dXJuIHZhbHVlOworCiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC00NTIsMTUgKzQ0OSwxMyBA
QCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhSb3dTcGFuKCkgY29uc3QKICAgICBpZiAo
aGFzQXR0cmlidXRlKHJvd3NwYW5BdHRyKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29u
c3QgQXRvbVN0cmluZyYgcm93U3BhblZhbHVlID0gZ2V0QXR0cmlidXRlKGFyaWFfcm93c3BhbkF0
dHIpOwotICAgIAogICAgIC8vIEFSSUEgMS4xOiBBdXRob3JzIG11c3Qgc2V0IHRoZSB2YWx1ZSBv
ZiBhcmlhLXJvd3NwYW4gdG8gYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMC4K
ICAgICAvLyBTZXR0aW5nIHRoZSB2YWx1ZSB0byAwIGluZGljYXRlcyB0aGF0IHRoZSBjZWxsIG9y
IGdyaWRjZWxsIGlzIHRvIHNwYW4gYWxsIHRoZSByZW1haW5pbmcgcm93cyBpbiB0aGUgcm93IGdy
b3VwLgotICAgIGlmIChyb3dTcGFuVmFsdWUgPT0gIjAiKQorICAgIGlmIChnZXRBdHRyaWJ1dGUo
YXJpYV9yb3dzcGFuQXR0cikgPT0gIjAiKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAocm93
U3BhblZhbHVlLnRvSW50KCkgPj0gMSkKLSAgICAgICAgcmV0dXJuIHJvd1NwYW5WYWx1ZS50b0lu
dCgpOwotICAgIAorICAgIGlmIChpbnQgdmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlh
X3Jvd3NwYW5BdHRyKTsgdmFsdWUgPj0gMSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworCiAgICAg
cmV0dXJuIC0xOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCmluZGV4IGFkNmVhNDk3ZDdmZTgxYWI0OWM2
ZmIyZTc2MTY4YTRhZGVmZTNkMjMuLmVkMGZiMGIyY2E0ZDVhNjg1NWIyOTMzMWFmOThlYmE0NTIy
ZjY5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZVJvdy5jcHAKQEAgLTE3NSwyMCArMTc1LDE0IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVRhYmxlUm93OjphZGRDaGlsZHJlbigpCiAKIGludCBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6
OmF4Q29sdW1uSW5kZXgoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21TdHJpbmcmIGNvbEluZGV4
VmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9jb2xpbmRleEF0dHIpOwotICAgIGlmIChjb2xJbmRl
eFZhbHVlLnRvSW50KCkgPj0gMSkKLSAgICAgICAgcmV0dXJuIGNvbEluZGV4VmFsdWUudG9JbnQo
KTsKLSAgICAKLSAgICByZXR1cm4gLTE7CisgICAgaW50IHZhbHVlID0gZ2V0SW50ZWdyYWxBdHRy
aWJ1dGUoYXJpYV9jb2xpbmRleEF0dHIpOworICAgIHJldHVybiB2YWx1ZSA+PSAxID8gdmFsdWUg
OiAtMTsKIH0KIAogaW50IEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YXhSb3dJbmRleCgpIGNvbnN0
CiB7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgcm93SW5kZXhWYWx1ZSA9IGdldEF0dHJpYnV0ZShh
cmlhX3Jvd2luZGV4QXR0cik7Ci0gICAgaWYgKHJvd0luZGV4VmFsdWUudG9JbnQoKSA+PSAxKQot
ICAgICAgICByZXR1cm4gcm93SW5kZXhWYWx1ZS50b0ludCgpOwotICAgIAotICAgIHJldHVybiAt
MTsKKyAgICBpbnQgdmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2luZGV4QXR0
cik7CisgICAgcmV0dXJuIHZhbHVlID49IDEgPyB2YWx1ZSA6IC0xOwogfQogICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NTZWxlY3RvclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVj
dG9yUGFyc2VyLmNwcAppbmRleCBlZTQzZDA4ZmMwZTBlYTdmMjBkODBkOTA1OTZmYWU5OTE0ZDQ0
NzJlLi4zMGRlN2JjMmRhZDE5ODE5ZjExYTZkYjgxMzNmMGM4ZDZiMDQyNWJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9y
U2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTg4NCw5ICs4ODUsOSBAQCBzdGF0aWMgYm9vbCBjb25zdW1lQU5QbHVzQihDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgc3RkOjpwYWlyPGludCwgaW50PiYgcmVzdQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoblN0cmluZy5sZW5ndGgoKSA+IDIpIHsKLSAgICAg
ICAgYm9vbCB2YWxpZDsKLSAgICAgICAgcmVzdWx0LnNlY29uZCA9IG5TdHJpbmcuc3Vic3RyaW5n
KDEpLnRvSW50U3RyaWN0KCZ2YWxpZCk7Ci0gICAgICAgIHJldHVybiB2YWxpZDsKKyAgICAgICAg
YXV0byBwYXJzZWROdW1iZXIgPSBwYXJzZUludGVnZXI8aW50PihTdHJpbmdWaWV3IHsgblN0cmlu
ZyB9LnN1YnN0cmluZygxKSk7CisgICAgICAgIHJlc3VsdC5zZWNvbmQgPSBwYXJzZWROdW1iZXIu
dmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJuIHBhcnNlZE51bWJlci5oYXNWYWx1ZSgpOwogICAg
IH0KIAogICAgIE51bWVyaWNTaWduIHNpZ24gPSBuU3RyaW5nLmxlbmd0aCgpID09IDEgPyBOb1Np
Z24gOiBNaW51c1NpZ247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Rva2VuaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5j
cHAKaW5kZXggMWE5Mzc3NjVmNjU2NDEyOWMxNzk5YzM0NTRjNTRhM2Q1MDgzYTQzYy4uNmFkM2Rm
OTNjOTZkNmRjNzhkZGJiNTY1MjA0ZjNiN2VjZWM0YjkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkNT
U1Rva2VuaXplcklucHV0U3RyZWFtLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFj
dGVyTmFtZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODM2LDkgKzgzNyw3IEBAIFVD
aGFyMzIgQ1NTVG9rZW5pemVyOjpjb25zdW1lRXNjYXBlKCkKICAgICAgICAgICAgIGNvbnN1bWVk
SGV4RGlnaXRzKys7CiAgICAgICAgIH07CiAgICAgICAgIGNvbnN1bWVTaW5nbGVXaGl0ZXNwYWNl
SWZOZXh0KCk7Ci0gICAgICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICAgICAgVUNoYXIzMiBjb2Rl
UG9pbnQgPSBoZXhDaGFycy50b1N0cmluZygpLnRvVUludFN0cmljdCgmb2ssIDE2KTsKLSAgICAg
ICAgQVNTRVJUKG9rKTsKKyAgICAgICAgYXV0byBjb2RlUG9pbnQgPSBwYXJzZUludGVnZXI8dWlu
dDMyX3Q+KGhleENoYXJzLCAxNikudmFsdWUoKTsKICAgICAgICAgaWYgKCFjb2RlUG9pbnQgfHwg
KDB4RDgwMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4REZGRikgfHwgY29kZVBvaW50
ID4gMHgxMEZGRkYpCiAgICAgICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnRDaGFyYWN0ZXI7CiAg
ICAgICAgIHJldHVybiBjb2RlUG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggNTQ3OTc0NDE5NmFmOThiNzZmNDE3OTAzNmVlNTNjYzEy
YmMwMDliNi4uZDNhY2VjZmYyMTZiNDZhMjMwZmVlNDhmNWViMGZlNGYzNTUzYjYzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNTQsNiAr
NTQsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvRGF0YURldGVjdG9yc1NQSS5oPgogI2ltcG9y
dCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKICNp
bXBvcnQgIkRhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCIKIApAQCAtMTk0LDE5ICsxOTUsMjUg
QEAgYm9vbCBEYXRhRGV0ZWN0aW9uOjpjYW5QcmVzZW50RGF0YURldGVjdG9yc1VJRm9yRWxlbWVu
dChFbGVtZW50JiBlbGVtZW50KQogICAgIGlmIChzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9E
RFNob3VsZEltbWVkaWF0ZWx5U2hvd0FjdGlvblNoZWV0Rm9yVVJMKGRvd25jYXN0PEhUTUxBbmNo
b3JFbGVtZW50PihlbGVtZW50KS5ocmVmKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAK
LSAgICBjb25zdCBBdG9tU3RyaW5nJiByZXN1bHRBdHRyaWJ1dGUgPSBlbGVtZW50LmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oeF9hcHBsZV9kYXRhX2RldGVjdG9yc19yZXN1bHRBdHRy
KTsKKyAgICBhdXRvJiByZXN1bHRBdHRyaWJ1dGUgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oeF9hcHBsZV9kYXRhX2RldGVjdG9yc19yZXN1bHRBdHRyKTsKICAgICBp
ZiAocmVzdWx0QXR0cmlidXRlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IE5TQXJyYXkgKnJlc3VsdHMgPSBlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKS0+ZGF0YURldGVj
dGlvblJlc3VsdHMoKTsKICAgICBpZiAoIXJlc3VsdHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHRJbmRpY2VzID0gcmVzdWx0QXR0cmlidXRlLnN0cmlu
ZygpLnNwbGl0KCcvJyk7Ci0gICAgRERSZXN1bHRSZWYgcmVzdWx0ID0gW1tyZXN1bHRzIG9iamVj
dEF0SW5kZXg6cmVzdWx0SW5kaWNlc1swXS50b0ludCgpXSBjb3JlUmVzdWx0XTsKLSAgICAvLyBI
YW5kbGUgdGhlIGNhc2Ugb2YgYSBzaWduYXR1cmUgYmxvY2ssIHdoZXJlIHdlIG5lZWQgdG8gY2hl
Y2sgdGhlIGNvcnJlY3Qgc3VicmVzdWx0LgotICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgcmVz
dWx0SW5kaWNlcy5zaXplKCk7IGkrKykgewotICAgICAgICByZXN1bHRzID0gKE5TQXJyYXkgKilz
b2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFJlc3VsdEdldFN1YlJlc3VsdHMocmVzdWx0KTsK
LSAgICAgICAgcmVzdWx0ID0gKEREUmVzdWx0UmVmKVtyZXN1bHRzIG9iamVjdEF0SW5kZXg6cmVz
dWx0SW5kaWNlc1tpXS50b0ludCgpXTsKKworICAgIGF1dG8gcmVzdWx0SW5kaWNlcyA9IFN0cmlu
Z1ZpZXcgeyByZXN1bHRBdHRyaWJ1dGUgfS5zcGxpdCgnLycpOworICAgIGF1dG8gaW5kZXhJdGVy
YXRvciA9IHJlc3VsdEluZGljZXMuYmVnaW4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IFtyZXN1bHRz
W3BhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oKmluZGV4SXRlcmF0b3IpLnZh
bHVlT3IoMCldIGNvcmVSZXN1bHRdOworCisgICAgLy8gSGFuZGxlIHRoZSBjYXNlIG9mIGEgc2ln
bmF0dXJlIGJsb2NrLCB3aGVyZSB3ZSBuZWVkIHRvIGZvbGxvdyB0aGUgcGF0aCBkb3duIG9uZSBv
ciBtb3JlIHN1YnJlc3VsdCBsZXZlbHMuCisgICAgaWYgKCsraW5kZXhJdGVyYXRvciAhPSByZXN1
bHRJbmRpY2VzLmVuZCgpKSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHJlc3VsdHMgPSAo
X19icmlkZ2UgTlNBcnJheSAqKXNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3JlX0REUmVzdWx0R2V0
U3ViUmVzdWx0cyhyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gKF9fYnJpZGdlIEREUmVz
dWx0UmVmKXJlc3VsdHNbcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigqaW5k
ZXhJdGVyYXRvcikudmFsdWVPcigwKV07CisgICAgICAgIH0gd2hpbGUgKCsraW5kZXhJdGVyYXRv
ciAhPSByZXN1bHRJbmRpY2VzLmVuZCgpKTsKICAgICB9CisKICAgICByZXR1cm4gc29mdExpbmtf
RGF0YURldGVjdG9yc0NvcmVfRERTaG91bGRJbW1lZGlhdGVseVNob3dBY3Rpb25TaGVldEZvclJl
c3VsdChyZXN1bHQpOwogfQogCkBAIC0zMTYsMzAgKzMyMywyMCBAQCBzdGF0aWMgTlNTdHJpbmcg
KmRhdGFEZXRlY3RvclR5cGVGb3JDYXRlZ29yeShERFJlc3VsdENhdGVnb3J5IGNhdGVnb3J5KQog
CiBzdGF0aWMgU3RyaW5nIGRhdGFEZXRlY3RvclN0cmluZ0ZvclBhdGgoTlNJbmRleFBhdGggKnBh
dGgpCiB7Ci0gICAgTlNVSW50ZWdlciBsZW5ndGggPSBwYXRoLmxlbmd0aDsKLSAgICAKKyAgICBh
dXRvIGxlbmd0aCA9IHBhdGgubGVuZ3RoOwogICAgIHN3aXRjaCAobGVuZ3RoKSB7CiAgICAgY2Fz
ZSAwOgogICAgICAgICByZXR1cm4geyB9OwogICAgIGNhc2UgMToKLSAgICAgICAgcmV0dXJuIFN0
cmluZzo6bnVtYmVyKFtwYXRoIGluZGV4QXRQb3NpdGlvbjowXSk7Ci0gICAgY2FzZSAyOiB7Ci0g
ICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBdKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJy8nKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIo
W3BhdGggaW5kZXhBdFBvc2l0aW9uOjFdKTsKLSAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgZGVmYXVsdDogewotICAgICAgICBTdHJpbmdCdWlsZGVy
IHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKFtwYXRo
IGluZGV4QXRQb3NpdGlvbjowXSk7Ci0gICAgICAgIGZvciAoTlNVSW50ZWdlciBpID0gMSA7IGkg
PCBsZW5ndGggOyBpKyspIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcvJyk7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihbcGF0aCBpbmRleEF0UG9z
aXRpb246aV0pOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKLSAgICB9CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKFtwYXRoIGluZGV4QXRQ
b3NpdGlvbjowXSk7CisgICAgY2FzZSAyOgorICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhbcGF0
aCBpbmRleEF0UG9zaXRpb246MF0sICcvJywgW3BhdGggaW5kZXhBdFBvc2l0aW9uOjFdKTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTnVtYmVyKFtwYXRoIGluZGV4QXRQb3NpdGlvbjowXSk7CisgICAgICAgIGZvciAo
TlNVSW50ZWdlciBpID0gMTsgaSA8IGxlbmd0aDsgaSsrKQorICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJy8nLCBbcGF0aCBpbmRleEF0UG9zaXRpb246aV0pOworICAgICAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOwogICAgIH0KIH0KIApAQCAtNjg4LDQgKzY4NSwzIEBAIGJvb2wgRGF0
YURldGVjdGlvbjo6aXNEYXRhRGV0ZWN0b3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQp
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggMDY4MjZmMTI0MTg3YmRiZDRmMWE0
OWM0MzcwZWM2ZWY0ZDBkOGVmNS4uNTJhNTYzMTVjNGIzNTkwYzdjYTE1YWI4ZmI1NDlkYTFjNzky
YTQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bQpAQCAtNjcsNiArNjcsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRT
dHJpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmg+CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAjaW1wb3J0ICJEYXRhRGV0
ZWN0aW9uLmgiCkBAIC05NzgsNyArOTc5LDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVy
Ojpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAg
IH0KIAogICAgICAgICBTdHJpbmcgZm9udFdlaWdodCA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVG
b3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5Rm9udFN0eWxlKTsKLSAgICAgICAgaWYgKGZvbnRX
ZWlnaHQuc3RhcnRzV2l0aCgiYm9sZCIpIHx8IGZvbnRXZWlnaHQudG9JbnQoKSA+PSA3MDApIHsK
KyAgICAgICAgaWYgKGZvbnRXZWlnaHQuc3RhcnRzV2l0aCgiYm9sZCIpIHx8IHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oZm9udFdlaWdodCkudmFsdWVPcigwKSA+PSA3MDAp
IHsKICAgICAgICAgICAgIC8vID8/PyBoYW5kbGUgd2VpZ2h0IHByb3Blcmx5IHVzaW5nIE5TRm9u
dE1hbmFnZXIKICAgICAgICAgICAgIFBsYXRmb3JtRm9udCAqb3JpZ2luYWxGb250ID0gZm9udDsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxl
bWVudC5jcHAKaW5kZXggNDdmMGI5NTQ3MWVkOWEwMDgwMzRjYzgyNmJhMzYyNWY3ZDJlZWZkZS4u
NjM1ZTkzMjNiZTVjZjZmOTk5MzY2MDMxOTAyZjIwNTQyNzUxMGM4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZl
cnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Myw3ICs4Miw3IEBAIGludCBI
VE1MRnJhbWVFbGVtZW50OjpkZWZhdWx0VGFiSW5kZXgoKSBjb25zdAogdm9pZCBIVE1MRnJhbWVF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBmcmFtZWJvcmRlckF0dHIpIHsK
LSAgICAgICAgbV9mcmFtZUJvcmRlciA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PGludD4odmFsdWUpLnZhbHVlT3IoMCk7CisgICAgICAgIG1fZnJhbWVCb3JkZXIgPSBwYXJzZUhU
TUxJbnRlZ2VyKHZhbHVlKS52YWx1ZV9vcigwKTsKICAgICAgICAgbV9mcmFtZUJvcmRlclNldCA9
ICF2YWx1ZS5pc051bGwoKTsKICAgICAgICAgLy8gRklYTUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0
dGFjaGVkLCB0aGlzIGhhcyBubyBlZmZlY3QuCiAgICAgfSBlbHNlIGlmIChuYW1lID09IG5vcmVz
aXplQXR0cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAK
aW5kZXggNWM5NjU1MDNhNGRhZjNkMTI3MGUwMDEzMzM4MDRiMjQ2N2RmZjdlNS4uOTVhZTZhMWU1
NWIyZjU1MzFlODVhYzE5ODM5MmQ4NDZkMDNjN2FmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAKICNpbmNsdWRlICJI
VE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAi
TGVuZ3RoLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlJlbmRlckZyYW1l
U2V0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEhUTUxGcmFtZVNl
dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdAogCiAgICAgaWYgKG5hbWUgPT0gYm9yZGVyQXR0cikgewogICAgICAgICBpZiAoIXZh
bHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBtX2JvcmRlciA9IHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3IoMCk7CisgICAgICAgICAgICBtX2Jv
cmRlciA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZhbHVlX29yKDApOwogICAgICAgICAgICAg
bV9ib3JkZXJTZXQgPSB0cnVlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fYm9yZGVy
U2V0ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcAppbmRleCA3Mjcy
YTVhN2U2ZWQ3ODYwY2ZkM2NmM2I0Mzk2NjYxOTRhN2M5YzE4Li5jNmI4ZTA1Y2I5NTIyMzhmZDRl
YWZiNWU5NGI3NGMzNzIzMmFkYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxIUkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5j
cHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJT
dHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC03NCw3ICs3Myw3IEBAIHZvaWQgSFRNTEhSRWxlbWVudDo6Y29sbGVj
dFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hCiAg
ICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIENTU1ZhbHVlQXV0byk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKSB7Ci0gICAgICAgIGlmIChhdXRvIHZhbHVlSW50
ZWdlciA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpOyB2YWx1
ZUludGVnZXIgJiYgISp2YWx1ZUludGVnZXIpCisgICAgICAgIGlmIChhdXRvIHZhbHVlSW50ZWdl
ciA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpOyB2YWx1ZUludGVnZXIgJiYgISp2YWx1ZUludGVn
ZXIpCiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUo
c3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIDEsIENTU1VuaXRUeXBlOjpDU1NfUFgpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVy
dHlXaWR0aCwgdmFsdWUpOwpAQCAtOTEsNyArOTAsNyBAQCB2b2lkIEhUTUxIUkVsZW1lbnQ6OmNv
bGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YQogICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsIGRhcmtHcmF5VmFsdWUpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09IHNp
emVBdHRyKSB7Ci0gICAgICAgIGludCBzaXplID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKTsKKyAgICAgICAgaW50IHNpemUgPSBwYXJzZUhU
TUxJbnRlZ2VyKHZhbHVlKS52YWx1ZV9vcigwKTsKICAgICAgICAgaWYgKHNpemUgPD0gMSkKICAg
ICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwg
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgMCwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CiAg
ICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5k
ZXggMjdmZWZlYjU3YjljMDU2NTVmMWRkZjVkYWFiMjdiZTk0MDQ4NjZlMS4uNWM4M2QxZTZlM2E4
NzgwYWZlYjEwODVlNWY3Yjg0YWNkZDkxYzM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29u
dmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg3LDcgKzg2LDcgQEAgdm9p
ZCBIVE1MSUZyYW1lRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUKICAgICBlbHNlIGlmIChuYW1lID09IGZyYW1lYm9yZGVyQXR0
cikgewogICAgICAgICAvLyBGcmFtZSBib3JkZXIgZG9lc24ndCByZWFsbHkgbWF0Y2ggdGhlIEhU
TUw0IHNwZWMgZGVmaW5pdGlvbiBmb3IgaWZyYW1lcy4gSXQgc2ltcGx5IGFkZHMKICAgICAgICAg
Ly8gYSBwcmVzZW50YXRpb25hbCBoaW50IHRoYXQgdGhlIGJvcmRlciBzaG91bGQgYmUgb2ZmIGlm
IHNldCB0byB6ZXJvLgotICAgICAgICBpZiAoIXBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4odmFsdWUpLnZhbHVlT3IoMCkpIHsKKyAgICAgICAgaWYgKCFwYXJzZUhUTUxJbnRl
Z2VyKHZhbHVlKS52YWx1ZV9vcigwKSkgewogICAgICAgICAgICAgLy8gQWRkIGEgcnVsZSB0aGF0
IG51bGxzIG91dCBvdXIgYm9yZGVyIHdpZHRoLgogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1By
ZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCAw
LCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKaW5kZXggY2U2YzliOTkwNmE5MDRmM2JlZWYxMTU5ZmQ2Y2I3Y2Mw
YTljZTEyZS4uNmE0ZmEzYzk0ZmZmNGYxM2VmYWI1ZGM3YThkMTgzNGExZGRiOGVlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC04MDIsNyArODAyLDcgQEAg
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9tU3RyaW4KICAgICAgICAgaWYgKG1fc2l6ZSAhPSBvbGRTaXplICYm
IHJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dEFuZFBy
ZWZXaWR0aHNSZWNhbGMoKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gcmVzdWx0c0F0dHIpCi0g
ICAgICAgIG1fbWF4UmVzdWx0cyA9IHZhbHVlLmlzTnVsbCgpID8gLTEgOiBzdGQ6Om1pbihwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApLCBtYXhT
YXZlZFJlc3VsdHMpOworICAgICAgICBtX21heFJlc3VsdHMgPSB2YWx1ZS5pc051bGwoKSA/IC0x
IDogc3RkOjptaW4ocGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkudmFsdWVfb3IoMCksIG1heFNhdmVk
UmVzdWx0cyk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBhdXRvc2F2ZUF0dHIgfHwgbmFtZSA9PSBp
bmNyZW1lbnRhbEF0dHIpCiAgICAgICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKICAg
ICBlbHNlIGlmIChuYW1lID09IG1heEF0dHIgfHwgbmFtZSA9PSBtaW5BdHRyIHx8IG5hbWUgPT0g
bXVsdGlwbGVBdHRyIHx8IG5hbWUgPT0gcGF0dGVybkF0dHIgfHwgbmFtZSA9PSBwcmVjaXNpb25B
dHRyIHx8IG5hbWUgPT0gc3RlcEF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMSUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNw
cAppbmRleCBlY2UyOWVhMjIwNzk3ZDk5ZTQzYzlmNzEwMGJmNGRkYTgyZTlmY2ZiLi4zNDMyODNm
ODExMmZjZGU5NzlhNGRmMDcxYzUzOTE4YmU2ZjUyZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExJRWxlbWVudC5jcHAKQEAgLTExNyw3ICsxMTcsMTAgQEAgdm9pZCBIVE1MTElFbGVtZW50Ojpk
aWRBdHRhY2hSZW5kZXJlcnMoKQogaW5saW5lIHZvaWQgSFRNTExJRWxlbWVudDo6cGFyc2VWYWx1
ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQocmVuZGVyZXIoKSk7Ci0g
ICAgZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpyZW5kZXJlcigpKS5zZXRFeHBsaWNpdFZhbHVl
KHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpKTsKKyAgICBPcHRp
b25hbDxpbnQ+IGV4cGxpY2l0VmFsdWU7CisgICAgaWYgKGF1dG8gcGFyc2VkVmFsdWUgPSBwYXJz
ZUhUTUxJbnRlZ2VyKHZhbHVlKSkKKyAgICAgICAgZXhwbGljaXRWYWx1ZSA9ICpwYXJzZWRWYWx1
ZTsKKyAgICBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnJlbmRlcmVyKCkpLnNldEV4cGxpY2l0
VmFsdWUoZXhwbGljaXRWYWx1ZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1h
cnF1ZWVFbGVtZW50LmNwcAppbmRleCBjNDgwOWU5ZmFkZjdmYmVmNWFiMmJlNjAwYWI0NGJmMTg4
MDgxN2QxLi4xNGE0NzI5OGFlNmY3MTM0YjhlMTA2Njk3MDhkMDljMmNjMGIzYjBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCkBAIC0zMiw3ICszMiw2IEBA
CiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlJlbmRl
ck1hcnF1ZWUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xNDgsOCArMTQ3LDggQEAgdm9pZCBIVE1MTWFycXVlZUVsZW1lbnQ6OnNldFNj
cm9sbERlbGF5KHVuc2lnbmVkIHNjcm9sbERlbGF5KQogICAgIAogaW50IEhUTUxNYXJxdWVlRWxl
bWVudDo6bG9vcCgpIGNvbnN0CiB7Ci0gICAgYXV0byBsb29wVmFsdWUgPSBwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
bG9vcEF0dHIpKTsKLSAgICByZXR1cm4gbG9vcFZhbHVlICYmICpsb29wVmFsdWUgPiAwID8gKmxv
b3BWYWx1ZSA6IC0xOworICAgIGludCBsb29wVmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShs
b29wQXR0cik7CisgICAgcmV0dXJuIGxvb3BWYWx1ZSA+IDAgPyBsb29wVmFsdWUgOiAtMTsKIH0K
ICAgICAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxNYXJxdWVlRWxlbWVudDo6c2V0TG9vcChpbnQg
bG9vcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKaW5k
ZXggNjg3MzgwNTg3YTFkNTllNDM2OWZlY2JhM2Y0MzIyYTg3ZWI0NDhlOC4uNTkzZjdkMjQ3Njdk
ODcwMDUwMmQyODZhMjVjYzcwZmRkOTc1NWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVDZWxsRWxlbWVudC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJIVE1M
VGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAzLDEwICsxMDIs
MTAgQEAgdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE4KICAgICBpZiAobmFtZSA9PSBub3dyYXBBdHRy
KQogICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVXZWJraXROb3dyYXApOwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gd2lkdGhBdHRyKSB7Ci0gICAgICAgIGlmIChwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApID4gMCkgLy8gd2lkdGg9IjAiIGlz
IGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KKyAgICAgICAgaWYgKHBhcnNl
SFRNTEludGVnZXIodmFsdWUpLnZhbHVlX29yKDApID4gMCkgLy8gd2lkdGg9IjAiIGlzIGlnbm9y
ZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KICAgICAgICAgICAgIGFkZEhUTUxMZW5n
dGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCB2YWx1ZSk7CiAgICAgfSBlbHNlIGlm
IChuYW1lID09IGhlaWdodEF0dHIpIHsKLSAgICAgICAgaWYgKHBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3IoMCkgPiAwKSAvLyBoZWlnaHQ9IjAiIGlz
IGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KKyAgICAgICAgaWYgKHBhcnNl
SFRNTEludGVnZXIodmFsdWUpLnZhbHVlX29yKDApID4gMCkgLy8gaGVpZ2h0PSIwIiBpcyBpZ25v
cmVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luSUUuCiAgICAgICAgICAgICBhZGRIVE1MTGVu
Z3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIHZhbHVlKTsKICAgICB9IGVsc2UK
ICAgICAgICAgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlv
bkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlQ29sRWxlbWVudC5jcHAKaW5kZXggMDNhZmZjY2RiYmMzYWUwN2ExMjI5MDhjMTY0ZDk1
OGM1MjNiNzJjYy4uNWUyNGI5N2Q4ZDVkZmM5Zjk1ZDI0ZTQ5MDI3NDdmMWU0OGRhY2MxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCkBAIC03OCw4ICs3
OCw4IEBAIHZvaWQgSFRNTFRhYmxlQ29sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0CiAgICAgfSBlbHNlIGlmIChuYW1lID09IHdp
ZHRoQXR0cikgewogICAgICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
aWYgKGlzPFJlbmRlclRhYmxlQ29sPihyZW5kZXJlcigpKSkgewotICAgICAgICAgICAgICAgIFJl
bmRlclRhYmxlQ29sJiBjb2wgPSBkb3duY2FzdDxSZW5kZXJUYWJsZUNvbD4oKnJlbmRlcmVyKCkp
OwotICAgICAgICAgICAgICAgIGludCBuZXdXaWR0aCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPGludD4od2lkdGgoKSkudmFsdWVPcigwKTsKKyAgICAgICAgICAgICAgICBhdXRv
JiBjb2wgPSBkb3duY2FzdDxSZW5kZXJUYWJsZUNvbD4oKnJlbmRlcmVyKCkpOworICAgICAgICAg
ICAgICAgIGludCBuZXdXaWR0aCA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpLnZhbHVlX29yKDAp
OwogICAgICAgICAgICAgICAgIGlmIChuZXdXaWR0aCAhPSBjb2wud2lkdGgoKSkKICAgICAgICAg
ICAgICAgICAgICAgY29sLnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAg
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXgg
NGMwMzc2MGYxNjE0OTgxNmY5YWE3YmYwZjJjYWViZWNlMzZmNjE5NC4uYmY3OWQyYzUwMGExMDQ2
MzZkMGNiN2U5NThjZmIzYTMwMGZhMTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUVsZW1lbnQuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVz
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwMCw3ICszOTksNyBAQCB2b2lkIEhUTUxUYWJsZUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21TdHJpbgogICAgICAgICAgICAgbV9ydWxlc0F0dHIgPSBBbGxSdWxlczsKICAgICB9IGVsc2Ug
aWYgKG5hbWUgPT0gY2VsbHBhZGRpbmdBdHRyKSB7CiAgICAgICAgIGlmICghdmFsdWUuaXNFbXB0
eSgpKQotICAgICAgICAgICAgbV9wYWRkaW5nID0gc3RkOjptYXgoMCwgcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKSk7CisgICAgICAgICAgICBt
X3BhZGRpbmcgPSBzdGQ6Om1heCgwLCBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKS52YWx1ZV9vcigw
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcGFkZGluZyA9IDE7CiAgICAgfSBlbHNl
IGlmIChuYW1lID09IGNvbHNBdHRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggYzUzYTk5NzA1
OTQ0ODg1YmIyZDkzNzBmZDBjZmE1M2JjNTY4ZWJiMC4uNjMxYzNhYTZiMzcyNWQ3OGU4ODE5ZDlm
MTgyM2Y2YmU2YTJmYzQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtNTcsNyArNTcsNyBAQAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgog
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC0zMTcsOCArMzE3LDggQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsOjpyZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQoKQogewogICAgIHVuc2ln
bmVkIGluc3BlY3RlZFBhZ2VIZWlnaHQgPSBtX2luc3BlY3RlZFBhZ2VDb250cm9sbGVyLT5pbnNw
ZWN0ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CiAgICAgU3Ry
aW5nIHZhbHVlID0gbV9zZXR0aW5ncy0+Z2V0UHJvcGVydHkoaW5zcGVjdG9yQXR0YWNoZWRIZWln
aHRTZXR0aW5nKTsKLSAgICB1bnNpZ25lZCBwcmVmZXJyZWRIZWlnaHQgPSB2YWx1ZS5pc0VtcHR5
KCkgPyBkZWZhdWx0QXR0YWNoZWRIZWlnaHQgOiB2YWx1ZS50b1VJbnQoKTsKLSAgICAKKyAgICB1
bnNpZ25lZCBwcmVmZXJyZWRIZWlnaHQgPSB2YWx1ZS5pc0VtcHR5KCkgPyBkZWZhdWx0QXR0YWNo
ZWRIZWlnaHQgOiBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4odmFs
dWUpLnZhbHVlT3IoMCk7CisKICAgICAvLyBUaGlzIGNhbGwgbWlnaHQgbm90IGdvIHRocm91Z2gg
KGlmIHRoZSB3aW5kb3cgc3RhcnRzIG91dCBkZXRhY2hlZCksIGJ1dCBpZiB0aGUgd2luZG93IGlz
IGluaXRpYWxseSBjcmVhdGVkIGF0dGFjaGVkLAogICAgIC8vIEluc3BlY3RvckNvbnRyb2xsZXI6
OmF0dGFjaFdpbmRvdyBpcyBuZXZlciBjYWxsZWQsIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRv
IHNldCB0aGUgYXR0YWNoZWRXaW5kb3dIZWlnaHQuCiAgICAgLy8gRklYTUU6IENsZWFuIHVwIGNv
ZGUgc28gd2Ugb25seSBoYXZlIHRvIGNhbGwgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQgaW4gSW5z
cGVjdG9yQ29udHJvbGxlcjo6YXR0YWNoV2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDVlMzQzYTU0YmE3
MjE3MjliODEyOTJjNjA2Mzk5MjVkYzFkMGRlYTEuLmE4MjcxNzM4ODE2OWI3MWY2ZjAzMWQyOGQz
ZTI2NjJmYzQyMjFlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMjAsNiArMTIwLDcgQEAKICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2Vy
Q29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0yNzU4LDIyICsyNzU5LDIwIEBAIE5vZGUqIEluc3BlY3RvckRPTUFn
ZW50Ojpub2RlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXRoVG9rZW5zLnNpemUoKSAtIDE7
IGkgKz0gMikgewotICAgICAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICB1bnNpZ25l
ZCBjaGlsZE51bWJlciA9IHBhdGhUb2tlbnNbaV0udG9VSW50KCZzdWNjZXNzKTsKLSAgICAgICAg
aWYgKCFzdWNjZXNzKQorICAgICAgICBhdXRvIGNoaWxkTnVtYmVyID0gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KHBhdGhUb2tlbnNbaV0pOworICAgICAgICBpZiAo
IWNoaWxkTnVtYmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgTm9k
ZSogY2hpbGQ7CiAgICAgICAgIGlmIChpczxIVE1MRnJhbWVPd25lckVsZW1lbnQ+KCpub2RlKSkg
ewotICAgICAgICAgICAgQVNTRVJUKCFjaGlsZE51bWJlcik7CisgICAgICAgICAgICBBU1NFUlQo
ISpjaGlsZE51bWJlcik7CiAgICAgICAgICAgICBhdXRvJiBmcmFtZU93bmVyID0gZG93bmNhc3Q8
SFRNTEZyYW1lT3duZXJFbGVtZW50Pigqbm9kZSk7CiAgICAgICAgICAgICBjaGlsZCA9IGZyYW1l
T3duZXIuY29udGVudERvY3VtZW50KCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBp
ZiAoY2hpbGROdW1iZXIgPj0gaW5uZXJDaGlsZE5vZGVDb3VudChub2RlKSkKKyAgICAgICAgICAg
IGlmICgqY2hpbGROdW1iZXIgPj0gaW5uZXJDaGlsZE5vZGVDb3VudChub2RlKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgICAgICAgICAgY2hpbGQgPSBpbm5lckZpcnN0
Q2hpbGQobm9kZSk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgY2hpbGQgJiYgaiA8
IGNoaWxkTnVtYmVyOyArK2opCisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgY2hpbGQg
JiYgaiA8ICpjaGlsZE51bWJlcjsgKytqKQogICAgICAgICAgICAgICAgIGNoaWxkID0gaW5uZXJO
ZXh0U2libGluZyhjaGlsZCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDA2MzNiNzU2
MjNjYmI5ZGFiOTllN2EyODE5MDZkOWJkMGI4MDY3YzYuLmE1ZmUxZjE5ODc3OTc4OGZhYTkyYTJm
YzNjYTI0YTM4NWZkNDY0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAi
SFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTFRhYmxlQ29sRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1l
bnQuaCIKQEAgLTI1OCw3ICsyNTksNyBAQCBCb3gqIFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRC
b3goY29uc3QgQ29udGFpbmVyQm94JiBwYXJlbnRDb250YWluZXIsIGNvbnN0IFJlbgogICAgICAg
ICAgICAgICAgIGF1dG8mIHRhYmxlQ29sRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxUYWJsZUNv
bEVsZW1lbnQmPigqcmVuZGVyZXIuZWxlbWVudCgpKTsKICAgICAgICAgICAgICAgICBhdXRvIGNv
bHVtbldpZHRoID0gdGFibGVDb2xFbGVtZW50LndpZHRoKCk7CiAgICAgICAgICAgICAgICAgaWYg
KCFjb2x1bW5XaWR0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0
Qm94LT5zZXRDb2x1bW5XaWR0aChjb2x1bW5XaWR0aC50b0ludCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2hpbGRMYXlvdXRCb3gtPnNldENvbHVtbldpZHRoKHBhcnNlSFRNTEludGVnZXIoY29s
dW1uV2lkdGgpLnZhbHVlX29yKDApKTsKICAgICAgICAgICAgICAgICBpZiAodGFibGVDb2xFbGVt
ZW50LnNwYW4oKSA+IDEpCiAgICAgICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94LT5zZXRD
b2x1bW5TcGFuKHRhYmxlQ29sRWxlbWVudC5zcGFuKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsK
QEAgLTI3Niw3ICsyNzcsNiBAQCBCb3gqIFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29u
c3QgQ29udGFpbmVyQm94JiBwYXJlbnRDb250YWluZXIsIGNvbnN0IFJlbgogICAgICAgICAgICAg
ICAgIGF1dG8gcm93U3BhbiA9IGNlbGxFbGVtZW50LnJvd1NwYW4oKTsKICAgICAgICAgICAgICAg
ICBpZiAocm93U3BhbiA+IDEpCiAgICAgICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94LT5z
ZXRSb3dTcGFuKHJvd1NwYW4pOwotCiAgICAgICAgICAgICAgICAgYXV0byBjb2x1bW5TcGFuID0g
Y2VsbEVsZW1lbnQuY29sU3BhbigpOwogICAgICAgICAgICAgICAgIGlmIChjb2x1bW5TcGFuID4g
MSkKICAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gtPnNldENvbHVtblNwYW4oY29s
dW1uU3Bhbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKaW5kZXggOWQwYjdlNjRlMzFiMzdjNmIyZThlNzg3
MmRmNTlmODNlMjczYzE5Zi4uOTljYTljNGEwZDk3NjYxMmEwZjhiZDMzZGEwODRmYTQ0Njg1ZTk5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0
UmVzdWx0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NiwxMCArNDcsMTAgQEAg
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1
bHRDYWNoZSgpCiAKIHN0YXRpYyBib29sIHBhcnNlQWNjZXNzQ29udHJvbE1heEFnZShjb25zdCBT
dHJpbmcmIHN0cmluZywgU2Vjb25kcyYgZXhwaXJ5RGVsdGEpCiB7Ci0gICAgLy8gRklYTUU6IHRo
aXMgd2lsbCBub3QgZG8gdGhlIGNvcnJlY3QgdGhpbmcgZm9yIGEgbnVtYmVyIHN0YXJ0aW5nIHdp
dGggYSAnKycKLSAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgZXhwaXJ5RGVsdGEgPSBTZWNvbmRz
KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RyaW5nLnRvVUludFN0cmljdCgmb2spKSk7Ci0gICAgcmV0
dXJuIG9rOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSByZWplY3Qgc3RyaW5n
cyB0aGF0IGhhdmUgYSBsZWFkaW5nICIrIi4KKyAgICBhdXRvIHBhcnNlZEludGVnZXIgPSBwYXJz
ZUludGVnZXI8dWludDY0X3Q+KHN0cmluZyk7CisgICAgZXhwaXJ5RGVsdGEgPSBTZWNvbmRzKHN0
YXRpY19jYXN0PGRvdWJsZT4ocGFyc2VkSW50ZWdlci52YWx1ZU9yKDApKSk7CisgICAgcmV0dXJu
IHBhcnNlZEludGVnZXIuaGFzVmFsdWUoKTsKIH0KIAogRXhwZWN0ZWQ8VW5pcXVlUmVmPENyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPiwgU3RyaW5nPiBDcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlSXRlbTo6Y3JlYXRlKFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHBvbGlj
eSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCmluZGV4IDQ4MmQ5YmNhZDRiYzdiY2JjMzQ4Njhi
NWVkYzc1NjNiMDJmZDZhZjQuLjRmOTIzOTAwOGY5MGI1YjU4ODBmMWIyZDc1ZjJmNTFmZDY2OTlm
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCkBA
IC0yMSwxOCArMjEsMTkgQEAKIC8vIE9yaWdpbmFsIHZlcnNpb24gb2YgdGhpcyBmaWxlIGNhbiBj
dXJyZW50bHkgYmUgZm91bmQgYXQ6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTEuOC9z
b3VyY2UvbmV0d2Vyay9zdHJlYW1jb252L2NvbnZlcnRlcnMvUGFyc2VGVFBMaXN0LmNwcAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKEZUUERJUikKICNpbmNsdWRlICJGVFBEaXJl
Y3RvcnlQYXJzZXIuaCIKIAorI2lmIEVOQUJMRShGVFBESVIpCisKKyNpbmNsdWRlIDxzdGRpby5o
PgorI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
VG9JbnRlZ2VyQ29udmVyc2lvbi5oPgorCiAvLyBPbiBXaW5kb3dzLCB1c2UgdGhlIHRocmVhZHNh
ZmUgKl9yIGZ1bmN0aW9ucyBwcm92aWRlZCBieSBwdGhyZWFkLgogI2lmIE9TKFdJTkRPV1MpICYm
IChVU0UoUFRIUkVBRFMpIHx8IEhBVkUoUFRIUkVBRF9IKSkKICNpbmNsdWRlIDxwdGhyZWFkLmg+
CiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+Ci0jaW5jbHVkZSA8c3RkaW8u
aD4KLQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBPUyhXSU5ET1dTKSAmJiAhZGVmaW5l
ZChnbXRpbWVfcikKQEAgLTExODEsNyArMTE4Miw3IEBAIEZUUEVudHJ5VHlwZSBwYXJzZU9uZUZU
UExpbmUoY29uc3QgY2hhciogbGluZSwgTGlzdFN0YXRlJiBzdGF0ZSwgTGlzdFJlc3VsdCYgcmVz
CiAgICAgICAgIHsKICAgICAgICAgICAvKiBGaXJzdCB0cnkgdG8gdXNlIHJlc3VsdC5mZV9zaXpl
IHRvIGZpbmQgIiAtPiAiIHNlcXVlbmNlLgogICAgICAgICAgICAgIFRoaXMgY2FuIGdpdmUgcHJv
cGVyIHJlc3VsdCBmb3IgY2FzZXMgbGlrZSAiYWFhIC0+IGJiYiAtPiBjY2MiLiAqLwotICAgICAg
ICAgIHVuc2lnbmVkIGludCBmaWxlU2l6ZSA9IHJlc3VsdC5maWxlU2l6ZS50b1VJbnQoKTsKKyAg
ICAgICAgICAgIGF1dG8gZmlsZVNpemUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azx1bnNpZ25lZD4ocmVzdWx0LmZpbGVTaXplKS52YWx1ZU9yKDApOwogCiAgICAgICAgICAgaWYg
KHJlc3VsdC5maWxlbmFtZUxlbmd0aCA+IChmaWxlU2l6ZSArIDQpICYmCiAgICAgICAgICAgICAg
IHN0cm5jbXAocmVzdWx0LmZpbGVuYW1lICsgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoIC0gZmlsZVNp
emUgLSA0LCAiIC0+ICIsIDQpID09IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
aXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAppbmRleCBlNjZlMGMzYWU1ODYzMWFkMjBjMTFiM2Ew
ZDg0ODRlMGVmMWI0OTdmLi4yMTk4NzUzZTc3NTY4NmYzMGQ3N2QzZjA5YWZjNTdmNDAyZTcxNjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MCw3
ICs3MSw3IEBAIEV4cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhLCBTdHJpbmc+IFByaXZhdGVDbGlja01lCiAKICAgICBhdXRvIHByZWZpeExlbmd0
aCA9IHNpemVvZihwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRyaWdnZXJBdHRyaWJ1dGlvblBhdGgp
IC0gMTsKICAgICBpZiAocGF0aC5sZW5ndGgoKSA9PSBwcmVmaXhMZW5ndGggKyBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUpIHsKLSAg
ICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID0gcGF0aC5zdWJzdHJpbmco
cHJlZml4TGVuZ3RoLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRh
dGFQYXRoU2VnbWVudFNpemUpLnRvVUludDY0U3RyaWN0KCk7CisgICAgICAgIGF1dG8gYXR0cmli
dXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocGF0aC5zdWJz
dHJpbmcocHJlZml4TGVuZ3RoLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJp
Z2dlckRhdGFQYXRoU2VnbWVudFNpemUpKTsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhVUludDY0IHx8ICphdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID4gQXR0cmlidXRp
b25UcmlnZ2VyRGF0YTo6TWF4RW50cm9weSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3
YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIGNvbnZlcnNpb24gZGF0YSBjb3VsZCBub3QgYmUg
cGFyc2VkIG9yIHdhcyBoaWdoZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIG9mICJfcywgQXR0
cmlidXRpb25UcmlnZ2VyRGF0YTo6TWF4RW50cm9weSwgIi4iX3MpKTsKIApAQCAtNzgsMTEgKzc5
LDExIEBAIEV4cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhLCBTdHJpbmc+IFByaXZhdGVDbGlja01lCiAgICAgfQogICAgIAogICAgIGlmIChwYXRo
Lmxlbmd0aCgpID09IHByZWZpeExlbmd0aCArIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSArIDEgKyBwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFByaW9yaXR5UGF0aFNlZ21lbnRTaXplKSB7Ci0gICAgICAgIGF1dG8gYXR0cmlidXRpb25U
cmlnZ2VyRGF0YVVJbnQ2NCA9IHBhdGguc3Vic3RyaW5nKHByZWZpeExlbmd0aCwgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRTaXplKS50b1VJ
bnQ2NFN0cmljdCgpOworICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQg
PSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHBhdGguc3Vic3RyaW5nKHByZWZpeExlbmd0aCwgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRTaXpl
KSk7CiAgICAgICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCB8fCAqYXR0cmli
dXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCA+IEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6Ok1heEVudHJv
cHkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobWFrZVN0cmluZygiW1ByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNl
IHRoZSBjb252ZXJzaW9uIGRhdGEgY291bGQgbm90IGJlIHBhcnNlZCBvciB3YXMgaGlnaGVyIHRo
YW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3MsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6Ok1h
eEVudHJvcHksICIuIl9zKSk7CiAKLSAgICAgICAgYXV0byBhdHRyaWJ1dGlvblByaW9yaXR5VUlu
dDY0ID0gcGF0aC5zdWJzdHJpbmcocHJlZml4TGVuZ3RoICsgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRTaXplICsgMSwgcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRQcmlvcml0eVBhdGhTZWdtZW50U2l6ZSkudG9VSW50NjRTdHJpY3QoKTsKKyAg
ICAgICAgYXV0byBhdHRyaWJ1dGlvblByaW9yaXR5VUludDY0ID0gcGFyc2VJbnRlZ2VyPHVpbnQ2
NF90PihwYXRoLnN1YnN0cmluZyhwcmVmaXhMZW5ndGggKyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUgKyAxLCBwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFByaW9yaXR5UGF0aFNlZ21lbnRTaXplKSk7CiAgICAgICAgIGlmICghYXR0cmli
dXRpb25Qcmlvcml0eVVJbnQ2NCB8fCAqYXR0cmlidXRpb25Qcmlvcml0eVVJbnQ2NCA+IFByaW9y
aXR5OjpNYXhFbnRyb3B5KQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG1ha2VT
dHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252ZXJzaW9uIHdhcyBub3QgYWNj
ZXB0ZWQgYmVjYXVzZSB0aGUgcHJpb3JpdHkgY291bGQgbm90IGJlIHBhcnNlZCBvciB3YXMgaGln
aGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3MsIFByaW9yaXR5OjpNYXhFbnRyb3B5
LCAiLiJfcykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2Vs
ZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVu
dC5jcHAKaW5kZXggMDBkZTlhYzg1Njc0NDkzYzcwMGZkYzc5MjBkYTcxMzM1Yzk1MDFiMC4uMDU1
Nzk3ZjlmYjM4ZDA1M2JjMjY0ZDU2YjI2N2VjYmU3MzExODJkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2lu
Y2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
VG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExOCw3
ICsxMTcsNyBAQCBpbnQgTWF0aE1MU2VsZWN0RWxlbWVudDo6Z2V0U2VsZWN0ZWRBY3Rpb25DaGls
ZEFuZEluZGV4KEVsZW1lbnQqJiBzZWxlY3RlZENoaWxkKQogICAgIGlmICghc2VsZWN0ZWRDaGls
ZCkKICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICBpbnQgc2VsZWN0aW9uID0gcGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KE1hdGhNTE5hbWVzOjpzZWxlY3Rpb25BdHRyKSkudmFsdWVPcigwKTsKKyAgICBpbnQgc2VsZWN0
aW9uID0gZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OnNlbGVjdGlvbkF0dHIpOwog
ICAgIGludCBpOwogICAgIGZvciAoaSA9IDE7IGkgPCBzZWxlY3Rpb247IGkrKykgewogICAgICAg
ICBhdXRvKiBuZXh0Q2hpbGQgPSBzZWxlY3RlZENoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggZjFjNjc4NWE0YTM5ZWRlMmM0OTU0
MjgxMWNiMTk1MmQwYjljNDJkMy4uZGJmNjM3Y2ZiMjk4MDY2MWFhNjc3MGE3OGE0NDdhZmVkMDM1
OWE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAK
ICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMzgzLDEyICszODQsMTAgQEAgdm9pZCBFdmVudFNvdXJjZTo6cGFyc2VFdmVudFN0cmVhbUxp
bmUodW5zaWduZWQgcG9zaXRpb24sIE9wdGlvbmFsPHVuc2lnbmVkPiBmaWUKICAgICAgICAgaWYg
KCF2YWx1ZUxlbmd0aCkKICAgICAgICAgICAgIG1fcmVjb25uZWN0RGVsYXkgPSBkZWZhdWx0UmVj
b25uZWN0RGVsYXk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gRklYTUU6IERvIHdl
IHJlYWxseSB3YW50IHRvIGlnbm9yZSB0cmFpbGluZyBnYXJiYWdlIGhlcmU/IFNob3VsZCB3ZSBi
ZSB1c2luZyB0aGUgc3RyaWN0IHZlcnNpb24gaW5zdGVhZD8KLSAgICAgICAgICAgIC8vIEZJWE1F
OiBJZiB3ZSBjYW4ndCBwYXJzZSB0aGUgdmFsdWUsIHNob3VsZCB3ZSBsZWF2ZSBtX3JlY29ubmVj
dERlbGF5IGFsb25lIG9yIHNldCBpdCB0byBkZWZhdWx0UmVjb25uZWN0RGVsYXk/Ci0gICAgICAg
ICAgICBib29sIG9rOwotICAgICAgICAgICAgYXV0byByZWNvbm5lY3REZWxheSA9IGNoYXJhY3Rl
cnNUb1VJbnQ2NCgmbV9yZWNlaXZlQnVmZmVyW3Bvc2l0aW9uXSwgdmFsdWVMZW5ndGgsICZvayk7
Ci0gICAgICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAgICAgbV9yZWNvbm5lY3REZWxheSA9
IHJlY29ubmVjdERlbGF5OworICAgICAgICAgICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSB3YW50
IHRvIGlnbm9yZSB0cmFpbGluZyBqdW5rIGhlcmU/CisgICAgICAgICAgICAvLyBGSVhNRTogV2hl
biB3ZSBjYW4ndCBwYXJzZSB0aGUgdmFsdWUsIHNob3VsZCB3ZSByZWFsbHkgbGVhdmUgbV9yZWNv
bm5lY3REZWxheSBhbG9uZT8gU2hvdWxkbid0IHdlIHNldCBpdCB0byBkZWZhdWx0UmVjb25uZWN0
RGVsYXk/CisgICAgICAgICAgICBpZiAoYXV0byByZWNvbm5lY3REZWxheSA9IHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih7ICZtX3JlY2VpdmVCdWZmZXJbcG9zaXRp
b25dLCB2YWx1ZUxlbmd0aCB9KSkKKyAgICAgICAgICAgICAgICBtX3JlY29ubmVjdERlbGF5ID0g
KnJlY29ubmVjdERlbGF5OwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9u
LmNwcAppbmRleCBmNjBhZWFmMzUxNmY2NzZhMTVlMDY3NjA2ZTI2NzYxN2IxNDRlNTZjLi4wOTVl
NDc0ODVmM2JjNDU2NDAyM2IxMWY5OTliOTY0NjAyMTAwNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmNwcApAQCAtMzQsOSArMzQsMTAgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvblNjaGVkdWxlci5oIgorI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTY1LDcgKzE2Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9u
OjpzZXRQb3J0KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luCiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpOwotICAgIHVybC5zZXRQb3J0KHBhcnNlVUludDE2KHBvcnRTdHJp
bmcpKTsKKyAgICB1cmwuc2V0UG9ydChwYXJzZUludGVnZXI8dWludDE2X3Q+KHBvcnRTdHJpbmcp
KTsKICAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJs
LnN0cmluZygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwCmluZGV4IDc5YzA2N2I3MDk1ZmUyM2ZmNDAzODcxODUwZmY1Y2IzOTZlNTczYWIuLjI3Y2Y3
NjNlNzczN2Y2MTQyNWQ1YmUyYWNlYzA5NTU4NTJlYzg4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xMDUsMjIgKzEwNiwyMSBAQCBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdAogICAg
IGlmIChzZXBhcmF0b3IxID09IHNlcGFyYXRvcjIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAgICAgCi0gICAgLy8gTWFrZSBzdXJlIHRoZSBwb3J0IHNlY3Rpb24gaXMgYSB2YWxpZCBw
b3J0IG51bWJlciBvciBkb2Vzbid0IGV4aXN0Ci0gICAgYm9vbCBwb3J0T2theTsKLSAgICBpbnQg
cG9ydCA9IGRhdGFiYXNlSWRlbnRpZmllci5yaWdodChkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3Ro
KCkgLSBzZXBhcmF0b3IyIC0gMSkudG9JbnQoJnBvcnRPa2F5KTsKLSAgICBib29sIHBvcnRBYnNl
bnQgPSAoc2VwYXJhdG9yMiA9PSBkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkgLSAxKTsKLSAg
ICBpZiAoIShwb3J0T2theSB8fCBwb3J0QWJzZW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICAKLSAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludDE2X3Q+OjptYXgoKSkKKyAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQgc2VjdGlvbiBp
cyBhIHZhbGlkIHBvcnQgbnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QuCisgICAgYXV0byBwb3J0TGVu
Z3RoID0gZGF0YWJhc2VJZGVudGlmaWVyLmxlbmd0aCgpIC0gc2VwYXJhdG9yMiAtIDE7CisgICAg
YXV0byBwb3J0ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KFN0
cmluZ1ZpZXcgeyBkYXRhYmFzZUlkZW50aWZpZXIgfS5yaWdodChwb3J0TGVuZ3RoKSk7CisKKyAg
ICAvLyBOb3RoaW5nIGFmdGVyIHRoZSBjb2xvbiBpcyBmaW5lLiBGYWlsdXJlIHRvIHBhcnNlIGFm
dGVyIHRoZSBjb2xvbiBpcyBub3QuCisgICAgaWYgKCFwb3J0ICYmIHBvcnRMZW5ndGgpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisKKyAgICAvLyBUcmVhdCBwb3J0IDAgbGlr
ZSB0aGVyZSBpcyB3YXMgbm8gcG9ydCBzcGVjaWZpZWQuCisgICAgaWYgKHBvcnQgJiYgISpwb3J0
KQorICAgICAgICBwb3J0ID0gV1RGOjpudWxsb3B0OworCiAgICAgYXV0byBwcm90b2NvbCA9IGRh
dGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yMSk7CiAgICAgYXV0byBob3N0
ID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3IxICsgMSwgc2VwYXJhdG9y
MiAtIHNlcGFyYXRvcjEgLSAxKTsKLSAgICBpZiAoIXBvcnQpCi0gICAgICAgIHJldHVybiBTZWN1
cml0eU9yaWdpbkRhdGEgeyBwcm90b2NvbCwgaG9zdCwgV1RGOjpudWxsb3B0IH07Ci0KLSAgICBy
ZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJvdG9jb2wsIGhvc3QsIHN0YXRpY19jYXN0PHVp
bnQxNl90Pihwb3J0KSB9OworICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEgeyBwcm90b2Nv
bCwgaG9zdCwgcG9ydCB9OwogfQogCiBTZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlPcmlnaW5E
YXRhOjppc29sYXRlZENvcHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9XaW5kb3dGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVz
LmNwcAppbmRleCA5MDAzZDk3ZWU1NTZkZTRmMzc0NWYyMzNkYTNjYjExNTAxMDc3NmQyLi44YzBh
NDJjODczMzU1MmY3ZWVhZjM4NTk2ZWRmZjFiNWIyZWU3ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1dpbmRvd0ZlYXR1cmVzLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lv
bi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzMiw3ICsxMzMsNyBAQCBzdGF0aWMg
dm9pZCBzZXRXaW5kb3dGZWF0dXJlKFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgU3RyaW5nVmll
dyBrZXksIFN0cmluZ1ZpZQogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkgfHwgZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJ5ZXMiKSkKICAgICAgICAgbnVtZXJpY1ZhbHVlID0g
MTsKICAgICBlbHNlCi0gICAgICAgIG51bWVyaWNWYWx1ZSA9IHZhbHVlLnRvSW50KCk7CisgICAg
ICAgIG51bWVyaWNWYWx1ZSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4o
dmFsdWUpLnZhbHVlT3IoMCk7CiAKICAgICAvLyBXZSB0cmVhdCBrZXkgb2YgInJlc2l6YWJsZSIg
aGVyZSBhcyBhbiBhZGRpdGlvbmFsIGZlYXR1cmUgcmF0aGVyIHRoYW4gc2V0dGluZyByZXNpemVh
YmxlIHRvIHRydWUuCiAgICAgLy8gVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggRmlyZWZveCwgYnV0
IGNvdWxkIGFsc28gYmUgaGFuZGxlZCBhdCBhbm90aGVyIGxldmVsLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
LmNwcAppbmRleCBiOWY1NDg4MDdlM2Q2NGU3ZDJjMTQ4N2RhNTYzNjA3NjZmYWMwY2UyLi42YTMz
NmI1YTNlMTYyYjNjMjFmYTI1OTY5MzU2NWU3MjQ1NDNiZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzNSwxNCArNDM2LDE0IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3Q6OlBvcnQ+CiAgICAgCiAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLSAgICAKLSAgICBib29sIG9rOwotICAgIGludCBwb3J0SW50ID0gY2hh
cmFjdGVyc1RvSW50U3RyaWN0KGJlZ2luLCBidWZmZXIucG9zaXRpb24oKSAtIGJlZ2luLCAmb2sp
OwotICAgIGlmICghb2sgfHwgcG9ydEludCA8IDAgfHwgcG9ydEludCA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDE2X3Q+OjptYXgoKSkKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ1ZmZlci5w
b3NpdGlvbigpIC0gYmVnaW47CisgICAgYXV0byBwb3J0SW50ZWdlciA9IHBhcnNlSW50ZWdlcjx1
aW50MTZfdD4oeyBiZWdpbiwgbGVuZ3RoIH0pLnZhbHVlT3IoMCk7CisgICAgaWYgKCFwb3J0SW50
ZWdlcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIFBvcnQgcG9ydDsKLSAg
ICBwb3J0LnZhbHVlID0gcG9ydEludDsKKyAgICBwb3J0LnZhbHVlID0gcG9ydEludGVnZXI7CiAg
ICAgcmV0dXJuIHBvcnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGlu
dXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGlu
dXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcAppbmRleCBjN2U3M2YwYzFjMjViYmEwNWYw
NmI4NTMyNWI1YzMwM2U3N2NkYTQ4Li5iNjU5Yjc3NGYyNjQwMTNhMTdjZjU2ZTZjMTMxMDI1ZWVj
Y2JjZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNh
Z2VUaHJlYWRMaW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJj
ZVVzYWdlVGhyZWFkTGludXguY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8dW5pc3Rk
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9saW51eC9DdXJy
ZW50UHJvY2Vzc01lbW9yeVN0YXR1cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50
ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMDAsMjAgKzIw
MSwxNSBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0Q1BVVXNhZ2UoZmxvYXQgcGVyaW9kKQogCiAgICAg
c3RydWN0IGRpcmVudCogZHA7CiAgICAgd2hpbGUgKChkcCA9IHJlYWRkaXIoZGlyKSkpIHsKLSAg
ICAgICAgU3RyaW5nIG5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KGRwLT5kX25hbWUpOwotICAgICAg
ICBpZiAobmFtZSA9PSAiLiIgfHwgbmFtZSA9PSAiLi4iKQorICAgICAgICBhdXRvIGlkID0gcGFy
c2VJbnRlZ2VyPHBpZF90PihkcC0+ZF9uYW1lKTsKKyAgICAgICAgaWYgKCFpZCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIHBpZF90IGlkID0gbmFt
ZS50b0ludFN0cmljdCgmb2spOwotICAgICAgICBpZiAoIW9rKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgYXV0byYgaW5mbyA9IHRocmVhZEluZm9NYXAoKS5hZGQoaWQsIFRocmVh
ZEluZm8oKSkuaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICBpZiAoIXRocmVhZENQVVVzYWdlKGlk
LCBwZXJpb2QsIGluZm8pKQotICAgICAgICAgICAgdGhyZWFkSW5mb01hcCgpLnJlbW92ZShpZCk7
CisgICAgICAgIGF1dG8mIGluZm8gPSB0aHJlYWRJbmZvTWFwKCkuYWRkKCppZCwgVGhyZWFkSW5m
bygpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGlmICghdGhyZWFkQ1BVVXNhZ2UoKmlkLCBw
ZXJpb2QsIGluZm8pKQorICAgICAgICAgICAgdGhyZWFkSW5mb01hcCgpLnJlbW92ZSgqaWQpOwog
Ci0gICAgICAgIHByZXZpb3VzVGFza3MucmVtb3ZlKGlkKTsKKyAgICAgICAgcHJldmlvdXNUYXNr
cy5yZW1vdmUoKmlkKTsKICAgICB9CiAgICAgY2xvc2VkaXIoZGlyKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBkYjM2NDQ3MzQ1NDUyODdmYzMx
MzY2M2VhOTY5Y2I2MzQxNjBmZjU0Li5jMTI0ZTc4ZDI3ZDJhNTc4M2Y2YjhjNGUwMzhhN2YxMTZj
MzI4YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9n
bGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiB1c2luZyBXVEY6OkRhdGFNdXRleDsKQEAgLTEwNzEsMTcgKzEwNzIsMTIgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KIAogICAgIC8vIFNpZ25hbCB0byBkb3duc3RyZWFtIGlm
IHRoaXMgaXMgYW4gSWNlY2FzdCBzdHJlYW0uCiAgICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzOwot
ICAgIFN0cmluZyBtZXRhZGF0YUludGVydmFsQXNTdHJpbmcgPSByZXNwb25zZS5odHRwSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFJbnQpOwotICAgIGlmICghbWV0YWRhdGFJbnRl
cnZhbEFzU3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBib29sIGlzTWV0YWRhdGFJbnRlcnZh
bFBhcnNlZDsKLSAgICAgICAgaW50IG1ldGFkYXRhSW50ZXJ2YWwgPSBtZXRhZGF0YUludGVydmFs
QXNTdHJpbmcudG9JbnQoJmlzTWV0YWRhdGFJbnRlcnZhbFBhcnNlZCk7Ci0gICAgICAgIGlmIChp
c01ldGFkYXRhSW50ZXJ2YWxQYXJzZWQgJiYgbWV0YWRhdGFJbnRlcnZhbCA+IDApIHsKLSAgICAg
ICAgICAgIGNhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X3NpbXBsZSgiYXBwbGljYXRpb24v
eC1pY3kiLCAibWV0YWRhdGEtaW50ZXJ2YWwiLCBHX1RZUEVfSU5ULCBtZXRhZGF0YUludGVydmFs
LCBudWxscHRyKSk7Ci0KLSAgICAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZSA9IHJlc3BvbnNl
Lmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpOwotICAgICAgICAg
ICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJSJXU6IFJlc3BvbnNlIENvbnRlbnRUeXBlOiAlcyIs
IG1fcmVxdWVzdE51bWJlciwgY29udGVudFR5cGUudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAg
ICBnc3RfY2Fwc19zZXRfc2ltcGxlKGNhcHMuZ2V0KCksICJjb250ZW50LXR5cGUiLCBHX1RZUEVf
U1RSSU5HLCBjb250ZW50VHlwZS51dGY4KCkuZGF0YSgpLCBudWxscHRyKTsKLSAgICAgICAgfQor
ICAgIGlmIChhdXRvIG1ldGFkYXRhSW50ZXJ2YWwgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazxpbnQ+KHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5
TWV0YUludCkpOyBtZXRhZGF0YUludGVydmFsICYmICptZXRhZGF0YUludGVydmFsID4gMCkgewor
ICAgICAgICBjYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX25ld19zaW1wbGUoImFwcGxpY2F0aW9u
L3gtaWN5IiwgIm1ldGFkYXRhLWludGVydmFsIiwgR19UWVBFX0lOVCwgKm1ldGFkYXRhSW50ZXJ2
YWwsIG51bGxwdHIpKTsKKworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSByZXNwb25zZS5o
dHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKTsKKyAgICAgICAgR1NU
X0RFQlVHX09CSkVDVChzcmMsICJSJXU6IFJlc3BvbnNlIENvbnRlbnRUeXBlOiAlcyIsIG1fcmVx
dWVzdE51bWJlciwgY29udGVudFR5cGUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGdzdF9jYXBz
X3NldF9zaW1wbGUoY2Fwcy5nZXQoKSwgImNvbnRlbnQtdHlwZSIsIEdfVFlQRV9TVFJJTkcsIGNv
bnRlbnRUeXBlLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpOwogICAgIH0KICAgICBpZiAoY2Fwcykg
ewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlIldTogU2V0IGNhcHMgdG8gJSIgR1NU
X1BUUl9GT1JNQVQsIG1fcmVxdWVzdE51bWJlciwgY2Fwcy5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1U
aHVuZGVyLmNwcAppbmRleCBiYzE2ZWNmNzE1NDlkZTY4NTQxZThhNWFkYTRhOTZhYWNiYWM0YWRl
Li4xN2RjMTYzNDQzN2M2NGI5MTQ4MDMyMzA4NmY3ZDU4N2RhOGY1YWVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
Q0RNVGh1bmRlci5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0Jhc2U2NC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24u
aD4KIAogR1NUX0RFQlVHX0NBVEVHT1JZKHdlYmtpdE1lZGlhVGh1bmRlckRlYnVnQ2F0ZWdvcnkp
OwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0TWVkaWFUaHVuZGVyRGVidWdDYXRlZ29y
eQpAQCAtMzQ5LDggKzM1MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghcmVxdWVzdFR5cGUu
aXNFbXB0eSgpICYmIHJlcXVlc3RUeXBlLmxlbmd0aCgpICE9IHBheWxvYWQubGVuZ3RoKCkpCiAg
ICAgICAgICAgICBvZmZzZXQgPSB0eXBlUG9zaXRpb24gKyA2OwogCi0gICAgICAgIGlmIChyZXF1
ZXN0VHlwZS5sZW5ndGgoKSA9PSAxKQotICAgICAgICAgICAgbV90eXBlID0gbWFrZU9wdGlvbmFs
KHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGU+KHJlcXVlc3RUeXBlLnRv
SW50KCkpKTsKKyAgICAgICAgaWYgKHJlcXVlc3RUeXBlLmxlbmd0aCgpID09IDEpIHsKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGVyZSBhcmUgc2ltcGxlciB3YXlzIHRvIGNvbnZlcnQgYSBzaW5n
bGUgZGlnaXQgdG8gYSBudW1iZXIgdGhhbiBjYWxsaW5nIHBhcnNlSW50ZWdlci4KKyAgICAgICAg
ICAgIG1fdHlwZSA9IG1ha2VPcHRpb25hbChzdGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRpYUtleU1l
c3NhZ2VUeXBlPihwYXJzZUludGVnZXI8aW50PihyZXF1ZXN0VHlwZSkudmFsdWVPcigwKSkpOwor
ICAgICAgICB9CiAKICAgICAgICAgbV9wYXlsb2FkID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocGF5
bG9hZC5jaGFyYWN0ZXJzOCgpICsgb2Zmc2V0LCBwYXlsb2FkLmxlbmd0aCgpIC0gb2Zmc2V0KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0
aWwuY3BwCmluZGV4IDg0NmE5YWUyZjI3NTRlNWEzMzNmMjczNTk1OTZjYjM2ODRmYTlhNmIuLjVk
NTJjOTg4MmEzMzE1MjA4NTZhMWI2MjMwZjFkZGIyMTA4MGQ5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIC8qIFRoaXMgaXMgdGhlIG1heGltdW0gbGluZSBsZW5ndGggd2UgYWNjZXB0IGZvciBhIGNv
b2tpZSBsaW5lLiBSRkMgMjEwOQpAQCAtMTE3LDEwICsxMTgsOCBAQCBzdGF0aWMgdm9pZCBwYXJz
ZUNvb2tpZUF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGUsIGJvb2wmIGhhc01heEFn
ZSwgQ29vawogICAgICAgICByZXN1bHQuZG9tYWluID0gYXR0cmlidXRlVmFsdWUuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKTsKIAogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShhdHRyaWJ1dGVOYW1lLCAibWF4LWFnZSIpKSB7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAg
IGRvdWJsZSBtYXhBZ2VTZWNvbmRzID0gYXR0cmlidXRlVmFsdWUudG9JbnQ2NCgmb2spOwotICAg
ICAgICBpZiAob2spIHsKLSAgICAgICAgICAgIHJlc3VsdC5leHBpcmVzID0gKFdhbGxUaW1lOjpu
b3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgKyBtYXhBZ2VTZWNvbmRzKSAqIFdURjo6
bXNQZXJTZWNvbmQ7CisgICAgICAgIGlmIChhdXRvIG1heEFnZVNlY29uZHMgPSBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ2NF90PihhdHRyaWJ1dGVWYWx1ZSkpIHsKKyAgICAg
ICAgICAgIHJlc3VsdC5leHBpcmVzID0gKFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9j
aCgpLnZhbHVlKCkgKyAqbWF4QWdlU2Vjb25kcykgKiBXVEY6Om1zUGVyU2Vjb25kOwogICAgICAg
ICAgICAgcmVzdWx0LnNlc3Npb24gPSBmYWxzZTsKIAogICAgICAgICAgICAgLy8gSWYgdGhlcmUg
aXMgYSBtYXgtYWdlIGF0dHJpYnV0ZSBhcyB3ZWxsIGFzIGFuIGV4cGlyZXMgYXR0cmlidXRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
RW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZUVudHJ5LmNwcAppbmRleCA5ZWY1MDc5N2NjZmRjNTIwNmRkMDQzMDY3MjJmYmZlODIxMDAyNGE1
Li45ZTc3MmVlZDE2ZjRiZDNiZjYyMmI3MzFhMTBmNTYzNmUxMDE2MmQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5j
cHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRl
IDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMTg3LDEwICsxODgsOCBAQCB2b2lkIEN1cmxDYWNoZUVudHJ5OjpzZXRSZXNwb25zZUZy
b21DYWNoZWRIZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIC8vIFRyeSB0
byBwYXJzZSBleHBlY3RlZCBjb250ZW50IGxlbmd0aAogICAgIGxvbmcgbG9uZyBjb250ZW50TGVu
Z3RoID0gLTE7CiAgICAgaWYgKCFyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkNvbnRlbnRMZW5ndGgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IGZh
bHNlOwotICAgICAgICBsb25nIGxvbmcgcGFyc2VkQ29udGVudExlbmd0aCA9IHJlc3BvbnNlLmh0
dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCkudG9JbnQ2NCgmc3Vj
Y2Vzcyk7Ci0gICAgICAgIGlmIChzdWNjZXNzKQotICAgICAgICAgICAgY29udGVudExlbmd0aCA9
IHBhcnNlZENvbnRlbnRMZW5ndGg7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZENvbnRlbnRMZW5n
dGggPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxsb25nIGxvbmc+KHJlc3BvbnNl
Lmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCkpKQorICAgICAg
ICAgICAgY29udGVudExlbmd0aCA9ICpwYXJzZWRDb250ZW50TGVuZ3RoOwogICAgIH0KICAgICBy
ZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoY29udGVudExlbmd0aCk7IC8vIC0xIG9u
IHBhcnNlIGVycm9yIG9yIG51bGwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RvT1RGRm9udENvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9u
dENvbnZlcnNpb24uY3BwCmluZGV4IDNkNGE3ZTMxOGYwNDU0ODgyYTgzYWQzNzAzOTE5OGVlZDdk
NzM0MWUuLjYwNmMxZjY5YWE0MzI5ODcyMmE1YzVjODViOWUwYWZjNmRmMzZlNGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiRWxlbWVu
dENoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJHbHlwaC5oIgorI2luY2x1ZGUgIkhUTUxQYXJz
ZXJJZGlvbXMuaCIKICNpbmNsdWRlICJTVkdGb250RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0Zv
bnRGYWNlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0dseXBoRWxlbWVudC5oIgpAQCAtNDkwLDkg
KzQ5MSw5IEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphcHBlbmROQU1FVGFibGUoKQog
dm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZE9TMlRhYmxlKCkKIHsKICAgICBpbnQx
Nl90IGF2ZXJhZ2VBZHZhbmNlID0gc19vdXRwdXRVbml0c1BlckVtOwotICAgIGF1dG8gaG9yaXpB
ZHZYID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihtX2ZvbnRFbGVtZW50
LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6Omhvcml6X2Fkdl94QXR0
cikpOworICAgIGF1dG8gaG9yaXpBZHZYID0gcGFyc2VIVE1MSW50ZWdlcihtX2ZvbnRFbGVtZW50
LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6Omhvcml6X2Fkdl94QXR0
cikpOwogICAgIGlmICghaG9yaXpBZHZYICYmIG1fbWlzc2luZ0dseXBoRWxlbWVudCkKLSAgICAg
ICAgaG9yaXpBZHZYID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihtX21p
c3NpbmdHbHlwaEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFt
ZXM6Omhvcml6X2Fkdl94QXR0cikpOworICAgICAgICBob3JpekFkdlggPSBwYXJzZUhUTUxJbnRl
Z2VyKG1fbWlzc2luZ0dseXBoRWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihTVkdOYW1lczo6aG9yaXpfYWR2X3hBdHRyKSk7CiAgICAgaWYgKGhvcml6QWR2WCkKICAgICAg
ICAgYXZlcmFnZUFkdmFuY2UgPSBjbGFtcFRvPGludDE2X3Q+KHNjYWxlVW5pdHNQZXJFbSgqaG9y
aXpBZHZYKSk7CiAKQEAgLTk0NCwxNiArOTQ1LDE2IEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVy
dGVyOjphcHBlbmRWT1JHVGFibGUoKQogICAgIGFwcGVuZDE2KDEpOyAvLyBNYWpvciB2ZXJzaW9u
CiAgICAgYXBwZW5kMTYoMCk7IC8vIE1pbm9yIHZlcnNpb24KIAotICAgIGF1dG8gdmVydE9yaWdp
blkgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KG1fZm9udEVsZW1lbnQu
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6dmVydF9vcmlnaW5feUF0
dHIpKTsKKyAgICBhdXRvIHZlcnRPcmlnaW5ZID0gcGFyc2VIVE1MSW50ZWdlcihtX2ZvbnRFbGVt
ZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRfb3JpZ2lu
X3lBdHRyKSk7CiAgICAgaWYgKCF2ZXJ0T3JpZ2luWSAmJiBtX21pc3NpbmdHbHlwaEVsZW1lbnQp
Ci0gICAgICAgIHZlcnRPcmlnaW5ZID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8
aW50PihtX21pc3NpbmdHbHlwaEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oU1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lBdHRyKSk7Ci0gICAgYXBwZW5kMTYoY2xhbXBUbzxp
bnQxNl90PihzY2FsZVVuaXRzUGVyRW0odmVydE9yaWdpblkudmFsdWVPcigwKSkpKTsKKyAgICAg
ICAgdmVydE9yaWdpblkgPSBwYXJzZUhUTUxJbnRlZ2VyKG1fbWlzc2luZ0dseXBoRWxlbWVudC0+
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6dmVydF9vcmlnaW5feUF0
dHIpKTsKKyAgICBhcHBlbmQxNihjbGFtcFRvPGludDE2X3Q+KHNjYWxlVW5pdHNQZXJFbSh2ZXJ0
T3JpZ2luWS52YWx1ZV9vcigwKSkpKTsKIAogICAgIGF1dG8gdGFibGVTaXplT2Zmc2V0ID0gbV9y
ZXN1bHQuc2l6ZSgpOwogICAgIGFwcGVuZDE2KDApOyAvLyBQbGFjZSB0byB3cml0ZSB0YWJsZSBz
aXplLgogICAgIGZvciAoR2x5cGggaSA9IDA7IGkgPCBtX2dseXBocy5zaXplKCk7ICsraSkgewog
ICAgICAgICBpZiAoYXV0byogZ2x5cGggPSBtX2dseXBoc1tpXS5nbHlwaEVsZW1lbnQpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvIHZlcnRpY2FsT3JpZ2luWSA9IHBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rPGludD4oZ2x5cGgtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
U1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lBdHRyKSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHZl
cnRpY2FsT3JpZ2luWSA9IHBhcnNlSFRNTEludGVnZXIoZ2x5cGgtPmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lBdHRyKSkpIHsKICAgICAgICAg
ICAgICAgICBhcHBlbmQxNihpKTsKICAgICAgICAgICAgICAgICBhcHBlbmQxNihjbGFtcFRvPGlu
dDE2X3Q+KHNjYWxlVW5pdHNQZXJFbSgqdmVydGljYWxPcmlnaW5ZKSkpOwogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDQ0ZmI0NWU5ZWJkZjU5YzMw
N2U5Y2E1ZGM4MmFmZWViMjI3YWMwNTAuLjkwMDAxNjViMGE0YjQ3ZGNkODlmM2JhYWYwZDIwOWVj
MzAyZDMyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIzMyw2ICsy
MzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9VUkxIZWxwZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVt
YmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4K
IAogI2lmIFVTRShDRykKICNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCkBAIC0zNjIsMTAg
KzM2Myw5IEBAIHVzaW5nIEpTQzo6UHJvcGVydHlTbG90OwogdXNpbmcgSlNDOjpTY3JpcHRFeGVj
dXRhYmxlOwogdXNpbmcgSlNDOjpTdGFja1Zpc2l0b3I7CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGNsYXNzIEluc3BlY3RvclN0dWJGcm9u
dGVuZCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLCBwdWJsaWMg
RnJvbnRlbmRDaGFubmVsIHsKQEAgLTE2MDEsNyArMTYwMSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpz
ZXRXZWJSVENWUDlWVEJTdXBwb3J0KGJvb2wgdmFsdWUpCiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRT
RnJhbWVDb3VudGVyKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTdHJp
bmcmIGNvdW50ZXIpCiB7Ci0gICAgaWYgKGF1dG8gdmFsdWUgPSBTdHJpbmdWaWV3KGNvdW50ZXIp
LnRvVUludDY0U3RyaWN0KCkpCisgICAgaWYgKGF1dG8gdmFsdWUgPSBwYXJzZUludGVnZXI8dWlu
dDY0X3Q+KGNvdW50ZXIpKQogICAgICAgICB0cmFuc2Zvcm0uc2V0Q291bnRlckZvclRlc3Rpbmco
KnZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2
aWNlLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKaW5kZXggOGI3
OWFhZTRhZDk2Nzk3MWZiNWNjYWEwMmUyNzBiNGQ3MjI0YTZkNC4uZjExYmZlZGMxNDdjZGEzZWU3
MjczMzJiZjE3OWYxZWYxNjIxYTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJE
cml2ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2Uu
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29tbWFuZFJlc3VsdC5oIgogI2luY2x1
ZGUgIlNlc3Npb25Ib3N0LmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJEcml2ZXIgewpAQCAtMTE4LDIxICsxMTksMjAg
QEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAg
ICAgIGF1dG8gcG9zaXRpb24gPSB0YXJnZXRTdHJpbmcucmV2ZXJzZUZpbmQoIjoiX3MpOwogICAg
ICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIG1fdGFyZ2V0QWRk
cmVzcyA9IHRhcmdldFN0cmluZy5sZWZ0KHBvc2l0aW9uKTsKLSAgICAgICAgICAgIG1fdGFyZ2V0
UG9ydCA9IHRhcmdldFN0cmluZy5zdWJzdHJpbmcocG9zaXRpb24gKyAxKS50b1VJbnQobnVsbHB0
cik7CisgICAgICAgICAgICBtX3RhcmdldFBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1aW50MTZfdD4oU3RyaW5nVmlldyB7IHRhcmdldFN0cmluZyB9LnN1YnN0cmluZyhw
b3NpdGlvbiArIDEpKS52YWx1ZU9yKDApOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAKLSAg
ICBib29sIG9rOwotICAgIHVuc2lnbmVkIHBvcnQgPSBwb3J0U3RyaW5nLnRvVUludCgmb2spOwot
ICAgIGlmICghb2spIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIHBvcnQgJXMg
cHJvdmlkZWRcbiIsIHBvcnRTdHJpbmcuYXNjaWkoKS5kYXRhKCkpOworICAgIGF1dG8gcG9ydCA9
IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4ocG9ydFN0cmluZyk7CisgICAgaWYgKCFwb3J0KSB7Cisg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBwb3J0ICVzIHByb3ZpZGVkXG4iLCBwb3J0
U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAg
IH0KIAogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIAotICAgIGlmICghbV9zZXJ2
ZXIubGlzdGVuKGhvc3QsIHBvcnQpKQorICAgIGlmICghbV9zZXJ2ZXIubGlzdGVuKGhvc3QsICpw
b3J0KSkKICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKIAogICAgIFJ1bkxvb3A6OnJ1bigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9nbGliL1dlYkRyaXZlclNlcnZpY2VHTGli
LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9XZWJEcml2ZXJTZXJ2aWNlR0xpYi5jcHAKaW5k
ZXggOTQxNzkzZDNlYWQwZTk4NjMyYWYzMzE3OTJmM2E3NGM1YjRiNmY0YS4uZDZmZDIxOTk3ZjM5
ZWQxZTA0MWM1MTg1OTYzYTY4YzFmNGNlZGQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZl
ci9nbGliL1dlYkRyaXZlclNlcnZpY2VHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL2ds
aWIvV2ViRHJpdmVyU2VydmljZUdMaWIuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViRHJpdmVyU2VydmljZS5oIgogCisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgorCiBuYW1lc3BhY2UgV2ViRHJpdmVy
IHsKIAogc3RhdGljIGJvb2wgcGFyc2VWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgdWlu
dDY0X3QmIG1ham9yLCB1aW50NjRfdCYgbWlub3IsIHVpbnQ2NF90JiBtaWNybykKQEAgLTM1LDIw
ICszNywyNiBAQCBzdGF0aWMgYm9vbCBwYXJzZVZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCB1aW50NjRfdCYgbWFqb3IsIHVpbnQ2NF90JiBtaW5vcgogICAgIFZlY3RvcjxTdHJpbmc+IHRv
a2VucyA9IHZlcnNpb24uc3BsaXQoJy4nKTsKICAgICBib29sIG9rOwogICAgIHN3aXRjaCAodG9r
ZW5zLnNpemUoKSkgewotICAgIGNhc2UgMzoKLSAgICAgICAgbWljcm8gPSB0b2tlbnNbMl0udG9J
bnQ2NCgmb2spOwotICAgICAgICBpZiAoIW9rKQorICAgIGNhc2UgMzogeworICAgICAgICBhdXRv
IHBhcnNlZE1pY3JvID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+
KHRva2Vuc1syXSk7CisgICAgICAgIGlmICghcGFyc2VkTWljcm8pCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIG1pY3JvID0gKnBhcnNlZE1pY3JvOworICAgIH0KICAgICAgICAg
RkFMTFRIUk9VR0g7Ci0gICAgY2FzZSAyOgotICAgICAgICBtaW5vciA9IHRva2Vuc1sxXS50b0lu
dDY0KCZvayk7Ci0gICAgICAgIGlmICghb2spCisgICAgY2FzZSAyOiB7CisgICAgICAgIGF1dG8g
cGFyc2VkTWlub3IgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4o
dG9rZW5zWzFdKTsKKyAgICAgICAgaWYgKCFwYXJzZWRNaW5vcikKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgbWlub3IgPSAqcGFyc2VkTWlub3I7CisgICAgfQogICAgICAgICBG
QUxMVEhST1VHSDsKLSAgICBjYXNlIDE6Ci0gICAgICAgIG1ham9yID0gdG9rZW5zWzBdLnRvSW50
NjQoJm9rKTsKLSAgICAgICAgaWYgKCFvaykKKyAgICBjYXNlIDE6IHsKKyAgICAgICAgYXV0byBw
YXJzZWRNYWpvciA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0
b2tlbnNbMF0pOworICAgICAgICBpZiAoIXBhcnNlZE1ham9yKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBtYWpvciA9ICpwYXJzZWRNYWpvcjsKKyAgICB9CiAgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBQYXJzZXIuY3BwIGIvU291cmNlL1dlYkRyaXZlci9z
b2NrZXQvSFRUUFBhcnNlci5jcHAKaW5kZXggMzdiZWQyOTFlOTYzNmJmNzI3ZmJkMWRkOTgwMDAy
ZjhkZjdjOTU5YS4uNzdmMzUxZDk1OGFmZjFhZmVhM2Y4ZDA3MTc0MDA5MjFjMmFlYzY0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVFRQUGFyc2VyLmgiCiAKKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CisKIG5hbWVzcGFjZSBXZWJEcml2
ZXIgewogCiBIVFRQUGFyc2VyOjpQaGFzZSBIVFRQUGFyc2VyOjpwYXJzZShWZWN0b3I8dWludDhf
dD4mJiBkYXRhKQpAQCAtMTQ1LDEwICsxNDcsOCBAQCBzaXplX3QgSFRUUFBhcnNlcjo6ZXhwZWN0
ZWRCb2R5TGVuZ3RoKCkgY29uc3QKICAgICBjb25zdCBzaXplX3QgbmFtZUxlbmd0aCA9IHN0ZDo6
c3RybGVuKG5hbWUpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiBtX21lc3NhZ2Uu
cmVxdWVzdEhlYWRlcnMpIHsKLSAgICAgICAgaWYgKGhlYWRlci5zdGFydHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UobmFtZSkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBoZWFkZXIuc3Vic3Ry
aW5nU2hhcmluZ0ltcGwobmFtZUxlbmd0aCkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gdmFsdWUudG9JbnQoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoaGVhZGVyLnN0
YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxzaXplX3Q+KFN0cmluZ1ZpZXcgeyBoZWFkZXIg
fS5zdWJzdHJpbmcobmFtZUxlbmd0aCkpLnZhbHVlT3IoMCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRh
dGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0
YWJhc2VXaW4uY3BwCmluZGV4IDU4MzQ5NWMyNmNlMzJlOGI1YTUyYTA2YmFmYzY3YTgzZTc4OGMx
M2UuLmY2MzNjMzRhMTM0YjBiNjViZThhYTExYjY1NmIzZmU5MGUyMWUwNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xMzMsMTAgKzEzNCw3IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPGludD4gcGFyc2VW
ZXJzaW9uU3RyaW5nKGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykKICAgICAgICAgZm9yIChl
bmRQb3MgPSBzdGFydFBvczsgZW5kUG9zIDwgdmVyc2lvblN0cmluZy5sZW5ndGgoKTsgKytlbmRQ
b3MpCiAgICAgICAgICAgICBpZiAodmVyc2lvblN0cmluZ1tlbmRQb3NdID09ICcuJyB8fCB2ZXJz
aW9uU3RyaW5nW2VuZFBvc10gPT0gJ18nKQogICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGludCB2ZXJzaW9uQ29tcG9uZW50ID0gdmVyc2lvblN0cmluZy5zdWJzdHJpbmcoc3RhcnRQ
b3MsIGVuZFBvcyAtIHN0YXJ0UG9zKS50b0ludCgpOwotICAgICAgICB2ZXJzaW9uLmFwcGVuZCh2
ZXJzaW9uQ29tcG9uZW50KTsKLQorICAgICAgICB2ZXJzaW9uLmFwcGVuZChwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KFN0cmluZ1ZpZXcgeyB2ZXJzaW9uU3RyaW5nIH0uc3Vi
c3RyaW5nKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBvcykpLnZhbHVlT3IoMCkpOwogICAgICAg
ICBzdGFydFBvcyA9IGVuZFBvcyArIDE7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAyZjQwNWZiOGNlNGU3NDJhMDgxMTA1
OThiOGM1MjdhOTI2YWFmZDRlLi5lMzg0MDIyYzM0MDIzYjFlMzVlMmEyZTA5NmEyMjliYjllMDMw
N2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKQEAgLTc0LDYgKzc0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbXBsLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9ydW50aW1lX3Jvb3QuaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlD
VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQpAQCAtMTA3MSw3ICsxMDcyLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5k
bGVQb3N0KGNvbnN0IGNoYXIqIHVybCwgY29uc3QgY2hhciogdGFyZ2V0LCB1aW50MzJfdCBsZW4K
ICAgICAgICAgICAgICAgICBTdHJpbmcgY29udGVudExlbmd0aCA9IGhlYWRlckZpZWxkcy5nZXQo
SFRUUEhlYWRlck5hbWU6OkNvbnRlbnRMZW5ndGgpOwogCiAgICAgICAgICAgICAgICAgaWYgKCFj
b250ZW50TGVuZ3RoLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0g
c3RkOjptaW4oY29udGVudExlbmd0aC50b0ludCgpLCAoaW50KWRhdGFMZW5ndGgpOworICAgICAg
ICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0gc3RkOjptaW4ocGFyc2VJbnRlZ2VyQWxsb3dpbmdU
cmFpbGluZ0p1bms8dW5zaWduZWQ+KGNvbnRlbnRMZW5ndGgpLnZhbHVlT3IoMCksIGRhdGFMZW5n
dGgpOwogICAgICAgICAgICAgICAgIGhlYWRlckZpZWxkcy5yZW1vdmUoSFRUUEhlYWRlck5hbWU6
OkNvbnRlbnRMZW5ndGgpOwogCiAgICAgICAgICAgICAgICAgcG9zdERhdGEgKz0gbG9jYXRpb247
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjJi
NGI0Y2YzY2I3ZDMxYjI3ZjQyZGI3NzA1NDNlNWNiOWFiMGFhNC4uMDFkNzNlOTFmNDA1MjU5ZjE0
NGFlMjYzM2IyNzE3ZjNhNGM2ZjhkZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA1LTA5ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB1c2Vz
IG9mIHRoZSBTdHJpbmc6OnRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU4MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKTogVXNlCisg
ICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4gaW5zdGVhZCBvZiBT
dHJpbmc6OnRvSW50LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoaWVy
YXJjaGljYWxMZXZlbCBjb25zdCk6IERpdHRvLgorCiAyMDIxLTA1LTA5ICBLaGVtIFJhaiAgPHJh
ai5raGVtQGdtYWlsLmNvbT4KIAogICAgICAgICBbVG9vbHNdIEdlbmVyYXRlIG1hcnNoYWxsaW5n
IGNvZGUgd2l0aG91dCBzb3VyY2UgcmVmZXJlbmNlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IDRkY2Y0YzAzNzYxMTc3MTY2NWYzM2I4Mjc4YWRiZjNm
ODYzNWZlZDguLjk1NTYxYThlZjYwOTBjMjcxZTk2M2Y5MmFhYjY2NjQ0MDVhMGE1MTMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi91
bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtMTEzOSw3ICsx
MTQwLDcgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZh
bHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICBpZiAoYXRrQXR0cmlidXRlTmFtZS5zdGFy
dHNXaXRoKCJyb3ciKSB8fCBhdGtBdHRyaWJ1dGVOYW1lLnN0YXJ0c1dpdGgoImNvbCIpKSB7CiAg
ICAgICAgIFN0cmluZyBhdHRyaWJ1dGVWYWx1ZSA9IGdldEF0dHJpYnV0ZVNldFZhbHVlRm9ySWQo
QVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpLCBPYmplY3RBdHRyaWJ1dGVUeXBlLCBhdGtBdHRy
aWJ1dGVOYW1lKTsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICByZXR1cm4gYXR0cmlidXRlVmFsdWUudG9JbnQoKTsKKyAgICAgICAgICAgIHJldHVy
biBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGF0dHJpYnV0ZVZhbHVlKS52
YWx1ZU9yKDApOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMTYzMiwxMSArMTYzMyw3IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbmRldGVybWluYXRlKCkgY29uc3QKIAog
aW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKIHsK
LSAgICBTdHJpbmcgbGV2ZWwgPSBnZXRBdHRyaWJ1dGVTZXRWYWx1ZUZvcklkKEFUS19PQkpFQ1Qo
bV9lbGVtZW50LmdldCgpKSwgT2JqZWN0QXR0cmlidXRlVHlwZSwgImxldmVsIik7Ci0gICAgaWYg
KCFsZXZlbC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBsZXZlbC50b0ludCgpOwotCi0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4oZ2V0QXR0cmlidXRlU2V0VmFsdWVGb3JJZChBVEtfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSks
IE9iamVjdEF0dHJpYnV0ZVR5cGUsICJsZXZlbCIpKS52YWx1ZU9yKDApOwogfQogCiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWtBcygpCg==
</data>
<flag name="review"
          id="448976"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>