<?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>157538</bug_id>
          
          <creation_ts>2016-05-10 14:58:46 -0700</creation_ts>
          <short_desc>Internal JSC profiler should have a timestamped log of events for each code block</short_desc>
          <delta_ts>2016-05-10 17:08:31 -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>JavaScriptCore</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1191668</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-10 14:58:46 -0700</bug_when>
    <thetext>This will help us see what is going on in bigger programs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191669</commentid>
    <comment_count>1</comment_count>
      <attachid>278534</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-10 15:01:09 -0700</bug_when>
    <thetext>Created attachment 278534
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191671</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-10 15:03:14 -0700</bug_when>
    <thetext>Attachment 278534 did not pass style-queue:


ERROR: Source/JavaScriptCore/profiler/ProfilerDatabase.h:74:  The parameter name &quot;codeBlock&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/VM.h:617:  The parameter name &quot;func&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191672</commentid>
    <comment_count>3</comment_count>
      <attachid>278534</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-05-10 15:04:14 -0700</bug_when>
    <thetext>Comment on attachment 278534
the patch

+1, this looks useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191679</commentid>
    <comment_count>4</comment_count>
      <attachid>278537</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-10 15:21:00 -0700</bug_when>
    <thetext>Created attachment 278537
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191680</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-10 15:22:12 -0700</bug_when>
    <thetext>Attachment 278537 did not pass style-queue:


ERROR: Source/JavaScriptCore/profiler/ProfilerDatabase.h:74:  The parameter name &quot;codeBlock&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/VM.h:617:  The parameter name &quot;func&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191695</commentid>
    <comment_count>6</comment_count>
      <attachid>278542</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-10 15:40:41 -0700</bug_when>
    <thetext>Created attachment 278542
more fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191696</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-10 15:42:11 -0700</bug_when>
    <thetext>Attachment 278542 did not pass style-queue:


ERROR: Source/JavaScriptCore/profiler/ProfilerDatabase.h:74:  The parameter name &quot;codeBlock&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/VM.h:617:  The parameter name &quot;func&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191701</commentid>
    <comment_count>8</comment_count>
      <attachid>278543</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-10 15:58:50 -0700</bug_when>
    <thetext>Created attachment 278543
even more fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191703</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-10 16:01:05 -0700</bug_when>
    <thetext>Attachment 278543 did not pass style-queue:


ERROR: Source/JavaScriptCore/profiler/ProfilerDatabase.h:74:  The parameter name &quot;codeBlock&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/VM.h:617:  The parameter name &quot;func&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191742</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-10 17:08:31 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/200658</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278534</attachid>
            <date>2016-05-10 15:01:09 -0700</date>
            <delta_ts>2016-05-10 15:21:00 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>56255</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwNjQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMiBA
QAorMjAxNi0wNS0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEludGVybmFsIEpTQyBwcm9maWxlciBzaG91bGQgaGF2ZSBhIHRpbWVzdGFtcGVkIGxvZyBvZiBl
dmVudHMgZm9yIGVhY2ggY29kZSBibG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBGb3IgZXhhbXBsZSwgaW4gM2QtY3ViZSwgSSBhbiBx
dWVyeSB0aGUgZXZlbnRzIGZvciBNTXVsdGkgYW5kIEkgZ2V0OgorCisgICAgICAgIDE0NjI5MTc0
NzYuMTcwODMgIE1NdWx0aSNEVFo3cWMgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxD
b2RlICAgICAgICAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4xNzk2NjMgTU11bHRpI0RUWjdxYyBNTXVs
dGkjRFRaN3FjLTEtQmFzZWxpbmUgaW5zdGFsbENvZGUgICAgICAgIAorICAgICAgICAxNDYyOTE3
NDc2LjE3OTY2NCBNTXVsdGkjRFRaN3FjIE1NdWx0aSNEVFo3cWMtMS1CYXNlbGluZSBvc3JFbnRy
eSAgICAgICAgICAgYXQgYmMjNDkKKyAgICAgICAgMTQ2MjkxNzQ3Ni4xODU2NTEgTU11bHRpI0RU
WjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlPcHRpbWl6ZVRvREZHIGNvdW50ZXIg
PSAxMDExLjIxNDIzMy8xNzE3LjAwMDAwMCwgLTcwNworICAgICAgICAxNDYyOTE3NDc2LjE4Nzkx
MyBNTXVsdGkjRFRaN3FjIE1NdWx0aSNEVFo3cWMtMi1ERkcgICAgICBpbnN0YWxsQ29kZSAgICAg
ICAgCisgICAgICAgIDE0NjI5MTc0NzYuMTg3OTE3IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdx
Yy0yLURGRyAgICAgIG9zckVudHJ5ICAgICAgICAgICBhdCBiYyM0OQorICAgICAgICAxNDYyOTE3
NDc2LjIwNTM2NSBNTXVsdGkjRFRaN3FjIE1NdWx0aSNEVFo3cWMtMi1ERkcgICAgICBqZXR0aXNv
biAgICAgICAgICAgZHVlIHRvIE9TUkV4aXQsIGNvdW50aW5nID0gdHJ1ZSwgZGV0YWlsID0gKG51
bGwpCisgICAgICAgIDE0NjI5MTc0NzYuMjA1MzY4IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdx
Yy0xLUJhc2VsaW5lIGZyZXF1ZW50RXhpdCAgICAgICBiYyM2NTogQmFkQ2FjaGUvRnJvbURGRwor
ICAgICAgICAxNDYyOTE3NDc2LjIwNTM2OSBNTXVsdGkjRFRaN3FjIE1NdWx0aSNEVFo3cWMtMS1C
YXNlbGluZSBpbnN0YWxsQ29kZSAgICAgICAgCisgICAgICAgIDE0NjI5MTc0NzYuMjA1NDgyIE1N
dWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0xLUJhc2VsaW5lIGRlbGF5T3B0aW1pemVUb0RGRyBj
b3VudGVyID0gMTAxMy4wMDAwMDAvMzQzNC4wMDAwMDAsIC0xMDAwCisgICAgICAgIDE0NjI5MTc0
NzYuMjExNTQ3IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0xLUJhc2VsaW5lIGRlbGF5T3B0
aW1pemVUb0RGRyBjb3VudGVyID0gMjAxMy4wMDAwMDAvMzQzNC4wMDAwMDAsIC0xMDAwCisgICAg
ICAgIDE0NjI5MTc0NzYuMjEzNzIxIE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0zLURGRyAg
ICAgIGluc3RhbGxDb2RlICAgICAgICAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMTM3MjYgTU11bHRp
I0RUWjdxYyBNTXVsdGkjRFRaN3FjLTMtREZHICAgICAgb3NyRW50cnkgICAgICAgICAgIGF0IGJj
IzQ5CisgICAgICAgIDE0NjI5MTc0NzYuMjIzOTc2IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdx
Yy0zLURGRyAgICAgIGpldHRpc29uICAgICAgICAgICBkdWUgdG8gT1NSRXhpdCwgY291bnRpbmcg
PSB0cnVlLCBkZXRhaWwgPSAobnVsbCkKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjM5ODEgTU11bHRp
I0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZnJlcXVlbnRFeGl0ICAgICAgIGJjIzc3
OiBCYWRDYWNoZS9Gcm9tREZHCisgICAgICAgIDE0NjI5MTc0NzYuMjIzOTgyIE1NdWx0aSNEVFo3
cWMgTU11bHRpI0RUWjdxYy0xLUJhc2VsaW5lIGZyZXF1ZW50RXhpdCAgICAgICBiYyM5NDogQmFk
Q2FjaGUvRnJvbURGRworICAgICAgICAxNDYyOTE3NDc2LjIyMzk4MiBNTXVsdGkjRFRaN3FjIE1N
dWx0aSNEVFo3cWMtMS1CYXNlbGluZSBpbnN0YWxsQ29kZSAgICAgICAgCisgICAgICAgIDE0NjI5
MTc0NzYuMjI0MDY0IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0xLUJhc2VsaW5lIGRlbGF5
T3B0aW1pemVUb0RGRyBjb3VudGVyID0gMTAxMy4wMDAwMDAvNjg2OC4wMDAwMDAsIC0xMDAwCisg
ICAgICAgIDE0NjI5MTc0NzYuMjI0MTUxIE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0xLUJh
c2VsaW5lIGRlbGF5T3B0aW1pemVUb0RGRyBjb3VudGVyID0gMjAxMy4wMDAwMDAvNjg2OC4wMDAw
MDAsIC0xMDAwCisgICAgICAgIDE0NjI5MTc0NzYuMjI0MjU4IE1NdWx0aSNEVFo3cWMgTU11bHRp
I0RUWjdxYy0xLUJhc2VsaW5lIGRlbGF5T3B0aW1pemVUb0RGRyBjb3VudGVyID0gMzAxMy4wMDAw
MDAvNjg2OC4wMDAwMDAsIC0xMDAwCisgICAgICAgIDE0NjI5MTc0NzYuMjI0MzM3IE1NdWx0aSNE
VFo3cWMgTU11bHRpI0RUWjdxYy0xLUJhc2VsaW5lIGRlbGF5T3B0aW1pemVUb0RGRyBjb3VudGVy
ID0gNDAyMy4wMDAwMDAvNjg2OC4wMDAwMDAsIC0xMDAwCisgICAgICAgIDE0NjI5MTc0NzYuMjI0
NDI1IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0xLUJhc2VsaW5lIGRlbGF5T3B0aW1pemVU
b0RGRyBjb3VudGVyID0gNTAyMy4wMDAwMDAvNjg2OC4wMDAwMDAsIC0xMDAwCisgICAgICAgIDE0
NjI5MTc0NzYuMjI0Nzg1IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0xLUJhc2VsaW5lIGRl
bGF5T3B0aW1pemVUb0RGRyBjb3VudGVyID0gNjAyMy4zOTY0ODQvNjg2OC4wMDAwMDAsIC04NjIK
KyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjc2NjkgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTQt
REZHICAgICAgaW5zdGFsbENvZGUgICAgICAgIAorICAgICAgICAxNDYyOTE3NDc2LjIyNzY3NSBN
TXVsdGkjRFRaN3FjIE1NdWx0aSNEVFo3cWMtNC1ERkcgICAgICBvc3JFbnRyeSAgICAgICAgICAg
YXQgYmMjMAorICAgICAgICAKKyAgICAgICAgVGhlIG91dHB1dCBpcyB1Z2x5IGJ1dCB1c2VmdWwu
IFdlIGNhbiBtYWtlIGl0IGxlc3MgdWdseSBsYXRlci4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpqZXR0aXNvbik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OmZvckVhY2hDb2RlQmxvY2spOgorICAgICAgICAqIGJ5
dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpFeGl0UHJvZmls
ZTo6YWRkKToKKyAgICAgICAgKiBkZmcvREZHSklURmluYWxpemVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpKSVRGaW5hbGl6ZXI6OmZpbmFsaXplQ29tbW9uKToKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZnRsL0ZUTEpJVEZpbmFsaXplci5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6SklURmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0aW9uKToKKyAgICAgICAg
KiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmppdENvbXBpbGVBbmRTZXRIZXVyaXN0aWNz
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckNvbXBp
bGF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkNvbXBpbGF0aW9uOjpDb21waWxh
dGlvbik6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpDb21waWxhdGlvbjo6c2V0SmV0dGlzb25S
ZWFzb24pOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Q29tcGlsYXRpb246OmR1bXApOgorICAg
ICAgICAoSlNDOjpQcm9maWxlcjo6Q29tcGlsYXRpb246OnRvSlMpOgorICAgICAgICAqIHByb2Zp
bGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uaDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkNvbXBp
bGF0aW9uOjp1aWQpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OmVuc3VyZUJ5dGVjb2Rlc0Zvcik6Cisg
ICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFzZTo6bm90aWZ5RGVzdHJ1Y3Rpb24pOgorICAg
ICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OmFkZENvbXBpbGF0aW9uKToKKyAgICAgICAg
KEpTQzo6UHJvZmlsZXI6OkRhdGFiYXNlOjp0b0pTKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6
OkRhdGFiYXNlOjpyZWdpc3RlclRvU2F2ZUF0RXhpdCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVy
OjpEYXRhYmFzZTo6bG9nRXZlbnQpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6
OmFkZERhdGFiYXNlVG9BdEV4aXQpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyRGF0YWJh
c2UuaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckV2ZW50LmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OlByb2ZpbGVyOjpFdmVudDo6ZHVtcCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVy
OjpFdmVudDo6dG9KUyk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkV2ZW50OjpFdmVudCk6CisgICAgICAgIChKU0M6
OlByb2ZpbGVyOjpFdmVudDo6b3BlcmF0b3IgYm9vbCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVy
OjpFdmVudDo6dGltZSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpFdmVudDo6Ynl0ZWNvZGVz
KToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkV2ZW50Ojpjb21waWxhdGlvbik6CisgICAgICAg
IChKU0M6OlByb2ZpbGVyOjpFdmVudDo6c3VtbWFyeSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVy
OjpFdmVudDo6ZGV0YWlsKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlclVJRC5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpQcm9maWxlcjo6VUlEOjpkdW1wKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OlVJRDo6dG9K
Uyk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJVSUQuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OlByb2ZpbGVyOjpVSUQ6OlVJRCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpVSUQ6OmZy
b21JbnQpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjp0b0ludCk6CisgICAgICAgIChK
U0M6OlByb2ZpbGVyOjpVSUQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6
VUlEOjpvcGVyYXRvciE9KToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OlVJRDo6b3BlcmF0b3Ig
Ym9vbCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpVSUQ6OmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OlVJRDo6aGFzaCk6CisgICAgICAgIChKU0M6
OlByb2ZpbGVyOjpVSURIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OlVJREhh
c2g6OmVxdWFsKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0
YWJsZTo6aW5zdGFsbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpT
Qzo6Vk06OmJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkpOgorICAgICAgICAoSlNDOjpWTTo6c2hh
ZG93Q2hpY2tlbik6CisgICAgICAgICogcnVudGltZS9WTUlubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6Vk06OnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbik6CisgICAgICAgIChKU0M6OlZNOjpsb2dF
dmVudCk6CisKIDIwMTYtMDUtMTAgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gRlRMIGNhbiBwcm9kdWNlIEdldEJ5VmFsIG5vZGVzIHdpdGhv
dXQgcHJvcGVyIGJvdW5kcyBjaGVja2luZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01OTcsMTIgKzU5NywxNCBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfU09VUkNFUwogICAgIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmNw
cAogICAgIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5jcHAKICAgICBwcm9maWxl
ci9Qcm9maWxlckRhdGFiYXNlLmNwcAorICAgIHByb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuY3BwCiAg
ICAgcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAKICAgICBwcm9maWxlci9Qcm9m
aWxlck9TUkV4aXQuY3BwCiAgICAgcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0U2l0ZS5jcHAKICAg
ICBwcm9maWxlci9Qcm9maWxlck9yaWdpbi5jcHAKICAgICBwcm9maWxlci9Qcm9maWxlck9yaWdp
blN0YWNrLmNwcAogICAgIHByb2ZpbGVyL1Byb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwCisg
ICAgcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCiAKICAgICBydW50aW1lL0FyZ0xpc3QuY3BwCiAg
ICAgcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk5Miw2
ICsxOTkyLDEwIEBACiAJCURDMTdFODFBMUM5QzkxRTkwMDhBNkFCMyAvKiBDQ2FsbEhlbHBlcnMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREMxN0U4
MTYxQzlDODAyQjAwOEE2QUIzIC8qIENDYWxsSGVscGVycy5jcHAgKi87IH07CiAJCURDMjE0MzA3
MUNBMzJFNTUwMDBBODg2OSAvKiBJQ1N0YXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEQzIxNDMwNjFDQTMyRTUyMDAwQTg4NjkgLyogSUNTdGF0cy5o
ICovOyB9OwogCQlEQzIxNDMwODFDQTMyRTU4MDAwQTg4NjkgLyogSUNTdGF0cy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzIxNDMwNTFDQTMyRTUy
MDAwQTg4NjkgLyogSUNTdGF0cy5jcHAgKi87IH07CisJCURDNjA1QjVEMUNFMjZFQTAwMDU5Mzcx
OCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNw
cCAqLzsgfTsKKwkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVBMUNF
MjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi87IH07CisJCURDNjA1QjVGMUNFMjZF
QTUwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEQzYwNUI1QjFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJV
SUQuY3BwICovOyB9OworCQlEQzYwNUI2MDFDRTI2RUE3MDA1OTM3MTggLyogUHJvZmlsZXJVSUQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVD
MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5oICovOyB9OwogCQlEQzc5OTc4MzFDREU5
RkEwMDA0RDRBMDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM3OTk3ODIxQ0RFOUY5RTAwNEQ0QTA5IC8qIFRhZ1Jl
Z2lzdGVyc01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlEQzc5OTc4NDFDREU5RkEyMDA0RDRBMDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzc5OTc4MTFD
REU5RjlFMDA0RDRBMDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5jcHAgKi87IH07CiAJCURDRjNENTY5
MUNEMjk0NkQwMDNENUM2NSAvKiBMYXp5Q2xhc3NTdHJ1Y3R1cmUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENGM0Q1NjQxQ0QyOTQ2ODAwM0Q1QzY1
IC8qIExhenlDbGFzc1N0cnVjdHVyZS5jcHAgKi87IH07CkBAIC00MjA2LDYgKzQyMTAsMTAgQEAK
IAkJREMxN0U4MTYxQzlDODAyQjAwOEE2QUIzIC8qIENDYWxsSGVscGVycy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDQ2FsbEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEQzIxNDMwNTFDQTMyRTUyMDAwQTg4NjkgLyogSUNTdGF0cy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8qIElD
U3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUNTdGF0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQzYwNUI1OTFDRTI2RTk4MDA1OTM3MTggLyogUHJv
ZmlsZXJFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9m
aWxlckV2ZW50LmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlEQzYwNUI1QTFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmls
ZXJFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlckV2ZW50
Lmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCURDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlclVJRC5jcHA7IHBhdGgg
PSBwcm9maWxlci9Qcm9maWxlclVJRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CURDNjA1QjVDMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlclVJRC5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmls
ZXJVSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM3OTk3ODExQ0RFOUY5RTAw
NEQ0QTA5IC8qIFRhZ1JlZ2lzdGVyc01vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGFnUmVnaXN0ZXJzTW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURDNzk5NzgyMUNERTlGOUUwMDRENEEwOSAvKiBUYWdSZWdpc3RlcnNNb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhZ1JlZ2lzdGVyc01vZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENGM0Q1NjQxQ0QyOTQ2ODAwM0Q1QzY1IC8qIExhenlD
bGFzc1N0cnVjdHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBM
YXp5Q2xhc3NTdHJ1Y3R1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ0
NSw2ICs2NDUzLDggQEAKIAkJCQkwRkY3Mjk5QjE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJD
b21waWxlZEJ5dGVjb2RlLmggKi8sCiAJCQkJMEZGNzI5OUMxNjZBRDM0NzAwMEY1QkEzIC8qIFBy
b2ZpbGVyRGF0YWJhc2UuY3BwICovLAogCQkJCTBGRjcyOTlEMTY2QUQzNDcwMDBGNUJBMyAvKiBQ
cm9maWxlckRhdGFiYXNlLmggKi8sCisJCQkJREM2MDVCNTkxQ0UyNkU5ODAwNTkzNzE4IC8qIFBy
b2ZpbGVyRXZlbnQuY3BwICovLAorCQkJCURDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9m
aWxlckV2ZW50LmggKi8sCiAJCQkJMEZGNzI5OUUxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVy
RXhlY3V0aW9uQ291bnRlci5oICovLAogCQkJCTBGMTkwQ0FBMTg5RDgyRjYwMDBBRTVGMCAvKiBQ
cm9maWxlckpldHRpc29uUmVhc29uLmNwcCAqLywKIAkJCQkwRjE5MENBQjE4OUQ4MkY2MDAwQUU1
RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oICovLApAQCAtNjQ1OCw2ICs2NDY4LDggQEAK
IAkJCQkwRkIxMDU4QTE2NzU0ODJFMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0U2l0ZS5oICov
LAogCQkJCTBGMTM5MTI2MTY3NzFDMzAwMDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNv
ZGVzLmNwcCAqLywKIAkJCQkwRjEzOTEyNzE2NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9m
aWxlZEJ5dGVjb2Rlcy5oICovLAorCQkJCURDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9m
aWxlclVJRC5jcHAgKi8sCisJCQkJREM2MDVCNUMxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVy
VUlELmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IHByb2ZpbGVyOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTc3NTcsNiArNzc2OSw3IEBACiAJCQkJNzBCNzkxOUMxQzAyNEE0OTAwMjQ4
MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDJB
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZC
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCURDNjA1QjYwMUNFMjZFQTcwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyQjY2RkQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheVBy
b3RvdHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZGMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU1R5cGVkQXJyYXlzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzRDNDU3QzFCQzcyNDExMDA3
NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKQEAg
LTc3NzIsNiArNzc4NSw3IEBACiAJCQkJODZFM0M2MTUxNjdCQUJENzAwNkQ3NjBBIC8qIEpTVmly
dHVhbE1hY2hpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjFEMTY3QkFCRUUwMDZENzYw
QSAvKiBKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCOThE
MTM3MUI2MENENjIwMDIzQjFBNCAvKiBKU1dBU01Nb2R1bGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CURDNjA1QjVFMUNFMjZFQTIwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzQ4MkU5MzExNkE3Q0FEMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVm
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDgyQjkzMTE2NzExNDcwMDNCMDcxMiAv
KiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTkyMDgsNiAr
OTIyMiw3IEBACiAJCQkJQTcwMDg3M0QxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkI5MTZDNTE0REEwNDBDMDBDQkFDODYgLyogTWFya2Vk
QWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MkQ2RjA4MTM1MzlBMjgwMEIwMkU4
NiAvKiBNYXJrZWRCbG9jay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlEQzYwNUI1RDFDRTI2RUEw
MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEQyRjNE
QTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQyRDZGMTExMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtOTM0NCw2ICs5MzU5LDcgQEAKIAkJCQk3MDVCNDFBRjFBNkU1MDFF
MDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwNUI0MUIx
MUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY5MTlEMjgxNTg1Njc3MzAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCURDNjA1QjVGMUNFMjZFQTUwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3MEVDQTYwNzFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdp
c3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkMzMTQxMzE4MTQ1NTkxMDAwMzMyMzIgLyog
VGVtcFJlZ2lzdGVyU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTJDMTdCMTdEN0NGODQw
MDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjAw
NjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJUeXBlTG9jYXRpb25DYWNo
ZS5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgogI2luY2x1ZGUgIlVubGlua2VkSW5zdHJ1
Y3Rpb25TdHJlYW0uaCIKKyNpbmNsdWRlICJWTUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQmFn
VG9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0
Zi9TdHJpbmdFeHRyYXMuaD4KQEAgLTMzMTAsNiArMzMxMSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpq
ZXR0aXNvbihQcm9maWxlcjo6SmV0dGkKICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGRldGFpbCk7CiAjZW5kaWYKKyAgICAKKyAgICBDT0RFQkxPQ0tfTE9HX0VWRU5U
KHRoaXMsICJqZXR0aXNvbiIsICgiZHVlIHRvICIsIHJlYXNvbiwgIiwgY291bnRpbmcgPSAiLCBt
b2RlID09IENvdW50UmVvcHRpbWl6YXRpb24sICIsIGRldGFpbCA9ICIsIHBvaW50ZXJEdW1wKGRl
dGFpbCkpKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKHJlYXNvbiAhPSBQcm9maWxlcjo6Tm90SmV0
dGlzb25lZCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MDQsNiArMTQwNCw5IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCAKICAgICB9CiB9CiAKKyNkZWZp
bmUgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssIHN1bW1hcnksIGRldGFpbHMpIFwKKyAg
ICAoY29kZUJsb2NrLT52bSgpLT5sb2dFdmVudChjb2RlQmxvY2ssIHN1bW1hcnksIFsmXSAoKSB7
IHJldHVybiB0b0NTdHJpbmcgZGV0YWlsczsgfSkpCisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gQ29kZUJsb2NrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIApAQCAtNDQsNiArNDUsOCBAQCBib29sIEV4aXRQcm9maWxlOjphZGQoY29u
c3QgQ29uY3VycmVudEpJCiB7CiAgICAgQVNTRVJUKHNpdGUuaml0VHlwZSgpICE9IEV4aXRGcm9t
QW55dGhpbmcpOwogCisgICAgQ09ERUJMT0NLX0xPR19FVkVOVChvd25lciwgImZyZXF1ZW50RXhp
dCIsIChzaXRlKSk7CisgICAgCiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VFeGl0UHJvZmlsZSgp
KQogICAgICAgICBkYXRhTG9nKHBvaW50ZXJEdW1wKG93bmVyKSwgIjogQWRkaW5nIGV4aXQgc2l0
ZTogIiwgc2l0ZSwgIlxuIik7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVEZpbmFsaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkx
LDcgKzkxLDcgQEAgdm9pZCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplQ29tbW9uKCkKICNlbmRpZiAv
LyBFTkFCTEUoRlRMX0pJVCkKICAgICAKICAgICBpZiAobV9wbGFuLmNvbXBpbGF0aW9uKQotICAg
ICAgICBtX3BsYW4udm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxhdGlvbihtX3Bs
YW4uY29tcGlsYXRpb24pOworICAgICAgICBtX3BsYW4udm0ubV9wZXJCeXRlY29kZVByb2ZpbGVy
LT5hZGRDb21waWxhdGlvbihtX3BsYW4uY29kZUJsb2NrLCBtX3BsYW4uY29tcGlsYXRpb24pOwog
ICAgIAogICAgIGlmICghbV9wbGFuLndpbGxUcnlUb1RpZXJVcCkKICAgICAgICAgbV9wbGFuLmNv
ZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCktPm1fZGlkRmFpbEZUTENvbXBpbGF0aW9uID0gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMjAwNjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQAogI2luY2x1ZGUgIlN5bWJv
bC5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlJ
bmxpbmVzLmgiCi0jaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlICJWTUlubGluZXMuaCIKICNpbmNs
dWRlIDx3dGYvSW5saW5lQVNNLmg+CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTc2NSw2ICsxNzY1
LDcgQEAgZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dlclJlbwogc3RhdGljIGJv
b2wgc2hvdWxkVHJpZ2dlckZUTENvbXBpbGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVENvZGUq
IGppdENvZGUpCiB7CiAgICAgaWYgKGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCktPm1fZGlk
RmFpbEZUTENvbXBpbGF0aW9uKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJs
b2NrLCAiYWJvcnRGVExDb21waWxlIiwgKCkpOwogICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9z
ZU9TUigpKQogICAgICAgICAgICAgZGF0YUxvZygiRGVmZXJyaW5nIEZUTC1vcHRpbWl6YXRpb24g
b2YgIiwgKmNvZGVCbG9jaywgIiBpbmRlZmluaXRlbHkgYmVjYXVzZSB0aGVyZSB3YXMgYW4gRlRM
IGZhaWx1cmUuXG4iKTsKICAgICAgICAgaml0Q29kZS0+ZG9udE9wdGltaXplQW55dGltZVNvb24o
Y29kZUJsb2NrKTsKQEAgLTE3NzMsNiArMTc3NCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFRyaWdn
ZXJGVExDb21waWxlKENvZGUKIAogICAgIGlmICghY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBs
YWNlbWVudCgpCiAgICAgICAgICYmICFqaXRDb2RlLT5jaGVja0lmT3B0aW1pemF0aW9uVGhyZXNo
b2xkUmVhY2hlZChjb2RlQmxvY2spKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29k
ZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJjb3VudGVyID0gIiwgaml0Q29kZS0+dGllclVw
Q291bnRlcikpOwogICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICAg
ICAgZGF0YUxvZygiQ2hvb3Npbmcgbm90IHRvIEZUTC1vcHRpbWl6ZSAiLCAqY29kZUJsb2NrLCAi
IHlldC5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzkwLDEyICsxNzkyLDE0IEBA
IHN0YXRpYyB2b2lkIHRyaWdnZXJGVExSZXBsYWNlbWVudENvbXBpbGUKICAgICAgICAgd29ya2xp
c3RTdGF0ZSA9IFdvcmtsaXN0OjpOb3RLbm93bjsKICAgICAKICAgICBpZiAod29ya2xpc3RTdGF0
ZSA9PSBXb3JrbGlzdDo6Q29tcGlsaW5nKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQo
Y29kZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJzdGlsbCBjb21waWxpbmciKSk7CiAgICAg
ICAgIGppdENvZGUtPnNldE9wdGltaXphdGlvblRocmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJl
c3VsdCgKICAgICAgICAgICAgIGNvZGVCbG9jaywgQ29tcGlsYXRpb25EZWZlcnJlZCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVk
UmVwbGFjZW1lbnQoKSkgeworICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywg
ImRlbGF5RlRMQ29tcGlsZSIsICgiaGFzIHJlcGxhY2VtZW50IikpOwogICAgICAgICAvLyBUaGF0
J3MgZ3JlYXQsIHdlJ3ZlIGNvbXBpbGVkIHRoZSBjb2RlIC0gbmV4dCB0aW1lIHdlIGNhbGwgdGhp
cyBmdW5jdGlvbiwKICAgICAgICAgLy8gd2UnbGwgZW50ZXIgdGhhdCByZXBsYWNlbWVudC4KICAg
ICAgICAgaml0Q29kZS0+b3B0aW1pemVTb29uKGNvZGVCbG9jayk7CkBAIC0xODAzLDYgKzE4MDcs
NyBAQCBzdGF0aWMgdm9pZCB0cmlnZ2VyRlRMUmVwbGFjZW1lbnRDb21waWxlCiAgICAgfQogICAg
IAogICAgIGlmICh3b3JrbGlzdFN0YXRlID09IFdvcmtsaXN0OjpDb21waWxlZCkgeworICAgICAg
ICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiY29t
cGlsZWQgYW5kIGZhaWxlZCIpKTsKICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlIGZpbmlz
aGVkIGNvbXBpbGluZywgYnV0IGZhaWxlZCBzb21laG93OyBpbiB0aGF0IGNhc2UgdGhlCiAgICAg
ICAgIC8vIHRocmVzaG9sZHMgd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KICAgICAgICAgaWYg
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKQEAgLTE4MTAsNiArMTgxNSw3IEBAIHN0YXRpYyB2b2lk
IHRyaWdnZXJGVExSZXBsYWNlbWVudENvbXBpbGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAidHJpZ2dlckZUTFJlcGxhY2VtZW50
IiwgKCkpOwogICAgIC8vIFdlIG5lZWQgdG8gY29tcGlsZSB0aGUgY29kZS4KICAgICBjb21waWxl
KAogICAgICAgICAqdm0sIGNvZGVCbG9jay0+bmV3UmVwbGFjZW1lbnQoKSwgY29kZUJsb2NrLCBG
VExNb2RlLCBVSU5UX01BWCwKQEAgLTE4NDUsMTIgKzE4NTEsMTQgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIHRyaWdnZXJUaWVyVXBOb3coRXhlYwogCiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1p
emVkUmVwbGFjZW1lbnQoKSkgewogICAgICAgICBpZiAoaml0Q29kZS0+dGllclVwRW50cnlUcmln
Z2Vycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJs
b2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJyZXBsYWNlbWVudCBpbiBwbGFjZSwgZGVsYXlpbmcg
aW5kZWZpbml0ZWx5IikpOwogICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm90aGluZyBtb3JlIHdl
IGNhbiBkbywgdGhlIG9ubHkgd2F5IHRoaXMgd2lsbCBiZSBlbnRlcmVkCiAgICAgICAgICAgICAv
LyBpcyB0aHJvdWdoIHRoZSBmdW5jdGlvbiBlbnRyeSBwb2ludC4KICAgICAgICAgICAgIGppdENv
ZGUtPmRvbnRPcHRpbWl6ZUFueXRpbWVTb29uKGNvZGVCbG9jayk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGppdENvZGUtPm9zckVudHJ5QmxvY2soKSAmJiBq
aXRDb2RlLT50aWVyVXBFbnRyeVRyaWdnZXJzLnNpemUoKSA9PSAxKSB7CisgICAgICAgICAgICBD
T0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgidHJpZ2dl
ciBpbiBwbGFjZSwgZGVsYXlpbmcgaW5kZWZpbml0ZWx5IikpOwogICAgICAgICAgICAgLy8gVGhl
cmUgaXMgb25seSBvbmUgb3V0ZXIgbG9vcCBhbmQgaXRzIHRyaWdnZXIgbXVzdCBoYXZlIGJlZW4g
c2V0CiAgICAgICAgICAgICAvLyB3aGVuIHRoZSBwbGFuIGNvbXBsZXRlZC4KICAgICAgICAgICAg
IC8vIEV4aXRpbmcgdGhlIGlubmVyIGxvb3AgaXMgdXNlbGVzcywgd2UgY2FuIGlnbm9yZSB0aGUg
Y291bnRlciBhbmQgbGVhdmUKQEAgLTE4NzYsMTIgKzE4ODQsMTQgQEAgc3RhdGljIGNoYXIqIHRp
ZXJVcENvbW1vbihFeGVjU3RhdGUqIGV4ZQogCiAgICAgSklUQ29kZSogaml0Q29kZSA9IGNvZGVC
bG9jay0+aml0Q29kZSgpLT5kZmcoKTsKICAgICBpZiAod29ya2xpc3RTdGF0ZSA9PSBXb3JrbGlz
dDo6Q29tcGlsaW5nKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAi
ZGVsYXlGVExDb21waWxlIiwgKCJzdGlsbCBjb21waWxpbmciKSk7CiAgICAgICAgIGppdENvZGUt
PnNldE9wdGltaXphdGlvblRocmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJlc3VsdCgKICAgICAg
ICAgICAgIGNvZGVCbG9jaywgQ29tcGlsYXRpb25EZWZlcnJlZCk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAogICAgIGlmICh3b3JrbGlzdFN0YXRlID09IFdvcmtsaXN0OjpDb21w
aWxlZCkgeworICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5RlRM
Q29tcGlsZSIsICgiY29tcGlsZWQgYW5kIGZhaWxlZCIpKTsKICAgICAgICAgLy8gVGhpcyBtZWFu
cyB0aGF0IGNvbXBpbGF0aW9uIGZhaWxlZCBhbmQgd2UgYWxyZWFkeSBzZXQgdGhlIHRocmVzaG9s
ZHMuCiAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICBkYXRh
TG9nKCJDb2RlIGJsb2NrICIsICpjb2RlQmxvY2ssICIgd2FzIGNvbXBpbGVkIGJ1dCBpdCBkb2Vz
bid0IGhhdmUgYW4gb3B0aW1pemVkIHJlcGxhY2VtZW50LlxuIik7CkBAIC0xODkyLDggKzE5MDIs
MTAgQEAgc3RhdGljIGNoYXIqIHRpZXJVcENvbW1vbihFeGVjU3RhdGUqIGV4ZQogICAgIGlmIChv
cmlnaW5CeXRlY29kZUluZGV4ID09IG9zckVudHJ5Qnl0ZWNvZGVJbmRleCkgewogICAgICAgICB1
bnNpZ25lZCBzdHJlYW1JbmRleCA9IGppdENvZGUtPmJ5dGVjb2RlSW5kZXhUb1N0cmVhbUluZGV4
LmdldChvcmlnaW5CeXRlY29kZUluZGV4KTsKICAgICAgICAgaWYgKENvZGVCbG9jayogZW50cnlC
bG9jayA9IGppdENvZGUtPm9zckVudHJ5QmxvY2soKSkgewotICAgICAgICAgICAgaWYgKHZvaWQq
IGFkZHJlc3MgPSBGVEw6OnByZXBhcmVPU1JFbnRyeShleGVjLCBjb2RlQmxvY2ssIGVudHJ5Qmxv
Y2ssIG9yaWdpbkJ5dGVjb2RlSW5kZXgsIHN0cmVhbUluZGV4KSkKKyAgICAgICAgICAgIGlmICh2
b2lkKiBhZGRyZXNzID0gRlRMOjpwcmVwYXJlT1NSRW50cnkoZXhlYywgY29kZUJsb2NrLCBlbnRy
eUJsb2NrLCBvcmlnaW5CeXRlY29kZUluZGV4LCBzdHJlYW1JbmRleCkpIHsKKyAgICAgICAgICAg
ICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGVudHJ5QmxvY2ssICJvc3JFbnRyeSIsICgiYXQgYmMj
Iiwgb3JpZ2luQnl0ZWNvZGVJbmRleCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjaGFyKj4oYWRkcmVzcyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTE5MTEsMTQgKzE5MjMsMTcgQEAgc3RhdGljIGNoYXIqIHRpZXJVcENvbW1vbihFeGVjU3Rh
dGUqIGV4ZQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaWYgKGppdENv
ZGUtPm9zckVudHJ5UmV0cnkgPCBPcHRpb25zOjpmdGxPU1JFbnRyeVJldHJ5VGhyZXNob2xkKCkp
IHsKKyAgICAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlGVExD
b21waWxlIiwgKCJhdm9pZGluZyBPU1IgZW50cnkgY29tcGlsZSIpKTsKICAgICAgICAgICAgIGpp
dENvZGUtPm9zckVudHJ5UmV0cnkrKzsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICB9Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNv
ZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiYXZvaWRpbmcgcmVwbGFjZW1lbnQgY29tcGls
ZSIpKTsKIAogICAgIC8vIEl0J3MgdGltZSB0byB0cnkgdG8gY29tcGlsZSBjb2RlIGZvciBPU1Ig
ZW50cnkuCiAgICAgaWYgKENvZGVCbG9jayogZW50cnlCbG9jayA9IGppdENvZGUtPm9zckVudHJ5
QmxvY2soKSkgewogICAgICAgICBpZiAoaml0Q29kZS0+b3NyRW50cnlSZXRyeSA8IE9wdGlvbnM6
OmZ0bE9TUkVudHJ5UmV0cnlUaHJlc2hvbGQoKSkgeworICAgICAgICAgICAgQ09ERUJMT0NLX0xP
R19FVkVOVChjb2RlQmxvY2ssICJkZWxheUZUTENvbXBpbGUiLCAoIk9TUiBlbnRyeSBmYWlsZWQs
IE9TUiBlbnRyeSB0aHJlc2hvbGQgbm90IG1ldCIpKTsKICAgICAgICAgICAgIGppdENvZGUtPm9z
ckVudHJ5UmV0cnkrKzsKICAgICAgICAgICAgIGppdENvZGUtPnNldE9wdGltaXphdGlvblRocmVz
aG9sZEJhc2VkT25Db21waWxhdGlvblJlc3VsdCgKICAgICAgICAgICAgICAgICBjb2RlQmxvY2ss
IENvbXBpbGF0aW9uRGVmZXJyZWQpOwpAQCAtMTkyOSw2ICsxOTQ0LDcgQEAgc3RhdGljIGNoYXIq
IHRpZXJVcENvbW1vbihFeGVjU3RhdGUqIGV4ZQogICAgICAgICBlbnRyeUNvZGUtPmNvdW50RW50
cnlGYWlsdXJlKCk7CiAgICAgICAgIGlmIChlbnRyeUNvZGUtPmVudHJ5RmFpbHVyZUNvdW50KCkg
PAogICAgICAgICAgICAgT3B0aW9uczo6ZnRsT1NSRW50cnlGYWlsdXJlQ291bnRGb3JSZW9wdGlt
aXphdGlvbigpKSB7CisgICAgICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywg
ImRlbGF5RlRMQ29tcGlsZSIsICgiT1NSIGVudHJ5IGZhaWxlZCIpKTsKICAgICAgICAgICAgIGpp
dENvZGUtPnNldE9wdGltaXphdGlvblRocmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJlc3VsdCgK
ICAgICAgICAgICAgICAgICBjb2RlQmxvY2ssIENvbXBpbGF0aW9uRGVmZXJyZWQpOwogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTM2LDYgKzE5NTIsNyBAQCBzdGF0aWMgY2hhciog
dGllclVwQ29tbW9uKEV4ZWNTdGF0ZSogZXhlCiAKICAgICAgICAgLy8gT1NSIGVudHJ5IGZhaWxl
ZC4gT2ggbm8hIFRoaXMgaW1wbGllcyB0aGF0IHdlIG5lZWQgdG8gcmV0cnkuIFdlIHJldHJ5CiAg
ICAgICAgIC8vIHdpdGhvdXQgZXhwb25lbnRpYWwgYmFja29mZiBhbmQgd2Ugb25seSBkbyB0aGlz
IGZvciB0aGUgZW50cnkgY29kZSBibG9jay4KKyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChj
b2RlQmxvY2ssICJkZWxheUZUTENvbXBpbGUiLCAoIk9TUiBlbnRyeSBmYWlsZWQgdG9vIG1hbnkg
dGltZXMiKSk7CiAgICAgICAgIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNvZGUgPSBlbnRyeUJsb2Nr
LT5qaXRDb2RlKCktPmZ0bEZvck9TUkVudHJ5KCktPmJ5dGVjb2RlSW5kZXgoKTsKICAgICAgICAg
aml0Q29kZS0+Y2xlYXJPU1JFbnRyeUJsb2NrKCk7CiAgICAgICAgIGppdENvZGUtPm9zckVudHJ5
UmV0cnkgPSAwOwpAQCAtMTk2Nyw2ICsxOTg0LDcgQEAgc3RhdGljIGNoYXIqIHRpZXJVcENvbW1v
bihFeGVjU3RhdGUqIGV4ZQogICAgICAgICBleGVjLCBjb2RlQmxvY2ssIENvZGVPcmlnaW4ob3Ny
RW50cnlCeXRlY29kZUluZGV4KSwgc3RyZWFtSW5kZXgsIG11c3RIYW5kbGVWYWx1ZXMpOwogICAg
IENvZGVCbG9jayogcmVwbGFjZW1lbnRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPm5ld1JlcGxhY2Vt
ZW50KCk7CiAKKyAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgInRyaWdnZXJGVExP
U1IiLCAoKSk7CiAgICAgQ29tcGlsYXRpb25SZXN1bHQgZm9yRW50cnlSZXN1bHQgPSBjb21waWxl
KAogICAgICAgICAqdm0sIHJlcGxhY2VtZW50Q29kZUJsb2NrLCBjb2RlQmxvY2ssIEZUTEZvck9T
UkVudHJ5TW9kZSwgb3NyRW50cnlCeXRlY29kZUluZGV4LAogICAgICAgICBtdXN0SGFuZGxlVmFs
dWVzLCBUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjcmVhdGUo
dHJpZ2dlckFkZHJlc3MpKTsKQEAgLTE5NzUsMTEgKzE5OTMsMTMgQEAgc3RhdGljIGNoYXIqIHRp
ZXJVcENvbW1vbihFeGVjU3RhdGUqIGV4ZQogICAgICAgICB0cmlnZ2VyRlRMUmVwbGFjZW1lbnRD
b21waWxlKHZtLCBjb2RlQmxvY2ssIGppdENvZGUpOwogCiAgICAgaWYgKGZvckVudHJ5UmVzdWx0
ICE9IENvbXBpbGF0aW9uU3VjY2Vzc2Z1bCkgeworICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5U
KGNvZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiT1NSIGVjb21waWxhdGlvbiBub3Qgc3Vj
Y2Vzc2Z1bCIpKTsKICAgICAgICAgaml0Q29kZS0+c2V0T3B0aW1pemF0aW9uVGhyZXNob2xkQmFz
ZWRPbkNvbXBpbGF0aW9uUmVzdWx0KAogICAgICAgICAgICAgY29kZUJsb2NrLCBDb21waWxhdGlv
bkRlZmVycmVkKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotCisgICAgCisgICAg
Q09ERUJMT0NLX0xPR19FVkVOVChqaXRDb2RlLT5vc3JFbnRyeUJsb2NrKCksICJvc3JFbnRyeSIs
ICgiYXQgYmMjIiwgb3JpZ2luQnl0ZWNvZGVJbmRleCkpOwogICAgIC8vIEl0J3MgcG9zc2libGUg
dGhhdCB0aGUgZm9yLWVudHJ5IGNvbXBpbGUgYWxyZWFkeSBzdWNjZWVkZWQuIEluIHRoYXQgY2Fz
ZSBPU1IKICAgICAvLyBlbnRyeSB3aWxsIHN1Y2NlZWQgdW5sZXNzIHdlIHJhbiBvdXQgb2Ygc3Rh
Y2suIEl0J3Mgbm90IGNsZWFyIHdoYXQgd2Ugc2hvdWxkIGRvLgogICAgIC8vIFdlIHNpZ25hbCB0
byB0cnkgYWdhaW4gYWZ0ZXIgYSB3aGlsZSBpZiB0aGF0IGhhcHBlbnMuCkBAIC0yMDE2LDggKzIw
MzYsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVyVXBOb3dJbkxvbwogICAgICAg
ICB0cmlnZ2VyRlRMUmVwbGFjZW1lbnRDb21waWxlKHZtLCBjb2RlQmxvY2ssIGppdENvZGUpOwog
CiAgICAgLy8gU2luY2Ugd2UgY2Fubm90IE9TUiBFbnRlciBoZXJlLCB0aGUgZGVmYXVsdCAib3B0
aW1pemVTb29uKCkiIGlzIG5vdCB1c2VmdWwuCi0gICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1p
emVkUmVwbGFjZW1lbnQoKSkKKyAgICBpZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNl
bWVudCgpKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlG
VExDb21waWxlIiwgKCJPU1IgaW4gbG9vcCBmYWlsZWQsIGRlZmVycmluZyIpKTsKICAgICAgICAg
aml0Q29kZS0+c2V0T3B0aW1pemF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0
KGNvZGVCbG9jaywgQ29tcGlsYXRpb25EZWZlcnJlZCk7CisgICAgfQogfQogCiBjaGFyKiBKSVRf
T1BFUkFUSU9OIHRyaWdnZXJPU1JFbnRyeU5vdyhFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFs
aXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRG
aW5hbGl6ZXIuY3BwCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAg
Ym9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogICAgIG1fcGxhbi5jb2RlQmxv
Y2stPnNldEpJVENvZGUoaml0Q29kZSk7CiAKICAgICBpZiAobV9wbGFuLmNvbXBpbGF0aW9uKQot
ICAgICAgICBtX3BsYW4udm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxhdGlvbiht
X3BsYW4uY29tcGlsYXRpb24pOworICAgICAgICBtX3BsYW4udm0ubV9wZXJCeXRlY29kZVByb2Zp
bGVyLT5hZGRDb21waWxhdGlvbihtX3BsYW4uY29kZUJsb2NrLCBtX3BsYW4uY29tcGlsYXRpb24p
OwogICAgIAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzgsNyArNzM4LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQg
SklUOjpwcml2YXRlQ29tcGlsZShKSQogICAgIGlmIChtX2NvbXBpbGF0aW9uKSB7CiAgICAgICAg
IGlmIChPcHRpb25zOjpkaXNhc3NlbWJsZUJhc2VsaW5lRm9yUHJvZmlsZXIoKSkKICAgICAgICAg
ICAgIG1fZGlzYXNzZW1ibGVyLT5yZXBvcnRUb1Byb2ZpbGVyKG1fY29tcGlsYXRpb24uZ2V0KCks
IHBhdGNoQnVmZmVyKTsKLSAgICAgICAgbV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRD
b21waWxhdGlvbihtX2NvbXBpbGF0aW9uKTsKKyAgICAgICAgbV92bS0+bV9wZXJCeXRlY29kZVBy
b2ZpbGVyLT5hZGRDb21waWxhdGlvbihtX2NvZGVCbG9jaywgbV9jb21waWxhdGlvbik7CiAgICAg
fQogCiAgICAgaWYgKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmRpZEJ1aWxkTWFwcGluZygp
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjM1LDYgKzEyMzUsNyBAQCBTbG93UGF0aFJldHVy
blR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgfQogCiAgICAgaWYgKCFjb2RlQmxvY2st
PmNoZWNrSWZPcHRpbWl6YXRpb25UaHJlc2hvbGRSZWFjaGVkKCkpIHsKKyAgICAgICAgQ09ERUJM
T0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoImNvdW50ZXIg
PSAiLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCkpKTsKICAgICAgICAgY29kZUJsb2Nr
LT51cGRhdGVBbGxQcmVkaWN0aW9ucygpOwogICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9T
UigpKQogICAgICAgICAgICAgZGF0YUxvZygiQ2hvb3Npbmcgbm90IHRvIG9wdGltaXplICIsICpj
b2RlQmxvY2ssICIgeWV0LCBiZWNhdXNlIHRoZSB0aHJlc2hvbGQgaGFzbid0IGJlZW4gcmVhY2hl
ZC5cbiIpOwpAQCAtMTI0MiwxNyArMTI0MywyMCBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09Q
RVJBVElPTiBvcGVyYXRpCiAgICAgfQogICAgIAogICAgIGlmICh2bS5lbmFibGVkUHJvZmlsZXIo
KSkgeworICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1p
emVUb0RGRyIsICgicHJvZmlsZXIgaXMgZW5hYmxlZCIpKTsKICAgICAgICAgdXBkYXRlQWxsUHJl
ZGljdGlvbnNBbmRPcHRpbWl6ZUFmdGVyV2FybVVwKGNvZGVCbG9jayk7CiAgICAgICAgIHJldHVy
biBlbmNvZGVSZXN1bHQoMCwgMCk7CiAgICAgfQogCiAgICAgRGVidWdnZXIqIGRlYnVnZ2VyID0g
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKICAgICBpZiAoZGVidWdnZXIg
JiYgKGRlYnVnZ2VyLT5pc1N0ZXBwaW5nKCkgfHwgY29kZUJsb2NrLT5iYXNlbGluZUFsdGVybmF0
aXZlKCktPmhhc0RlYnVnZ2VyUmVxdWVzdHMoKSkpIHsKKyAgICAgICAgQ09ERUJMT0NLX0xPR19F
VkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoImRlYnVnZ2VyIGlzIHN0ZXBw
aW5nIG9yIGhhcyByZXF1ZXN0cyIpKTsKICAgICAgICAgdXBkYXRlQWxsUHJlZGljdGlvbnNBbmRP
cHRpbWl6ZUFmdGVyV2FybVVwKGNvZGVCbG9jayk7CiAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1
bHQoMCwgMCk7CiAgICAgfQogCiAgICAgaWYgKGNvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlu
bGluZWQpIHsKKyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9w
dGltaXplVG9ERkciLCAoInNob3VsZCBhbHdheXMgYmUgaW5saW5lZCIpKTsKICAgICAgICAgdXBk
YXRlQWxsUHJlZGljdGlvbnNBbmRPcHRpbWl6ZUFmdGVyV2FybVVwKGNvZGVCbG9jayk7CiAgICAg
ICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJDaG9v
c2luZyBub3QgdG8gb3B0aW1pemUgIiwgKmNvZGVCbG9jaywgIiB5ZXQsIGJlY2F1c2UgbV9zaG91
bGRBbHdheXNCZUlubGluZWQgPT0gdHJ1ZS5cbiIpOwpAQCAtMTI5Myw2ICsxMjk3LDcgQEAgU2xv
d1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICB3b3JrbGlzdFN0
YXRlID0gREZHOjpXb3JrbGlzdDo6Tm90S25vd247CiAKICAgICBpZiAod29ya2xpc3RTdGF0ZSA9
PSBERkc6OldvcmtsaXN0OjpDb21waWxpbmcpIHsKKyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVO
VChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoImNvbXBpbGluZyIpKTsKICAgICAg
ICAgLy8gV2UgY2Fubm90IGJlIGluIHRoZSBwcm9jZXNzIG9mIGFzeW5jaHJvbm91cyBjb21waWxh
dGlvbiBhbmQgYWxzbyBoYXZlIGFuIG9wdGltaXplZAogICAgICAgICAvLyByZXBsYWNlbWVudC4K
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1l
bnQoKSk7CkBAIC0xMzA3LDYgKzEzMTIsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJB
VElPTiBvcGVyYXRpCiAgICAgICAgIC8vIENvZGVCbG9jazo6c2V0T3B0aW1pemF0aW9uVGhyZXNo
b2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0KCkgYW5kIHdlIGhhdmUKICAgICAgICAgLy8gbm90
aGluZyBsZWZ0IHRvIGRvLgogICAgICAgICBpZiAoIWNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVw
bGFjZW1lbnQoKSkgeworICAgICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ss
ICJkZWxheU9wdGltaXplVG9ERkciLCAoImNvbXBpbGVkIGFuZCBmYWlsZWQiKSk7CiAgICAgICAg
ICAgICBjb2RlQmxvY2stPnVwZGF0ZUFsbFByZWRpY3Rpb25zKCk7CiAgICAgICAgICAgICBpZiAo
T3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkNvZGUgYmxv
Y2sgIiwgKmNvZGVCbG9jaywgIiB3YXMgY29tcGlsZWQgYnV0IGl0IGRvZXNuJ3QgaGF2ZSBhbiBv
cHRpbWl6ZWQgcmVwbGFjZW1lbnQuXG4iKTsKQEAgLTEzMjksNiArMTMzNSw3IEBAIFNsb3dQYXRo
UmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgLy8gc2hvdWxkUmVvcHRp
bWl6ZUZyb21Mb29wTm93KCkgdG8gYWx3YXlzIHJldHVybiB0cnVlLiBCdXQgd2UgbWFrZSBpdCBk
byBzb21lCiAgICAgICAgIC8vIGFkZGl0aW9uYWwgY2hlY2tpbmcgYW55d2F5LCB0byByZWR1Y2Ug
dGhlIGFtb3VudCBvZiByZWNvbXBpbGF0aW9uIHRocmFzaGluZy4KICAgICAgICAgaWYgKGNvZGVC
bG9jay0+cmVwbGFjZW1lbnQoKS0+c2hvdWxkUmVvcHRpbWl6ZUZyb21Mb29wTm93KCkpIHsKKyAg
ICAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlPcHRpbWl6ZVRv
REZHIiwgKCJzaG91bGQgcmVvcHRpbWl6ZSBmcm9tIGxvb3Agbm93IikpOwogICAgICAgICAgICAg
aWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAg
ICAgICAgICAgICAgICAgICAgICJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICIsICpjb2Rl
QmxvY2ssCkBAIC0xMzM5LDYgKzEzNDYsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJB
VElPTiBvcGVyYXRpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIWNvZGVC
bG9jay0+c2hvdWxkT3B0aW1pemVOb3coKSkgeworICAgICAgICAgICAgQ09ERUJMT0NLX0xPR19F
VkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoImluc3VmZmljaWVudCBwcm9m
aWxpbmciKSk7CiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7CiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkRlbGF5aW5nIG9wdGlt
aXphdGlvbiBmb3IgIiwgKmNvZGVCbG9jaywKQEAgLTEzNjksMTQgKzEzNzcsMTcgQEAgU2xvd1Bh
dGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICAgICAgdm0sIHJlcGxh
Y2VtZW50Q29kZUJsb2NrLCBudWxscHRyLCBERkc6OkRGR01vZGUsIGJ5dGVjb2RlSW5kZXgsCiAg
ICAgICAgICAgICBtdXN0SGFuZGxlVmFsdWVzLCBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjazo6Y3JlYXRlKCkpOwogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBDb21w
aWxhdGlvblN1Y2Nlc3NmdWwpCisgICAgICAgIGlmIChyZXN1bHQgIT0gQ29tcGlsYXRpb25TdWNj
ZXNzZnVsKSB7CisgICAgICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRl
bGF5T3B0aW1pemVUb0RGRyIsICgiY29tcGlsYXRpb24gZmFpbGVkIikpOwogICAgICAgICAgICAg
cmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICBD
b2RlQmxvY2sqIG9wdGltaXplZENvZGVCbG9jayA9IGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKTsK
ICAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKG9wdGltaXplZENvZGVCbG9jay0+
aml0VHlwZSgpKSk7CiAgICAgCiAgICAgaWYgKHZvaWQqIGRhdGFCdWZmZXIgPSBERkc6OnByZXBh
cmVPU1JFbnRyeShleGVjLCBvcHRpbWl6ZWRDb2RlQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKSB7Cisg
ICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQob3B0aW1pemVkQ29kZUJsb2NrLCAib3NyRW50cnki
LCAoImF0IGJjIyIsIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSkgewogICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAiUGVyZm9y
bWluZyBPU1IgIiwgKmNvZGVCbG9jaywgIiAtPiAiLCAqb3B0aW1pemVkQ29kZUJsb2NrLCAiLlxu
Iik7CkBAIC0xNDA2LDYgKzE0MTcsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElP
TiBvcGVyYXRpCiAgICAgLy8gcmlnaHQgbm93LiBTbywgd2Ugb25seSB0cmlnZ2VyIHJlb3B0aW1p
emF0aW9uIG9ubHkgdXBvbiB0aGUgbW9yZSBjb25zZXJ2YXRpdmUgKG5vbi1sb29wKQogICAgIC8v
IHJlb3B0aW1pemF0aW9uIHRyaWdnZXIuCiAgICAgaWYgKG9wdGltaXplZENvZGVCbG9jay0+c2hv
dWxkUmVvcHRpbWl6ZU5vdygpKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJs
b2NrLCAiZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJzaG91bGQgcmVvcHRpbWl6ZSBub3ciKSk7CiAg
ICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKICAgICAgICAgICAgIGRhdGFMb2co
CiAgICAgICAgICAgICAgICAgIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgIiwgKmNvZGVC
bG9jaywgIiAtPiAiLApAQCAtMTQxOSw2ICsxNDMxLDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aQogICAgIC8vIGxvbmdlciBhbmQgdGhlbiB0cnkgYWdhaW4uCiAg
ICAgY29kZUJsb2NrLT5vcHRpbWl6ZUFmdGVyV2FybVVwKCk7CiAgICAgCisgICAgQ09ERUJMT0NL
X0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoIk9TUiBmYWlsZWQi
KSk7CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KICNlbmRpZgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lv
biAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNiArMzE5LDcgQEAgaW5saW5lIGJvb2wgaml0Q29t
cGlsZUFuZFNldEhldXJpc3RpY3MoQwogICAgIGNvZGVCbG9jay0+dXBkYXRlQWxsVmFsdWVQcm9m
aWxlUHJlZGljdGlvbnMoKTsKIAogICAgIGlmICghY29kZUJsb2NrLT5jaGVja0lmSklUVGhyZXNo
b2xkUmVhY2hlZCgpKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAi
ZGVsYXlKSVRDb21waWxlIiwgKCJ0aHJlc2hvbGQgbm90IHJlYWNoZWQsIGNvdW50ZXIgPSAiLCBj
b2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSkpOwogICAgICAgICBpZiAoT3B0aW9uczo6
dmVyYm9zZU9TUigpKQogICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBKSVQgdGhyZXNob2xkIHNo
b3VsZCBiZSBsaWZ0ZWQuXG4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzM1LDYgKzMz
Niw3IEBAIGlubGluZSBib29sIGppdENvbXBpbGVBbmRTZXRIZXVyaXN0aWNzKEMKICAgICAgICAg
Q29tcGlsYXRpb25SZXN1bHQgcmVzdWx0ID0gSklUOjpjb21waWxlKCZ2bSwgY29kZUJsb2NrLCBK
SVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgICAgICBzd2l0Y2ggKHJlc3VsdCkgewogICAgICAg
ICBjYXNlIENvbXBpbGF0aW9uRmFpbGVkOgorICAgICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVO
VChjb2RlQmxvY2ssICJkZWxheUpJVENvbXBpbGUiLCAoImNvbXBpbGF0aW9uIGZhaWxlZCIpKTsK
ICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICAgICAg
ZGF0YUxvZ0YoIiAgICBKSVQgY29tcGlsYXRpb24gZmFpbGVkLlxuIik7CiAgICAgICAgICAgICBj
b2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOwpAQCAtMzcyLDYgKzM3NCw4IEBAIHN0YXRp
YyBTbG93UGF0aFJldHVyblR5cGUgZW50cnlPU1IoRXhlY1MKICAgICBpZiAoIWppdENvbXBpbGVB
bmRTZXRIZXVyaXN0aWNzKGNvZGVCbG9jaywgZXhlYykpCiAgICAgICAgIExMSU5UX1JFVFVSTl9U
V08oMCwgMCk7CiAgICAgCisgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJPU1Ig
ZW50cnkiLCAoImluIHByb2xvZ3VlIikpOworICAgIAogICAgIGlmIChraW5kID09IFByb2xvZ3Vl
KQogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5leGVjdXRh
YmxlQWRkcmVzcygpLCAwKTsKICAgICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsKQEAgLTQy
OSw2ICs0MzMsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChsb29wX29zcikKICAgICBpZiAoIWpp
dENvbXBpbGVBbmRTZXRIZXVyaXN0aWNzKGNvZGVCbG9jaywgZXhlYykpCiAgICAgICAgIExMSU5U
X1JFVFVSTl9UV08oMCwgMCk7CiAgICAgCisgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxv
Y2ssICJvc3JFbnRyeSIsICgiYXQgYmMjIiwgcGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmJlZ2luKCkpKTsKKwogICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCk7CiAgICAgCiAgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNl
dD4gbWFwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29t
cGlsYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDYgKzQyLDcgQEAgQ29tcGlsYXRpb246OkNvbXBpbGF0
aW9uKEJ5dGVjb2RlcyogYnl0ZQogICAgICwgbV9udW1JbmxpbmVkR2V0QnlJZHMoMCkKICAgICAs
IG1fbnVtSW5saW5lZFB1dEJ5SWRzKDApCiAgICAgLCBtX251bUlubGluZWRDYWxscygwKQorICAg
ICwgbV91aWQoVUlEOjpjcmVhdGUoKSkKIHsKIH0KIApAQCAtMTA2LDYgKzEwNywxMSBAQCB2b2lk
IENvbXBpbGF0aW9uOjpzZXRKZXR0aXNvblJlYXNvbihKZXR0CiAgICAgICAgIG1fYWRkaXRpb25h
bEpldHRpc29uUmVhc29uID0gQ1N0cmluZygpOwogfQogCit2b2lkIENvbXBpbGF0aW9uOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCJDb21wIiwgbV91aWQp
OworfQorCiBKU1ZhbHVlIENvbXBpbGF0aW9uOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
IHsKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CkBA
IC0xNDksNiArMTU1LDggQEAgSlNWYWx1ZSBDb21waWxhdGlvbjo6dG9KUyhFeGVjU3RhdGUqIGV4
ZQogICAgIGlmICghbV9hZGRpdGlvbmFsSmV0dGlzb25SZWFzb24uaXNOdWxsKCkpCiAgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hZGRp
dGlvbmFsSmV0dGlzb25SZWFzb24sIGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjgobV9h
ZGRpdGlvbmFsSmV0dGlzb25SZWFzb24pKSk7CiAgICAgCisgICAgcmVzdWx0LT5wdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnVpZCwgbV91aWQudG9KUyhleGVjKSk7
CisgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oCShyZXZpc2lvbiAy
MDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTItMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJQcm9maWxlck9TUkV4aXRTaXRlLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJPcmlnaW5T
dGFjay5oIgogI2luY2x1ZGUgIlByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuaCIKKyNpbmNsdWRl
ICJQcm9maWxlclVJRC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1NlZ21lbnRlZFZlY3Rvci5oPgogCkBAIC03NSw2ICs3Niw5IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2b2lkIHNldEpldHRpc29uUmVhc29uKEpldHRpc29uUmVhc29uLCBjb25zdCBGaXJlRGV0
YWlsKik7CiAgICAgCisgICAgVUlEIHVpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdWlkOyB9CisgICAg
CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgSlNWYWx1ZSB0b0pTKEV4
ZWNTdGF0ZSopIGNvbnN0OwogICAgIAogcHJpdmF0ZToKQEAgLTkwLDYgKzk0LDcgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX251bUlubGluZWRHZXRCeUlkczsKICAgICB1bnNpZ25lZCBtX251
bUlubGluZWRQdXRCeUlkczsKICAgICB1bnNpZ25lZCBtX251bUlubGluZWRDYWxsczsKKyAgICBV
SUQgbV91aWQ7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UHJvZmlsZXIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5j
cHAJKHJldmlzaW9uIDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlckRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKIApAQCAtNTgsNyArNTks
MTEgQEAgRGF0YWJhc2U6On5EYXRhYmFzZSgpCiBCeXRlY29kZXMqIERhdGFiYXNlOjplbnN1cmVC
eXRlY29kZXNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9sb2NrKTsKLSAgICAKKyAgICByZXR1cm4gZW5zdXJlQnl0ZWNvZGVzRm9yKGxvY2tlciwg
Y29kZUJsb2NrKTsKK30KKworQnl0ZWNvZGVzKiBEYXRhYmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9y
KGNvbnN0IExvY2tIb2xkZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKICAgICBjb2RlQmxv
Y2sgPSBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpOwogICAgIAogICAgIEhhc2hNYXA8Q29k
ZUJsb2NrKiwgQnl0ZWNvZGVzKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2J5dGVjb2Rlc01hcC5maW5k
KGNvZGVCbG9jayk7CkBAIC03OCwxMyArODMsMTggQEAgdm9pZCBEYXRhYmFzZTo6bm90aWZ5RGVz
dHJ1Y3Rpb24oQ29kZUJsbwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgCiAg
ICAgbV9ieXRlY29kZXNNYXAucmVtb3ZlKGNvZGVCbG9jayk7CisgICAgbV9jb21waWxhdGlvbk1h
cC5yZW1vdmUoY29kZUJsb2NrKTsKIH0KIAotdm9pZCBEYXRhYmFzZTo6YWRkQ29tcGlsYXRpb24o
UGFzc1JlZlB0cjxDb21waWxhdGlvbj4gY29tcGlsYXRpb24pCit2b2lkIERhdGFiYXNlOjphZGRD
b21waWxhdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgUGFzc1JlZlB0cjxDb21waWxhdGlvbj4g
cGFzc2VkQ29tcGlsYXRpb24pCiB7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAg
ICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CisKKyAgICBSZWZQdHI8Q29tcGlsYXRp
b24+IGNvbXBpbGF0aW9uID0gcGFzc2VkQ29tcGlsYXRpb247CiAgICAgCiAgICAgbV9jb21waWxh
dGlvbnMuYXBwZW5kKGNvbXBpbGF0aW9uKTsKKyAgICBtX2NvbXBpbGF0aW9uTWFwLnNldChjb2Rl
QmxvY2ssIGNvbXBpbGF0aW9uKTsKIH0KIAogSlNWYWx1ZSBEYXRhYmFzZTo6dG9KUyhFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0CkBAIC0xMDEsNiArMTExLDExIEBAIEpTVmFsdWUgRGF0YWJhc2U6OnRv
SlMoRXhlY1N0YXRlKiBleGVjKSAKICAgICAgICAgY29tcGlsYXRpb25zLT5wdXREaXJlY3RJbmRl
eChleGVjLCBpLCBtX2NvbXBpbGF0aW9uc1tpXS0+dG9KUyhleGVjKSk7CiAgICAgcmVzdWx0LT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbXBpbGF0aW9ucywg
Y29tcGlsYXRpb25zKTsKICAgICAKKyAgICBKU0FycmF5KiBldmVudHMgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIDApOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2V2ZW50cy5z
aXplKCk7ICsraSkKKyAgICAgICAgZXZlbnRzLT5wdXREaXJlY3RJbmRleChleGVjLCBpLCBtX2V2
ZW50c1tpXS50b0pTKGV4ZWMpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZlbnRzLCBldmVudHMpOworICAgIAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTEzMyw2ICsxNDgsMTUgQEAgdm9pZCBEYXRhYmFzZTo6cmVnaXN0ZXJU
b1NhdmVBdEV4aXQoY29ucwogICAgIG1fc2hvdWxkU2F2ZUF0RXhpdCA9IHRydWU7CiB9CiAKK3Zv
aWQgRGF0YWJhc2U6OmxvZ0V2ZW50KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyKiBz
dW1tYXJ5LCBjb25zdCBDU3RyaW5nJiBkZXRhaWwpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICAKKyAgICBCeXRlY29kZXMqIGJ5dGVjb2RlcyA9IGVuc3VyZUJ5dGVjb2Rl
c0Zvcihsb2NrZXIsIGNvZGVCbG9jayk7CisgICAgQ29tcGlsYXRpb24qIGNvbXBpbGF0aW9uID0g
bV9jb21waWxhdGlvbk1hcC5nZXQoY29kZUJsb2NrKTsKKyAgICBtX2V2ZW50cy5hcHBlbmQoRXZl
bnQoY3VycmVudFRpbWUoKSwgYnl0ZWNvZGVzLCBjb21waWxhdGlvbiwgc3VtbWFyeSwgZGV0YWls
KSk7Cit9CisKIHZvaWQgRGF0YWJhc2U6OmFkZERhdGFiYXNlVG9BdEV4aXQoKQogewogICAgIGlm
ICgrK2RpZFJlZ2lzdGVyQXRFeGl0ID09IDEpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgJKHJldmlzaW9uIDIwMDYyMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlByb2ZpbGVyQnl0
ZWNvZGVzLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJDb21waWxhdGlvbi5oIgogI2luY2x1ZGUgIlBy
b2ZpbGVyQ29tcGlsYXRpb25LaW5kLmgiCisjaW5jbHVkZSAiUHJvZmlsZXJFdmVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvTG9jay5oPgpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgQnl0ZWNvZGVz
KiBlbnN1cmVCeXRlY29kZXNGb3IoQ29kZUJsb2NrKik7CiAgICAgdm9pZCBub3RpZnlEZXN0cnVj
dGlvbihDb2RlQmxvY2sqKTsKICAgICAKLSAgICB2b2lkIGFkZENvbXBpbGF0aW9uKFBhc3NSZWZQ
dHI8Q29tcGlsYXRpb24+KTsKKyAgICB2b2lkIGFkZENvbXBpbGF0aW9uKENvZGVCbG9jayosIFBh
c3NSZWZQdHI8Q29tcGlsYXRpb24+KTsKICAgICAKICAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YWJh
c2UgdG8gYSBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IGlzIHN1aXRhYmxlIGZvciBKU09OIHN0cmlu
Z2lmaWNhdGlvbi4KICAgICAvLyBOb3RlIHRoYXQgaXQncyBwcm9iYWJseSBhIGdvb2QgaWRlYSB0
byB1c2UgYW4gRXhlY1N0YXRlKiBhc3NvY2lhdGVkIHdpdGggYSBnbG9iYWwKQEAgLTcwLDcgKzcx
LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVnaXN0ZXJUb1NhdmVBdEV4aXQoY29uc3QgY2hh
ciogZmlsZW5hbWUpOwogICAgIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbG9nRXZlbnQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IGNoYXIqIHN1bW1hcnksIGNvbnN0IENTdHJpbmcm
IGRldGFpbCk7CisgICAgCiBwcml2YXRlOgorICAgIEJ5dGVjb2RlcyogZW5zdXJlQnl0ZWNvZGVz
Rm9yKGNvbnN0IExvY2tIb2xkZXImLCBDb2RlQmxvY2sqKTsKKyAgICAKICAgICB2b2lkIGFkZERh
dGFiYXNlVG9BdEV4aXQoKTsKICAgICB2b2lkIHJlbW92ZURhdGFiYXNlRnJvbUF0RXhpdCgpOwog
ICAgIHZvaWQgcGVyZm9ybUF0RXhpdFNhdmUoKSBjb25zdDsKQEAgLTgyLDYgKzg3LDggQEAgcHJp
dmF0ZToKICAgICBTZWdtZW50ZWRWZWN0b3I8Qnl0ZWNvZGVzPiBtX2J5dGVjb2RlczsKICAgICBI
YXNoTWFwPENvZGVCbG9jayosIEJ5dGVjb2Rlcyo+IG1fYnl0ZWNvZGVzTWFwOwogICAgIFZlY3Rv
cjxSZWZQdHI8Q29tcGlsYXRpb24+PiBtX2NvbXBpbGF0aW9uczsKKyAgICBIYXNoTWFwPENvZGVC
bG9jayosIFJlZlB0cjxDb21waWxhdGlvbj4+IG1fY29tcGlsYXRpb25NYXA7CisgICAgVmVjdG9y
PEV2ZW50PiBtX2V2ZW50czsKICAgICBib29sIG1fc2hvdWxkU2F2ZUF0RXhpdDsKICAgICBDU3Ry
aW5nIG1fYXRFeGl0U2F2ZUZpbGVuYW1lOwogICAgIERhdGFiYXNlKiBtX25leHRSZWdpc3RlcmVk
RGF0YWJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJF
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyRXZlbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlByb2ZpbGVyRXZlbnQuaCIKKworI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlByb2Zp
bGVyQnl0ZWNvZGVzLmgiCisjaW5jbHVkZSAiUHJvZmlsZXJDb21waWxhdGlvbi5oIgorI2luY2x1
ZGUgIlByb2ZpbGVyVUlELmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIg
eworCit2b2lkIEV2ZW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0
LnByaW50KG1fdGltZSwgIjogIiwgcG9pbnRlckR1bXAobV9ieXRlY29kZXMpKTsKKyAgICBpZiAo
bV9jb21waWxhdGlvbikKKyAgICAgICAgb3V0LnByaW50KCIgIiwgKm1fY29tcGlsYXRpb24pOwor
ICAgIG91dC5wcmludCgiOiAiLCBtX3N1bW1hcnkpOworICAgIGlmIChtX2RldGFpbC5sZW5ndGgo
KSkKKyAgICAgICAgb3V0LnByaW50KCIgKCIsIG1fZGV0YWlsLCAiKSIpOworfQorCitKU1ZhbHVl
IEV2ZW50Ojp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBKU09iamVjdCogcmVz
dWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgCisgICAgcmVzdWx0LT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRpbWUsIGpzTnVtYmVyKG1f
dGltZSkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5ieXRlY29kZXNJRCwganNOdW1iZXIobV9ieXRlY29kZXMtPmlkKCkpKTsKKyAgICBp
ZiAobV9jb21waWxhdGlvbikKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbXBpbGF0aW9uVUlELCBtX2NvbXBpbGF0aW9uLT51aWQo
KS50b0pTKGV4ZWMpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuc3VtbWFyeSwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpmcm9tVVRGOCht
X3N1bW1hcnkpKSk7CisgICAgaWYgKG1fZGV0YWlsLmxlbmd0aCgpKQorICAgICAgICByZXN1bHQt
PnB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGV0YWlsLCBqc1N0
cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4KG1fZGV0YWlsKSkpOworICAgIAorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQcm9maWxlcgorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckV2ZW50LmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQcm9maWxlckV2ZW50X2gKKyNkZWZpbmUg
UHJvZmlsZXJFdmVudF9oCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKKworY2xhc3MgQnl0ZWNvZGVzOworY2xhc3Mg
Q29tcGlsYXRpb247CisKK2NsYXNzIEV2ZW50IHsKK3B1YmxpYzoKKyAgICBFdmVudCgpCisgICAg
eworICAgIH0KKyAgICAKKyAgICBFdmVudChkb3VibGUgdGltZSwgQnl0ZWNvZGVzKiBieXRlY29k
ZXMsIENvbXBpbGF0aW9uKiBjb21waWxhdGlvbiwgY29uc3QgY2hhciogc3VtbWFyeSwgY29uc3Qg
Q1N0cmluZyYgZGV0YWlsKQorICAgICAgICA6IG1fdGltZSh0aW1lKQorICAgICAgICAsIG1fYnl0
ZWNvZGVzKGJ5dGVjb2RlcykKKyAgICAgICAgLCBtX2NvbXBpbGF0aW9uKGNvbXBpbGF0aW9uKQor
ICAgICAgICAsIG1fc3VtbWFyeShzdW1tYXJ5KQorICAgICAgICAsIG1fZGV0YWlsKGRldGFpbCkK
KyAgICB7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYnl0ZWNvZGVzOworICAgIH0KKyAgICAKKyAgICBkb3Vi
bGUgdGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZTsgfQorICAgIEJ5dGVjb2RlcyogYnl0ZWNv
ZGVzKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZXM7IH0KKyAgICBDb21waWxhdGlvbiogY29t
cGlsYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbXBpbGF0aW9uOyB9CisgICAgY29uc3QgY2hh
ciogc3VtbWFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VtbWFyeTsgfQorICAgIGNvbnN0IENTdHJp
bmcmIGRldGFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV0YWlsOyB9CisgICAgCisgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNv
bnN0OworICAgIAorcHJpdmF0ZToKKyAgICBkb3VibGUgbV90aW1lIHsgMCB9OworICAgIEJ5dGVj
b2RlcyogbV9ieXRlY29kZXMgeyBudWxscHRyIH07CisgICAgQ29tcGlsYXRpb24qIG1fY29tcGls
YXRpb24geyBudWxscHRyIH07CisgICAgY29uc3QgY2hhciogbV9zdW1tYXJ5IHsgbnVsbHB0ciB9
OworICAgIENTdHJpbmcgbV9kZXRhaWw7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UHJv
ZmlsZXIKKworI2VuZGlmIC8vIFByb2ZpbGVyRXZlbnRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclVJRC5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByb2ZpbGVyVUlELmgi
CisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxlciB7CisKK1VJRCBVSUQ6OmNyZWF0ZSgpCit7
CisgICAgc3RhdGljIFN0YXRpY0xvY2sgbG9jazsKKyAgICBzdGF0aWMgdWludDY0X3QgY291bnRl
cjsKKyAgICAKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICBVSUQgcmVzdWx0Owor
ICAgIHJlc3VsdC5tX3VpZCA9ICsrY291bnRlcjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2
b2lkIFVJRDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCht
X3VpZCk7Cit9CisKK0pTVmFsdWUgVUlEOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sK
KyAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgdG9TdHJpbmcoKnRoaXMpKTsKK30KKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OlByb2ZpbGVyCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlclVJRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlclVJRC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBQcm9maWxlclVJRF9oCisjZGVmaW5lIFByb2ZpbGVyVUlEX2gKKworI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKKworY2xh
c3MgVUlEIHsKK3B1YmxpYzoKKyAgICBVSUQoKQorICAgICAgICA6IG1fdWlkKDApCisgICAgewor
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgVUlEIGZyb21JbnQodWludDY0X3QgdmFsdWUpCisgICAg
eworICAgICAgICBVSUQgcmVzdWx0OworICAgICAgICByZXN1bHQubV91aWQgPSB2YWx1ZTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgVUlEKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBtX3VpZChzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQ2NF90Pjo6bWF4KCkpCisgICAgeworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgVUlEIGNyZWF0
ZSgpOworICAgIAorICAgIHVpbnQ2NF90IHRvSW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX3VpZDsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVJRCYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV91aWQgPT0gb3RoZXIubV91aWQ7
CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVSUQmIG90aGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKyAgICAK
KyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biAqdGhpcyAhPSBVSUQoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKnRoaXMgIT0gVUlEKFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaGFzaCgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSW50SGFzaDx1aW50NjRfdD46Omhhc2gobV91
aWQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAg
ICBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIHVp
bnQ2NF90IG1fdWlkOworfTsKKworc3RydWN0IFVJREhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IFVJRCYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgVUlEJiBhLCBjb25zdCBVSUQmIGIpIHsgcmV0dXJuIGEgPT0gYjsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
dHJ1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQcm9maWxlcgorCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxh
dGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpQcm9maWxlcjo6VUlEPiB7CisgICAgdHlwZWRl
ZiBKU0M6OlByb2ZpbGVyOjpVSURIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpQ
cm9maWxlcjo6VUlEPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OlByb2ZpbGVyOjpVSUQ+
IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBQcm9maWxlclVJRF9oCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBA
CiAgICAgbWFjcm8oY29sbGF0aW9uKSBcCiAgICAgbWFjcm8oY29sdW1uKSBcCiAgICAgbWFjcm8o
Y29tcGlsYXRpb25LaW5kKSBcCisgICAgbWFjcm8oY29tcGlsYXRpb25VSUQpIFwKICAgICBtYWNy
byhjb21waWxhdGlvbnMpIFwKICAgICBtYWNybyhjb21waWxlKSBcCiAgICAgbWFjcm8oY29uZmln
dXJhYmxlKSBcCkBAIC0xMzYsMTIgKzEzNywxNCBAQAogICAgIG1hY3JvKGRlZmluZVByb3BlcnR5
KSBcCiAgICAgbWFjcm8oZGVzY3JpcHRpb24pIFwKICAgICBtYWNybyhkZXNjcmlwdGlvbnMpIFwK
KyAgICBtYWNybyhkZXRhaWwpIFwKICAgICBtYWNybyhkaXNwbGF5TmFtZSkgXAogICAgIG1hY3Jv
KGRvY3VtZW50KSBcCiAgICAgbWFjcm8oZG9uZSkgXAogICAgIG1hY3JvKGVudW1lcmFibGUpIFwK
ICAgICBtYWNybyhlcmEpIFwKICAgICBtYWNybyhldmFsKSBcCisgICAgbWFjcm8oZXZlbnRzKSBc
CiAgICAgbWFjcm8oZXhlYykgXAogICAgIG1hY3JvKGV4ZWN1dGlvbkNvdW50KSBcCiAgICAgbWFj
cm8oZXhpdEtpbmQpIFwKQEAgLTIyNyw5ICsyMzAsMTEgQEAKICAgICBtYWNybyhzdGFjaykgXAog
ICAgIG1hY3JvKHN0aWNreSkgXAogICAgIG1hY3JvKHN1YmFycmF5KSBcCisgICAgbWFjcm8oc3Vt
bWFyeSkgXAogICAgIG1hY3JvKHRhcmdldCkgXAogICAgIG1hY3JvKHRlc3QpIFwKICAgICBtYWNy
byh0aGVuKSBcCisgICAgbWFjcm8odGltZSkgXAogICAgIG1hY3JvKHRpbWVab25lKSBcCiAgICAg
bWFjcm8odGltZVpvbmVOYW1lKSBcCiAgICAgbWFjcm8odG9FeHBvbmVudGlhbCkgXApAQCAtMjQw
LDYgKzI0NSw3IEBACiAgICAgbWFjcm8odG9QcmVjaXNpb24pIFwKICAgICBtYWNybyh0b1N0cmlu
ZykgXAogICAgIG1hY3JvKHRvcCkgXAorICAgIG1hY3JvKHVpZCkgXAogICAgIG1hY3JvKHVuaWNv
ZGUpIFwKICAgICBtYWNybyh1c2FnZSkgXAogICAgIG1hY3JvKHZhbHVlKSBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjAw
NjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNs
dWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCisjaW5j
bHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVkZSAiV0FTTUZ1bmN0aW9uUGFyc2VyLmgiCiAjaW5j
bHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE3
Niw2ICsxNzcsOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2CiB7
CiAgICAgQVNTRVJUKHZtLmhlYXAuaXNEZWZlcnJlZCgpKTsKICAgICAKKyAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGdlbmVyaWNDb2RlQmxvY2ssICJpbnN0YWxsQ29kZSIsICgpKTsKKyAgICAKICAg
ICBDb2RlQmxvY2sqIG9sZENvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgCiAgICAgc3dpdGNoIChj
b2RlVHlwZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAy
MDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MTIsNiArNjEyLDkgQEAgcHVibGljOgogICAgIEJ5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkmIGJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKSB7IHJldHVybiAqbV9ieXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5OyB9CiAgICAgCiAgICAgU2hhZG93Q2hpY2tlbiYgc2hhZG93Q2hpY2tl
bigpIHsgcmV0dXJuICptX3NoYWRvd0NoaWNrZW47IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgorICAgIHZvaWQgbG9nRXZlbnQoQ29kZUJsb2NrKiwgY29uc3QgY2hhciogc3Vt
bWFyeSwgY29uc3QgRnVuYyYgZnVuYyk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNSW5saW5lcy5oCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVm
IFZNSW5saW5lc19oCiAjZGVmaW5lIFZNSW5saW5lc19oCiAKKyNpbmNsdWRlICJQcm9maWxlckRh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXRjaGRvZy5oIgogCkBAIC0z
OCw2ICszOSwxNSBAQCBib29sIFZNOjpzaG91bGRUcmlnZ2VyVGVybWluYXRpb24oRXhlY1N0CiAg
ICAgcmV0dXJuIHdhdGNoZG9nKCktPnNob3VsZFRlcm1pbmF0ZShleGVjKTsKIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4KK3ZvaWQgVk06OmxvZ0V2ZW50KENvZGVCbG9jayogY29kZUJsb2Nr
LCBjb25zdCBjaGFyKiBzdW1tYXJ5LCBjb25zdCBGdW5jJiBmdW5jKQoreworICAgIGlmIChMSUtF
TFkoIW1fcGVyQnl0ZWNvZGVQcm9maWxlcikpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBt
X3BlckJ5dGVjb2RlUHJvZmlsZXItPmxvZ0V2ZW50KGNvZGVCbG9jaywgc3VtbWFyeSwgZnVuYygp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBMTEludERhdGFfaAo=
</data>
<flag name="review"
          id="302629"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278537</attachid>
            <date>2016-05-10 15:21:00 -0700</date>
            <delta_ts>2016-05-10 15:40:41 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>57669</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwNjQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMiBA
QAorMjAxNi0wNS0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEludGVybmFsIEpTQyBwcm9maWxlciBzaG91bGQgaGF2ZSBhIHRpbWVzdGFtcGVkIGxvZyBvZiBl
dmVudHMgZm9yIGVhY2ggY29kZSBibG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4g
UG91bGFpbi4KKyAgICAgICAgCisgICAgICAgIEZvciBleGFtcGxlLCBpbiAzZC1jdWJlLCBJIGFu
IHF1ZXJ5IHRoZSBldmVudHMgZm9yIE1NdWx0aSBhbmQgSSBnZXQ6CisKKyAgICAgICAgMTQ2Mjkx
NzQ3Ni4xNzA4MyAgTU11bHRpI0RUWjdxYyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFs
bENvZGUgICAgICAgIAorICAgICAgICAxNDYyOTE3NDc2LjE3OTY2MyBNTXVsdGkjRFRaN3FjIE1N
dWx0aSNEVFo3cWMtMS1CYXNlbGluZSBpbnN0YWxsQ29kZSAgICAgICAgCisgICAgICAgIDE0NjI5
MTc0NzYuMTc5NjY0IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0xLUJhc2VsaW5lIG9zckVu
dHJ5ICAgICAgICAgICBhdCBiYyM0OQorICAgICAgICAxNDYyOTE3NDc2LjE4NTY1MSBNTXVsdGkj
RFRaN3FjIE1NdWx0aSNEVFo3cWMtMS1CYXNlbGluZSBkZWxheU9wdGltaXplVG9ERkcgY291bnRl
ciA9IDEwMTEuMjE0MjMzLzE3MTcuMDAwMDAwLCAtNzA3CisgICAgICAgIDE0NjI5MTc0NzYuMTg3
OTEzIE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0yLURGRyAgICAgIGluc3RhbGxDb2RlICAg
ICAgICAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4xODc5MTcgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRa
N3FjLTItREZHICAgICAgb3NyRW50cnkgICAgICAgICAgIGF0IGJjIzQ5CisgICAgICAgIDE0NjI5
MTc0NzYuMjA1MzY1IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0yLURGRyAgICAgIGpldHRp
c29uICAgICAgICAgICBkdWUgdG8gT1NSRXhpdCwgY291bnRpbmcgPSB0cnVlLCBkZXRhaWwgPSAo
bnVsbCkKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMDUzNjggTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRa
N3FjLTEtQmFzZWxpbmUgZnJlcXVlbnRFeGl0ICAgICAgIGJjIzY1OiBCYWRDYWNoZS9Gcm9tREZH
CisgICAgICAgIDE0NjI5MTc0NzYuMjA1MzY5IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0x
LUJhc2VsaW5lIGluc3RhbGxDb2RlICAgICAgICAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMDU0ODIg
TU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlPcHRpbWl6ZVRvREZH
IGNvdW50ZXIgPSAxMDEzLjAwMDAwMC8zNDM0LjAwMDAwMCwgLTEwMDAKKyAgICAgICAgMTQ2Mjkx
NzQ3Ni4yMTE1NDcgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlP
cHRpbWl6ZVRvREZHIGNvdW50ZXIgPSAyMDEzLjAwMDAwMC8zNDM0LjAwMDAwMCwgLTEwMDAKKyAg
ICAgICAgMTQ2MjkxNzQ3Ni4yMTM3MjEgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTMtREZH
ICAgICAgaW5zdGFsbENvZGUgICAgICAgIAorICAgICAgICAxNDYyOTE3NDc2LjIxMzcyNiBNTXVs
dGkjRFRaN3FjIE1NdWx0aSNEVFo3cWMtMy1ERkcgICAgICBvc3JFbnRyeSAgICAgICAgICAgYXQg
YmMjNDkKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjM5NzYgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRa
N3FjLTMtREZHICAgICAgamV0dGlzb24gICAgICAgICAgIGR1ZSB0byBPU1JFeGl0LCBjb3VudGlu
ZyA9IHRydWUsIGRldGFpbCA9IChudWxsKQorICAgICAgICAxNDYyOTE3NDc2LjIyMzk4MSBNTXVs
dGkjRFRaN3FjIE1NdWx0aSNEVFo3cWMtMS1CYXNlbGluZSBmcmVxdWVudEV4aXQgICAgICAgYmMj
Nzc6IEJhZENhY2hlL0Zyb21ERkcKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjM5ODIgTU11bHRpI0RU
WjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZnJlcXVlbnRFeGl0ICAgICAgIGJjIzk0OiBC
YWRDYWNoZS9Gcm9tREZHCisgICAgICAgIDE0NjI5MTc0NzYuMjIzOTgyIE1NdWx0aSNEVFo3cWMg
TU11bHRpI0RUWjdxYy0xLUJhc2VsaW5lIGluc3RhbGxDb2RlICAgICAgICAKKyAgICAgICAgMTQ2
MjkxNzQ3Ni4yMjQwNjQgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVs
YXlPcHRpbWl6ZVRvREZHIGNvdW50ZXIgPSAxMDEzLjAwMDAwMC82ODY4LjAwMDAwMCwgLTEwMDAK
KyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjQxNTEgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEt
QmFzZWxpbmUgZGVsYXlPcHRpbWl6ZVRvREZHIGNvdW50ZXIgPSAyMDEzLjAwMDAwMC82ODY4LjAw
MDAwMCwgLTEwMDAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjQyNTggTU11bHRpI0RUWjdxYyBNTXVs
dGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlPcHRpbWl6ZVRvREZHIGNvdW50ZXIgPSAzMDEzLjAw
MDAwMC82ODY4LjAwMDAwMCwgLTEwMDAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjQzMzcgTU11bHRp
I0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlPcHRpbWl6ZVRvREZHIGNvdW50
ZXIgPSA0MDIzLjAwMDAwMC82ODY4LjAwMDAwMCwgLTEwMDAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4y
MjQ0MjUgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlPcHRpbWl6
ZVRvREZHIGNvdW50ZXIgPSA1MDIzLjAwMDAwMC82ODY4LjAwMDAwMCwgLTEwMDAKKyAgICAgICAg
MTQ2MjkxNzQ3Ni4yMjQ3ODUgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUg
ZGVsYXlPcHRpbWl6ZVRvREZHIGNvdW50ZXIgPSA2MDIzLjM5NjQ4NC82ODY4LjAwMDAwMCwgLTg2
MgorICAgICAgICAxNDYyOTE3NDc2LjIyNzY2OSBNTXVsdGkjRFRaN3FjIE1NdWx0aSNEVFo3cWMt
NC1ERkcgICAgICBpbnN0YWxsQ29kZSAgICAgICAgCisgICAgICAgIDE0NjI5MTc0NzYuMjI3Njc1
IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy00LURGRyAgICAgIG9zckVudHJ5ICAgICAgICAg
ICBhdCBiYyMwCisgICAgICAgIAorICAgICAgICBUaGUgb3V0cHV0IGlzIHVnbHkgYnV0IHVzZWZ1
bC4gV2UgY2FuIG1ha2UgaXQgbGVzcyB1Z2x5IGxhdGVyLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAg
ICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6Zm9yRWFjaENvZGVCbG9jayk6CisgICAgICAgICog
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkV4aXRQcm9m
aWxlOjphZGQpOgorICAgICAgICAqIGRmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVDb21tb24pOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMSklURmluYWxpemVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24pOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q29tcGlsZUFuZFNldEhldXJpc3Rp
Y3MpOgorICAgICAgICAoSlNDOjpMTEludDo6ZW50cnlPU1IpOgorICAgICAgICAoSlNDOjpMTElu
dDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29t
cGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Q29tcGlsYXRpb246OkNvbXBp
bGF0aW9uKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkNvbXBpbGF0aW9uOjpzZXRKZXR0aXNv
blJlYXNvbik6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpDb21waWxhdGlvbjo6ZHVtcCk6Cisg
ICAgICAgIChKU0M6OlByb2ZpbGVyOjpDb21waWxhdGlvbjo6dG9KUyk6CisgICAgICAgICogcHJv
ZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Q29t
cGlsYXRpb246OnVpZCk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHA6
CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKToK
KyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkRhdGFiYXNlOjpub3RpZnlEZXN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFzZTo6YWRkQ29tcGlsYXRpb24pOgorICAgICAg
ICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OnRvSlMpOgorICAgICAgICAoSlNDOjpQcm9maWxl
cjo6RGF0YWJhc2U6OnJlZ2lzdGVyVG9TYXZlQXRFeGl0KToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkRhdGFiYXNlOjpsb2dFdmVudCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFz
ZTo6YWRkRGF0YWJhc2VUb0F0RXhpdCk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJEYXRh
YmFzZS5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6UHJvZmlsZXI6OkV2ZW50OjpkdW1wKToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkV2ZW50Ojp0b0pTKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckV2ZW50Lmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RXZlbnQ6OkV2ZW50KToKKyAgICAgICAgKEpT
Qzo6UHJvZmlsZXI6OkV2ZW50OjpvcGVyYXRvciBib29sKToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkV2ZW50Ojp0aW1lKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkV2ZW50OjpieXRlY29k
ZXMpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RXZlbnQ6OmNvbXBpbGF0aW9uKToKKyAgICAg
ICAgKEpTQzo6UHJvZmlsZXI6OkV2ZW50OjpzdW1tYXJ5KToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkV2ZW50OjpkZXRhaWwpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpVSUQ6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlByb2ZpbGVyOjpVSUQ6OmR1bXApOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjp0
b0pTKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlclVJRC5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6UHJvZmlsZXI6OlVJRDo6VUlEKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OlVJRDo6
ZnJvbUludCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpVSUQ6OnRvSW50KToKKyAgICAgICAg
KEpTQzo6UHJvZmlsZXI6OlVJRDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVy
OjpVSUQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjpvcGVyYXRv
ciBib29sKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OlVJRDo6aXNIYXNoVGFibGVEZWxldGVk
VmFsdWUpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6UHJvZmlsZXI6OlVJREhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlE
SGFzaDo6ZXF1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVj
dXRhYmxlOjppbnN0YWxsQ29kZSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAo
SlNDOjpWTTo6Ynl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk6CisgICAgICAgIChKU0M6OlZNOjpz
aGFkb3dDaGlja2VuKToKKyAgICAgICAgKiBydW50aW1lL1ZNSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpWTTo6c2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06Omxv
Z0V2ZW50KToKKwogMjAxNi0wNS0xMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBbSlNDXSBGVEwgY2FuIHByb2R1Y2UgR2V0QnlWYWwgbm9kZXMgd2l0
aG91dCBwcm9wZXIgYm91bmRzIGNoZWNraW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTU5NywxMiArNTk3LDE0IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQu
Y3BwCiAgICAgcHJvZmlsZXIvUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmNwcAogICAgIHByb2Zp
bGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCisgICAgcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHAK
ICAgICBwcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmNwcAogICAgIHByb2ZpbGVyL1By
b2ZpbGVyT1NSRXhpdC5jcHAKICAgICBwcm9maWxlci9Qcm9maWxlck9TUkV4aXRTaXRlLmNwcAog
ICAgIHByb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmNwcAogICAgIHByb2ZpbGVyL1Byb2ZpbGVyT3Jp
Z2luU3RhY2suY3BwCiAgICAgcHJvZmlsZXIvUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAK
KyAgICBwcm9maWxlci9Qcm9maWxlclVJRC5jcHAKIAogICAgIHJ1bnRpbWUvQXJnTGlzdC5jcHAK
ICAgICBydW50aW1lL0FycmF5QnVmZmVyLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTky
LDYgKzE5OTIsMTAgQEAKIAkJREMxN0U4MUExQzlDOTFFOTAwOEE2QUIzIC8qIENDYWxsSGVscGVy
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzE3
RTgxNjFDOUM4MDJCMDA4QTZBQjMgLyogQ0NhbGxIZWxwZXJzLmNwcCAqLzsgfTsKIAkJREMyMTQz
MDcxQ0EzMkU1NTAwMEE4ODY5IC8qIElDU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRz
LmggKi87IH07CiAJCURDMjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJF
NTIwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAqLzsgfTsKKwkJREM2MDVCNUQxQ0UyNkVBMDAwNTkz
NzE4IC8qIFByb2ZpbGVyRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gREM2MDVCNTkxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQu
Y3BwICovOyB9OworCQlEQzYwNUI1RTFDRTI2RUEyMDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM2MDVCNUEx
Q0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCAqLzsgfTsKKwkJREM2MDVCNUYxQ0Uy
NkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxl
clVJRC5jcHAgKi87IH07CisJCURDNjA1QjYwMUNFMjZFQTcwMDU5MzcxOCAvKiBQcm9maWxlclVJ
RC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM2MDVC
NUMxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmggKi87IH07CiAJCURDNzk5NzgzMUNE
RTlGQTAwMDRENEEwOSAvKiBUYWdSZWdpc3RlcnNNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzc5OTc4MjFDREU5RjlFMDA0RDRBMDkgLyogVGFn
UmVnaXN0ZXJzTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCURDNzk5Nzg0MUNERTlGQTIwMDRENEEwOSAvKiBUYWdSZWdpc3RlcnNNb2RlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNzk5Nzgx
MUNERTlGOUUwMDRENEEwOSAvKiBUYWdSZWdpc3RlcnNNb2RlLmNwcCAqLzsgfTsKIAkJRENGM0Q1
NjkxQ0QyOTQ2RDAwM0Q1QzY1IC8qIExhenlDbGFzc1N0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0YzRDU2NDFDRDI5NDY4MDAzRDVD
NjUgLyogTGF6eUNsYXNzU3RydWN0dXJlLmNwcCAqLzsgfTsKQEAgLTQyMDYsNiArNDIxMCwxMCBA
QAogCQlEQzE3RTgxNjFDOUM4MDJCMDA4QTZBQjMgLyogQ0NhbGxIZWxwZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENDYWxsSGVscGVycy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElDU3RhdHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzIxNDMwNjFDQTMyRTUyMDAwQTg4NjkgLyog
SUNTdGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQ
cm9maWxlckV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBy
b2ZpbGVyRXZlbnQuY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9m
aWxlckV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyRXZl
bnQuaDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJREM2MDVCNUIxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyVUlELmNwcDsgcGF0
aCA9IHByb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJREM2MDVCNUMxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyVUlELmg7IHBhdGggPSBwcm9maWxlci9Qcm9m
aWxlclVJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzc5OTc4MTFDREU5RjlF
MDA0RDRBMDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUYWdSZWdpc3RlcnNNb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJREM3OTk3ODIxQ0RFOUY5RTAwNEQ0QTA5IC8qIFRhZ1JlZ2lzdGVyc01vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFnUmVnaXN0ZXJzTW9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQ0YzRDU2NDFDRDI5NDY4MDAzRDVDNjUgLyogTGF6
eUNsYXNzU3RydWN0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExhenlDbGFzc1N0cnVjdHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
NDQ1LDYgKzY0NTMsOCBAQAogCQkJCTBGRjcyOTlCMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxl
ckNvbXBpbGVkQnl0ZWNvZGUuaCAqLywKIAkJCQkwRkY3Mjk5QzE2NkFEMzQ3MDAwRjVCQTMgLyog
UHJvZmlsZXJEYXRhYmFzZS5jcHAgKi8sCiAJCQkJMEZGNzI5OUQxNjZBRDM0NzAwMEY1QkEzIC8q
IFByb2ZpbGVyRGF0YWJhc2UuaCAqLywKKwkJCQlEQzYwNUI1OTFDRTI2RTk4MDA1OTM3MTggLyog
UHJvZmlsZXJFdmVudC5jcHAgKi8sCisJCQkJREM2MDVCNUExQ0UyNkU5ODAwNTkzNzE4IC8qIFBy
b2ZpbGVyRXZlbnQuaCAqLywKIAkJCQkwRkY3Mjk5RTE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmls
ZXJFeGVjdXRpb25Db3VudGVyLmggKi8sCiAJCQkJMEYxOTBDQUExODlEODJGNjAwMEFFNUYwIC8q
IFByb2ZpbGVySmV0dGlzb25SZWFzb24uY3BwICovLAogCQkJCTBGMTkwQ0FCMTg5RDgyRjYwMDBB
RTVGMCAvKiBQcm9maWxlckpldHRpc29uUmVhc29uLmggKi8sCkBAIC02NDU4LDYgKzY0NjgsOCBA
QAogCQkJCTBGQjEwNThBMTY3NTQ4MkUwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXRTaXRlLmgg
Ki8sCiAJCQkJMEYxMzkxMjYxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRl
Y29kZXMuY3BwICovLAogCQkJCTBGMTM5MTI3MTY3NzFDMzAwMDlDQ0IwNyAvKiBQcm9maWxlclBy
b2ZpbGVkQnl0ZWNvZGVzLmggKi8sCisJCQkJREM2MDVCNUIxQ0UyNkU5ODAwNTkzNzE4IC8qIFBy
b2ZpbGVyVUlELmNwcCAqLywKKwkJCQlEQzYwNUI1QzFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmls
ZXJVSUQuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gcHJvZmlsZXI7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtNzc1Nyw2ICs3NzY5LDcgQEAKIAkJCQk3MEI3OTE5QzFDMDI0QTQ5MDAy
NDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
MkEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2
RkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJREM2MDVCNjAxQ0UyNkVBNzAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJCNjZGRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5
UHJvdG90eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkYxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTVHlwZWRBcnJheXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNEM0NTdDMUJDNzI0MTEw
MDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApA
QCAtNzc3Miw2ICs3Nzg1LDcgQEAKIAkJCQk4NkUzQzYxNTE2N0JBQkQ3MDA2RDc2MEEgLyogSlNW
aXJ0dWFsTWFjaGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2MUQxNjdCQUJFRTAwNkQ3
NjBBIC8qIEpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0I5
OEQxMzcxQjYwQ0Q2MjAwMjNCMUE0IC8qIEpTV0FTTU1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3NDgyRTkzMTE2QTdDQUQwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBS
ZWZJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODJCOTMxMTY3MTE0NzAwM0IwNzEy
IC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTIwOCw2
ICs5MjIyLDcgQEAKIAkJCQlBNzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyQjkxNkM1MTREQTA0MEMwMENCQUM4NiAvKiBNYXJr
ZWRBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyRDZGMDgxMzUzOUEyODAwQjAy
RTg2IC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURDNjA1QjVEMUNFMjZF
QTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RDJG
M0RBMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDJENkYxMTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTcwQjc5MTk4MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC05MzQ0LDYgKzkzNTksNyBAQAogCQkJCTcwNUI0MUFGMUE2RTUw
MUUwMDcxNjc1NyAvKiBTeW1ib2xPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzA1QjQx
QjExQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJREM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTcwRUNBNjA3MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJl
Z2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIzMiAv
KiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZBMkMxN0IxN0Q3Q0Y4
NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAy
MDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbkNh
Y2hlLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRJbnN0
cnVjdGlvblN0cmVhbS5oIgorI2luY2x1ZGUgIlZNSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9C
YWdUb0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8
d3RmL1N0cmluZ0V4dHJhcy5oPgpAQCAtMzMxMCw2ICszMzExLDggQEAgdm9pZCBDb2RlQmxvY2s6
OmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aQogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICAgICBV
TlVTRURfUEFSQU0oZGV0YWlsKTsKICNlbmRpZgorICAgIAorICAgIENPREVCTE9DS19MT0dfRVZF
TlQodGhpcywgImpldHRpc29uIiwgKCJkdWUgdG8gIiwgcmVhc29uLCAiLCBjb3VudGluZyA9ICIs
IG1vZGUgPT0gQ291bnRSZW9wdGltaXphdGlvbiwgIiwgZGV0YWlsID0gIiwgcG9pbnRlckR1bXAo
ZGV0YWlsKSkpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQocmVhc29uICE9IFByb2ZpbGVyOjpOb3RK
ZXR0aXNvbmVkKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgJKHJldmlzaW9uIDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTQwNCw2ICsxNDA0LDkgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIAogICAgIH0KIH0KIAorI2Rl
ZmluZSBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgc3VtbWFyeSwgZGV0YWlscykgXAor
ICAgIChjb2RlQmxvY2stPnZtKCktPmxvZ0V2ZW50KGNvZGVCbG9jaywgc3VtbWFyeSwgWyZdICgp
IHsgcmV0dXJuIHRvQ1N0cmluZyBkZXRhaWxzOyB9KSkKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBDb2RlQmxvY2tfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RGR0V4aXRQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKyNpbmNsdWRlICJWTUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCkBAIC00NCw2ICs0NSw4IEBAIGJvb2wgRXhpdFByb2ZpbGU6OmFkZChj
b25zdCBDb25jdXJyZW50SkkKIHsKICAgICBBU1NFUlQoc2l0ZS5qaXRUeXBlKCkgIT0gRXhpdEZy
b21Bbnl0aGluZyk7CiAKKyAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKG93bmVyLCAiZnJlcXVlbnRF
eGl0IiwgKHNpdGUpKTsKKyAgICAKICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUV4aXRQcm9maWxl
KCkpCiAgICAgICAgIGRhdGFMb2cocG9pbnRlckR1bXAob3duZXIpLCAiOiBBZGRpbmcgZXhpdCBz
aXRlOiAiLCBzaXRlLCAiXG4iKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDIwMDYyMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTEsNyArOTEsNyBAQCB2b2lkIEpJVEZpbmFsaXplcjo6ZmluYWxpemVDb21tb24oKQogI2VuZGlm
IC8vIEVOQUJMRShGVExfSklUKQogICAgIAogICAgIGlmIChtX3BsYW4uY29tcGlsYXRpb24pCi0g
ICAgICAgIG1fcGxhbi52bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPmFkZENvbXBpbGF0aW9uKG1f
cGxhbi5jb21waWxhdGlvbik7CisgICAgICAgIG1fcGxhbi52bS5tX3BlckJ5dGVjb2RlUHJvZmls
ZXItPmFkZENvbXBpbGF0aW9uKG1fcGxhbi5jb2RlQmxvY2ssIG1fcGxhbi5jb21waWxhdGlvbik7
CiAgICAgCiAgICAgaWYgKCFtX3BsYW4ud2lsbFRyeVRvVGllclVwKQogICAgICAgICBtX3BsYW4u
Y29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKS0+bV9kaWRGYWlsRlRMQ29tcGlsYXRpb24gPSB0
cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBACiAjaW5jbHVkZSAiU3lt
Ym9sLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJh
eUlubGluZXMuaCIKLSNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgIlZNSW5saW5lcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAogI2lmIEVOQUJMRShKSVQpCkBAIC0xNzY1LDYgKzE3
NjUsNyBAQCBleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyUmVvCiBzdGF0aWMg
Ym9vbCBzaG91bGRUcmlnZ2VyRlRMQ29tcGlsZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29k
ZSogaml0Q29kZSkKIHsKICAgICBpZiAoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKS0+bV9k
aWRGYWlsRlRMQ29tcGlsYXRpb24pIHsKKyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2Rl
QmxvY2ssICJhYm9ydEZUTENvbXBpbGUiLCAoKSk7CiAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJi
b3NlT1NSKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJEZWZlcnJpbmcgRlRMLW9wdGltaXphdGlv
biBvZiAiLCAqY29kZUJsb2NrLCAiIGluZGVmaW5pdGVseSBiZWNhdXNlIHRoZXJlIHdhcyBhbiBG
VEwgZmFpbHVyZS5cbiIpOwogICAgICAgICBqaXRDb2RlLT5kb250T3B0aW1pemVBbnl0aW1lU29v
bihjb2RlQmxvY2spOwpAQCAtMTc3Myw2ICsxNzc0LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVHJp
Z2dlckZUTENvbXBpbGUoQ29kZQogCiAgICAgaWYgKCFjb2RlQmxvY2stPmhhc09wdGltaXplZFJl
cGxhY2VtZW50KCkKICAgICAgICAgJiYgIWppdENvZGUtPmNoZWNrSWZPcHRpbWl6YXRpb25UaHJl
c2hvbGRSZWFjaGVkKGNvZGVCbG9jaykpIHsKKyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChj
b2RlQmxvY2ssICJkZWxheUZUTENvbXBpbGUiLCAoImNvdW50ZXIgPSAiLCBqaXRDb2RlLT50aWVy
VXBDb3VudGVyKSk7CiAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAg
ICAgICBkYXRhTG9nKCJDaG9vc2luZyBub3QgdG8gRlRMLW9wdGltaXplICIsICpjb2RlQmxvY2ss
ICIgeWV0LlxuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3OTAsMTIgKzE3OTIsMTQg
QEAgc3RhdGljIHZvaWQgdHJpZ2dlckZUTFJlcGxhY2VtZW50Q29tcGlsZQogICAgICAgICB3b3Jr
bGlzdFN0YXRlID0gV29ya2xpc3Q6Ok5vdEtub3duOwogICAgIAogICAgIGlmICh3b3JrbGlzdFN0
YXRlID09IFdvcmtsaXN0OjpDb21waWxpbmcpIHsKKyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVO
VChjb2RlQmxvY2ssICJkZWxheUZUTENvbXBpbGUiLCAoInN0aWxsIGNvbXBpbGluZyIpKTsKICAg
ICAgICAgaml0Q29kZS0+c2V0T3B0aW1pemF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9u
UmVzdWx0KAogICAgICAgICAgICAgY29kZUJsb2NrLCBDb21waWxhdGlvbkRlZmVycmVkKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBpZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6
ZWRSZXBsYWNlbWVudCgpKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2Nr
LCAiZGVsYXlGVExDb21waWxlIiwgKCJoYXMgcmVwbGFjZW1lbnQiKSk7CiAgICAgICAgIC8vIFRo
YXQncyBncmVhdCwgd2UndmUgY29tcGlsZWQgdGhlIGNvZGUgLSBuZXh0IHRpbWUgd2UgY2FsbCB0
aGlzIGZ1bmN0aW9uLAogICAgICAgICAvLyB3ZSdsbCBlbnRlciB0aGF0IHJlcGxhY2VtZW50Lgog
ICAgICAgICBqaXRDb2RlLT5vcHRpbWl6ZVNvb24oY29kZUJsb2NrKTsKQEAgLTE4MDMsNiArMTgw
Nyw3IEBAIHN0YXRpYyB2b2lkIHRyaWdnZXJGVExSZXBsYWNlbWVudENvbXBpbGUKICAgICB9CiAg
ICAgCiAgICAgaWYgKHdvcmtsaXN0U3RhdGUgPT0gV29ya2xpc3Q6OkNvbXBpbGVkKSB7CisgICAg
ICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJj
b21waWxlZCBhbmQgZmFpbGVkIikpOwogICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgd2UgZmlu
aXNoZWQgY29tcGlsaW5nLCBidXQgZmFpbGVkIHNvbWVob3c7IGluIHRoYXQgY2FzZSB0aGUKICAg
ICAgICAgLy8gdGhyZXNob2xkcyB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5LgogICAgICAgICBp
ZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQpAQCAtMTgxMCw2ICsxODE1LDcgQEAgc3RhdGljIHZv
aWQgdHJpZ2dlckZUTFJlcGxhY2VtZW50Q29tcGlsZQogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJ0cmlnZ2VyRlRMUmVwbGFjZW1l
bnQiLCAoKSk7CiAgICAgLy8gV2UgbmVlZCB0byBjb21waWxlIHRoZSBjb2RlLgogICAgIGNvbXBp
bGUoCiAgICAgICAgICp2bSwgY29kZUJsb2NrLT5uZXdSZXBsYWNlbWVudCgpLCBjb2RlQmxvY2ss
IEZUTE1vZGUsIFVJTlRfTUFYLApAQCAtMTg0NSwxMiArMTg1MSwxNCBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gdHJpZ2dlclRpZXJVcE5vdyhFeGVjCiAKICAgICBpZiAoY29kZUJsb2NrLT5oYXNPcHRp
bWl6ZWRSZXBsYWNlbWVudCgpKSB7CiAgICAgICAgIGlmIChqaXRDb2RlLT50aWVyVXBFbnRyeVRy
aWdnZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2Rl
QmxvY2ssICJkZWxheUZUTENvbXBpbGUiLCAoInJlcGxhY2VtZW50IGluIHBsYWNlLCBkZWxheWlu
ZyBpbmRlZmluaXRlbHkiKSk7CiAgICAgICAgICAgICAvLyBUaGVyZSBpcyBub3RoaW5nIG1vcmUg
d2UgY2FuIGRvLCB0aGUgb25seSB3YXkgdGhpcyB3aWxsIGJlIGVudGVyZWQKICAgICAgICAgICAg
IC8vIGlzIHRocm91Z2ggdGhlIGZ1bmN0aW9uIGVudHJ5IHBvaW50LgogICAgICAgICAgICAgaml0
Q29kZS0+ZG9udE9wdGltaXplQW55dGltZVNvb24oY29kZUJsb2NrKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoaml0Q29kZS0+b3NyRW50cnlCbG9jaygpICYm
IGppdENvZGUtPnRpZXJVcEVudHJ5VHJpZ2dlcnMuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgICAg
IENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJ0cmln
Z2VyIGluIHBsYWNlLCBkZWxheWluZyBpbmRlZmluaXRlbHkiKSk7CiAgICAgICAgICAgICAvLyBU
aGVyZSBpcyBvbmx5IG9uZSBvdXRlciBsb29wIGFuZCBpdHMgdHJpZ2dlciBtdXN0IGhhdmUgYmVl
biBzZXQKICAgICAgICAgICAgIC8vIHdoZW4gdGhlIHBsYW4gY29tcGxldGVkLgogICAgICAgICAg
ICAgLy8gRXhpdGluZyB0aGUgaW5uZXIgbG9vcCBpcyB1c2VsZXNzLCB3ZSBjYW4gaWdub3JlIHRo
ZSBjb3VudGVyIGFuZCBsZWF2ZQpAQCAtMTg3NiwxMiArMTg4NCwxNCBAQCBzdGF0aWMgY2hhciog
dGllclVwQ29tbW9uKEV4ZWNTdGF0ZSogZXhlCiAKICAgICBKSVRDb2RlKiBqaXRDb2RlID0gY29k
ZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpOwogICAgIGlmICh3b3JrbGlzdFN0YXRlID09IFdvcmts
aXN0OjpDb21waWxpbmcpIHsKKyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ss
ICJkZWxheUZUTENvbXBpbGUiLCAoInN0aWxsIGNvbXBpbGluZyIpKTsKICAgICAgICAgaml0Q29k
ZS0+c2V0T3B0aW1pemF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0KAogICAg
ICAgICAgICAgY29kZUJsb2NrLCBDb21waWxhdGlvbkRlZmVycmVkKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKHdvcmtsaXN0U3RhdGUgPT0gV29ya2xpc3Q6OkNv
bXBpbGVkKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlG
VExDb21waWxlIiwgKCJjb21waWxlZCBhbmQgZmFpbGVkIikpOwogICAgICAgICAvLyBUaGlzIG1l
YW5zIHRoYXQgY29tcGlsYXRpb24gZmFpbGVkIGFuZCB3ZSBhbHJlYWR5IHNldCB0aGUgdGhyZXNo
b2xkcy4KICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgIGRh
dGFMb2coIkNvZGUgYmxvY2sgIiwgKmNvZGVCbG9jaywgIiB3YXMgY29tcGlsZWQgYnV0IGl0IGRv
ZXNuJ3QgaGF2ZSBhbiBvcHRpbWl6ZWQgcmVwbGFjZW1lbnQuXG4iKTsKQEAgLTE4OTIsOCArMTkw
MiwxMCBAQCBzdGF0aWMgY2hhciogdGllclVwQ29tbW9uKEV4ZWNTdGF0ZSogZXhlCiAgICAgaWYg
KG9yaWdpbkJ5dGVjb2RlSW5kZXggPT0gb3NyRW50cnlCeXRlY29kZUluZGV4KSB7CiAgICAgICAg
IHVuc2lnbmVkIHN0cmVhbUluZGV4ID0gaml0Q29kZS0+Ynl0ZWNvZGVJbmRleFRvU3RyZWFtSW5k
ZXguZ2V0KG9yaWdpbkJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBpZiAoQ29kZUJsb2NrKiBlbnRy
eUJsb2NrID0gaml0Q29kZS0+b3NyRW50cnlCbG9jaygpKSB7Ci0gICAgICAgICAgICBpZiAodm9p
ZCogYWRkcmVzcyA9IEZUTDo6cHJlcGFyZU9TUkVudHJ5KGV4ZWMsIGNvZGVCbG9jaywgZW50cnlC
bG9jaywgb3JpZ2luQnl0ZWNvZGVJbmRleCwgc3RyZWFtSW5kZXgpKQorICAgICAgICAgICAgaWYg
KHZvaWQqIGFkZHJlc3MgPSBGVEw6OnByZXBhcmVPU1JFbnRyeShleGVjLCBjb2RlQmxvY2ssIGVu
dHJ5QmxvY2ssIG9yaWdpbkJ5dGVjb2RlSW5kZXgsIHN0cmVhbUluZGV4KSkgeworICAgICAgICAg
ICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoZW50cnlCbG9jaywgIm9zckVudHJ5IiwgKCJhdCBi
YyMiLCBvcmlnaW5CeXRlY29kZUluZGV4KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNoYXIqPihhZGRyZXNzKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
IApAQCAtMTkxMSwxNCArMTkyMywxNyBAQCBzdGF0aWMgY2hhciogdGllclVwQ29tbW9uKEV4ZWNT
dGF0ZSogZXhlCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBpZiAoaml0
Q29kZS0+b3NyRW50cnlSZXRyeSA8IE9wdGlvbnM6OmZ0bE9TUkVudHJ5UmV0cnlUaHJlc2hvbGQo
KSkgeworICAgICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheUZU
TENvbXBpbGUiLCAoImF2b2lkaW5nIE9TUiBlbnRyeSBjb21waWxlIikpOwogICAgICAgICAgICAg
aml0Q29kZS0+b3NyRW50cnlSZXRyeSsrOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQo
Y29kZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJhdm9pZGluZyByZXBsYWNlbWVudCBjb21w
aWxlIikpOwogCiAgICAgLy8gSXQncyB0aW1lIHRvIHRyeSB0byBjb21waWxlIGNvZGUgZm9yIE9T
UiBlbnRyeS4KICAgICBpZiAoQ29kZUJsb2NrKiBlbnRyeUJsb2NrID0gaml0Q29kZS0+b3NyRW50
cnlCbG9jaygpKSB7CiAgICAgICAgIGlmIChqaXRDb2RlLT5vc3JFbnRyeVJldHJ5IDwgT3B0aW9u
czo6ZnRsT1NSRW50cnlSZXRyeVRocmVzaG9sZCgpKSB7CisgICAgICAgICAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiT1NSIGVudHJ5IGZhaWxl
ZCwgT1NSIGVudHJ5IHRocmVzaG9sZCBub3QgbWV0IikpOwogICAgICAgICAgICAgaml0Q29kZS0+
b3NyRW50cnlSZXRyeSsrOwogICAgICAgICAgICAgaml0Q29kZS0+c2V0T3B0aW1pemF0aW9uVGhy
ZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0KAogICAgICAgICAgICAgICAgIGNvZGVCbG9j
aywgQ29tcGlsYXRpb25EZWZlcnJlZCk7CkBAIC0xOTI5LDYgKzE5NDQsNyBAQCBzdGF0aWMgY2hh
ciogdGllclVwQ29tbW9uKEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIGVudHJ5Q29kZS0+Y291bnRF
bnRyeUZhaWx1cmUoKTsKICAgICAgICAgaWYgKGVudHJ5Q29kZS0+ZW50cnlGYWlsdXJlQ291bnQo
KSA8CiAgICAgICAgICAgICBPcHRpb25zOjpmdGxPU1JFbnRyeUZhaWx1cmVDb3VudEZvclJlb3B0
aW1pemF0aW9uKCkpIHsKKyAgICAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2Nr
LCAiZGVsYXlGVExDb21waWxlIiwgKCJPU1IgZW50cnkgZmFpbGVkIikpOwogICAgICAgICAgICAg
aml0Q29kZS0+c2V0T3B0aW1pemF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0
KAogICAgICAgICAgICAgICAgIGNvZGVCbG9jaywgQ29tcGlsYXRpb25EZWZlcnJlZCk7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5MzYsNiArMTk1Miw3IEBAIHN0YXRpYyBjaGFy
KiB0aWVyVXBDb21tb24oRXhlY1N0YXRlKiBleGUKIAogICAgICAgICAvLyBPU1IgZW50cnkgZmFp
bGVkLiBPaCBubyEgVGhpcyBpbXBsaWVzIHRoYXQgd2UgbmVlZCB0byByZXRyeS4gV2UgcmV0cnkK
ICAgICAgICAgLy8gd2l0aG91dCBleHBvbmVudGlhbCBiYWNrb2ZmIGFuZCB3ZSBvbmx5IGRvIHRo
aXMgZm9yIHRoZSBlbnRyeSBjb2RlIGJsb2NrLgorICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5U
KGNvZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiT1NSIGVudHJ5IGZhaWxlZCB0b28gbWFu
eSB0aW1lcyIpKTsKICAgICAgICAgdW5zaWduZWQgb3NyRW50cnlCeXRlY29kZSA9IGVudHJ5Qmxv
Y2stPmppdENvZGUoKS0+ZnRsRm9yT1NSRW50cnkoKS0+Ynl0ZWNvZGVJbmRleCgpOwogICAgICAg
ICBqaXRDb2RlLT5jbGVhck9TUkVudHJ5QmxvY2soKTsKICAgICAgICAgaml0Q29kZS0+b3NyRW50
cnlSZXRyeSA9IDA7CkBAIC0xOTY3LDYgKzE5ODQsNyBAQCBzdGF0aWMgY2hhciogdGllclVwQ29t
bW9uKEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIGV4ZWMsIGNvZGVCbG9jaywgQ29kZU9yaWdpbihv
c3JFbnRyeUJ5dGVjb2RlSW5kZXgpLCBzdHJlYW1JbmRleCwgbXVzdEhhbmRsZVZhbHVlcyk7CiAg
ICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudENvZGVCbG9jayA9IGNvZGVCbG9jay0+bmV3UmVwbGFj
ZW1lbnQoKTsKIAorICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAidHJpZ2dlckZU
TE9TUiIsICgpKTsKICAgICBDb21waWxhdGlvblJlc3VsdCBmb3JFbnRyeVJlc3VsdCA9IGNvbXBp
bGUoCiAgICAgICAgICp2bSwgcmVwbGFjZW1lbnRDb2RlQmxvY2ssIGNvZGVCbG9jaywgRlRMRm9y
T1NSRW50cnlNb2RlLCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsCiAgICAgICAgIG11c3RIYW5kbGVW
YWx1ZXMsIFRvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNyZWF0
ZSh0cmlnZ2VyQWRkcmVzcykpOwpAQCAtMTk3NSwxMSArMTk5MywxMyBAQCBzdGF0aWMgY2hhciog
dGllclVwQ29tbW9uKEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIHRyaWdnZXJGVExSZXBsYWNlbWVu
dENvbXBpbGUodm0sIGNvZGVCbG9jaywgaml0Q29kZSk7CiAKICAgICBpZiAoZm9yRW50cnlSZXN1
bHQgIT0gQ29tcGlsYXRpb25TdWNjZXNzZnVsKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZF
TlQoY29kZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJPU1IgZWNvbXBpbGF0aW9uIG5vdCBz
dWNjZXNzZnVsIikpOwogICAgICAgICBqaXRDb2RlLT5zZXRPcHRpbWl6YXRpb25UaHJlc2hvbGRC
YXNlZE9uQ29tcGlsYXRpb25SZXN1bHQoCiAgICAgICAgICAgICBjb2RlQmxvY2ssIENvbXBpbGF0
aW9uRGVmZXJyZWQpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0KKyAgICAKKyAg
ICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGppdENvZGUtPm9zckVudHJ5QmxvY2soKSwgIm9zckVudHJ5
IiwgKCJhdCBiYyMiLCBvcmlnaW5CeXRlY29kZUluZGV4KSk7CiAgICAgLy8gSXQncyBwb3NzaWJs
ZSB0aGF0IHRoZSBmb3ItZW50cnkgY29tcGlsZSBhbHJlYWR5IHN1Y2NlZWRlZC4gSW4gdGhhdCBj
YXNlIE9TUgogICAgIC8vIGVudHJ5IHdpbGwgc3VjY2VlZCB1bmxlc3Mgd2UgcmFuIG91dCBvZiBz
dGFjay4gSXQncyBub3QgY2xlYXIgd2hhdCB3ZSBzaG91bGQgZG8uCiAgICAgLy8gV2Ugc2lnbmFs
IHRvIHRyeSBhZ2FpbiBhZnRlciBhIHdoaWxlIGlmIHRoYXQgaGFwcGVucy4KQEAgLTIwMTYsOCAr
MjAzNiwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dlclRpZXJVcE5vd0luTG9vCiAgICAg
ICAgIHRyaWdnZXJGVExSZXBsYWNlbWVudENvbXBpbGUodm0sIGNvZGVCbG9jaywgaml0Q29kZSk7
CiAKICAgICAvLyBTaW5jZSB3ZSBjYW5ub3QgT1NSIEVudGVyIGhlcmUsIHRoZSBkZWZhdWx0ICJv
cHRpbWl6ZVNvb24oKSIgaXMgbm90IHVzZWZ1bC4KLSAgICBpZiAoY29kZUJsb2NrLT5oYXNPcHRp
bWl6ZWRSZXBsYWNlbWVudCgpKQorICAgIGlmIChjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxh
Y2VtZW50KCkpIHsKKyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxh
eUZUTENvbXBpbGUiLCAoIk9TUiBpbiBsb29wIGZhaWxlZCwgZGVmZXJyaW5nIikpOwogICAgICAg
ICBqaXRDb2RlLT5zZXRPcHRpbWl6YXRpb25UaHJlc2hvbGRCYXNlZE9uQ29tcGlsYXRpb25SZXN1
bHQoY29kZUJsb2NrLCBDb21waWxhdGlvbkRlZmVycmVkKTsKKyAgICB9CiB9CiAKIGNoYXIqIEpJ
VF9PUEVSQVRJT04gdHJpZ2dlck9TUkVudHJ5Tm93KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmlu
YWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJ
VEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBA
QCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbigpCiAgICAgbV9wbGFuLmNvZGVC
bG9jay0+c2V0SklUQ29kZShqaXRDb2RlKTsKIAogICAgIGlmIChtX3BsYW4uY29tcGlsYXRpb24p
Ci0gICAgICAgIG1fcGxhbi52bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPmFkZENvbXBpbGF0aW9u
KG1fcGxhbi5jb21waWxhdGlvbik7CisgICAgICAgIG1fcGxhbi52bS5tX3BlckJ5dGVjb2RlUHJv
ZmlsZXItPmFkZENvbXBpbGF0aW9uKG1fcGxhbi5jb2RlQmxvY2ssIG1fcGxhbi5jb21waWxhdGlv
bik7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczOCw3ICs3MzgsNyBAQCBDb21waWxhdGlvblJlc3Vs
dCBKSVQ6OnByaXZhdGVDb21waWxlKEpJCiAgICAgaWYgKG1fY29tcGlsYXRpb24pIHsKICAgICAg
ICAgaWYgKE9wdGlvbnM6OmRpc2Fzc2VtYmxlQmFzZWxpbmVGb3JQcm9maWxlcigpKQogICAgICAg
ICAgICAgbV9kaXNhc3NlbWJsZXItPnJlcG9ydFRvUHJvZmlsZXIobV9jb21waWxhdGlvbi5nZXQo
KSwgcGF0Y2hCdWZmZXIpOwotICAgICAgICBtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPmFk
ZENvbXBpbGF0aW9uKG1fY29tcGlsYXRpb24pOworICAgICAgICBtX3ZtLT5tX3BlckJ5dGVjb2Rl
UHJvZmlsZXItPmFkZENvbXBpbGF0aW9uKG1fY29kZUJsb2NrLCBtX2NvbXBpbGF0aW9uKTsKICAg
ICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuZGlkQnVpbGRNYXBwaW5n
KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJ
KHJldmlzaW9uIDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMzUsNiArMTIzNSw3IEBAIFNsb3dQYXRoUmV0
dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICB9CiAKICAgICBpZiAoIWNvZGVCbG9j
ay0+Y2hlY2tJZk9wdGltaXphdGlvblRocmVzaG9sZFJlYWNoZWQoKSkgeworICAgICAgICBDT0RF
QkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiY291bnRl
ciA9ICIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSkpOwogICAgICAgICBjb2RlQmxv
Y2stPnVwZGF0ZUFsbFByZWRpY3Rpb25zKCk7CiAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3Nl
T1NSKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJDaG9vc2luZyBub3QgdG8gb3B0aW1pemUgIiwg
KmNvZGVCbG9jaywgIiB5ZXQsIGJlY2F1c2UgdGhlIHRocmVzaG9sZCBoYXNuJ3QgYmVlbiByZWFj
aGVkLlxuIik7CkBAIC0xMjQyLDE3ICsxMjQzLDIwIEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGkKICAgICB9CiAgICAgCiAgICAgaWYgKHZtLmVuYWJsZWRQcm9maWxl
cigpKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlPcHRp
bWl6ZVRvREZHIiwgKCJwcm9maWxlciBpcyBlbmFibGVkIikpOwogICAgICAgICB1cGRhdGVBbGxQ
cmVkaWN0aW9uc0FuZE9wdGltaXplQWZ0ZXJXYXJtVXAoY29kZUJsb2NrKTsKICAgICAgICAgcmV0
dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKICAgICB9CiAKICAgICBEZWJ1Z2dlciogZGVidWdnZXIg
PSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpOwogICAgIGlmIChkZWJ1Z2dl
ciAmJiAoZGVidWdnZXItPmlzU3RlcHBpbmcoKSB8fCBjb2RlQmxvY2stPmJhc2VsaW5lQWx0ZXJu
YXRpdmUoKS0+aGFzRGVidWdnZXJSZXF1ZXN0cygpKSkgeworICAgICAgICBDT0RFQkxPQ0tfTE9H
X0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiZGVidWdnZXIgaXMgc3Rl
cHBpbmcgb3IgaGFzIHJlcXVlc3RzIikpOwogICAgICAgICB1cGRhdGVBbGxQcmVkaWN0aW9uc0Fu
ZE9wdGltaXplQWZ0ZXJXYXJtVXAoY29kZUJsb2NrKTsKICAgICAgICAgcmV0dXJuIGVuY29kZVJl
c3VsdCgwLCAwKTsKICAgICB9CiAKICAgICBpZiAoY29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0Jl
SW5saW5lZCkgeworICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5
T3B0aW1pemVUb0RGRyIsICgic2hvdWxkIGFsd2F5cyBiZSBpbmxpbmVkIikpOwogICAgICAgICB1
cGRhdGVBbGxQcmVkaWN0aW9uc0FuZE9wdGltaXplQWZ0ZXJXYXJtVXAoY29kZUJsb2NrKTsKICAg
ICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkNo
b29zaW5nIG5vdCB0byBvcHRpbWl6ZSAiLCAqY29kZUJsb2NrLCAiIHlldCwgYmVjYXVzZSBtX3No
b3VsZEFsd2F5c0JlSW5saW5lZCA9PSB0cnVlLlxuIik7CkBAIC0xMjkzLDYgKzEyOTcsNyBAQCBT
bG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIHdvcmtsaXN0
U3RhdGUgPSBERkc6OldvcmtsaXN0OjpOb3RLbm93bjsKIAogICAgIGlmICh3b3JrbGlzdFN0YXRl
ID09IERGRzo6V29ya2xpc3Q6OkNvbXBpbGluZykgeworICAgICAgICBDT0RFQkxPQ0tfTE9HX0VW
RU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiY29tcGlsaW5nIikpOwogICAg
ICAgICAvLyBXZSBjYW5ub3QgYmUgaW4gdGhlIHByb2Nlc3Mgb2YgYXN5bmNocm9ub3VzIGNvbXBp
bGF0aW9uIGFuZCBhbHNvIGhhdmUgYW4gb3B0aW1pemVkCiAgICAgICAgIC8vIHJlcGxhY2VtZW50
LgogICAgICAgICBSRUxFQVNFX0FTU0VSVCghY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNl
bWVudCgpKTsKQEAgLTEzMDcsNiArMTMxMiw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGkKICAgICAgICAgLy8gQ29kZUJsb2NrOjpzZXRPcHRpbWl6YXRpb25UaHJl
c2hvbGRCYXNlZE9uQ29tcGlsYXRpb25SZXN1bHQoKSBhbmQgd2UgaGF2ZQogICAgICAgICAvLyBu
b3RoaW5nIGxlZnQgdG8gZG8uCiAgICAgICAgIGlmICghY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRS
ZXBsYWNlbWVudCgpKSB7CisgICAgICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9j
aywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiY29tcGlsZWQgYW5kIGZhaWxlZCIpKTsKICAgICAg
ICAgICAgIGNvZGVCbG9jay0+dXBkYXRlQWxsUHJlZGljdGlvbnMoKTsKICAgICAgICAgICAgIGlm
IChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ29kZSBi
bG9jayAiLCAqY29kZUJsb2NrLCAiIHdhcyBjb21waWxlZCBidXQgaXQgZG9lc24ndCBoYXZlIGFu
IG9wdGltaXplZCByZXBsYWNlbWVudC5cbiIpOwpAQCAtMTMyOSw2ICsxMzM1LDcgQEAgU2xvd1Bh
dGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICAvLyBzaG91bGRSZW9w
dGltaXplRnJvbUxvb3BOb3coKSB0byBhbHdheXMgcmV0dXJuIHRydWUuIEJ1dCB3ZSBtYWtlIGl0
IGRvIHNvbWUKICAgICAgICAgLy8gYWRkaXRpb25hbCBjaGVja2luZyBhbnl3YXksIHRvIHJlZHVj
ZSB0aGUgYW1vdW50IG9mIHJlY29tcGlsYXRpb24gdGhyYXNoaW5nLgogICAgICAgICBpZiAoY29k
ZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zaG91bGRSZW9wdGltaXplRnJvbUxvb3BOb3coKSkgewor
ICAgICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXpl
VG9ERkciLCAoInNob3VsZCByZW9wdGltaXplIGZyb20gbG9vcCBub3ciKSk7CiAgICAgICAgICAg
ICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygK
ICAgICAgICAgICAgICAgICAgICAgIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgIiwgKmNv
ZGVCbG9jaywKQEAgLTEzMzksNiArMTM0Niw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghY29k
ZUJsb2NrLT5zaG91bGRPcHRpbWl6ZU5vdygpKSB7CisgICAgICAgICAgICBDT0RFQkxPQ0tfTE9H
X0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiaW5zdWZmaWNpZW50IHBy
b2ZpbGluZyIpKTsKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAiRGVsYXlpbmcgb3B0
aW1pemF0aW9uIGZvciAiLCAqY29kZUJsb2NrLApAQCAtMTM2OSwxNCArMTM3NywxNyBAQCBTbG93
UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgICAgICB2bSwgcmVw
bGFjZW1lbnRDb2RlQmxvY2ssIG51bGxwdHIsIERGRzo6REZHTW9kZSwgYnl0ZWNvZGVJbmRleCwK
ICAgICAgICAgICAgIG11c3RIYW5kbGVWYWx1ZXMsIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrOjpjcmVhdGUoKSk7CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0ICE9IENv
bXBpbGF0aW9uU3VjY2Vzc2Z1bCkKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBDb21waWxhdGlvblN1
Y2Nlc3NmdWwpIHsKKyAgICAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAi
ZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJjb21waWxhdGlvbiBmYWlsZWQiKSk7CiAgICAgICAgICAg
ICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOworICAgICAgICB9CiAgICAgfQogICAgIAogICAg
IENvZGVCbG9jayogb3B0aW1pemVkQ29kZUJsb2NrID0gY29kZUJsb2NrLT5yZXBsYWNlbWVudCgp
OwogICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQob3B0aW1pemVkQ29kZUJsb2Nr
LT5qaXRUeXBlKCkpKTsKICAgICAKICAgICBpZiAodm9pZCogZGF0YUJ1ZmZlciA9IERGRzo6cHJl
cGFyZU9TUkVudHJ5KGV4ZWMsIG9wdGltaXplZENvZGVCbG9jaywgYnl0ZWNvZGVJbmRleCkpIHsK
KyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChvcHRpbWl6ZWRDb2RlQmxvY2ssICJvc3JFbnRy
eSIsICgiYXQgYmMjIiwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICBpZiAoT3B0aW9uczo6dmVy
Ym9zZU9TUigpKSB7CiAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICJQZXJm
b3JtaW5nIE9TUiAiLCAqY29kZUJsb2NrLCAiIC0+ICIsICpvcHRpbWl6ZWRDb2RlQmxvY2ssICIu
XG4iKTsKQEAgLTE0MDYsNiArMTQxNyw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGkKICAgICAvLyByaWdodCBub3cuIFNvLCB3ZSBvbmx5IHRyaWdnZXIgcmVvcHRp
bWl6YXRpb24gb25seSB1cG9uIHRoZSBtb3JlIGNvbnNlcnZhdGl2ZSAobm9uLWxvb3ApCiAgICAg
Ly8gcmVvcHRpbWl6YXRpb24gdHJpZ2dlci4KICAgICBpZiAob3B0aW1pemVkQ29kZUJsb2NrLT5z
aG91bGRSZW9wdGltaXplTm93KCkpIHsKKyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2Rl
QmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoInNob3VsZCByZW9wdGltaXplIG5vdyIpKTsK
ICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICAgICAgZGF0YUxv
ZygKICAgICAgICAgICAgICAgICAiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAiLCAqY29k
ZUJsb2NrLCAiIC0+ICIsCkBAIC0xNDE5LDYgKzE0MzEsNyBAQCBTbG93UGF0aFJldHVyblR5cGUg
SklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgLy8gbG9uZ2VyIGFuZCB0aGVuIHRyeSBhZ2Fpbi4K
ICAgICBjb2RlQmxvY2stPm9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKICAgICAKKyAgICBDT0RFQkxP
Q0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxl
ZCIpKTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQogI2VuZGlmCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlz
aW9uIDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxOSw2ICszMTksNyBAQCBpbmxpbmUgYm9vbCBqaXRD
b21waWxlQW5kU2V0SGV1cmlzdGljcyhDCiAgICAgY29kZUJsb2NrLT51cGRhdGVBbGxWYWx1ZVBy
b2ZpbGVQcmVkaWN0aW9ucygpOwogCiAgICAgaWYgKCFjb2RlQmxvY2stPmNoZWNrSWZKSVRUaHJl
c2hvbGRSZWFjaGVkKCkpIHsKKyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ss
ICJkZWxheUpJVENvbXBpbGUiLCAoInRocmVzaG9sZCBub3QgcmVhY2hlZCwgY291bnRlciA9ICIs
IGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKSk7CiAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICBkYXRhTG9nRigiICAgIEpJVCB0aHJlc2hvbGQg
c2hvdWxkIGJlIGxpZnRlZC5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzUsNiAr
MzM2LDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoQwogICAgICAg
ICBDb21waWxhdGlvblJlc3VsdCByZXN1bHQgPSBKSVQ6OmNvbXBpbGUoJnZtLCBjb2RlQmxvY2ss
IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgIHN3aXRjaCAocmVzdWx0KSB7CiAgICAg
ICAgIGNhc2UgQ29tcGlsYXRpb25GYWlsZWQ6CisgICAgICAgICAgICBDT0RFQkxPQ0tfTE9HX0VW
RU5UKGNvZGVCbG9jaywgImRlbGF5SklUQ29tcGlsZSIsICgiY29tcGlsYXRpb24gZmFpbGVkIikp
OwogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nRigiICAgIEpJVCBjb21waWxhdGlvbiBmYWlsZWQuXG4iKTsKICAgICAgICAgICAg
IGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CkBAIC0zNzIsNiArMzc0LDggQEAgc3Rh
dGljIFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjUwogICAgIGlmICghaml0Q29tcGls
ZUFuZFNldEhldXJpc3RpY3MoY29kZUJsb2NrLCBleGVjKSkKICAgICAgICAgTExJTlRfUkVUVVJO
X1RXTygwLCAwKTsKICAgICAKKyAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgIk9T
UiBlbnRyeSIsICgiaW4gcHJvbG9ndWUiKSk7CisgICAgCiAgICAgaWYgKGtpbmQgPT0gUHJvbG9n
dWUpCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5qaXRDb2RlKCktPmV4ZWN1
dGFibGVBZGRyZXNzKCksIDApOwogICAgIEFTU0VSVChraW5kID09IEFyaXR5Q2hlY2spOwpAQCAt
NDI5LDYgKzQzMyw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKGxvb3Bfb3NyKQogICAgIGlmICgh
aml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoY29kZUJsb2NrLCBleGVjKSkKICAgICAgICAgTExJ
TlRfUkVUVVJOX1RXTygwLCAwKTsKICAgICAKKyAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVC
bG9jaywgIm9zckVudHJ5IiwgKCJhdCBiYyMiLCBwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSkpOworCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKICAgICAKICAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zm
c2V0PiBtYXA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJD
b21waWxhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNiArNDIsNyBAQCBDb21waWxhdGlvbjo6Q29tcGls
YXRpb24oQnl0ZWNvZGVzKiBieXRlCiAgICAgLCBtX251bUlubGluZWRHZXRCeUlkcygwKQogICAg
ICwgbV9udW1JbmxpbmVkUHV0QnlJZHMoMCkKICAgICAsIG1fbnVtSW5saW5lZENhbGxzKDApCisg
ICAgLCBtX3VpZChVSUQ6OmNyZWF0ZSgpKQogewogfQogCkBAIC0xMDYsNiArMTA3LDExIEBAIHZv
aWQgQ29tcGlsYXRpb246OnNldEpldHRpc29uUmVhc29uKEpldHQKICAgICAgICAgbV9hZGRpdGlv
bmFsSmV0dGlzb25SZWFzb24gPSBDU3RyaW5nKCk7CiB9CiAKK3ZvaWQgQ29tcGlsYXRpb246OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIkNvbXAiLCBtX3Vp
ZCk7Cit9CisKIEpTVmFsdWUgQ29tcGlsYXRpb246OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25z
dAogewogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsK
QEAgLTE0OSw2ICsxNTUsOCBAQCBKU1ZhbHVlIENvbXBpbGF0aW9uOjp0b0pTKEV4ZWNTdGF0ZSog
ZXhlCiAgICAgaWYgKCFtX2FkZGl0aW9uYWxKZXR0aXNvblJlYXNvbi5pc051bGwoKSkKICAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFk
ZGl0aW9uYWxKZXR0aXNvblJlYXNvbiwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpmcm9tVVRGOCht
X2FkZGl0aW9uYWxKZXR0aXNvblJlYXNvbikpKTsKICAgICAKKyAgICByZXN1bHQtPnB1dERpcmVj
dChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudWlkLCBtX3VpZC50b0pTKGV4ZWMp
KTsKKyAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmgJKHJldmlzaW9u
IDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBp
bGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIlByb2ZpbGVyT1NSRXhpdFNpdGUuaCIKICNpbmNsdWRlICJQcm9maWxlck9yaWdp
blN0YWNrLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oIgorI2luY2x1
ZGUgIlByb2ZpbGVyVUlELmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CiAKQEAgLTc1LDYgKzc2LDkgQEAgcHVibGljOgogICAg
IAogICAgIHZvaWQgc2V0SmV0dGlzb25SZWFzb24oSmV0dGlzb25SZWFzb24sIGNvbnN0IEZpcmVE
ZXRhaWwqKTsKICAgICAKKyAgICBVSUQgdWlkKCkgY29uc3QgeyByZXR1cm4gbV91aWQ7IH0KKyAg
ICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpAQCAtOTAsNiArOTQsNyBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkIG1fbnVtSW5saW5lZEdldEJ5SWRzOwogICAgIHVuc2lnbmVkIG1f
bnVtSW5saW5lZFB1dEJ5SWRzOwogICAgIHVuc2lnbmVkIG1fbnVtSW5saW5lZENhbGxzOworICAg
IFVJRCBtX3VpZDsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpQcm9maWxlcgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNl
LmNwcAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgewogCkBAIC01OCw3ICs1
OSwxMSBAQCBEYXRhYmFzZTo6fkRhdGFiYXNlKCkKIEJ5dGVjb2RlcyogRGF0YWJhc2U6OmVuc3Vy
ZUJ5dGVjb2Rlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvY2spOwotICAgIAorICAgIHJldHVybiBlbnN1cmVCeXRlY29kZXNGb3IobG9ja2Vy
LCBjb2RlQmxvY2spOworfQorCitCeXRlY29kZXMqIERhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNG
b3IoY29uc3QgTG9ja0hvbGRlciYsIENvZGVCbG9jayogY29kZUJsb2NrKQorewogICAgIGNvZGVC
bG9jayA9IGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCk7CiAgICAgCiAgICAgSGFzaE1hcDxD
b2RlQmxvY2sqLCBCeXRlY29kZXMqPjo6aXRlcmF0b3IgaXRlciA9IG1fYnl0ZWNvZGVzTWFwLmZp
bmQoY29kZUJsb2NrKTsKQEAgLTc4LDEzICs4MywxOCBAQCB2b2lkIERhdGFiYXNlOjpub3RpZnlE
ZXN0cnVjdGlvbihDb2RlQmxvCiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAK
ICAgICBtX2J5dGVjb2Rlc01hcC5yZW1vdmUoY29kZUJsb2NrKTsKKyAgICBtX2NvbXBpbGF0aW9u
TWFwLnJlbW92ZShjb2RlQmxvY2spOwogfQogCi12b2lkIERhdGFiYXNlOjphZGRDb21waWxhdGlv
bihQYXNzUmVmUHRyPENvbXBpbGF0aW9uPiBjb21waWxhdGlvbikKK3ZvaWQgRGF0YWJhc2U6OmFk
ZENvbXBpbGF0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBQYXNzUmVmUHRyPENvbXBpbGF0aW9u
PiBwYXNzZWRDb21waWxhdGlvbikKIHsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwog
ICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKKworICAgIFJlZlB0cjxDb21waWxh
dGlvbj4gY29tcGlsYXRpb24gPSBwYXNzZWRDb21waWxhdGlvbjsKICAgICAKICAgICBtX2NvbXBp
bGF0aW9ucy5hcHBlbmQoY29tcGlsYXRpb24pOworICAgIG1fY29tcGlsYXRpb25NYXAuc2V0KGNv
ZGVCbG9jaywgY29tcGlsYXRpb24pOwogfQogCiBKU1ZhbHVlIERhdGFiYXNlOjp0b0pTKEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKQEAgLTEwMSw2ICsxMTEsMTEgQEAgSlNWYWx1ZSBEYXRhYmFzZTo6
dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIAogICAgICAgICBjb21waWxhdGlvbnMtPnB1dERpcmVjdElu
ZGV4KGV4ZWMsIGksIG1fY29tcGlsYXRpb25zW2ldLT50b0pTKGV4ZWMpKTsKICAgICByZXN1bHQt
PnB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29tcGlsYXRpb25z
LCBjb21waWxhdGlvbnMpOwogICAgIAorICAgIEpTQXJyYXkqIGV2ZW50cyA9IGNvbnN0cnVjdEVt
cHR5QXJyYXkoZXhlYywgMCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZXZlbnRz
LnNpemUoKTsgKytpKQorICAgICAgICBldmVudHMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIG1f
ZXZlbnRzW2ldLnRvSlMoZXhlYykpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ldmVudHMsIGV2ZW50cyk7CisgICAgCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtMTMzLDYgKzE0OCwxNSBAQCB2b2lkIERhdGFiYXNlOjpyZWdpc3Rl
clRvU2F2ZUF0RXhpdChjb25zCiAgICAgbV9zaG91bGRTYXZlQXRFeGl0ID0gdHJ1ZTsKIH0KIAor
dm9pZCBEYXRhYmFzZTo6bG9nRXZlbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IGNoYXIq
IHN1bW1hcnksIGNvbnN0IENTdHJpbmcmIGRldGFpbCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvY2spOworICAgIAorICAgIEJ5dGVjb2RlcyogYnl0ZWNvZGVzID0gZW5zdXJlQnl0ZWNv
ZGVzRm9yKGxvY2tlciwgY29kZUJsb2NrKTsKKyAgICBDb21waWxhdGlvbiogY29tcGlsYXRpb24g
PSBtX2NvbXBpbGF0aW9uTWFwLmdldChjb2RlQmxvY2spOworICAgIG1fZXZlbnRzLmFwcGVuZChF
dmVudChjdXJyZW50VGltZSgpLCBieXRlY29kZXMsIGNvbXBpbGF0aW9uLCBzdW1tYXJ5LCBkZXRh
aWwpKTsKK30KKwogdm9pZCBEYXRhYmFzZTo6YWRkRGF0YWJhc2VUb0F0RXhpdCgpCiB7CiAgICAg
aWYgKCsrZGlkUmVnaXN0ZXJBdEV4aXQgPT0gMSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaAkocmV2aXNpb24gMjAwNjIzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUHJvZmlsZXJC
eXRlY29kZXMuaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCiAjaW5jbHVkZSAi
UHJvZmlsZXJDb21waWxhdGlvbktpbmQuaCIKKyNpbmNsdWRlICJQcm9maWxlckV2ZW50LmgiCiAj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBCeXRlY29k
ZXMqIGVuc3VyZUJ5dGVjb2Rlc0ZvcihDb2RlQmxvY2sqKTsKICAgICB2b2lkIG5vdGlmeURlc3Ry
dWN0aW9uKENvZGVCbG9jayopOwogICAgIAotICAgIHZvaWQgYWRkQ29tcGlsYXRpb24oUGFzc1Jl
ZlB0cjxDb21waWxhdGlvbj4pOworICAgIHZvaWQgYWRkQ29tcGlsYXRpb24oQ29kZUJsb2NrKiwg
UGFzc1JlZlB0cjxDb21waWxhdGlvbj4pOwogICAgIAogICAgIC8vIENvbnZlcnRzIHRoZSBkYXRh
YmFzZSB0byBhIEphdmFTY3JpcHQgb2JqZWN0IHRoYXQgaXMgc3VpdGFibGUgZm9yIEpTT04gc3Ry
aW5naWZpY2F0aW9uLgogICAgIC8vIE5vdGUgdGhhdCBpdCdzIHByb2JhYmx5IGEgZ29vZCBpZGVh
IHRvIHVzZSBhbiBFeGVjU3RhdGUqIGFzc29jaWF0ZWQgd2l0aCBhIGdsb2JhbApAQCAtNzAsNyAr
NzEsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWdpc3RlclRvU2F2ZUF0RXhpdChjb25zdCBj
aGFyKiBmaWxlbmFtZSk7CiAgICAgCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBsb2dFdmVu
dChDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgY2hhciogc3VtbWFyeSwgY29uc3QgQ1N0cmlu
ZyYgZGV0YWlsKTsKKyAgICAKIHByaXZhdGU6CisgICAgQnl0ZWNvZGVzKiBlbnN1cmVCeXRlY29k
ZXNGb3IoY29uc3QgTG9ja0hvbGRlciYsIENvZGVCbG9jayopOworICAgIAogICAgIHZvaWQgYWRk
RGF0YWJhc2VUb0F0RXhpdCgpOwogICAgIHZvaWQgcmVtb3ZlRGF0YWJhc2VGcm9tQXRFeGl0KCk7
CiAgICAgdm9pZCBwZXJmb3JtQXRFeGl0U2F2ZSgpIGNvbnN0OwpAQCAtODIsNiArODcsOCBAQCBw
cml2YXRlOgogICAgIFNlZ21lbnRlZFZlY3RvcjxCeXRlY29kZXM+IG1fYnl0ZWNvZGVzOwogICAg
IEhhc2hNYXA8Q29kZUJsb2NrKiwgQnl0ZWNvZGVzKj4gbV9ieXRlY29kZXNNYXA7CiAgICAgVmVj
dG9yPFJlZlB0cjxDb21waWxhdGlvbj4+IG1fY29tcGlsYXRpb25zOworICAgIEhhc2hNYXA8Q29k
ZUJsb2NrKiwgUmVmUHRyPENvbXBpbGF0aW9uPj4gbV9jb21waWxhdGlvbk1hcDsKKyAgICBWZWN0
b3I8RXZlbnQ+IG1fZXZlbnRzOwogICAgIGJvb2wgbV9zaG91bGRTYXZlQXRFeGl0OwogICAgIENT
dHJpbmcgbV9hdEV4aXRTYXZlRmlsZW5hbWU7CiAgICAgRGF0YWJhc2UqIG1fbmV4dFJlZ2lzdGVy
ZWREYXRhYmFzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ckV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJFdmVudC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJvZmlsZXJFdmVudC5oIgorCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiUHJv
ZmlsZXJCeXRlY29kZXMuaCIKKyNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCisjaW5j
bHVkZSAiUHJvZmlsZXJVSUQuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxl
ciB7CisKK3ZvaWQgRXZlbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBv
dXQucHJpbnQobV90aW1lLCAiOiAiLCBwb2ludGVyRHVtcChtX2J5dGVjb2RlcykpOworICAgIGlm
IChtX2NvbXBpbGF0aW9uKQorICAgICAgICBvdXQucHJpbnQoIiAiLCAqbV9jb21waWxhdGlvbik7
CisgICAgb3V0LnByaW50KCI6ICIsIG1fc3VtbWFyeSk7CisgICAgaWYgKG1fZGV0YWlsLmxlbmd0
aCgpKQorICAgICAgICBvdXQucHJpbnQoIiAoIiwgbV9kZXRhaWwsICIpIik7Cit9CisKK0pTVmFs
dWUgRXZlbnQ6OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEpTT2JqZWN0KiBy
ZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAKKyAgICByZXN1bHQtPnB1
dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudGltZSwganNOdW1iZXIo
bV90aW1lKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmJ5dGVjb2Rlc0lELCBqc051bWJlcihtX2J5dGVjb2Rlcy0+aWQoKSkpOworICAg
IGlmIChtX2NvbXBpbGF0aW9uKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29tcGlsYXRpb25VSUQsIG1fY29tcGlsYXRpb24tPnVp
ZCgpLnRvSlMoZXhlYykpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5zdW1tYXJ5LCBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4
KG1fc3VtbWFyeSkpKTsKKyAgICBpZiAobV9kZXRhaWwubGVuZ3RoKCkpCisgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZXRhaWwsIGpz
U3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjgobV9kZXRhaWwpKSk7CisgICAgCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlByb2ZpbGVyCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckV2ZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFByb2ZpbGVyRXZlbnRfaAorI2RlZmlu
ZSBQcm9maWxlckV2ZW50X2gKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgeworCitjbGFzcyBCeXRlY29kZXM7CitjbGFz
cyBDb21waWxhdGlvbjsKKworY2xhc3MgRXZlbnQgeworcHVibGljOgorICAgIEV2ZW50KCkKKyAg
ICB7CisgICAgfQorICAgIAorICAgIEV2ZW50KGRvdWJsZSB0aW1lLCBCeXRlY29kZXMqIGJ5dGVj
b2RlcywgQ29tcGlsYXRpb24qIGNvbXBpbGF0aW9uLCBjb25zdCBjaGFyKiBzdW1tYXJ5LCBjb25z
dCBDU3RyaW5nJiBkZXRhaWwpCisgICAgICAgIDogbV90aW1lKHRpbWUpCisgICAgICAgICwgbV9i
eXRlY29kZXMoYnl0ZWNvZGVzKQorICAgICAgICAsIG1fY29tcGlsYXRpb24oY29tcGlsYXRpb24p
CisgICAgICAgICwgbV9zdW1tYXJ5KHN1bW1hcnkpCisgICAgICAgICwgbV9kZXRhaWwoZGV0YWls
KQorICAgIHsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9ieXRlY29kZXM7CisgICAgfQorICAgIAorICAgIGRv
dWJsZSB0aW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lOyB9CisgICAgQnl0ZWNvZGVzKiBieXRl
Y29kZXMoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlczsgfQorICAgIENvbXBpbGF0aW9uKiBj
b21waWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29tcGlsYXRpb247IH0KKyAgICBjb25zdCBj
aGFyKiBzdW1tYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9zdW1tYXJ5OyB9CisgICAgY29uc3QgQ1N0
cmluZyYgZGV0YWlsKCkgY29uc3QgeyByZXR1cm4gbV9kZXRhaWw7IH0KKyAgICAKKyAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikg
Y29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIGRvdWJsZSBtX3RpbWUgeyAwIH07CisgICAgQnl0
ZWNvZGVzKiBtX2J5dGVjb2RlcyB7IG51bGxwdHIgfTsKKyAgICBDb21waWxhdGlvbiogbV9jb21w
aWxhdGlvbiB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBjaGFyKiBtX3N1bW1hcnkgeyBudWxscHRy
IH07CisgICAgQ1N0cmluZyBtX2RldGFpbDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQ
cm9maWxlcgorCisjZW5kaWYgLy8gUHJvZmlsZXJFdmVudF9oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclVJRC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclVJRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJvZmlsZXJVSUQu
aCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKKworVUlEIFVJRDo6Y3JlYXRlKCkK
K3sKKyAgICBzdGF0aWMgU3RhdGljTG9jayBsb2NrOworICAgIHN0YXRpYyB1aW50NjRfdCBjb3Vu
dGVyOworICAgIAorICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2spOworICAgIFVJRCByZXN1bHQ7
CisgICAgcmVzdWx0Lm1fdWlkID0gKytjb3VudGVyOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQgVUlEOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50
KG1fdWlkKTsKK30KKworSlNWYWx1ZSBVSUQ6OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAor
eworICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB0b1N0cmluZygqdGhpcykpOworfQorCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6UHJvZmlsZXIKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJVSUQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIFByb2ZpbGVyVUlEX2gKKyNkZWZpbmUgUHJvZmlsZXJVSURfaAorCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1By
aW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgeworCitj
bGFzcyBVSUQgeworcHVibGljOgorICAgIFVJRCgpCisgICAgICAgIDogbV91aWQoMCkKKyAgICB7
CisgICAgfQorICAgIAorICAgIHN0YXRpYyBVSUQgZnJvbUludCh1aW50NjRfdCB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIFVJRCByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX3VpZCA9IHZhbHVlOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBVSUQoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fdWlkKHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDY0X3Q+OjptYXgoKSkKKyAgICB7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBVSUQgY3Jl
YXRlKCk7CisgICAgCisgICAgdWludDY0X3QgdG9JbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fdWlkOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVUlE
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3VpZCA9PSBvdGhlci5tX3Vp
ZDsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVJRCYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorICAg
IAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuICp0aGlzICE9IFVJRCgpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAqdGhpcyAhPSBVSUQoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBJbnRIYXNoPHVpbnQ2NF90Pjo6aGFzaCht
X3VpZCk7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owor
ICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAg
dWludDY0X3QgbV91aWQ7Cit9OworCitzdHJ1Y3QgVUlESGFzaCB7CisgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgVUlEJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBVSUQmIGEsIGNvbnN0IFVJRCYgYikgeyByZXR1cm4gYSA9PSBi
OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSB0cnVlOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlByb2ZpbGVyCisKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OlByb2ZpbGVyOjpVSUQ+IHsKKyAgICB0eXBl
ZGVmIEpTQzo6UHJvZmlsZXI6OlVJREhhc2ggSGFzaDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6
OlByb2ZpbGVyOjpVSUQ+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6UHJvZmlsZXI6OlVJ
RD4geyB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFByb2ZpbGVyVUlEX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcg
QEAKICAgICBtYWNybyhjb2xsYXRpb24pIFwKICAgICBtYWNybyhjb2x1bW4pIFwKICAgICBtYWNy
byhjb21waWxhdGlvbktpbmQpIFwKKyAgICBtYWNybyhjb21waWxhdGlvblVJRCkgXAogICAgIG1h
Y3JvKGNvbXBpbGF0aW9ucykgXAogICAgIG1hY3JvKGNvbXBpbGUpIFwKICAgICBtYWNybyhjb25m
aWd1cmFibGUpIFwKQEAgLTEzNiwxMiArMTM3LDE0IEBACiAgICAgbWFjcm8oZGVmaW5lUHJvcGVy
dHkpIFwKICAgICBtYWNybyhkZXNjcmlwdGlvbikgXAogICAgIG1hY3JvKGRlc2NyaXB0aW9ucykg
XAorICAgIG1hY3JvKGRldGFpbCkgXAogICAgIG1hY3JvKGRpc3BsYXlOYW1lKSBcCiAgICAgbWFj
cm8oZG9jdW1lbnQpIFwKICAgICBtYWNybyhkb25lKSBcCiAgICAgbWFjcm8oZW51bWVyYWJsZSkg
XAogICAgIG1hY3JvKGVyYSkgXAogICAgIG1hY3JvKGV2YWwpIFwKKyAgICBtYWNybyhldmVudHMp
IFwKICAgICBtYWNybyhleGVjKSBcCiAgICAgbWFjcm8oZXhlY3V0aW9uQ291bnQpIFwKICAgICBt
YWNybyhleGl0S2luZCkgXApAQCAtMjI3LDkgKzIzMCwxMSBAQAogICAgIG1hY3JvKHN0YWNrKSBc
CiAgICAgbWFjcm8oc3RpY2t5KSBcCiAgICAgbWFjcm8oc3ViYXJyYXkpIFwKKyAgICBtYWNybyhz
dW1tYXJ5KSBcCiAgICAgbWFjcm8odGFyZ2V0KSBcCiAgICAgbWFjcm8odGVzdCkgXAogICAgIG1h
Y3JvKHRoZW4pIFwKKyAgICBtYWNybyh0aW1lKSBcCiAgICAgbWFjcm8odGltZVpvbmUpIFwKICAg
ICBtYWNybyh0aW1lWm9uZU5hbWUpIFwKICAgICBtYWNybyh0b0V4cG9uZW50aWFsKSBcCkBAIC0y
NDAsNiArMjQ1LDcgQEAKICAgICBtYWNybyh0b1ByZWNpc2lvbikgXAogICAgIG1hY3JvKHRvU3Ry
aW5nKSBcCiAgICAgbWFjcm8odG9wKSBcCisgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8odW5p
Y29kZSkgXAogICAgIG1hY3JvKHVzYWdlKSBcCiAgICAgbWFjcm8odmFsdWUpIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAy
MDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlBhcnNlci5oIgogI2lu
Y2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXIuaCIKKyNp
bmNsdWRlICJWTUlubGluZXMuaCIKICNpbmNsdWRlICJXQVNNRnVuY3Rpb25QYXJzZXIuaCIKICNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
MTc2LDYgKzE3Nyw4IEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUoVk0mIHYK
IHsKICAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOwogICAgIAorICAgIENPREVCTE9D
S19MT0dfRVZFTlQoZ2VuZXJpY0NvZGVCbG9jaywgImluc3RhbGxDb2RlIiwgKCkpOworICAgIAog
ICAgIENvZGVCbG9jayogb2xkQ29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAKICAgICBzd2l0Y2gg
KGNvZGVUeXBlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9u
IDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYxMiw2ICs2MTIsOSBAQCBwdWJsaWM6CiAgICAgQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeSYgYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSgpIHsgcmV0dXJuICptX2J5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk7IH0KICAgICAKICAgICBTaGFkb3dDaGlja2VuJiBzaGFkb3dDaGlj
a2VuKCkgeyByZXR1cm4gKm1fc2hhZG93Q2hpY2tlbjsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBsb2dFdmVudChDb2RlQmxvY2sqLCBjb25zdCBjaGFyKiBz
dW1tYXJ5LCBjb25zdCBGdW5jJiBmdW5jKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk1JbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk1JbmxpbmVzLmgJKHJldmlzaW9uIDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5k
ZWYgVk1JbmxpbmVzX2gKICNkZWZpbmUgVk1JbmxpbmVzX2gKIAorI2luY2x1ZGUgIlByb2ZpbGVy
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAKQEAg
LTM4LDYgKzM5LDE1IEBAIGJvb2wgVk06OnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihFeGVjU3QK
ICAgICByZXR1cm4gd2F0Y2hkb2coKS0+c2hvdWxkVGVybWluYXRlKGV4ZWMpOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jPgordm9pZCBWTTo6bG9nRXZlbnQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIGNvbnN0IGNoYXIqIHN1bW1hcnksIGNvbnN0IEZ1bmMmIGZ1bmMpCit7CisgICAgaWYgKExJ
S0VMWSghbV9wZXJCeXRlY29kZVByb2ZpbGVyKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IG1fcGVyQnl0ZWNvZGVQcm9maWxlci0+bG9nRXZlbnQoY29kZUJsb2NrLCBzdW1tYXJ5LCBmdW5j
KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIExMSW50RGF0YV9oCklu
ZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjAwNjQ3KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNS0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgorCisgICAgICAgIEludGVybmFsIEpTQyBwcm9maWxlciBzaG91bGQgaGF2ZSBh
IHRpbWVzdGFtcGVkIGxvZyBvZiBldmVudHMgZm9yIGVhY2ggY29kZSBibG9jaworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NTM4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICAqIHd0Zi9QcmludFN0cmVh
bS5oOgorICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6cHJpbnQpOgorCiAyMDE2LTA1LTEwICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBhIGxv
dCBvZiBjYWxscyB0byBSZWZQdHI6OnJlbGVhc2UoKQpJbmRleDogU291cmNlL1dURi93dGYvUHJp
bnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oCShy
ZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDYgKzU1LDggQEAgcHVibGljOgogICAgIC8vIFR5
cGljYWxseSBhIG5vLW9wIGZvciBtYW55IHN1YmNsYXNzZXMgb2YgUHJpbnRTdHJlYW0sIHRoaXMg
aXMgYSBoaW50IHRoYXQKICAgICAvLyB0aGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGZsdXNoIGl0
cyBidWZmZXJzIGlmIGl0IGhhZCBub3QgZG9uZSBzbyBhbHJlYWR5LgogICAgIHZpcnR1YWwgdm9p
ZCBmbHVzaCgpOworICAgIAorICAgIHZvaWQgcHJpbnQoKSB7IH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiAgICAgdm9pZCBwcmludChjb25zdCBUJiB2YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278542</attachid>
            <date>2016-05-10 15:40:41 -0700</date>
            <delta_ts>2016-05-10 15:58:50 -0700</delta_ts>
            <desc>more fixes</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>59362</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwNjQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMiBA
QAorMjAxNi0wNS0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEludGVybmFsIEpTQyBwcm9maWxlciBzaG91bGQgaGF2ZSBhIHRpbWVzdGFtcGVkIGxvZyBvZiBl
dmVudHMgZm9yIGVhY2ggY29kZSBibG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4g
UG91bGFpbi4KKyAgICAgICAgCisgICAgICAgIEZvciBleGFtcGxlLCBpbiAzZC1jdWJlLCBJIGFu
IHF1ZXJ5IHRoZSBldmVudHMgZm9yIE1NdWx0aSBhbmQgSSBnZXQ6CisKKyAgICAgICAgMTQ2Mjkx
NzQ3Ni4xNzA4MyAgTU11bHRpI0RUWjdxYyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFs
bENvZGUgICAgICAgIAorICAgICAgICAxNDYyOTE3NDc2LjE3OTY2MyBNTXVsdGkjRFRaN3FjIE1N
dWx0aSNEVFo3cWMtMS1CYXNlbGluZSBpbnN0YWxsQ29kZSAgICAgICAgCisgICAgICAgIDE0NjI5
MTc0NzYuMTc5NjY0IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0xLUJhc2VsaW5lIG9zckVu
dHJ5ICAgICAgICAgICBhdCBiYyM0OQorICAgICAgICAxNDYyOTE3NDc2LjE4NTY1MSBNTXVsdGkj
RFRaN3FjIE1NdWx0aSNEVFo3cWMtMS1CYXNlbGluZSBkZWxheU9wdGltaXplVG9ERkcgY291bnRl
ciA9IDEwMTEuMjE0MjMzLzE3MTcuMDAwMDAwLCAtNzA3CisgICAgICAgIDE0NjI5MTc0NzYuMTg3
OTEzIE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0yLURGRyAgICAgIGluc3RhbGxDb2RlICAg
ICAgICAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4xODc5MTcgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRa
N3FjLTItREZHICAgICAgb3NyRW50cnkgICAgICAgICAgIGF0IGJjIzQ5CisgICAgICAgIDE0NjI5
MTc0NzYuMjA1MzY1IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0yLURGRyAgICAgIGpldHRp
c29uICAgICAgICAgICBkdWUgdG8gT1NSRXhpdCwgY291bnRpbmcgPSB0cnVlLCBkZXRhaWwgPSAo
bnVsbCkKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMDUzNjggTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRa
N3FjLTEtQmFzZWxpbmUgZnJlcXVlbnRFeGl0ICAgICAgIGJjIzY1OiBCYWRDYWNoZS9Gcm9tREZH
CisgICAgICAgIDE0NjI5MTc0NzYuMjA1MzY5IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0x
LUJhc2VsaW5lIGluc3RhbGxDb2RlICAgICAgICAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMDU0ODIg
TU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlPcHRpbWl6ZVRvREZH
IGNvdW50ZXIgPSAxMDEzLjAwMDAwMC8zNDM0LjAwMDAwMCwgLTEwMDAKKyAgICAgICAgMTQ2Mjkx
NzQ3Ni4yMTE1NDcgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlP
cHRpbWl6ZVRvREZHIGNvdW50ZXIgPSAyMDEzLjAwMDAwMC8zNDM0LjAwMDAwMCwgLTEwMDAKKyAg
ICAgICAgMTQ2MjkxNzQ3Ni4yMTM3MjEgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTMtREZH
ICAgICAgaW5zdGFsbENvZGUgICAgICAgIAorICAgICAgICAxNDYyOTE3NDc2LjIxMzcyNiBNTXVs
dGkjRFRaN3FjIE1NdWx0aSNEVFo3cWMtMy1ERkcgICAgICBvc3JFbnRyeSAgICAgICAgICAgYXQg
YmMjNDkKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjM5NzYgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRa
N3FjLTMtREZHICAgICAgamV0dGlzb24gICAgICAgICAgIGR1ZSB0byBPU1JFeGl0LCBjb3VudGlu
ZyA9IHRydWUsIGRldGFpbCA9IChudWxsKQorICAgICAgICAxNDYyOTE3NDc2LjIyMzk4MSBNTXVs
dGkjRFRaN3FjIE1NdWx0aSNEVFo3cWMtMS1CYXNlbGluZSBmcmVxdWVudEV4aXQgICAgICAgYmMj
Nzc6IEJhZENhY2hlL0Zyb21ERkcKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjM5ODIgTU11bHRpI0RU
WjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZnJlcXVlbnRFeGl0ICAgICAgIGJjIzk0OiBC
YWRDYWNoZS9Gcm9tREZHCisgICAgICAgIDE0NjI5MTc0NzYuMjIzOTgyIE1NdWx0aSNEVFo3cWMg
TU11bHRpI0RUWjdxYy0xLUJhc2VsaW5lIGluc3RhbGxDb2RlICAgICAgICAKKyAgICAgICAgMTQ2
MjkxNzQ3Ni4yMjQwNjQgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVs
YXlPcHRpbWl6ZVRvREZHIGNvdW50ZXIgPSAxMDEzLjAwMDAwMC82ODY4LjAwMDAwMCwgLTEwMDAK
KyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjQxNTEgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEt
QmFzZWxpbmUgZGVsYXlPcHRpbWl6ZVRvREZHIGNvdW50ZXIgPSAyMDEzLjAwMDAwMC82ODY4LjAw
MDAwMCwgLTEwMDAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjQyNTggTU11bHRpI0RUWjdxYyBNTXVs
dGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlPcHRpbWl6ZVRvREZHIGNvdW50ZXIgPSAzMDEzLjAw
MDAwMC82ODY4LjAwMDAwMCwgLTEwMDAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjQzMzcgTU11bHRp
I0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlPcHRpbWl6ZVRvREZHIGNvdW50
ZXIgPSA0MDIzLjAwMDAwMC82ODY4LjAwMDAwMCwgLTEwMDAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4y
MjQ0MjUgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlPcHRpbWl6
ZVRvREZHIGNvdW50ZXIgPSA1MDIzLjAwMDAwMC82ODY4LjAwMDAwMCwgLTEwMDAKKyAgICAgICAg
MTQ2MjkxNzQ3Ni4yMjQ3ODUgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUg
ZGVsYXlPcHRpbWl6ZVRvREZHIGNvdW50ZXIgPSA2MDIzLjM5NjQ4NC82ODY4LjAwMDAwMCwgLTg2
MgorICAgICAgICAxNDYyOTE3NDc2LjIyNzY2OSBNTXVsdGkjRFRaN3FjIE1NdWx0aSNEVFo3cWMt
NC1ERkcgICAgICBpbnN0YWxsQ29kZSAgICAgICAgCisgICAgICAgIDE0NjI5MTc0NzYuMjI3Njc1
IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy00LURGRyAgICAgIG9zckVudHJ5ICAgICAgICAg
ICBhdCBiYyMwCisgICAgICAgIAorICAgICAgICBUaGUgb3V0cHV0IGlzIHVnbHkgYnV0IHVzZWZ1
bC4gV2UgY2FuIG1ha2UgaXQgbGVzcyB1Z2x5IGxhdGVyLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAg
ICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6Zm9yRWFjaENvZGVCbG9jayk6CisgICAgICAgICog
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkV4aXRQcm9m
aWxlOjphZGQpOgorICAgICAgICAqIGRmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVDb21tb24pOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMSklURmluYWxpemVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24pOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q29tcGlsZUFuZFNldEhldXJpc3Rp
Y3MpOgorICAgICAgICAoSlNDOjpMTEludDo6ZW50cnlPU1IpOgorICAgICAgICAoSlNDOjpMTElu
dDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29t
cGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Q29tcGlsYXRpb246OkNvbXBp
bGF0aW9uKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkNvbXBpbGF0aW9uOjpzZXRKZXR0aXNv
blJlYXNvbik6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpDb21waWxhdGlvbjo6ZHVtcCk6Cisg
ICAgICAgIChKU0M6OlByb2ZpbGVyOjpDb21waWxhdGlvbjo6dG9KUyk6CisgICAgICAgICogcHJv
ZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Q29t
cGlsYXRpb246OnVpZCk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHA6
CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKToK
KyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkRhdGFiYXNlOjpub3RpZnlEZXN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFzZTo6YWRkQ29tcGlsYXRpb24pOgorICAgICAg
ICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OnRvSlMpOgorICAgICAgICAoSlNDOjpQcm9maWxl
cjo6RGF0YWJhc2U6OnJlZ2lzdGVyVG9TYXZlQXRFeGl0KToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkRhdGFiYXNlOjpsb2dFdmVudCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFz
ZTo6YWRkRGF0YWJhc2VUb0F0RXhpdCk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJEYXRh
YmFzZS5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6UHJvZmlsZXI6OkV2ZW50OjpkdW1wKToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkV2ZW50Ojp0b0pTKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckV2ZW50Lmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RXZlbnQ6OkV2ZW50KToKKyAgICAgICAgKEpT
Qzo6UHJvZmlsZXI6OkV2ZW50OjpvcGVyYXRvciBib29sKToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkV2ZW50Ojp0aW1lKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkV2ZW50OjpieXRlY29k
ZXMpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RXZlbnQ6OmNvbXBpbGF0aW9uKToKKyAgICAg
ICAgKEpTQzo6UHJvZmlsZXI6OkV2ZW50OjpzdW1tYXJ5KToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkV2ZW50OjpkZXRhaWwpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpVSUQ6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlByb2ZpbGVyOjpVSUQ6OmR1bXApOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjp0
b0pTKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlclVJRC5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6UHJvZmlsZXI6OlVJRDo6VUlEKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OlVJRDo6
ZnJvbUludCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpVSUQ6OnRvSW50KToKKyAgICAgICAg
KEpTQzo6UHJvZmlsZXI6OlVJRDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVy
OjpVSUQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjpvcGVyYXRv
ciBib29sKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OlVJRDo6aXNIYXNoVGFibGVEZWxldGVk
VmFsdWUpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6UHJvZmlsZXI6OlVJREhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlE
SGFzaDo6ZXF1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVj
dXRhYmxlOjppbnN0YWxsQ29kZSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAo
SlNDOjpWTTo6Ynl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk6CisgICAgICAgIChKU0M6OlZNOjpz
aGFkb3dDaGlja2VuKToKKyAgICAgICAgKiBydW50aW1lL1ZNSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpWTTo6c2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06Omxv
Z0V2ZW50KToKKwogMjAxNi0wNS0xMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBbSlNDXSBGVEwgY2FuIHByb2R1Y2UgR2V0QnlWYWwgbm9kZXMgd2l0
aG91dCBwcm9wZXIgYm91bmRzIGNoZWNraW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTU5NywxMiArNTk3LDE0IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQu
Y3BwCiAgICAgcHJvZmlsZXIvUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmNwcAogICAgIHByb2Zp
bGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCisgICAgcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHAK
ICAgICBwcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmNwcAogICAgIHByb2ZpbGVyL1By
b2ZpbGVyT1NSRXhpdC5jcHAKICAgICBwcm9maWxlci9Qcm9maWxlck9TUkV4aXRTaXRlLmNwcAog
ICAgIHByb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmNwcAogICAgIHByb2ZpbGVyL1Byb2ZpbGVyT3Jp
Z2luU3RhY2suY3BwCiAgICAgcHJvZmlsZXIvUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAK
KyAgICBwcm9maWxlci9Qcm9maWxlclVJRC5jcHAKIAogICAgIHJ1bnRpbWUvQXJnTGlzdC5jcHAK
ICAgICBydW50aW1lL0FycmF5QnVmZmVyLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTky
LDYgKzE5OTIsMTAgQEAKIAkJREMxN0U4MUExQzlDOTFFOTAwOEE2QUIzIC8qIENDYWxsSGVscGVy
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzE3
RTgxNjFDOUM4MDJCMDA4QTZBQjMgLyogQ0NhbGxIZWxwZXJzLmNwcCAqLzsgfTsKIAkJREMyMTQz
MDcxQ0EzMkU1NTAwMEE4ODY5IC8qIElDU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRz
LmggKi87IH07CiAJCURDMjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJF
NTIwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAqLzsgfTsKKwkJREM2MDVCNUQxQ0UyNkVBMDAwNTkz
NzE4IC8qIFByb2ZpbGVyRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gREM2MDVCNTkxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQu
Y3BwICovOyB9OworCQlEQzYwNUI1RTFDRTI2RUEyMDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM2MDVCNUEx
Q0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCAqLzsgfTsKKwkJREM2MDVCNUYxQ0Uy
NkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxl
clVJRC5jcHAgKi87IH07CisJCURDNjA1QjYwMUNFMjZFQTcwMDU5MzcxOCAvKiBQcm9maWxlclVJ
RC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM2MDVC
NUMxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmggKi87IH07CiAJCURDNzk5NzgzMUNE
RTlGQTAwMDRENEEwOSAvKiBUYWdSZWdpc3RlcnNNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzc5OTc4MjFDREU5RjlFMDA0RDRBMDkgLyogVGFn
UmVnaXN0ZXJzTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCURDNzk5Nzg0MUNERTlGQTIwMDRENEEwOSAvKiBUYWdSZWdpc3RlcnNNb2RlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNzk5Nzgx
MUNERTlGOUUwMDRENEEwOSAvKiBUYWdSZWdpc3RlcnNNb2RlLmNwcCAqLzsgfTsKIAkJRENGM0Q1
NjkxQ0QyOTQ2RDAwM0Q1QzY1IC8qIExhenlDbGFzc1N0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0YzRDU2NDFDRDI5NDY4MDAzRDVD
NjUgLyogTGF6eUNsYXNzU3RydWN0dXJlLmNwcCAqLzsgfTsKQEAgLTQyMDYsNiArNDIxMCwxMCBA
QAogCQlEQzE3RTgxNjFDOUM4MDJCMDA4QTZBQjMgLyogQ0NhbGxIZWxwZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENDYWxsSGVscGVycy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElDU3RhdHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzIxNDMwNjFDQTMyRTUyMDAwQTg4NjkgLyog
SUNTdGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQ
cm9maWxlckV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBy
b2ZpbGVyRXZlbnQuY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9m
aWxlckV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyRXZl
bnQuaDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJREM2MDVCNUIxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyVUlELmNwcDsgcGF0
aCA9IHByb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJREM2MDVCNUMxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyVUlELmg7IHBhdGggPSBwcm9maWxlci9Qcm9m
aWxlclVJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzc5OTc4MTFDREU5RjlF
MDA0RDRBMDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUYWdSZWdpc3RlcnNNb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJREM3OTk3ODIxQ0RFOUY5RTAwNEQ0QTA5IC8qIFRhZ1JlZ2lzdGVyc01vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFnUmVnaXN0ZXJzTW9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQ0YzRDU2NDFDRDI5NDY4MDAzRDVDNjUgLyogTGF6
eUNsYXNzU3RydWN0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExhenlDbGFzc1N0cnVjdHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
NDQ1LDYgKzY0NTMsOCBAQAogCQkJCTBGRjcyOTlCMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxl
ckNvbXBpbGVkQnl0ZWNvZGUuaCAqLywKIAkJCQkwRkY3Mjk5QzE2NkFEMzQ3MDAwRjVCQTMgLyog
UHJvZmlsZXJEYXRhYmFzZS5jcHAgKi8sCiAJCQkJMEZGNzI5OUQxNjZBRDM0NzAwMEY1QkEzIC8q
IFByb2ZpbGVyRGF0YWJhc2UuaCAqLywKKwkJCQlEQzYwNUI1OTFDRTI2RTk4MDA1OTM3MTggLyog
UHJvZmlsZXJFdmVudC5jcHAgKi8sCisJCQkJREM2MDVCNUExQ0UyNkU5ODAwNTkzNzE4IC8qIFBy
b2ZpbGVyRXZlbnQuaCAqLywKIAkJCQkwRkY3Mjk5RTE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmls
ZXJFeGVjdXRpb25Db3VudGVyLmggKi8sCiAJCQkJMEYxOTBDQUExODlEODJGNjAwMEFFNUYwIC8q
IFByb2ZpbGVySmV0dGlzb25SZWFzb24uY3BwICovLAogCQkJCTBGMTkwQ0FCMTg5RDgyRjYwMDBB
RTVGMCAvKiBQcm9maWxlckpldHRpc29uUmVhc29uLmggKi8sCkBAIC02NDU4LDYgKzY0NjgsOCBA
QAogCQkJCTBGQjEwNThBMTY3NTQ4MkUwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXRTaXRlLmgg
Ki8sCiAJCQkJMEYxMzkxMjYxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRl
Y29kZXMuY3BwICovLAogCQkJCTBGMTM5MTI3MTY3NzFDMzAwMDlDQ0IwNyAvKiBQcm9maWxlclBy
b2ZpbGVkQnl0ZWNvZGVzLmggKi8sCisJCQkJREM2MDVCNUIxQ0UyNkU5ODAwNTkzNzE4IC8qIFBy
b2ZpbGVyVUlELmNwcCAqLywKKwkJCQlEQzYwNUI1QzFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmls
ZXJVSUQuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gcHJvZmlsZXI7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtNzc1Nyw2ICs3NzY5LDcgQEAKIAkJCQk3MEI3OTE5QzFDMDI0QTQ5MDAy
NDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
MkEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2
RkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJREM2MDVCNjAxQ0UyNkVBNzAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJCNjZGRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5
UHJvdG90eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkYxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTVHlwZWRBcnJheXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNEM0NTdDMUJDNzI0MTEw
MDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApA
QCAtNzc3Miw2ICs3Nzg1LDcgQEAKIAkJCQk4NkUzQzYxNTE2N0JBQkQ3MDA2RDc2MEEgLyogSlNW
aXJ0dWFsTWFjaGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2MUQxNjdCQUJFRTAwNkQ3
NjBBIC8qIEpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0I5
OEQxMzcxQjYwQ0Q2MjAwMjNCMUE0IC8qIEpTV0FTTU1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3NDgyRTkzMTE2QTdDQUQwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBS
ZWZJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODJCOTMxMTY3MTE0NzAwM0IwNzEy
IC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTIwOCw2
ICs5MjIyLDcgQEAKIAkJCQlBNzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyQjkxNkM1MTREQTA0MEMwMENCQUM4NiAvKiBNYXJr
ZWRBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyRDZGMDgxMzUzOUEyODAwQjAy
RTg2IC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURDNjA1QjVEMUNFMjZF
QTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RDJG
M0RBMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDJENkYxMTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTcwQjc5MTk4MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC05MzQ0LDYgKzkzNTksNyBAQAogCQkJCTcwNUI0MUFGMUE2RTUw
MUUwMDcxNjc1NyAvKiBTeW1ib2xPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzA1QjQx
QjExQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJREM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTcwRUNBNjA3MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJl
Z2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIzMiAv
KiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZBMkMxN0IxN0Q3Q0Y4
NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAy
MDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbkNh
Y2hlLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRJbnN0
cnVjdGlvblN0cmVhbS5oIgorI2luY2x1ZGUgIlZNSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9C
YWdUb0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8
d3RmL1N0cmluZ0V4dHJhcy5oPgpAQCAtMzMxMCw2ICszMzExLDggQEAgdm9pZCBDb2RlQmxvY2s6
OmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aQogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICAgICBV
TlVTRURfUEFSQU0oZGV0YWlsKTsKICNlbmRpZgorICAgIAorICAgIENPREVCTE9DS19MT0dfRVZF
TlQodGhpcywgImpldHRpc29uIiwgKCJkdWUgdG8gIiwgcmVhc29uLCAiLCBjb3VudGluZyA9ICIs
IG1vZGUgPT0gQ291bnRSZW9wdGltaXphdGlvbiwgIiwgZGV0YWlsID0gIiwgcG9pbnRlckR1bXAo
ZGV0YWlsKSkpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQocmVhc29uICE9IFByb2ZpbGVyOjpOb3RK
ZXR0aXNvbmVkKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgJKHJldmlzaW9uIDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNiBAQAogI2lu
Y2x1ZGUgIkxhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVkZSAiT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCi0jaW5jbHVkZSAiUHJvZmlsZXJD
b21waWxhdGlvbi5oIgogI2luY2x1ZGUgIlByb2ZpbGVySmV0dGlzb25SZWFzb24uaCIKICNpbmNs
dWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKQEAgLTE0
MDQsNiArMTQwMyw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCAK
ICAgICB9CiB9CiAKKyNkZWZpbmUgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssIHN1bW1h
cnksIGRldGFpbHMpIFwKKyAgICAoY29kZUJsb2NrLT52bSgpLT5sb2dFdmVudChjb2RlQmxvY2ss
IHN1bW1hcnksIFsmXSAoKSB7IHJldHVybiB0b0NTdHJpbmcgZGV0YWlsczsgfSkpCisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gQ29kZUJsb2NrX2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAkocmV2aXNpb24g
MjAwNjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklU
KQogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAtNDQsNiArNDUsOCBAQCBib29sIEV4
aXRQcm9maWxlOjphZGQoY29uc3QgQ29uY3VycmVudEpJCiB7CiAgICAgQVNTRVJUKHNpdGUuaml0
VHlwZSgpICE9IEV4aXRGcm9tQW55dGhpbmcpOwogCisgICAgQ09ERUJMT0NLX0xPR19FVkVOVChv
d25lciwgImZyZXF1ZW50RXhpdCIsIChzaXRlKSk7CisgICAgCiAgICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VFeGl0UHJvZmlsZSgpKQogICAgICAgICBkYXRhTG9nKHBvaW50ZXJEdW1wKG93bmVyKSwg
IjogQWRkaW5nIGV4aXQgc2l0ZTogIiwgc2l0ZSwgIlxuIik7CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCShyZXZpc2lvbiAyMDA2
MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXpl
Q29tbW9uKCkKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICAKICAgICBpZiAobV9wbGFu
LmNvbXBpbGF0aW9uKQotICAgICAgICBtX3BsYW4udm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5h
ZGRDb21waWxhdGlvbihtX3BsYW4uY29tcGlsYXRpb24pOworICAgICAgICBtX3BsYW4udm0ubV9w
ZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxhdGlvbihtX3BsYW4uY29kZUJsb2NrLCBtX3Bs
YW4uY29tcGlsYXRpb24pOwogICAgIAogICAgIGlmICghbV9wbGFuLndpbGxUcnlUb1RpZXJVcCkK
ICAgICAgICAgbV9wbGFuLmNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCktPm1fZGlkRmFpbEZU
TENvbXBpbGF0aW9uID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsMTMgQEAKICNpbmNsdWRlICJWYWx1ZVByb2Zp
bGUuaCIKICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgeworbmFtZXNwYWNlIEpTQyB7CisKK25hbWVzcGFjZSBQcm9maWxlciB7CitjbGFz
cyBFeGVjdXRpb25Db3VudGVyOworfQorCituYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgR3JhcGg7
CiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjAwNjIzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTcsNyArNTcsNyBAQAogI2luY2x1ZGUgIlN5bWJvbC5oIgogI2luY2x1ZGUgIlR5cGVQcm9m
aWxlckxvZy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlJbmxpbmVzLmgiCi0jaW5jbHVkZSAiVk0u
aCIKKyNpbmNsdWRlICJWTUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAK
ICNpZiBFTkFCTEUoSklUKQpAQCAtMTc2NSw2ICsxNzY1LDcgQEAgZXh0ZXJuICJDIiB2b2lkIEpJ
VF9PUEVSQVRJT04gdHJpZ2dlclJlbwogc3RhdGljIGJvb2wgc2hvdWxkVHJpZ2dlckZUTENvbXBp
bGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVENvZGUqIGppdENvZGUpCiB7CiAgICAgaWYgKGNv
ZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCktPm1fZGlkRmFpbEZUTENvbXBpbGF0aW9uKSB7Cisg
ICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiYWJvcnRGVExDb21waWxlIiwg
KCkpOwogICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICAgICAgZGF0
YUxvZygiRGVmZXJyaW5nIEZUTC1vcHRpbWl6YXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiBpbmRl
ZmluaXRlbHkgYmVjYXVzZSB0aGVyZSB3YXMgYW4gRlRMIGZhaWx1cmUuXG4iKTsKICAgICAgICAg
aml0Q29kZS0+ZG9udE9wdGltaXplQW55dGltZVNvb24oY29kZUJsb2NrKTsKQEAgLTE3NzMsNiAr
MTc3NCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFRyaWdnZXJGVExDb21waWxlKENvZGUKIAogICAg
IGlmICghY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpCiAgICAgICAgICYmICFq
aXRDb2RlLT5jaGVja0lmT3B0aW1pemF0aW9uVGhyZXNob2xkUmVhY2hlZChjb2RlQmxvY2spKSB7
CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlGVExDb21waWxl
IiwgKCJjb3VudGVyID0gIiwgaml0Q29kZS0+dGllclVwQ291bnRlcikpOwogICAgICAgICBpZiAo
T3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICAgICAgZGF0YUxvZygiQ2hvb3Npbmcgbm90
IHRvIEZUTC1vcHRpbWl6ZSAiLCAqY29kZUJsb2NrLCAiIHlldC5cbiIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xNzkwLDEyICsxNzkyLDE0IEBAIHN0YXRpYyB2b2lkIHRyaWdnZXJGVExS
ZXBsYWNlbWVudENvbXBpbGUKICAgICAgICAgd29ya2xpc3RTdGF0ZSA9IFdvcmtsaXN0OjpOb3RL
bm93bjsKICAgICAKICAgICBpZiAod29ya2xpc3RTdGF0ZSA9PSBXb3JrbGlzdDo6Q29tcGlsaW5n
KSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlGVExDb21w
aWxlIiwgKCJzdGlsbCBjb21waWxpbmciKSk7CiAgICAgICAgIGppdENvZGUtPnNldE9wdGltaXph
dGlvblRocmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJlc3VsdCgKICAgICAgICAgICAgIGNvZGVC
bG9jaywgQ29tcGlsYXRpb25EZWZlcnJlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
CiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgeworICAgICAg
ICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiaGFz
IHJlcGxhY2VtZW50IikpOwogICAgICAgICAvLyBUaGF0J3MgZ3JlYXQsIHdlJ3ZlIGNvbXBpbGVk
IHRoZSBjb2RlIC0gbmV4dCB0aW1lIHdlIGNhbGwgdGhpcyBmdW5jdGlvbiwKICAgICAgICAgLy8g
d2UnbGwgZW50ZXIgdGhhdCByZXBsYWNlbWVudC4KICAgICAgICAgaml0Q29kZS0+b3B0aW1pemVT
b29uKGNvZGVCbG9jayk7CkBAIC0xODAzLDYgKzE4MDcsNyBAQCBzdGF0aWMgdm9pZCB0cmlnZ2Vy
RlRMUmVwbGFjZW1lbnRDb21waWxlCiAgICAgfQogICAgIAogICAgIGlmICh3b3JrbGlzdFN0YXRl
ID09IFdvcmtsaXN0OjpDb21waWxlZCkgeworICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNv
ZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiY29tcGlsZWQgYW5kIGZhaWxlZCIpKTsKICAg
ICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlIGZpbmlzaGVkIGNvbXBpbGluZywgYnV0IGZhaWxl
ZCBzb21laG93OyBpbiB0aGF0IGNhc2UgdGhlCiAgICAgICAgIC8vIHRocmVzaG9sZHMgd2lsbCBi
ZSBzZXQgYXBwcm9wcmlhdGVseS4KICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkK
QEAgLTE4MTAsNiArMTgxNSw3IEBAIHN0YXRpYyB2b2lkIHRyaWdnZXJGVExSZXBsYWNlbWVudENv
bXBpbGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIENPREVCTE9DS19MT0dfRVZFTlQo
Y29kZUJsb2NrLCAidHJpZ2dlckZUTFJlcGxhY2VtZW50IiwgKCkpOwogICAgIC8vIFdlIG5lZWQg
dG8gY29tcGlsZSB0aGUgY29kZS4KICAgICBjb21waWxlKAogICAgICAgICAqdm0sIGNvZGVCbG9j
ay0+bmV3UmVwbGFjZW1lbnQoKSwgY29kZUJsb2NrLCBGVExNb2RlLCBVSU5UX01BWCwKQEAgLTE4
NDUsMTIgKzE4NTEsMTQgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVyVXBOb3coRXhl
YwogCiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewogICAg
ICAgICBpZiAoaml0Q29kZS0+dGllclVwRW50cnlUcmlnZ2Vycy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwg
KCJyZXBsYWNlbWVudCBpbiBwbGFjZSwgZGVsYXlpbmcgaW5kZWZpbml0ZWx5IikpOwogICAgICAg
ICAgICAgLy8gVGhlcmUgaXMgbm90aGluZyBtb3JlIHdlIGNhbiBkbywgdGhlIG9ubHkgd2F5IHRo
aXMgd2lsbCBiZSBlbnRlcmVkCiAgICAgICAgICAgICAvLyBpcyB0aHJvdWdoIHRoZSBmdW5jdGlv
biBlbnRyeSBwb2ludC4KICAgICAgICAgICAgIGppdENvZGUtPmRvbnRPcHRpbWl6ZUFueXRpbWVT
b29uKGNvZGVCbG9jayk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGppdENvZGUtPm9zckVudHJ5QmxvY2soKSAmJiBqaXRDb2RlLT50aWVyVXBFbnRyeVRyaWdn
ZXJzLnNpemUoKSA9PSAxKSB7CisgICAgICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVC
bG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgidHJpZ2dlciBpbiBwbGFjZSwgZGVsYXlpbmcgaW5k
ZWZpbml0ZWx5IikpOwogICAgICAgICAgICAgLy8gVGhlcmUgaXMgb25seSBvbmUgb3V0ZXIgbG9v
cCBhbmQgaXRzIHRyaWdnZXIgbXVzdCBoYXZlIGJlZW4gc2V0CiAgICAgICAgICAgICAvLyB3aGVu
IHRoZSBwbGFuIGNvbXBsZXRlZC4KICAgICAgICAgICAgIC8vIEV4aXRpbmcgdGhlIGlubmVyIGxv
b3AgaXMgdXNlbGVzcywgd2UgY2FuIGlnbm9yZSB0aGUgY291bnRlciBhbmQgbGVhdmUKQEAgLTE4
NzYsMTIgKzE4ODQsMTQgQEAgc3RhdGljIGNoYXIqIHRpZXJVcENvbW1vbihFeGVjU3RhdGUqIGV4
ZQogCiAgICAgSklUQ29kZSogaml0Q29kZSA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsK
ICAgICBpZiAod29ya2xpc3RTdGF0ZSA9PSBXb3JrbGlzdDo6Q29tcGlsaW5nKSB7CisgICAgICAg
IENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJzdGls
bCBjb21waWxpbmciKSk7CiAgICAgICAgIGppdENvZGUtPnNldE9wdGltaXphdGlvblRocmVzaG9s
ZEJhc2VkT25Db21waWxhdGlvblJlc3VsdCgKICAgICAgICAgICAgIGNvZGVCbG9jaywgQ29tcGls
YXRpb25EZWZlcnJlZCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlm
ICh3b3JrbGlzdFN0YXRlID09IFdvcmtsaXN0OjpDb21waWxlZCkgeworICAgICAgICBDT0RFQkxP
Q0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiY29tcGlsZWQgYW5k
IGZhaWxlZCIpKTsKICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IGNvbXBpbGF0aW9uIGZhaWxl
ZCBhbmQgd2UgYWxyZWFkeSBzZXQgdGhlIHRocmVzaG9sZHMuCiAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJDb2RlIGJsb2NrICIsICpjb2Rl
QmxvY2ssICIgd2FzIGNvbXBpbGVkIGJ1dCBpdCBkb2Vzbid0IGhhdmUgYW4gb3B0aW1pemVkIHJl
cGxhY2VtZW50LlxuIik7CkBAIC0xODkyLDggKzE5MDIsMTAgQEAgc3RhdGljIGNoYXIqIHRpZXJV
cENvbW1vbihFeGVjU3RhdGUqIGV4ZQogICAgIGlmIChvcmlnaW5CeXRlY29kZUluZGV4ID09IG9z
ckVudHJ5Qnl0ZWNvZGVJbmRleCkgewogICAgICAgICB1bnNpZ25lZCBzdHJlYW1JbmRleCA9IGpp
dENvZGUtPmJ5dGVjb2RlSW5kZXhUb1N0cmVhbUluZGV4LmdldChvcmlnaW5CeXRlY29kZUluZGV4
KTsKICAgICAgICAgaWYgKENvZGVCbG9jayogZW50cnlCbG9jayA9IGppdENvZGUtPm9zckVudHJ5
QmxvY2soKSkgewotICAgICAgICAgICAgaWYgKHZvaWQqIGFkZHJlc3MgPSBGVEw6OnByZXBhcmVP
U1JFbnRyeShleGVjLCBjb2RlQmxvY2ssIGVudHJ5QmxvY2ssIG9yaWdpbkJ5dGVjb2RlSW5kZXgs
IHN0cmVhbUluZGV4KSkKKyAgICAgICAgICAgIGlmICh2b2lkKiBhZGRyZXNzID0gRlRMOjpwcmVw
YXJlT1NSRW50cnkoZXhlYywgY29kZUJsb2NrLCBlbnRyeUJsb2NrLCBvcmlnaW5CeXRlY29kZUlu
ZGV4LCBzdHJlYW1JbmRleCkpIHsKKyAgICAgICAgICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5U
KGVudHJ5QmxvY2ssICJvc3JFbnRyeSIsICgiYXQgYmMjIiwgb3JpZ2luQnl0ZWNvZGVJbmRleCkp
OwogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oYWRkcmVzcyk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE5MTEsMTQgKzE5MjMsMTcgQEAg
c3RhdGljIGNoYXIqIHRpZXJVcENvbW1vbihFeGVjU3RhdGUqIGV4ZQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICAgICAgaWYgKGppdENvZGUtPm9zckVudHJ5UmV0cnkgPCBPcHRp
b25zOjpmdGxPU1JFbnRyeVJldHJ5VGhyZXNob2xkKCkpIHsKKyAgICAgICAgICAgIENPREVCTE9D
S19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJhdm9pZGluZyBPU1Ig
ZW50cnkgY29tcGlsZSIpKTsKICAgICAgICAgICAgIGppdENvZGUtPm9zckVudHJ5UmV0cnkrKzsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgfQorICAgIH0gZWxz
ZQorICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5RlRMQ29tcGls
ZSIsICgiYXZvaWRpbmcgcmVwbGFjZW1lbnQgY29tcGlsZSIpKTsKIAogICAgIC8vIEl0J3MgdGlt
ZSB0byB0cnkgdG8gY29tcGlsZSBjb2RlIGZvciBPU1IgZW50cnkuCiAgICAgaWYgKENvZGVCbG9j
ayogZW50cnlCbG9jayA9IGppdENvZGUtPm9zckVudHJ5QmxvY2soKSkgewogICAgICAgICBpZiAo
aml0Q29kZS0+b3NyRW50cnlSZXRyeSA8IE9wdGlvbnM6OmZ0bE9TUkVudHJ5UmV0cnlUaHJlc2hv
bGQoKSkgeworICAgICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxh
eUZUTENvbXBpbGUiLCAoIk9TUiBlbnRyeSBmYWlsZWQsIE9TUiBlbnRyeSB0aHJlc2hvbGQgbm90
IG1ldCIpKTsKICAgICAgICAgICAgIGppdENvZGUtPm9zckVudHJ5UmV0cnkrKzsKICAgICAgICAg
ICAgIGppdENvZGUtPnNldE9wdGltaXphdGlvblRocmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJl
c3VsdCgKICAgICAgICAgICAgICAgICBjb2RlQmxvY2ssIENvbXBpbGF0aW9uRGVmZXJyZWQpOwpA
QCAtMTkyOSw2ICsxOTQ0LDcgQEAgc3RhdGljIGNoYXIqIHRpZXJVcENvbW1vbihFeGVjU3RhdGUq
IGV4ZQogICAgICAgICBlbnRyeUNvZGUtPmNvdW50RW50cnlGYWlsdXJlKCk7CiAgICAgICAgIGlm
IChlbnRyeUNvZGUtPmVudHJ5RmFpbHVyZUNvdW50KCkgPAogICAgICAgICAgICAgT3B0aW9uczo6
ZnRsT1NSRW50cnlGYWlsdXJlQ291bnRGb3JSZW9wdGltaXphdGlvbigpKSB7CisgICAgICAgICAg
ICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiT1NS
IGVudHJ5IGZhaWxlZCIpKTsKICAgICAgICAgICAgIGppdENvZGUtPnNldE9wdGltaXphdGlvblRo
cmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJlc3VsdCgKICAgICAgICAgICAgICAgICBjb2RlQmxv
Y2ssIENvbXBpbGF0aW9uRGVmZXJyZWQpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xOTM2LDYgKzE5NTIsNyBAQCBzdGF0aWMgY2hhciogdGllclVwQ29tbW9uKEV4ZWNTdGF0ZSog
ZXhlCiAKICAgICAgICAgLy8gT1NSIGVudHJ5IGZhaWxlZC4gT2ggbm8hIFRoaXMgaW1wbGllcyB0
aGF0IHdlIG5lZWQgdG8gcmV0cnkuIFdlIHJldHJ5CiAgICAgICAgIC8vIHdpdGhvdXQgZXhwb25l
bnRpYWwgYmFja29mZiBhbmQgd2Ugb25seSBkbyB0aGlzIGZvciB0aGUgZW50cnkgY29kZSBibG9j
ay4KKyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheUZUTENvbXBp
bGUiLCAoIk9TUiBlbnRyeSBmYWlsZWQgdG9vIG1hbnkgdGltZXMiKSk7CiAgICAgICAgIHVuc2ln
bmVkIG9zckVudHJ5Qnl0ZWNvZGUgPSBlbnRyeUJsb2NrLT5qaXRDb2RlKCktPmZ0bEZvck9TUkVu
dHJ5KCktPmJ5dGVjb2RlSW5kZXgoKTsKICAgICAgICAgaml0Q29kZS0+Y2xlYXJPU1JFbnRyeUJs
b2NrKCk7CiAgICAgICAgIGppdENvZGUtPm9zckVudHJ5UmV0cnkgPSAwOwpAQCAtMTk2Nyw2ICsx
OTg0LDcgQEAgc3RhdGljIGNoYXIqIHRpZXJVcENvbW1vbihFeGVjU3RhdGUqIGV4ZQogICAgICAg
ICBleGVjLCBjb2RlQmxvY2ssIENvZGVPcmlnaW4ob3NyRW50cnlCeXRlY29kZUluZGV4KSwgc3Ry
ZWFtSW5kZXgsIG11c3RIYW5kbGVWYWx1ZXMpOwogICAgIENvZGVCbG9jayogcmVwbGFjZW1lbnRD
b2RlQmxvY2sgPSBjb2RlQmxvY2stPm5ld1JlcGxhY2VtZW50KCk7CiAKKyAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgInRyaWdnZXJGVExPU1IiLCAoKSk7CiAgICAgQ29tcGlsYXRp
b25SZXN1bHQgZm9yRW50cnlSZXN1bHQgPSBjb21waWxlKAogICAgICAgICAqdm0sIHJlcGxhY2Vt
ZW50Q29kZUJsb2NrLCBjb2RlQmxvY2ssIEZUTEZvck9TUkVudHJ5TW9kZSwgb3NyRW50cnlCeXRl
Y29kZUluZGV4LAogICAgICAgICBtdXN0SGFuZGxlVmFsdWVzLCBUb0ZUTEZvck9TUkVudHJ5RGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjcmVhdGUodHJpZ2dlckFkZHJlc3MpKTsKQEAgLTE5
NzUsMTEgKzE5OTMsMTMgQEAgc3RhdGljIGNoYXIqIHRpZXJVcENvbW1vbihFeGVjU3RhdGUqIGV4
ZQogICAgICAgICB0cmlnZ2VyRlRMUmVwbGFjZW1lbnRDb21waWxlKHZtLCBjb2RlQmxvY2ssIGpp
dENvZGUpOwogCiAgICAgaWYgKGZvckVudHJ5UmVzdWx0ICE9IENvbXBpbGF0aW9uU3VjY2Vzc2Z1
bCkgeworICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5RlRMQ29t
cGlsZSIsICgiT1NSIGVjb21waWxhdGlvbiBub3Qgc3VjY2Vzc2Z1bCIpKTsKICAgICAgICAgaml0
Q29kZS0+c2V0T3B0aW1pemF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0KAog
ICAgICAgICAgICAgY29kZUJsb2NrLCBDb21waWxhdGlvbkRlZmVycmVkKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQotCisgICAgCisgICAgQ09ERUJMT0NLX0xPR19FVkVOVChqaXRD
b2RlLT5vc3JFbnRyeUJsb2NrKCksICJvc3JFbnRyeSIsICgiYXQgYmMjIiwgb3JpZ2luQnl0ZWNv
ZGVJbmRleCkpOwogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgZm9yLWVudHJ5IGNvbXBp
bGUgYWxyZWFkeSBzdWNjZWVkZWQuIEluIHRoYXQgY2FzZSBPU1IKICAgICAvLyBlbnRyeSB3aWxs
IHN1Y2NlZWQgdW5sZXNzIHdlIHJhbiBvdXQgb2Ygc3RhY2suIEl0J3Mgbm90IGNsZWFyIHdoYXQg
d2Ugc2hvdWxkIGRvLgogICAgIC8vIFdlIHNpZ25hbCB0byB0cnkgYWdhaW4gYWZ0ZXIgYSB3aGls
ZSBpZiB0aGF0IGhhcHBlbnMuCkBAIC0yMDE2LDggKzIwMzYsMTAgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIHRyaWdnZXJUaWVyVXBOb3dJbkxvbwogICAgICAgICB0cmlnZ2VyRlRMUmVwbGFjZW1lbnRD
b21waWxlKHZtLCBjb2RlQmxvY2ssIGppdENvZGUpOwogCiAgICAgLy8gU2luY2Ugd2UgY2Fubm90
IE9TUiBFbnRlciBoZXJlLCB0aGUgZGVmYXVsdCAib3B0aW1pemVTb29uKCkiIGlzIG5vdCB1c2Vm
dWwuCi0gICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkKKyAgICBp
ZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7CisgICAgICAgIENPREVC
TE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJPU1IgaW4gbG9v
cCBmYWlsZWQsIGRlZmVycmluZyIpKTsKICAgICAgICAgaml0Q29kZS0+c2V0T3B0aW1pemF0aW9u
VGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0KGNvZGVCbG9jaywgQ29tcGlsYXRpb25E
ZWZlcnJlZCk7CisgICAgfQogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIHRyaWdnZXJPU1JFbnRy
eU5vdyhFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCShyZXZpc2lvbiAy
MDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFs
aXplRnVuY3Rpb24oKQogICAgIG1fcGxhbi5jb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSk7
CiAKICAgICBpZiAobV9wbGFuLmNvbXBpbGF0aW9uKQotICAgICAgICBtX3BsYW4udm0ubV9wZXJC
eXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxhdGlvbihtX3BsYW4uY29tcGlsYXRpb24pOworICAg
ICAgICBtX3BsYW4udm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxhdGlvbihtX3Bs
YW4uY29kZUJsb2NrLCBtX3BsYW4uY29tcGlsYXRpb24pOwogICAgIAogICAgIHJldHVybiB0cnVl
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjAwNjIzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw2ICs4MSwxMCBAQCBKSVQ6OkpJVChWTSogdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogewog
fQogCitKSVQ6On5KSVQoKQoreworfQorCiAjaWYgRU5BQkxFKERGR19KSVQpCiB2b2lkIEpJVDo6
ZW1pdEVudGVyT3B0aW1pemF0aW9uQ2hlY2soKQogewpAQCAtNzM4LDcgKzc0Miw3IEBAIENvbXBp
bGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKICAgICBpZiAobV9jb21waWxhdGlv
bikgewogICAgICAgICBpZiAoT3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVy
KCkpCiAgICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+cmVwb3J0VG9Qcm9maWxlcihtX2NvbXBp
bGF0aW9uLmdldCgpLCBwYXRjaEJ1ZmZlcik7Ci0gICAgICAgIG1fdm0tPm1fcGVyQnl0ZWNvZGVQ
cm9maWxlci0+YWRkQ29tcGlsYXRpb24obV9jb21waWxhdGlvbik7CisgICAgICAgIG1fdm0tPm1f
cGVyQnl0ZWNvZGVQcm9maWxlci0+YWRkQ29tcGlsYXRpb24obV9jb2RlQmxvY2ssIG1fY29tcGls
YXRpb24pOwogICAgIH0KIAogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5kaWRC
dWlsZE1hcHBpbmcoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMjAw
NjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjU3LDYgKzI1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgSklUKFZNKiwgQ29kZUJsb2NrKiA9IDApOworICAgICAgICB+SklUKCk7CiAKICAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZU1haW5QYXNzKCk7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBp
bGVMaW5rUGFzcygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3Nl
bWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlz
YXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxp
bmtCdWZmZXIuaCIKKyNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCiAjaW5jbHVkZSA8
d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDA2MjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjM1LDYgKzEyMzUsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJB
VElPTiBvcGVyYXRpCiAgICAgfQogCiAgICAgaWYgKCFjb2RlQmxvY2stPmNoZWNrSWZPcHRpbWl6
YXRpb25UaHJlc2hvbGRSZWFjaGVkKCkpIHsKKyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChj
b2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoImNvdW50ZXIgPSAiLCBjb2RlQmxvY2st
PmppdEV4ZWN1dGVDb3VudGVyKCkpKTsKICAgICAgICAgY29kZUJsb2NrLT51cGRhdGVBbGxQcmVk
aWN0aW9ucygpOwogICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICAg
ICAgZGF0YUxvZygiQ2hvb3Npbmcgbm90IHRvIG9wdGltaXplICIsICpjb2RlQmxvY2ssICIgeWV0
LCBiZWNhdXNlIHRoZSB0aHJlc2hvbGQgaGFzbid0IGJlZW4gcmVhY2hlZC5cbiIpOwpAQCAtMTI0
MiwxNyArMTI0MywyMCBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRp
CiAgICAgfQogICAgIAogICAgIGlmICh2bS5lbmFibGVkUHJvZmlsZXIoKSkgeworICAgICAgICBD
T0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgicHJv
ZmlsZXIgaXMgZW5hYmxlZCIpKTsKICAgICAgICAgdXBkYXRlQWxsUHJlZGljdGlvbnNBbmRPcHRp
bWl6ZUFmdGVyV2FybVVwKGNvZGVCbG9jayk7CiAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
MCwgMCk7CiAgICAgfQogCiAgICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKICAgICBpZiAoZGVidWdnZXIgJiYgKGRlYnVnZ2VyLT5p
c1N0ZXBwaW5nKCkgfHwgY29kZUJsb2NrLT5iYXNlbGluZUFsdGVybmF0aXZlKCktPmhhc0RlYnVn
Z2VyUmVxdWVzdHMoKSkpIHsKKyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ss
ICJkZWxheU9wdGltaXplVG9ERkciLCAoImRlYnVnZ2VyIGlzIHN0ZXBwaW5nIG9yIGhhcyByZXF1
ZXN0cyIpKTsKICAgICAgICAgdXBkYXRlQWxsUHJlZGljdGlvbnNBbmRPcHRpbWl6ZUFmdGVyV2Fy
bVVwKGNvZGVCbG9jayk7CiAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwgMCk7CiAgICAg
fQogCiAgICAgaWYgKGNvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQpIHsKKyAgICAg
ICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAo
InNob3VsZCBhbHdheXMgYmUgaW5saW5lZCIpKTsKICAgICAgICAgdXBkYXRlQWxsUHJlZGljdGlv
bnNBbmRPcHRpbWl6ZUFmdGVyV2FybVVwKGNvZGVCbG9jayk7CiAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJDaG9vc2luZyBub3QgdG8gb3B0
aW1pemUgIiwgKmNvZGVCbG9jaywgIiB5ZXQsIGJlY2F1c2UgbV9zaG91bGRBbHdheXNCZUlubGlu
ZWQgPT0gdHJ1ZS5cbiIpOwpAQCAtMTI5Myw2ICsxMjk3LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICB3b3JrbGlzdFN0YXRlID0gREZHOjpXb3Jr
bGlzdDo6Tm90S25vd247CiAKICAgICBpZiAod29ya2xpc3RTdGF0ZSA9PSBERkc6OldvcmtsaXN0
OjpDb21waWxpbmcpIHsKKyAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJk
ZWxheU9wdGltaXplVG9ERkciLCAoImNvbXBpbGluZyIpKTsKICAgICAgICAgLy8gV2UgY2Fubm90
IGJlIGluIHRoZSBwcm9jZXNzIG9mIGFzeW5jaHJvbm91cyBjb21waWxhdGlvbiBhbmQgYWxzbyBo
YXZlIGFuIG9wdGltaXplZAogICAgICAgICAvLyByZXBsYWNlbWVudC4KICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSk7CkBAIC0xMzA3
LDYgKzEzMTIsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAg
ICAgICAgIC8vIENvZGVCbG9jazo6c2V0T3B0aW1pemF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBp
bGF0aW9uUmVzdWx0KCkgYW5kIHdlIGhhdmUKICAgICAgICAgLy8gbm90aGluZyBsZWZ0IHRvIGRv
LgogICAgICAgICBpZiAoIWNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewor
ICAgICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXpl
VG9ERkciLCAoImNvbXBpbGVkIGFuZCBmYWlsZWQiKSk7CiAgICAgICAgICAgICBjb2RlQmxvY2st
PnVwZGF0ZUFsbFByZWRpY3Rpb25zKCk7CiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9z
ZU9TUigpKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkNvZGUgYmxvY2sgIiwgKmNvZGVCbG9j
aywgIiB3YXMgY29tcGlsZWQgYnV0IGl0IGRvZXNuJ3QgaGF2ZSBhbiBvcHRpbWl6ZWQgcmVwbGFj
ZW1lbnQuXG4iKTsKQEAgLTEzMjksNiArMTMzNSw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgLy8gc2hvdWxkUmVvcHRpbWl6ZUZyb21Mb29wTm93
KCkgdG8gYWx3YXlzIHJldHVybiB0cnVlLiBCdXQgd2UgbWFrZSBpdCBkbyBzb21lCiAgICAgICAg
IC8vIGFkZGl0aW9uYWwgY2hlY2tpbmcgYW55d2F5LCB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiBy
ZWNvbXBpbGF0aW9uIHRocmFzaGluZy4KICAgICAgICAgaWYgKGNvZGVCbG9jay0+cmVwbGFjZW1l
bnQoKS0+c2hvdWxkUmVvcHRpbWl6ZUZyb21Mb29wTm93KCkpIHsKKyAgICAgICAgICAgIENPREVC
TE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJzaG91bGQg
cmVvcHRpbWl6ZSBmcm9tIGxvb3Agbm93IikpOwogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAg
ICAgICJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICIsICpjb2RlQmxvY2ssCkBAIC0xMzM5
LDYgKzEzNDYsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIWNvZGVCbG9jay0+c2hvdWxkT3B0
aW1pemVOb3coKSkgeworICAgICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ss
ICJkZWxheU9wdGltaXplVG9ERkciLCAoImluc3VmZmljaWVudCBwcm9maWxpbmciKSk7CiAgICAg
ICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7CiAgICAgICAgICAgICAgICAgZGF0
YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkRlbGF5aW5nIG9wdGltaXphdGlvbiBmb3IgIiwg
KmNvZGVCbG9jaywKQEAgLTEzNjksMTQgKzEzNzcsMTcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICAgICAgdm0sIHJlcGxhY2VtZW50Q29kZUJsb2Nr
LCBudWxscHRyLCBERkc6OkRGR01vZGUsIGJ5dGVjb2RlSW5kZXgsCiAgICAgICAgICAgICBtdXN0
SGFuZGxlVmFsdWVzLCBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6Y3JlYXRl
KCkpOwogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBDb21waWxhdGlvblN1Y2Nlc3Nm
dWwpCisgICAgICAgIGlmIChyZXN1bHQgIT0gQ29tcGlsYXRpb25TdWNjZXNzZnVsKSB7CisgICAg
ICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RG
RyIsICgiY29tcGlsYXRpb24gZmFpbGVkIikpOwogICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJl
c3VsdCgwLCAwKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICBDb2RlQmxvY2sqIG9wdGlt
aXplZENvZGVCbG9jayA9IGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKTsKICAgICBBU1NFUlQoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKG9wdGltaXplZENvZGVCbG9jay0+aml0VHlwZSgpKSk7CiAg
ICAgCiAgICAgaWYgKHZvaWQqIGRhdGFCdWZmZXIgPSBERkc6OnByZXBhcmVPU1JFbnRyeShleGVj
LCBvcHRpbWl6ZWRDb2RlQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKSB7CisgICAgICAgIENPREVCTE9D
S19MT0dfRVZFTlQob3B0aW1pemVkQ29kZUJsb2NrLCAib3NyRW50cnkiLCAoImF0IGJjIyIsIGJ5
dGVjb2RlSW5kZXgpKTsKICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAg
ICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAiUGVyZm9ybWluZyBPU1IgIiwgKmNv
ZGVCbG9jaywgIiAtPiAiLCAqb3B0aW1pemVkQ29kZUJsb2NrLCAiLlxuIik7CkBAIC0xNDA2LDYg
KzE0MTcsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAg
Ly8gcmlnaHQgbm93LiBTbywgd2Ugb25seSB0cmlnZ2VyIHJlb3B0aW1pemF0aW9uIG9ubHkgdXBv
biB0aGUgbW9yZSBjb25zZXJ2YXRpdmUgKG5vbi1sb29wKQogICAgIC8vIHJlb3B0aW1pemF0aW9u
IHRyaWdnZXIuCiAgICAgaWYgKG9wdGltaXplZENvZGVCbG9jay0+c2hvdWxkUmVvcHRpbWl6ZU5v
dygpKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlPcHRp
bWl6ZVRvREZHIiwgKCJzaG91bGQgcmVvcHRpbWl6ZSBub3ciKSk7CiAgICAgICAgIGlmIChPcHRp
b25zOjp2ZXJib3NlT1NSKCkpIHsKICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAg
ICAgIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiAtPiAiLApA
QCAtMTQxOSw2ICsxNDMxLDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aQogICAgIC8vIGxvbmdlciBhbmQgdGhlbiB0cnkgYWdhaW4uCiAgICAgY29kZUJsb2NrLT5v
cHRpbWl6ZUFmdGVyV2FybVVwKCk7CiAgICAgCisgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2Rl
QmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoIk9TUiBmYWlsZWQiKSk7CiAgICAgcmV0dXJu
IGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMDA2MjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTksNiArMzE5LDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUFuZFNldEhldXJp
c3RpY3MoQwogICAgIGNvZGVCbG9jay0+dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlZGljdGlvbnMo
KTsKIAogICAgIGlmICghY29kZUJsb2NrLT5jaGVja0lmSklUVGhyZXNob2xkUmVhY2hlZCgpKSB7
CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlKSVRDb21waWxl
IiwgKCJ0aHJlc2hvbGQgbm90IHJlYWNoZWQsIGNvdW50ZXIgPSAiLCBjb2RlQmxvY2stPmxsaW50
RXhlY3V0ZUNvdW50ZXIoKSkpOwogICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQog
ICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBKSVQgdGhyZXNob2xkIHNob3VsZCBiZSBsaWZ0ZWQu
XG4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzM1LDYgKzMzNiw3IEBAIGlubGluZSBi
b29sIGppdENvbXBpbGVBbmRTZXRIZXVyaXN0aWNzKEMKICAgICAgICAgQ29tcGlsYXRpb25SZXN1
bHQgcmVzdWx0ID0gSklUOjpjb21waWxlKCZ2bSwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNh
bkZhaWwpOwogICAgICAgICBzd2l0Y2ggKHJlc3VsdCkgewogICAgICAgICBjYXNlIENvbXBpbGF0
aW9uRmFpbGVkOgorICAgICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJk
ZWxheUpJVENvbXBpbGUiLCAoImNvbXBpbGF0aW9uIGZhaWxlZCIpKTsKICAgICAgICAgICAgIGlm
IChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBK
SVQgY29tcGlsYXRpb24gZmFpbGVkLlxuIik7CiAgICAgICAgICAgICBjb2RlQmxvY2stPmRvbnRK
SVRBbnl0aW1lU29vbigpOwpAQCAtMzcyLDYgKzM3NCw4IEBAIHN0YXRpYyBTbG93UGF0aFJldHVy
blR5cGUgZW50cnlPU1IoRXhlY1MKICAgICBpZiAoIWppdENvbXBpbGVBbmRTZXRIZXVyaXN0aWNz
KGNvZGVCbG9jaywgZXhlYykpCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgMCk7CiAgICAg
CisgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJPU1IgZW50cnkiLCAoImluIHBy
b2xvZ3VlIikpOworICAgIAogICAgIGlmIChraW5kID09IFByb2xvZ3VlKQogICAgICAgICBMTElO
VF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5leGVjdXRhYmxlQWRkcmVzcygpLCAw
KTsKICAgICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsKQEAgLTQyOSw2ICs0MzMsOCBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChsb29wX29zcikKICAgICBpZiAoIWppdENvbXBpbGVBbmRTZXRI
ZXVyaXN0aWNzKGNvZGVCbG9jaywgZXhlYykpCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwg
MCk7CiAgICAgCisgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJvc3JFbnRyeSIs
ICgiYXQgYmMjIiwgcGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKwog
ICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7
CiAgICAgCiAgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gbWFwOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBp
bGF0aW9uLmNwcAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQyLDYgKzQyLDcgQEAgQ29tcGlsYXRpb246OkNvbXBpbGF0aW9uKEJ5dGVjb2Rlcyog
Ynl0ZQogICAgICwgbV9udW1JbmxpbmVkR2V0QnlJZHMoMCkKICAgICAsIG1fbnVtSW5saW5lZFB1
dEJ5SWRzKDApCiAgICAgLCBtX251bUlubGluZWRDYWxscygwKQorICAgICwgbV91aWQoVUlEOjpj
cmVhdGUoKSkKIHsKIH0KIApAQCAtMTA2LDYgKzEwNywxMSBAQCB2b2lkIENvbXBpbGF0aW9uOjpz
ZXRKZXR0aXNvblJlYXNvbihKZXR0CiAgICAgICAgIG1fYWRkaXRpb25hbEpldHRpc29uUmVhc29u
ID0gQ1N0cmluZygpOwogfQogCit2b2lkIENvbXBpbGF0aW9uOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCJDb21wIiwgbV91aWQpOworfQorCiBKU1ZhbHVl
IENvbXBpbGF0aW9uOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBKU09iamVj
dCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CkBAIC0xNDksNiArMTU1LDgg
QEAgSlNWYWx1ZSBDb21waWxhdGlvbjo6dG9KUyhFeGVjU3RhdGUqIGV4ZQogICAgIGlmICghbV9h
ZGRpdGlvbmFsSmV0dGlzb25SZWFzb24uaXNOdWxsKCkpCiAgICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hZGRpdGlvbmFsSmV0dGlzb25S
ZWFzb24sIGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjgobV9hZGRpdGlvbmFsSmV0dGlz
b25SZWFzb24pKSk7CiAgICAgCisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnVpZCwgbV91aWQudG9KUyhleGVjKSk7CisgICAgCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyQ29tcGlsYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJQcm9maWxl
ck9TUkV4aXRTaXRlLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJPcmlnaW5TdGFjay5oIgogI2luY2x1
ZGUgIlByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuaCIKKyNpbmNsdWRlICJQcm9maWxlclVJRC5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1NlZ21lbnRlZFZl
Y3Rvci5oPgogCkBAIC03NSw2ICs3Niw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldEpl
dHRpc29uUmVhc29uKEpldHRpc29uUmVhc29uLCBjb25zdCBGaXJlRGV0YWlsKik7CiAgICAgCisg
ICAgVUlEIHVpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdWlkOyB9CisgICAgCisgICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0
OwogICAgIAogcHJpdmF0ZToKQEAgLTkwLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX251bUlubGluZWRHZXRCeUlkczsKICAgICB1bnNpZ25lZCBtX251bUlubGluZWRQdXRCeUlk
czsKICAgICB1bnNpZ25lZCBtX251bUlubGluZWRDYWxsczsKKyAgICBVSUQgbV91aWQ7CiB9Owog
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UHJvZmlsZXIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDIw
MDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
SlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKIApAQCAtNTgsNyArNTksMTEgQEAgRGF0YWJhc2U6
On5EYXRhYmFzZSgpCiBCeXRlY29kZXMqIERhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNGb3IoQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKLSAg
ICAKKyAgICByZXR1cm4gZW5zdXJlQnl0ZWNvZGVzRm9yKGxvY2tlciwgY29kZUJsb2NrKTsKK30K
KworQnl0ZWNvZGVzKiBEYXRhYmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKGNvbnN0IExvY2tIb2xk
ZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKICAgICBjb2RlQmxvY2sgPSBjb2RlQmxvY2st
PmJhc2VsaW5lVmVyc2lvbigpOwogICAgIAogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgQnl0ZWNv
ZGVzKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2J5dGVjb2Rlc01hcC5maW5kKGNvZGVCbG9jayk7CkBA
IC03OCwxMyArODMsMTggQEAgdm9pZCBEYXRhYmFzZTo6bm90aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJs
bwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgCiAgICAgbV9ieXRlY29kZXNN
YXAucmVtb3ZlKGNvZGVCbG9jayk7CisgICAgbV9jb21waWxhdGlvbk1hcC5yZW1vdmUoY29kZUJs
b2NrKTsKIH0KIAotdm9pZCBEYXRhYmFzZTo6YWRkQ29tcGlsYXRpb24oUGFzc1JlZlB0cjxDb21w
aWxhdGlvbj4gY29tcGlsYXRpb24pCit2b2lkIERhdGFiYXNlOjphZGRDb21waWxhdGlvbihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgUGFzc1JlZlB0cjxDb21waWxhdGlvbj4gcGFzc2VkQ29tcGlsYXRp
b24pCiB7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICBBU1NFUlQoIWlzQ29t
cGlsYXRpb25UaHJlYWQoKSk7CisKKyAgICBSZWZQdHI8Q29tcGlsYXRpb24+IGNvbXBpbGF0aW9u
ID0gcGFzc2VkQ29tcGlsYXRpb247CiAgICAgCiAgICAgbV9jb21waWxhdGlvbnMuYXBwZW5kKGNv
bXBpbGF0aW9uKTsKKyAgICBtX2NvbXBpbGF0aW9uTWFwLnNldChjb2RlQmxvY2ssIGNvbXBpbGF0
aW9uKTsKIH0KIAogSlNWYWx1ZSBEYXRhYmFzZTo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CkBAIC0xMDEsNiArMTExLDExIEBAIEpTVmFsdWUgRGF0YWJhc2U6OnRvSlMoRXhlY1N0YXRlKiBl
eGVjKSAKICAgICAgICAgY29tcGlsYXRpb25zLT5wdXREaXJlY3RJbmRleChleGVjLCBpLCBtX2Nv
bXBpbGF0aW9uc1tpXS0+dG9KUyhleGVjKSk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbXBpbGF0aW9ucywgY29tcGlsYXRpb25zKTsK
ICAgICAKKyAgICBKU0FycmF5KiBldmVudHMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDAp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2V2ZW50cy5zaXplKCk7ICsraSkKKyAg
ICAgICAgZXZlbnRzLT5wdXREaXJlY3RJbmRleChleGVjLCBpLCBtX2V2ZW50c1tpXS50b0pTKGV4
ZWMpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZXZlbnRzLCBldmVudHMpOworICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAg
LTEzMyw2ICsxNDgsMTUgQEAgdm9pZCBEYXRhYmFzZTo6cmVnaXN0ZXJUb1NhdmVBdEV4aXQoY29u
cwogICAgIG1fc2hvdWxkU2F2ZUF0RXhpdCA9IHRydWU7CiB9CiAKK3ZvaWQgRGF0YWJhc2U6Omxv
Z0V2ZW50KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyKiBzdW1tYXJ5LCBjb25zdCBD
U3RyaW5nJiBkZXRhaWwpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAK
KyAgICBCeXRlY29kZXMqIGJ5dGVjb2RlcyA9IGVuc3VyZUJ5dGVjb2Rlc0Zvcihsb2NrZXIsIGNv
ZGVCbG9jayk7CisgICAgQ29tcGlsYXRpb24qIGNvbXBpbGF0aW9uID0gbV9jb21waWxhdGlvbk1h
cC5nZXQoY29kZUJsb2NrKTsKKyAgICBtX2V2ZW50cy5hcHBlbmQoRXZlbnQoY3VycmVudFRpbWUo
KSwgYnl0ZWNvZGVzLCBjb21waWxhdGlvbiwgc3VtbWFyeSwgZGV0YWlsKSk7Cit9CisKIHZvaWQg
RGF0YWJhc2U6OmFkZERhdGFiYXNlVG9BdEV4aXQoKQogewogICAgIGlmICgrK2RpZFJlZ2lzdGVy
QXRFeGl0ID09IDEpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckRhdGFiYXNlLmgJKHJldmlzaW9uIDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDEzLCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlByb2ZpbGVyQnl0ZWNvZGVzLmgiCiAjaW5j
bHVkZSAiUHJvZmlsZXJDb21waWxhdGlvbi5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRp
b25LaW5kLmgiCisjaW5jbHVkZSAiUHJvZmlsZXJFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5o
PgpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgQnl0ZWNvZGVzKiBlbnN1cmVCeXRlY29k
ZXNGb3IoQ29kZUJsb2NrKik7CiAgICAgdm9pZCBub3RpZnlEZXN0cnVjdGlvbihDb2RlQmxvY2sq
KTsKICAgICAKLSAgICB2b2lkIGFkZENvbXBpbGF0aW9uKFBhc3NSZWZQdHI8Q29tcGlsYXRpb24+
KTsKKyAgICB2b2lkIGFkZENvbXBpbGF0aW9uKENvZGVCbG9jayosIFBhc3NSZWZQdHI8Q29tcGls
YXRpb24+KTsKICAgICAKICAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YWJhc2UgdG8gYSBKYXZhU2Ny
aXB0IG9iamVjdCB0aGF0IGlzIHN1aXRhYmxlIGZvciBKU09OIHN0cmluZ2lmaWNhdGlvbi4KICAg
ICAvLyBOb3RlIHRoYXQgaXQncyBwcm9iYWJseSBhIGdvb2QgaWRlYSB0byB1c2UgYW4gRXhlY1N0
YXRlKiBhc3NvY2lhdGVkIHdpdGggYSBnbG9iYWwKQEAgLTcwLDcgKzcxLDExIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcmVnaXN0ZXJUb1NhdmVBdEV4aXQoY29uc3QgY2hhciogZmlsZW5hbWUpOwog
ICAgIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbG9nRXZlbnQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IGNoYXIqIHN1bW1hcnksIGNvbnN0IENTdHJpbmcmIGRldGFpbCk7CisgICAg
CiBwcml2YXRlOgorICAgIEJ5dGVjb2RlcyogZW5zdXJlQnl0ZWNvZGVzRm9yKGNvbnN0IExvY2tI
b2xkZXImLCBDb2RlQmxvY2sqKTsKKyAgICAKICAgICB2b2lkIGFkZERhdGFiYXNlVG9BdEV4aXQo
KTsKICAgICB2b2lkIHJlbW92ZURhdGFiYXNlRnJvbUF0RXhpdCgpOwogICAgIHZvaWQgcGVyZm9y
bUF0RXhpdFNhdmUoKSBjb25zdDsKQEAgLTgyLDYgKzg3LDggQEAgcHJpdmF0ZToKICAgICBTZWdt
ZW50ZWRWZWN0b3I8Qnl0ZWNvZGVzPiBtX2J5dGVjb2RlczsKICAgICBIYXNoTWFwPENvZGVCbG9j
ayosIEJ5dGVjb2Rlcyo+IG1fYnl0ZWNvZGVzTWFwOwogICAgIFZlY3RvcjxSZWZQdHI8Q29tcGls
YXRpb24+PiBtX2NvbXBpbGF0aW9uczsKKyAgICBIYXNoTWFwPENvZGVCbG9jayosIFJlZlB0cjxD
b21waWxhdGlvbj4+IG1fY29tcGlsYXRpb25NYXA7CisgICAgVmVjdG9yPEV2ZW50PiBtX2V2ZW50
czsKICAgICBib29sIG1fc2hvdWxkU2F2ZUF0RXhpdDsKICAgICBDU3RyaW5nIG1fYXRFeGl0U2F2
ZUZpbGVuYW1lOwogICAgIERhdGFiYXNlKiBtX25leHRSZWdpc3RlcmVkRGF0YWJhc2U7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlByb2ZpbGVyRXZlbnQuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlByb2ZpbGVyQnl0ZWNvZGVzLmgi
CisjaW5jbHVkZSAiUHJvZmlsZXJDb21waWxhdGlvbi5oIgorI2luY2x1ZGUgIlByb2ZpbGVyVUlE
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgeworCit2b2lkIEV2ZW50
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KG1fdGltZSwg
IjogIiwgcG9pbnRlckR1bXAobV9ieXRlY29kZXMpKTsKKyAgICBpZiAobV9jb21waWxhdGlvbikK
KyAgICAgICAgb3V0LnByaW50KCIgIiwgKm1fY29tcGlsYXRpb24pOworICAgIG91dC5wcmludCgi
OiAiLCBtX3N1bW1hcnkpOworICAgIGlmIChtX2RldGFpbC5sZW5ndGgoKSkKKyAgICAgICAgb3V0
LnByaW50KCIgKCIsIG1fZGV0YWlsLCAiKSIpOworfQorCitKU1ZhbHVlIEV2ZW50Ojp0b0pTKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYyk7CisgICAgCisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRpbWUsIGpzTnVtYmVyKG1fdGltZSkpOworICAgIHJl
c3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlY29k
ZXNJRCwganNOdW1iZXIobV9ieXRlY29kZXMtPmlkKCkpKTsKKyAgICBpZiAobV9jb21waWxhdGlv
bikKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmNvbXBpbGF0aW9uVUlELCBtX2NvbXBpbGF0aW9uLT51aWQoKS50b0pTKGV4ZWMpKTsK
KyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
c3VtbWFyeSwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpmcm9tVVRGOChtX3N1bW1hcnkpKSk7Cisg
ICAgaWYgKG1fZGV0YWlsLmxlbmd0aCgpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVj
LT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGV0YWlsLCBqc1N0cmluZyhleGVjLCBTdHJp
bmc6OmZyb21VVEY4KG1fZGV0YWlsKSkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQcm9maWxlcgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckV2ZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBQcm9maWxlckV2ZW50X2gKKyNkZWZpbmUgUHJvZmlsZXJFdmVudF9o
CisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIFByb2ZpbGVyIHsKKworY2xhc3MgQnl0ZWNvZGVzOworY2xhc3MgQ29tcGlsYXRpb247CisK
K2NsYXNzIEV2ZW50IHsKK3B1YmxpYzoKKyAgICBFdmVudCgpCisgICAgeworICAgIH0KKyAgICAK
KyAgICBFdmVudChkb3VibGUgdGltZSwgQnl0ZWNvZGVzKiBieXRlY29kZXMsIENvbXBpbGF0aW9u
KiBjb21waWxhdGlvbiwgY29uc3QgY2hhciogc3VtbWFyeSwgY29uc3QgQ1N0cmluZyYgZGV0YWls
KQorICAgICAgICA6IG1fdGltZSh0aW1lKQorICAgICAgICAsIG1fYnl0ZWNvZGVzKGJ5dGVjb2Rl
cykKKyAgICAgICAgLCBtX2NvbXBpbGF0aW9uKGNvbXBpbGF0aW9uKQorICAgICAgICAsIG1fc3Vt
bWFyeShzdW1tYXJ5KQorICAgICAgICAsIG1fZGV0YWlsKGRldGFpbCkKKyAgICB7CisgICAgfQor
ICAgIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fYnl0ZWNvZGVzOworICAgIH0KKyAgICAKKyAgICBkb3VibGUgdGltZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGltZTsgfQorICAgIEJ5dGVjb2RlcyogYnl0ZWNvZGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9ieXRlY29kZXM7IH0KKyAgICBDb21waWxhdGlvbiogY29tcGlsYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2NvbXBpbGF0aW9uOyB9CisgICAgY29uc3QgY2hhciogc3VtbWFyeSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3VtbWFyeTsgfQorICAgIGNvbnN0IENTdHJpbmcmIGRldGFpbCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGV0YWlsOyB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CisgICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIAorcHJp
dmF0ZToKKyAgICBkb3VibGUgbV90aW1lIHsgMCB9OworICAgIEJ5dGVjb2RlcyogbV9ieXRlY29k
ZXMgeyBudWxscHRyIH07CisgICAgQ29tcGlsYXRpb24qIG1fY29tcGlsYXRpb24geyBudWxscHRy
IH07CisgICAgY29uc3QgY2hhciogbV9zdW1tYXJ5IHsgbnVsbHB0ciB9OworICAgIENTdHJpbmcg
bV9kZXRhaWw7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UHJvZmlsZXIKKworI2VuZGlm
IC8vIFByb2ZpbGVyRXZlbnRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXJVSUQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlclVJRC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByb2ZpbGVyVUlELmgiCisKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBQcm9maWxlciB7CisKK1VJRCBVSUQ6OmNyZWF0ZSgpCit7CisgICAgc3RhdGljIFN0
YXRpY0xvY2sgbG9jazsKKyAgICBzdGF0aWMgdWludDY0X3QgY291bnRlcjsKKyAgICAKKyAgICBM
b2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICBVSUQgcmVzdWx0OworICAgIHJlc3VsdC5tX3Vp
ZCA9ICsrY291bnRlcjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFVJRDo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChtX3VpZCk7Cit9CisKK0pT
VmFsdWUgVUlEOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4ganNT
dHJpbmcoZXhlYywgdG9TdHJpbmcoKnRoaXMpKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OlByb2ZpbGVyCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
clVJRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlclVJRC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyVUlELmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQcm9maWxlclVJ
RF9oCisjZGVmaW5lIFByb2ZpbGVyVUlEX2gKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKKworY2xhc3MgVUlEIHsKK3B1Ymxp
YzoKKyAgICBVSUQoKQorICAgICAgICA6IG1fdWlkKDApCisgICAgeworICAgIH0KKyAgICAKKyAg
ICBzdGF0aWMgVUlEIGZyb21JbnQodWludDY0X3QgdmFsdWUpCisgICAgeworICAgICAgICBVSUQg
cmVzdWx0OworICAgICAgICByZXN1bHQubV91aWQgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisgICAgCisgICAgVUlEKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlw
ZSkKKyAgICAgICAgOiBtX3VpZChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkp
CisgICAgeworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgVUlEIGNyZWF0ZSgpOworICAgIAorICAg
IHVpbnQ2NF90IHRvSW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3VpZDsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVJRCYgb3RoZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV91aWQgPT0gb3RoZXIubV91aWQ7CisgICAgfQorICAgIAor
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVSUQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKyAgICAKKyAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAqdGhpcyAhPSBVSUQo
KTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gKnRoaXMgIT0gVUlEKFdURjo6SGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gSW50SGFzaDx1aW50NjRfdD46Omhhc2gobV91aWQpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKikgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIHVpbnQ2NF90IG1fdWlkOwor
fTsKKworc3RydWN0IFVJREhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFVJ
RCYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgVUlEJiBhLCBjb25zdCBVSUQmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpQcm9maWxlcgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8SlNDOjpQcm9maWxlcjo6VUlEPiB7CisgICAgdHlwZWRlZiBKU0M6OlByb2ZpbGVy
OjpVSURIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRy
YWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpQcm9maWxlcjo6VUlEPiA6
IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OlByb2ZpbGVyOjpVSUQ+IHsgfTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBQcm9maWxlclVJRF9oCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNp
b24gMjAwNjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBACiAgICAgbWFjcm8oY29s
bGF0aW9uKSBcCiAgICAgbWFjcm8oY29sdW1uKSBcCiAgICAgbWFjcm8oY29tcGlsYXRpb25LaW5k
KSBcCisgICAgbWFjcm8oY29tcGlsYXRpb25VSUQpIFwKICAgICBtYWNybyhjb21waWxhdGlvbnMp
IFwKICAgICBtYWNybyhjb21waWxlKSBcCiAgICAgbWFjcm8oY29uZmlndXJhYmxlKSBcCkBAIC0x
MzYsMTIgKzEzNywxNCBAQAogICAgIG1hY3JvKGRlZmluZVByb3BlcnR5KSBcCiAgICAgbWFjcm8o
ZGVzY3JpcHRpb24pIFwKICAgICBtYWNybyhkZXNjcmlwdGlvbnMpIFwKKyAgICBtYWNybyhkZXRh
aWwpIFwKICAgICBtYWNybyhkaXNwbGF5TmFtZSkgXAogICAgIG1hY3JvKGRvY3VtZW50KSBcCiAg
ICAgbWFjcm8oZG9uZSkgXAogICAgIG1hY3JvKGVudW1lcmFibGUpIFwKICAgICBtYWNybyhlcmEp
IFwKICAgICBtYWNybyhldmFsKSBcCisgICAgbWFjcm8oZXZlbnRzKSBcCiAgICAgbWFjcm8oZXhl
YykgXAogICAgIG1hY3JvKGV4ZWN1dGlvbkNvdW50KSBcCiAgICAgbWFjcm8oZXhpdEtpbmQpIFwK
QEAgLTIyNyw5ICsyMzAsMTEgQEAKICAgICBtYWNybyhzdGFjaykgXAogICAgIG1hY3JvKHN0aWNr
eSkgXAogICAgIG1hY3JvKHN1YmFycmF5KSBcCisgICAgbWFjcm8oc3VtbWFyeSkgXAogICAgIG1h
Y3JvKHRhcmdldCkgXAogICAgIG1hY3JvKHRlc3QpIFwKICAgICBtYWNybyh0aGVuKSBcCisgICAg
bWFjcm8odGltZSkgXAogICAgIG1hY3JvKHRpbWVab25lKSBcCiAgICAgbWFjcm8odGltZVpvbmVO
YW1lKSBcCiAgICAgbWFjcm8odG9FeHBvbmVudGlhbCkgXApAQCAtMjQwLDYgKzI0NSw3IEBACiAg
ICAgbWFjcm8odG9QcmVjaXNpb24pIFwKICAgICBtYWNybyh0b1N0cmluZykgXAogICAgIG1hY3Jv
KHRvcCkgXAorICAgIG1hY3JvKHVpZCkgXAogICAgIG1hY3JvKHVuaWNvZGUpIFwKICAgICBtYWNy
byh1c2FnZSkgXAogICAgIG1hY3JvKHZhbHVlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm9maWxlckRh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCisjaW5jbHVkZSAiVk1JbmxpbmVz
LmgiCiAjaW5jbHVkZSAiV0FTTUZ1bmN0aW9uUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1h
UHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE3Niw2ICsxNzcsOCBAQCB2
b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2CiB7CiAgICAgQVNTRVJUKHZt
LmhlYXAuaXNEZWZlcnJlZCgpKTsKICAgICAKKyAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGdlbmVy
aWNDb2RlQmxvY2ssICJpbnN0YWxsQ29kZSIsICgpKTsKKyAgICAKICAgICBDb2RlQmxvY2sqIG9s
ZENvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgCiAgICAgc3dpdGNoIChjb2RlVHlwZSkgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MTIsNiAr
NjEyLDkgQEAgcHVibGljOgogICAgIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkmIGJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkoKSB7IHJldHVybiAqbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
OyB9CiAgICAgCiAgICAgU2hhZG93Q2hpY2tlbiYgc2hhZG93Q2hpY2tlbigpIHsgcmV0dXJuICpt
X3NoYWRvd0NoaWNrZW47IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAg
IHZvaWQgbG9nRXZlbnQoQ29kZUJsb2NrKiwgY29uc3QgY2hhciogc3VtbWFyeSwgY29uc3QgRnVu
YyYgZnVuYyk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5saW5lcy5oCShy
ZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFZNSW5saW5lc19oCiAj
ZGVmaW5lIFZNSW5saW5lc19oCiAKKyNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXRjaGRvZy5oIgogCkBAIC0zOCw2ICszOSwxNSBAQCBi
b29sIFZNOjpzaG91bGRUcmlnZ2VyVGVybWluYXRpb24oRXhlY1N0CiAgICAgcmV0dXJuIHdhdGNo
ZG9nKCktPnNob3VsZFRlcm1pbmF0ZShleGVjKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4KK3ZvaWQgVk06OmxvZ0V2ZW50KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyKiBz
dW1tYXJ5LCBjb25zdCBGdW5jJiBmdW5jKQoreworICAgIGlmIChMSUtFTFkoIW1fcGVyQnl0ZWNv
ZGVQcm9maWxlcikpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3BlckJ5dGVjb2RlUHJv
ZmlsZXItPmxvZ0V2ZW50KGNvZGVCbG9jaywgc3VtbWFyeSwgZnVuYygpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBMTEludERhdGFfaApJbmRleDogU291cmNlL1dURi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIw
MDY0NykKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTYtMDUtMTAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbnRlcm5hbCBKU0MgcHJvZmlsZXIgc2hvdWxkIGhhdmUgYSB0aW1lc3RhbXBlZCBsb2cg
b2YgZXZlbnRzIGZvciBlYWNoIGNvZGUgYmxvY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzUzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmph
bWluIFBvdWxhaW4uCisKKyAgICAgICAgKiB3dGYvUHJpbnRTdHJlYW0uaDoKKyAgICAgICAgKFdU
Rjo6UHJpbnRTdHJlYW06OnByaW50KToKKwogMjAxNi0wNS0xMCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEdldCByaWQgb2YgYSBsb3Qgb2YgY2FsbHMgdG8gUmVm
UHRyOjpyZWxlYXNlKCkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAkocmV2aXNpb24gMjAwNjIzKQor
KysgU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01NSw2ICs1NSw4IEBAIHB1YmxpYzoKICAgICAvLyBUeXBpY2FsbHkgYSBuby1vcCBm
b3IgbWFueSBzdWJjbGFzc2VzIG9mIFByaW50U3RyZWFtLCB0aGlzIGlzIGEgaGludCB0aGF0CiAg
ICAgLy8gdGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBmbHVzaCBpdHMgYnVmZmVycyBpZiBpdCBo
YWQgbm90IGRvbmUgc28gYWxyZWFkeS4KICAgICB2aXJ0dWFsIHZvaWQgZmx1c2goKTsKKyAgICAK
KyAgICB2b2lkIHByaW50KCkgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZv
aWQgcHJpbnQoY29uc3QgVCYgdmFsdWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278543</attachid>
            <date>2016-05-10 15:58:50 -0700</date>
            <delta_ts>2016-05-10 15:58:50 -0700</delta_ts>
            <desc>even more fixes</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>60640</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwNjQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMiBA
QAorMjAxNi0wNS0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEludGVybmFsIEpTQyBwcm9maWxlciBzaG91bGQgaGF2ZSBhIHRpbWVzdGFtcGVkIGxvZyBvZiBl
dmVudHMgZm9yIGVhY2ggY29kZSBibG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4g
UG91bGFpbi4KKyAgICAgICAgCisgICAgICAgIEZvciBleGFtcGxlLCBpbiAzZC1jdWJlLCBJIGFu
IHF1ZXJ5IHRoZSBldmVudHMgZm9yIE1NdWx0aSBhbmQgSSBnZXQ6CisKKyAgICAgICAgMTQ2Mjkx
NzQ3Ni4xNzA4MyAgTU11bHRpI0RUWjdxYyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFs
bENvZGUgICAgICAgIAorICAgICAgICAxNDYyOTE3NDc2LjE3OTY2MyBNTXVsdGkjRFRaN3FjIE1N
dWx0aSNEVFo3cWMtMS1CYXNlbGluZSBpbnN0YWxsQ29kZSAgICAgICAgCisgICAgICAgIDE0NjI5
MTc0NzYuMTc5NjY0IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0xLUJhc2VsaW5lIG9zckVu
dHJ5ICAgICAgICAgICBhdCBiYyM0OQorICAgICAgICAxNDYyOTE3NDc2LjE4NTY1MSBNTXVsdGkj
RFRaN3FjIE1NdWx0aSNEVFo3cWMtMS1CYXNlbGluZSBkZWxheU9wdGltaXplVG9ERkcgY291bnRl
ciA9IDEwMTEuMjE0MjMzLzE3MTcuMDAwMDAwLCAtNzA3CisgICAgICAgIDE0NjI5MTc0NzYuMTg3
OTEzIE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0yLURGRyAgICAgIGluc3RhbGxDb2RlICAg
ICAgICAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4xODc5MTcgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRa
N3FjLTItREZHICAgICAgb3NyRW50cnkgICAgICAgICAgIGF0IGJjIzQ5CisgICAgICAgIDE0NjI5
MTc0NzYuMjA1MzY1IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0yLURGRyAgICAgIGpldHRp
c29uICAgICAgICAgICBkdWUgdG8gT1NSRXhpdCwgY291bnRpbmcgPSB0cnVlLCBkZXRhaWwgPSAo
bnVsbCkKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMDUzNjggTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRa
N3FjLTEtQmFzZWxpbmUgZnJlcXVlbnRFeGl0ICAgICAgIGJjIzY1OiBCYWRDYWNoZS9Gcm9tREZH
CisgICAgICAgIDE0NjI5MTc0NzYuMjA1MzY5IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy0x
LUJhc2VsaW5lIGluc3RhbGxDb2RlICAgICAgICAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMDU0ODIg
TU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlPcHRpbWl6ZVRvREZH
IGNvdW50ZXIgPSAxMDEzLjAwMDAwMC8zNDM0LjAwMDAwMCwgLTEwMDAKKyAgICAgICAgMTQ2Mjkx
NzQ3Ni4yMTE1NDcgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlP
cHRpbWl6ZVRvREZHIGNvdW50ZXIgPSAyMDEzLjAwMDAwMC8zNDM0LjAwMDAwMCwgLTEwMDAKKyAg
ICAgICAgMTQ2MjkxNzQ3Ni4yMTM3MjEgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTMtREZH
ICAgICAgaW5zdGFsbENvZGUgICAgICAgIAorICAgICAgICAxNDYyOTE3NDc2LjIxMzcyNiBNTXVs
dGkjRFRaN3FjIE1NdWx0aSNEVFo3cWMtMy1ERkcgICAgICBvc3JFbnRyeSAgICAgICAgICAgYXQg
YmMjNDkKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjM5NzYgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRa
N3FjLTMtREZHICAgICAgamV0dGlzb24gICAgICAgICAgIGR1ZSB0byBPU1JFeGl0LCBjb3VudGlu
ZyA9IHRydWUsIGRldGFpbCA9IChudWxsKQorICAgICAgICAxNDYyOTE3NDc2LjIyMzk4MSBNTXVs
dGkjRFRaN3FjIE1NdWx0aSNEVFo3cWMtMS1CYXNlbGluZSBmcmVxdWVudEV4aXQgICAgICAgYmMj
Nzc6IEJhZENhY2hlL0Zyb21ERkcKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjM5ODIgTU11bHRpI0RU
WjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZnJlcXVlbnRFeGl0ICAgICAgIGJjIzk0OiBC
YWRDYWNoZS9Gcm9tREZHCisgICAgICAgIDE0NjI5MTc0NzYuMjIzOTgyIE1NdWx0aSNEVFo3cWMg
TU11bHRpI0RUWjdxYy0xLUJhc2VsaW5lIGluc3RhbGxDb2RlICAgICAgICAKKyAgICAgICAgMTQ2
MjkxNzQ3Ni4yMjQwNjQgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVs
YXlPcHRpbWl6ZVRvREZHIGNvdW50ZXIgPSAxMDEzLjAwMDAwMC82ODY4LjAwMDAwMCwgLTEwMDAK
KyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjQxNTEgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEt
QmFzZWxpbmUgZGVsYXlPcHRpbWl6ZVRvREZHIGNvdW50ZXIgPSAyMDEzLjAwMDAwMC82ODY4LjAw
MDAwMCwgLTEwMDAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjQyNTggTU11bHRpI0RUWjdxYyBNTXVs
dGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlPcHRpbWl6ZVRvREZHIGNvdW50ZXIgPSAzMDEzLjAw
MDAwMC82ODY4LjAwMDAwMCwgLTEwMDAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4yMjQzMzcgTU11bHRp
I0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlPcHRpbWl6ZVRvREZHIGNvdW50
ZXIgPSA0MDIzLjAwMDAwMC82ODY4LjAwMDAwMCwgLTEwMDAKKyAgICAgICAgMTQ2MjkxNzQ3Ni4y
MjQ0MjUgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUgZGVsYXlPcHRpbWl6
ZVRvREZHIGNvdW50ZXIgPSA1MDIzLjAwMDAwMC82ODY4LjAwMDAwMCwgLTEwMDAKKyAgICAgICAg
MTQ2MjkxNzQ3Ni4yMjQ3ODUgTU11bHRpI0RUWjdxYyBNTXVsdGkjRFRaN3FjLTEtQmFzZWxpbmUg
ZGVsYXlPcHRpbWl6ZVRvREZHIGNvdW50ZXIgPSA2MDIzLjM5NjQ4NC82ODY4LjAwMDAwMCwgLTg2
MgorICAgICAgICAxNDYyOTE3NDc2LjIyNzY2OSBNTXVsdGkjRFRaN3FjIE1NdWx0aSNEVFo3cWMt
NC1ERkcgICAgICBpbnN0YWxsQ29kZSAgICAgICAgCisgICAgICAgIDE0NjI5MTc0NzYuMjI3Njc1
IE1NdWx0aSNEVFo3cWMgTU11bHRpI0RUWjdxYy00LURGRyAgICAgIG9zckVudHJ5ICAgICAgICAg
ICBhdCBiYyMwCisgICAgICAgIAorICAgICAgICBUaGUgb3V0cHV0IGlzIHVnbHkgYnV0IHVzZWZ1
bC4gV2UgY2FuIG1ha2UgaXQgbGVzcyB1Z2x5IGxhdGVyLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAg
ICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6Zm9yRWFjaENvZGVCbG9jayk6CisgICAgICAgICog
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkV4aXRQcm9m
aWxlOjphZGQpOgorICAgICAgICAqIGRmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVDb21tb24pOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMSklURmluYWxpemVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24pOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q29tcGlsZUFuZFNldEhldXJpc3Rp
Y3MpOgorICAgICAgICAoSlNDOjpMTEludDo6ZW50cnlPU1IpOgorICAgICAgICAoSlNDOjpMTElu
dDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29t
cGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Q29tcGlsYXRpb246OkNvbXBp
bGF0aW9uKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkNvbXBpbGF0aW9uOjpzZXRKZXR0aXNv
blJlYXNvbik6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpDb21waWxhdGlvbjo6ZHVtcCk6Cisg
ICAgICAgIChKU0M6OlByb2ZpbGVyOjpDb21waWxhdGlvbjo6dG9KUyk6CisgICAgICAgICogcHJv
ZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Q29t
cGlsYXRpb246OnVpZCk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHA6
CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKToK
KyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkRhdGFiYXNlOjpub3RpZnlEZXN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFzZTo6YWRkQ29tcGlsYXRpb24pOgorICAgICAg
ICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OnRvSlMpOgorICAgICAgICAoSlNDOjpQcm9maWxl
cjo6RGF0YWJhc2U6OnJlZ2lzdGVyVG9TYXZlQXRFeGl0KToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkRhdGFiYXNlOjpsb2dFdmVudCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFz
ZTo6YWRkRGF0YWJhc2VUb0F0RXhpdCk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJEYXRh
YmFzZS5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6UHJvZmlsZXI6OkV2ZW50OjpkdW1wKToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkV2ZW50Ojp0b0pTKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckV2ZW50Lmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RXZlbnQ6OkV2ZW50KToKKyAgICAgICAgKEpT
Qzo6UHJvZmlsZXI6OkV2ZW50OjpvcGVyYXRvciBib29sKToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkV2ZW50Ojp0aW1lKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkV2ZW50OjpieXRlY29k
ZXMpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RXZlbnQ6OmNvbXBpbGF0aW9uKToKKyAgICAg
ICAgKEpTQzo6UHJvZmlsZXI6OkV2ZW50OjpzdW1tYXJ5KToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkV2ZW50OjpkZXRhaWwpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpVSUQ6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlByb2ZpbGVyOjpVSUQ6OmR1bXApOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjp0
b0pTKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlclVJRC5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6UHJvZmlsZXI6OlVJRDo6VUlEKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OlVJRDo6
ZnJvbUludCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpVSUQ6OnRvSW50KToKKyAgICAgICAg
KEpTQzo6UHJvZmlsZXI6OlVJRDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVy
OjpVSUQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjpvcGVyYXRv
ciBib29sKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OlVJRDo6aXNIYXNoVGFibGVEZWxldGVk
VmFsdWUpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6UHJvZmlsZXI6OlVJREhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlE
SGFzaDo6ZXF1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVj
dXRhYmxlOjppbnN0YWxsQ29kZSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAo
SlNDOjpWTTo6Ynl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk6CisgICAgICAgIChKU0M6OlZNOjpz
aGFkb3dDaGlja2VuKToKKyAgICAgICAgKiBydW50aW1lL1ZNSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpWTTo6c2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06Omxv
Z0V2ZW50KToKKwogMjAxNi0wNS0xMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBbSlNDXSBGVEwgY2FuIHByb2R1Y2UgR2V0QnlWYWwgbm9kZXMgd2l0
aG91dCBwcm9wZXIgYm91bmRzIGNoZWNraW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTU5NywxMiArNTk3LDE0IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQu
Y3BwCiAgICAgcHJvZmlsZXIvUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmNwcAogICAgIHByb2Zp
bGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCisgICAgcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHAK
ICAgICBwcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmNwcAogICAgIHByb2ZpbGVyL1By
b2ZpbGVyT1NSRXhpdC5jcHAKICAgICBwcm9maWxlci9Qcm9maWxlck9TUkV4aXRTaXRlLmNwcAog
ICAgIHByb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmNwcAogICAgIHByb2ZpbGVyL1Byb2ZpbGVyT3Jp
Z2luU3RhY2suY3BwCiAgICAgcHJvZmlsZXIvUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAK
KyAgICBwcm9maWxlci9Qcm9maWxlclVJRC5jcHAKIAogICAgIHJ1bnRpbWUvQXJnTGlzdC5jcHAK
ICAgICBydW50aW1lL0FycmF5QnVmZmVyLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTky
LDYgKzE5OTIsMTAgQEAKIAkJREMxN0U4MUExQzlDOTFFOTAwOEE2QUIzIC8qIENDYWxsSGVscGVy
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzE3
RTgxNjFDOUM4MDJCMDA4QTZBQjMgLyogQ0NhbGxIZWxwZXJzLmNwcCAqLzsgfTsKIAkJREMyMTQz
MDcxQ0EzMkU1NTAwMEE4ODY5IC8qIElDU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRz
LmggKi87IH07CiAJCURDMjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJF
NTIwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAqLzsgfTsKKwkJREM2MDVCNUQxQ0UyNkVBMDAwNTkz
NzE4IC8qIFByb2ZpbGVyRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gREM2MDVCNTkxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQu
Y3BwICovOyB9OworCQlEQzYwNUI1RTFDRTI2RUEyMDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM2MDVCNUEx
Q0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlEQzYwNUI1RjFDRTI2RUE1MDA1OTM3MTggLyog
UHJvZmlsZXJVSUQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gREM2MDVCNUIxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCAqLzsgfTsK
KwkJREM2MDVCNjAxQ0UyNkVBNzAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzYwNUI1QzFDRTI2RTk4MDA1OTM3
MTggLyogUHJvZmlsZXJVSUQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlEQzc5OTc4MzFDREU5RkEwMDA0RDRBMDkgLyogVGFnUmVnaXN0ZXJzTW9k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM3OTk3
ODIxQ0RFOUY5RTAwNEQ0QTA5IC8qIFRhZ1JlZ2lzdGVyc01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzc5OTc4NDFDREU5RkEyMDA0RDRB
MDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEQzc5OTc4MTFDREU5RjlFMDA0RDRBMDkgLyogVGFnUmVnaXN0ZXJz
TW9kZS5jcHAgKi87IH07CiAJCURDRjNENTY5MUNEMjk0NkQwMDNENUM2NSAvKiBMYXp5Q2xhc3NT
dHJ1Y3R1cmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRENGM0Q1NjQxQ0QyOTQ2ODAwM0Q1QzY1IC8qIExhenlDbGFzc1N0cnVjdHVyZS5jcHAgKi87
IH07CkBAIC00MjA2LDYgKzQyMTAsMTAgQEAKIAkJREMxN0U4MTYxQzlDODAyQjAwOEE2QUIzIC8q
IENDYWxsSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
Q2FsbEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzIxNDMwNTFD
QTMyRTUyMDAwQTg4NjkgLyogSUNTdGF0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJQ1N0YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMy
MTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8qIElDU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSUNTdGF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQzYw
NUI1OTFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlckV2ZW50LmNwcDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQzYwNUI1
QTFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBQcm9maWxlckV2ZW50Lmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDNjA1QjVCMUNFMjZFOTgwMDU5
MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBQcm9maWxlclVJRC5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlclVJRC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDNjA1QjVDMUNFMjZFOTgwMDU5MzcxOCAvKiBQ
cm9maWxlclVJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlclVJ
RC5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJVSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJREM3OTk3ODExQ0RFOUY5RTAwNEQ0QTA5IC8qIFRhZ1JlZ2lzdGVyc01vZGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGFnUmVnaXN0ZXJzTW9kZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDNzk5NzgyMUNERTlGOUUwMDRENEEw
OSAvKiBUYWdSZWdpc3RlcnNNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRhZ1JlZ2lzdGVyc01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENGM0Q1
NjQxQ0QyOTQ2ODAwM0Q1QzY1IC8qIExhenlDbGFzc1N0cnVjdHVyZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXp5Q2xhc3NTdHJ1Y3R1cmUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ0NSw2ICs2NDUzLDggQEAKIAkJCQkwRkY3Mjk5QjE2
NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmggKi8sCiAJCQkJMEZG
NzI5OUMxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyRGF0YWJhc2UuY3BwICovLAogCQkJCTBG
RjcyOTlEMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckRhdGFiYXNlLmggKi8sCisJCQkJREM2
MDVCNTkxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuY3BwICovLAorCQkJCURDNjA1
QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi8sCiAJCQkJMEZGNzI5OUUx
NjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyRXhlY3V0aW9uQ291bnRlci5oICovLAogCQkJCTBG
MTkwQ0FBMTg5RDgyRjYwMDBBRTVGMCAvKiBQcm9maWxlckpldHRpc29uUmVhc29uLmNwcCAqLywK
IAkJCQkwRjE5MENBQjE4OUQ4MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5o
ICovLApAQCAtNjQ1OCw2ICs2NDY4LDggQEAKIAkJCQkwRkIxMDU4QTE2NzU0ODJFMDBGOEFCNkUg
LyogUHJvZmlsZXJPU1JFeGl0U2l0ZS5oICovLAogCQkJCTBGMTM5MTI2MTY3NzFDMzAwMDlDQ0Iw
NyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcCAqLywKIAkJCQkwRjEzOTEyNzE2Nzcx
QzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oICovLAorCQkJCURDNjA1
QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgKi8sCisJCQkJREM2MDVCNUMx
Q0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IHBy
b2ZpbGVyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc3NTcsNiArNzc2OSw3IEBA
CiAJCQkJNzBCNzkxOUMxQzAyNEE0OTAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDJBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJy
YXlDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCURDNjA1QjYwMUNFMjZFQTcwMDU5
MzcxOCAvKiBQcm9maWxlclVJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkQxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheVByb3RvdHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkI2NkZGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MzRDNDU3QzFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTc3NzIsNiArNzc4NSw3IEBACiAJCQkJODZFM0M2
MTUxNjdCQUJENzAwNkQ3NjBBIC8qIEpTVmlydHVhbE1hY2hpbmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2RTNDNjFEMTY3QkFCRUUwMDZENzYwQSAvKiBKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdCOThEMTM3MUI2MENENjIwMDIzQjFBNCAvKiBKU1dBU01N
b2R1bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCURDNjA1QjVFMUNFMjZFQTIwMDU5MzcxOCAvKiBQ
cm9maWxlckV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4
QUYgLyogSlNXZWFrTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4MkU5MzExNkE3Q0FEMDAz
QjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3NDgyQjkzMTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTkyMDgsNiArOTIyMiw3IEBACiAJCQkJQTcwMDg3M0QxN0NCRThE
MzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkI5MTZD
NTE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0MkQ2RjA4MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlEQzYwNUI1RDFDRTI2RUEwMDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNEQyRjNEQTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3Bh
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyRDZGMTExMzUzOUE0MTAwQjAyRTg2IC8qIE1h
cmtTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIg
LyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTM0NCw2ICs5MzU5
LDcgQEAKIAkJCQk3MDVCNDFBRjFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTcwNUI0MUIxMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MTlEMjgxNTg1Njc3MzAwNEE0RTdEIC8q
IFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURDNjA1QjVGMUNFMjZFQTUwMDU5
MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MEVDQTYwNzFBRkRC
RUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkMzMTQxMzE4MTQ1NTkxMDAwMzMyMzIgLyogVGVtcFJlZ2lzdGVyU2V0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGQTJDMTdCMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAK
ICNpbmNsdWRlICJUeXBlTG9jYXRpb25DYWNoZS5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5o
IgogI2luY2x1ZGUgIlVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaCIKKyNpbmNsdWRlICJWTUlu
bGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQmFnVG9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0Nv
bW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KQEAgLTMzMTAsNiAr
MzMxMSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpqZXR0aXNvbihQcm9maWxlcjo6SmV0dGkKICAgICBV
TlVTRURfUEFSQU0obW9kZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRldGFpbCk7CiAjZW5kaWYKKyAg
ICAKKyAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKHRoaXMsICJqZXR0aXNvbiIsICgiZHVlIHRvICIs
IHJlYXNvbiwgIiwgY291bnRpbmcgPSAiLCBtb2RlID09IENvdW50UmVvcHRpbWl6YXRpb24sICIs
IGRldGFpbCA9ICIsIHBvaW50ZXJEdW1wKGRldGFpbCkpKTsKIAogICAgIFJFTEVBU0VfQVNTRVJU
KHJlYXNvbiAhPSBQcm9maWxlcjo6Tm90SmV0dGlzb25lZCk7CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMDA2MjMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDcgKzU5LDYgQEAKICNpbmNsdWRlICJMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5o
IgogI2luY2x1ZGUgIk9iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAiT3B0aW9u
cy5oIgotI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKICNpbmNsdWRlICJQcm9maWxl
ckpldHRpc29uUmVhc29uLmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlTbG90LmgiCiAjaW5jbHVk
ZSAiUmVnRXhwT2JqZWN0LmgiCkBAIC0xNDA0LDYgKzE0MDMsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgCiAgICAgfQogfQogCisjZGVmaW5lIENPREVCTE9DS19M
T0dfRVZFTlQoY29kZUJsb2NrLCBzdW1tYXJ5LCBkZXRhaWxzKSBcCisgICAgKGNvZGVCbG9jay0+
dm0oKS0+bG9nRXZlbnQoY29kZUJsb2NrLCBzdW1tYXJ5LCBbJl0gKCkgeyByZXR1cm4gdG9DU3Ry
aW5nIGRldGFpbHM7IH0pKQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIENvZGVC
bG9ja19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2Zp
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdF
eGl0UHJvZmlsZS5jcHAJKHJldmlzaW9uIDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIlZNSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
QEAgLTQ0LDYgKzQ1LDggQEAgYm9vbCBFeGl0UHJvZmlsZTo6YWRkKGNvbnN0IENvbmN1cnJlbnRK
SQogewogICAgIEFTU0VSVChzaXRlLmppdFR5cGUoKSAhPSBFeGl0RnJvbUFueXRoaW5nKTsKIAor
ICAgIENPREVCTE9DS19MT0dfRVZFTlQob3duZXIsICJmcmVxdWVudEV4aXQiLCAoc2l0ZSkpOwor
ICAgIAogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlRXhpdFByb2ZpbGUoKSkKICAgICAgICAgZGF0
YUxvZyhwb2ludGVyRHVtcChvd25lciksICI6IEFkZGluZyBleGl0IHNpdGU6ICIsIHNpdGUsICJc
biIpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmlu
YWxpemVyLmNwcAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRGaW5hbGl6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkxLDcgKzkx
LDcgQEAgdm9pZCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplQ29tbW9uKCkKICNlbmRpZiAvLyBFTkFC
TEUoRlRMX0pJVCkKICAgICAKICAgICBpZiAobV9wbGFuLmNvbXBpbGF0aW9uKQotICAgICAgICBt
X3BsYW4udm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxhdGlvbihtX3BsYW4uY29t
cGlsYXRpb24pOworICAgICAgICBtX3BsYW4udm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRD
b21waWxhdGlvbihtX3BsYW4uY29kZUJsb2NrLCBtX3BsYW4uY29tcGlsYXRpb24pOwogICAgIAog
ICAgIGlmICghbV9wbGFuLndpbGxUcnlUb1RpZXJVcCkKICAgICAgICAgbV9wbGFuLmNvZGVCbG9j
ay0+YmFzZWxpbmVWZXJzaW9uKCktPm1fZGlkRmFpbEZUTENvbXBpbGF0aW9uID0gdHJ1ZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMDA2MjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsMTMgQEAKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlIDx3dGYvTGlz
dER1bXAuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworbmFtZXNwYWNlIEpT
QyB7CisKK25hbWVzcGFjZSBQcm9maWxlciB7CitjbGFzcyBFeGVjdXRpb25Db3VudGVyOworfQor
CituYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgR3JhcGg7CiBjbGFzcyBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQAogI2luY2x1
ZGUgIlN5bWJvbC5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIlR5
cGVkQXJyYXlJbmxpbmVzLmgiCi0jaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlICJWTUlubGluZXMu
aCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTc2
NSw2ICsxNzY1LDcgQEAgZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dlclJlbwog
c3RhdGljIGJvb2wgc2hvdWxkVHJpZ2dlckZUTENvbXBpbGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpJVENvZGUqIGppdENvZGUpCiB7CiAgICAgaWYgKGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9u
KCktPm1fZGlkRmFpbEZUTENvbXBpbGF0aW9uKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZF
TlQoY29kZUJsb2NrLCAiYWJvcnRGVExDb21waWxlIiwgKCkpOwogICAgICAgICBpZiAoT3B0aW9u
czo6dmVyYm9zZU9TUigpKQogICAgICAgICAgICAgZGF0YUxvZygiRGVmZXJyaW5nIEZUTC1vcHRp
bWl6YXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiBpbmRlZmluaXRlbHkgYmVjYXVzZSB0aGVyZSB3
YXMgYW4gRlRMIGZhaWx1cmUuXG4iKTsKICAgICAgICAgaml0Q29kZS0+ZG9udE9wdGltaXplQW55
dGltZVNvb24oY29kZUJsb2NrKTsKQEAgLTE3NzMsNiArMTc3NCw3IEBAIHN0YXRpYyBib29sIHNo
b3VsZFRyaWdnZXJGVExDb21waWxlKENvZGUKIAogICAgIGlmICghY29kZUJsb2NrLT5oYXNPcHRp
bWl6ZWRSZXBsYWNlbWVudCgpCiAgICAgICAgICYmICFqaXRDb2RlLT5jaGVja0lmT3B0aW1pemF0
aW9uVGhyZXNob2xkUmVhY2hlZChjb2RlQmxvY2spKSB7CisgICAgICAgIENPREVCTE9DS19MT0df
RVZFTlQoY29kZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJjb3VudGVyID0gIiwgaml0Q29k
ZS0+dGllclVwQ291bnRlcikpOwogICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQog
ICAgICAgICAgICAgZGF0YUxvZygiQ2hvb3Npbmcgbm90IHRvIEZUTC1vcHRpbWl6ZSAiLCAqY29k
ZUJsb2NrLCAiIHlldC5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzkwLDEyICsx
NzkyLDE0IEBAIHN0YXRpYyB2b2lkIHRyaWdnZXJGVExSZXBsYWNlbWVudENvbXBpbGUKICAgICAg
ICAgd29ya2xpc3RTdGF0ZSA9IFdvcmtsaXN0OjpOb3RLbm93bjsKICAgICAKICAgICBpZiAod29y
a2xpc3RTdGF0ZSA9PSBXb3JrbGlzdDo6Q29tcGlsaW5nKSB7CisgICAgICAgIENPREVCTE9DS19M
T0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJzdGlsbCBjb21waWxpbmci
KSk7CiAgICAgICAgIGppdENvZGUtPnNldE9wdGltaXphdGlvblRocmVzaG9sZEJhc2VkT25Db21w
aWxhdGlvblJlc3VsdCgKICAgICAgICAgICAgIGNvZGVCbG9jaywgQ29tcGlsYXRpb25EZWZlcnJl
ZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgaWYgKGNvZGVCbG9jay0+aGFz
T3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgeworICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNv
ZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiaGFzIHJlcGxhY2VtZW50IikpOwogICAgICAg
ICAvLyBUaGF0J3MgZ3JlYXQsIHdlJ3ZlIGNvbXBpbGVkIHRoZSBjb2RlIC0gbmV4dCB0aW1lIHdl
IGNhbGwgdGhpcyBmdW5jdGlvbiwKICAgICAgICAgLy8gd2UnbGwgZW50ZXIgdGhhdCByZXBsYWNl
bWVudC4KICAgICAgICAgaml0Q29kZS0+b3B0aW1pemVTb29uKGNvZGVCbG9jayk7CkBAIC0xODAz
LDYgKzE4MDcsNyBAQCBzdGF0aWMgdm9pZCB0cmlnZ2VyRlRMUmVwbGFjZW1lbnRDb21waWxlCiAg
ICAgfQogICAgIAogICAgIGlmICh3b3JrbGlzdFN0YXRlID09IFdvcmtsaXN0OjpDb21waWxlZCkg
eworICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5RlRMQ29tcGls
ZSIsICgiY29tcGlsZWQgYW5kIGZhaWxlZCIpKTsKICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0
IHdlIGZpbmlzaGVkIGNvbXBpbGluZywgYnV0IGZhaWxlZCBzb21laG93OyBpbiB0aGF0IGNhc2Ug
dGhlCiAgICAgICAgIC8vIHRocmVzaG9sZHMgd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KICAg
ICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKQEAgLTE4MTAsNiArMTgxNSw3IEBAIHN0
YXRpYyB2b2lkIHRyaWdnZXJGVExSZXBsYWNlbWVudENvbXBpbGUKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAidHJpZ2dlckZUTFJl
cGxhY2VtZW50IiwgKCkpOwogICAgIC8vIFdlIG5lZWQgdG8gY29tcGlsZSB0aGUgY29kZS4KICAg
ICBjb21waWxlKAogICAgICAgICAqdm0sIGNvZGVCbG9jay0+bmV3UmVwbGFjZW1lbnQoKSwgY29k
ZUJsb2NrLCBGVExNb2RlLCBVSU5UX01BWCwKQEAgLTE4NDUsMTIgKzE4NTEsMTQgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVyVXBOb3coRXhlYwogCiAgICAgaWYgKGNvZGVCbG9jay0+
aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewogICAgICAgICBpZiAoaml0Q29kZS0+dGllclVw
RW50cnlUcmlnZ2Vycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIENPREVCTE9DS19MT0dfRVZF
TlQoY29kZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJyZXBsYWNlbWVudCBpbiBwbGFjZSwg
ZGVsYXlpbmcgaW5kZWZpbml0ZWx5IikpOwogICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm90aGlu
ZyBtb3JlIHdlIGNhbiBkbywgdGhlIG9ubHkgd2F5IHRoaXMgd2lsbCBiZSBlbnRlcmVkCiAgICAg
ICAgICAgICAvLyBpcyB0aHJvdWdoIHRoZSBmdW5jdGlvbiBlbnRyeSBwb2ludC4KICAgICAgICAg
ICAgIGppdENvZGUtPmRvbnRPcHRpbWl6ZUFueXRpbWVTb29uKGNvZGVCbG9jayk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGppdENvZGUtPm9zckVudHJ5Qmxv
Y2soKSAmJiBqaXRDb2RlLT50aWVyVXBFbnRyeVRyaWdnZXJzLnNpemUoKSA9PSAxKSB7CisgICAg
ICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIs
ICgidHJpZ2dlciBpbiBwbGFjZSwgZGVsYXlpbmcgaW5kZWZpbml0ZWx5IikpOwogICAgICAgICAg
ICAgLy8gVGhlcmUgaXMgb25seSBvbmUgb3V0ZXIgbG9vcCBhbmQgaXRzIHRyaWdnZXIgbXVzdCBo
YXZlIGJlZW4gc2V0CiAgICAgICAgICAgICAvLyB3aGVuIHRoZSBwbGFuIGNvbXBsZXRlZC4KICAg
ICAgICAgICAgIC8vIEV4aXRpbmcgdGhlIGlubmVyIGxvb3AgaXMgdXNlbGVzcywgd2UgY2FuIGln
bm9yZSB0aGUgY291bnRlciBhbmQgbGVhdmUKQEAgLTE4NzYsMTIgKzE4ODQsMTQgQEAgc3RhdGlj
IGNoYXIqIHRpZXJVcENvbW1vbihFeGVjU3RhdGUqIGV4ZQogCiAgICAgSklUQ29kZSogaml0Q29k
ZSA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKICAgICBpZiAod29ya2xpc3RTdGF0ZSA9
PSBXb3JrbGlzdDo6Q29tcGlsaW5nKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29k
ZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJzdGlsbCBjb21waWxpbmciKSk7CiAgICAgICAg
IGppdENvZGUtPnNldE9wdGltaXphdGlvblRocmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJlc3Vs
dCgKICAgICAgICAgICAgIGNvZGVCbG9jaywgQ29tcGlsYXRpb25EZWZlcnJlZCk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlmICh3b3JrbGlzdFN0YXRlID09IFdvcmts
aXN0OjpDb21waWxlZCkgeworICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywg
ImRlbGF5RlRMQ29tcGlsZSIsICgiY29tcGlsZWQgYW5kIGZhaWxlZCIpKTsKICAgICAgICAgLy8g
VGhpcyBtZWFucyB0aGF0IGNvbXBpbGF0aW9uIGZhaWxlZCBhbmQgd2UgYWxyZWFkeSBzZXQgdGhl
IHRocmVzaG9sZHMuCiAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAg
ICAgICBkYXRhTG9nKCJDb2RlIGJsb2NrICIsICpjb2RlQmxvY2ssICIgd2FzIGNvbXBpbGVkIGJ1
dCBpdCBkb2Vzbid0IGhhdmUgYW4gb3B0aW1pemVkIHJlcGxhY2VtZW50LlxuIik7CkBAIC0xODky
LDggKzE5MDIsMTAgQEAgc3RhdGljIGNoYXIqIHRpZXJVcENvbW1vbihFeGVjU3RhdGUqIGV4ZQog
ICAgIGlmIChvcmlnaW5CeXRlY29kZUluZGV4ID09IG9zckVudHJ5Qnl0ZWNvZGVJbmRleCkgewog
ICAgICAgICB1bnNpZ25lZCBzdHJlYW1JbmRleCA9IGppdENvZGUtPmJ5dGVjb2RlSW5kZXhUb1N0
cmVhbUluZGV4LmdldChvcmlnaW5CeXRlY29kZUluZGV4KTsKICAgICAgICAgaWYgKENvZGVCbG9j
ayogZW50cnlCbG9jayA9IGppdENvZGUtPm9zckVudHJ5QmxvY2soKSkgewotICAgICAgICAgICAg
aWYgKHZvaWQqIGFkZHJlc3MgPSBGVEw6OnByZXBhcmVPU1JFbnRyeShleGVjLCBjb2RlQmxvY2ss
IGVudHJ5QmxvY2ssIG9yaWdpbkJ5dGVjb2RlSW5kZXgsIHN0cmVhbUluZGV4KSkKKyAgICAgICAg
ICAgIGlmICh2b2lkKiBhZGRyZXNzID0gRlRMOjpwcmVwYXJlT1NSRW50cnkoZXhlYywgY29kZUJs
b2NrLCBlbnRyeUJsb2NrLCBvcmlnaW5CeXRlY29kZUluZGV4LCBzdHJlYW1JbmRleCkpIHsKKyAg
ICAgICAgICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGVudHJ5QmxvY2ssICJvc3JFbnRyeSIs
ICgiYXQgYmMjIiwgb3JpZ2luQnl0ZWNvZGVJbmRleCkpOwogICAgICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjaGFyKj4oYWRkcmVzcyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTE5MTEsMTQgKzE5MjMsMTcgQEAgc3RhdGljIGNoYXIqIHRpZXJVcENvbW1v
bihFeGVjU3RhdGUqIGV4ZQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAg
aWYgKGppdENvZGUtPm9zckVudHJ5UmV0cnkgPCBPcHRpb25zOjpmdGxPU1JFbnRyeVJldHJ5VGhy
ZXNob2xkKCkpIHsKKyAgICAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAi
ZGVsYXlGVExDb21waWxlIiwgKCJhdm9pZGluZyBPU1IgZW50cnkgY29tcGlsZSIpKTsKICAgICAg
ICAgICAgIGppdENvZGUtPm9zckVudHJ5UmV0cnkrKzsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICBDT0RFQkxPQ0tfTE9H
X0VWRU5UKGNvZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiYXZvaWRpbmcgcmVwbGFjZW1l
bnQgY29tcGlsZSIpKTsKIAogICAgIC8vIEl0J3MgdGltZSB0byB0cnkgdG8gY29tcGlsZSBjb2Rl
IGZvciBPU1IgZW50cnkuCiAgICAgaWYgKENvZGVCbG9jayogZW50cnlCbG9jayA9IGppdENvZGUt
Pm9zckVudHJ5QmxvY2soKSkgewogICAgICAgICBpZiAoaml0Q29kZS0+b3NyRW50cnlSZXRyeSA8
IE9wdGlvbnM6OmZ0bE9TUkVudHJ5UmV0cnlUaHJlc2hvbGQoKSkgeworICAgICAgICAgICAgQ09E
RUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheUZUTENvbXBpbGUiLCAoIk9TUiBlbnRy
eSBmYWlsZWQsIE9TUiBlbnRyeSB0aHJlc2hvbGQgbm90IG1ldCIpKTsKICAgICAgICAgICAgIGpp
dENvZGUtPm9zckVudHJ5UmV0cnkrKzsKICAgICAgICAgICAgIGppdENvZGUtPnNldE9wdGltaXph
dGlvblRocmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJlc3VsdCgKICAgICAgICAgICAgICAgICBj
b2RlQmxvY2ssIENvbXBpbGF0aW9uRGVmZXJyZWQpOwpAQCAtMTkyOSw2ICsxOTQ0LDcgQEAgc3Rh
dGljIGNoYXIqIHRpZXJVcENvbW1vbihFeGVjU3RhdGUqIGV4ZQogICAgICAgICBlbnRyeUNvZGUt
PmNvdW50RW50cnlGYWlsdXJlKCk7CiAgICAgICAgIGlmIChlbnRyeUNvZGUtPmVudHJ5RmFpbHVy
ZUNvdW50KCkgPAogICAgICAgICAgICAgT3B0aW9uczo6ZnRsT1NSRW50cnlGYWlsdXJlQ291bnRG
b3JSZW9wdGltaXphdGlvbigpKSB7CisgICAgICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNv
ZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiT1NSIGVudHJ5IGZhaWxlZCIpKTsKICAgICAg
ICAgICAgIGppdENvZGUtPnNldE9wdGltaXphdGlvblRocmVzaG9sZEJhc2VkT25Db21waWxhdGlv
blJlc3VsdCgKICAgICAgICAgICAgICAgICBjb2RlQmxvY2ssIENvbXBpbGF0aW9uRGVmZXJyZWQp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTM2LDYgKzE5NTIsNyBAQCBzdGF0
aWMgY2hhciogdGllclVwQ29tbW9uKEV4ZWNTdGF0ZSogZXhlCiAKICAgICAgICAgLy8gT1NSIGVu
dHJ5IGZhaWxlZC4gT2ggbm8hIFRoaXMgaW1wbGllcyB0aGF0IHdlIG5lZWQgdG8gcmV0cnkuIFdl
IHJldHJ5CiAgICAgICAgIC8vIHdpdGhvdXQgZXhwb25lbnRpYWwgYmFja29mZiBhbmQgd2Ugb25s
eSBkbyB0aGlzIGZvciB0aGUgZW50cnkgY29kZSBibG9jay4KKyAgICAgICAgQ09ERUJMT0NLX0xP
R19FVkVOVChjb2RlQmxvY2ssICJkZWxheUZUTENvbXBpbGUiLCAoIk9TUiBlbnRyeSBmYWlsZWQg
dG9vIG1hbnkgdGltZXMiKSk7CiAgICAgICAgIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNvZGUgPSBl
bnRyeUJsb2NrLT5qaXRDb2RlKCktPmZ0bEZvck9TUkVudHJ5KCktPmJ5dGVjb2RlSW5kZXgoKTsK
ICAgICAgICAgaml0Q29kZS0+Y2xlYXJPU1JFbnRyeUJsb2NrKCk7CiAgICAgICAgIGppdENvZGUt
Pm9zckVudHJ5UmV0cnkgPSAwOwpAQCAtMTk2Nyw2ICsxOTg0LDcgQEAgc3RhdGljIGNoYXIqIHRp
ZXJVcENvbW1vbihFeGVjU3RhdGUqIGV4ZQogICAgICAgICBleGVjLCBjb2RlQmxvY2ssIENvZGVP
cmlnaW4ob3NyRW50cnlCeXRlY29kZUluZGV4KSwgc3RyZWFtSW5kZXgsIG11c3RIYW5kbGVWYWx1
ZXMpOwogICAgIENvZGVCbG9jayogcmVwbGFjZW1lbnRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPm5l
d1JlcGxhY2VtZW50KCk7CiAKKyAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgInRy
aWdnZXJGVExPU1IiLCAoKSk7CiAgICAgQ29tcGlsYXRpb25SZXN1bHQgZm9yRW50cnlSZXN1bHQg
PSBjb21waWxlKAogICAgICAgICAqdm0sIHJlcGxhY2VtZW50Q29kZUJsb2NrLCBjb2RlQmxvY2ss
IEZUTEZvck9TUkVudHJ5TW9kZSwgb3NyRW50cnlCeXRlY29kZUluZGV4LAogICAgICAgICBtdXN0
SGFuZGxlVmFsdWVzLCBUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
OjpjcmVhdGUodHJpZ2dlckFkZHJlc3MpKTsKQEAgLTE5NzUsMTEgKzE5OTMsMTMgQEAgc3RhdGlj
IGNoYXIqIHRpZXJVcENvbW1vbihFeGVjU3RhdGUqIGV4ZQogICAgICAgICB0cmlnZ2VyRlRMUmVw
bGFjZW1lbnRDb21waWxlKHZtLCBjb2RlQmxvY2ssIGppdENvZGUpOwogCiAgICAgaWYgKGZvckVu
dHJ5UmVzdWx0ICE9IENvbXBpbGF0aW9uU3VjY2Vzc2Z1bCkgeworICAgICAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiT1NSIGVjb21waWxhdGlv
biBub3Qgc3VjY2Vzc2Z1bCIpKTsKICAgICAgICAgaml0Q29kZS0+c2V0T3B0aW1pemF0aW9uVGhy
ZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0KAogICAgICAgICAgICAgY29kZUJsb2NrLCBD
b21waWxhdGlvbkRlZmVycmVkKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotCisg
ICAgCisgICAgQ09ERUJMT0NLX0xPR19FVkVOVChqaXRDb2RlLT5vc3JFbnRyeUJsb2NrKCksICJv
c3JFbnRyeSIsICgiYXQgYmMjIiwgb3JpZ2luQnl0ZWNvZGVJbmRleCkpOwogICAgIC8vIEl0J3Mg
cG9zc2libGUgdGhhdCB0aGUgZm9yLWVudHJ5IGNvbXBpbGUgYWxyZWFkeSBzdWNjZWVkZWQuIElu
IHRoYXQgY2FzZSBPU1IKICAgICAvLyBlbnRyeSB3aWxsIHN1Y2NlZWQgdW5sZXNzIHdlIHJhbiBv
dXQgb2Ygc3RhY2suIEl0J3Mgbm90IGNsZWFyIHdoYXQgd2Ugc2hvdWxkIGRvLgogICAgIC8vIFdl
IHNpZ25hbCB0byB0cnkgYWdhaW4gYWZ0ZXIgYSB3aGlsZSBpZiB0aGF0IGhhcHBlbnMuCkBAIC0y
MDE2LDggKzIwMzYsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVyVXBOb3dJbkxv
bwogICAgICAgICB0cmlnZ2VyRlRMUmVwbGFjZW1lbnRDb21waWxlKHZtLCBjb2RlQmxvY2ssIGpp
dENvZGUpOwogCiAgICAgLy8gU2luY2Ugd2UgY2Fubm90IE9TUiBFbnRlciBoZXJlLCB0aGUgZGVm
YXVsdCAib3B0aW1pemVTb29uKCkiIGlzIG5vdCB1c2VmdWwuCi0gICAgaWYgKGNvZGVCbG9jay0+
aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkKKyAgICBpZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6
ZWRSZXBsYWNlbWVudCgpKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2Nr
LCAiZGVsYXlGVExDb21waWxlIiwgKCJPU1IgaW4gbG9vcCBmYWlsZWQsIGRlZmVycmluZyIpKTsK
ICAgICAgICAgaml0Q29kZS0+c2V0T3B0aW1pemF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0
aW9uUmVzdWx0KGNvZGVCbG9jaywgQ29tcGlsYXRpb25EZWZlcnJlZCk7CisgICAgfQogfQogCiBj
aGFyKiBKSVRfT1BFUkFUSU9OIHRyaWdnZXJPU1JFbnRyeU5vdyhFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEpJVEZpbmFsaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExKSVRGaW5hbGl6ZXIuY3BwCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE0LCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtODMsNyArODMsNyBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbigpCiAg
ICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlKTsKIAogICAgIGlmIChtX3Bs
YW4uY29tcGlsYXRpb24pCi0gICAgICAgIG1fcGxhbi52bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIt
PmFkZENvbXBpbGF0aW9uKG1fcGxhbi5jb21waWxhdGlvbik7CisgICAgICAgIG1fcGxhbi52bS5t
X3BlckJ5dGVjb2RlUHJvZmlsZXItPmFkZENvbXBpbGF0aW9uKG1fcGxhbi5jb2RlQmxvY2ssIG1f
cGxhbi5jb21waWxhdGlvbik7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDEwIEBAIEpJ
VDo6SklUKFZNKiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiB9CiAKK0pJVDo6fkpJVCgp
Cit7Cit9CisKICNpZiBFTkFCTEUoREZHX0pJVCkKIHZvaWQgSklUOjplbWl0RW50ZXJPcHRpbWl6
YXRpb25DaGVjaygpCiB7CkBAIC03MzgsNyArNzQyLDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklU
Ojpwcml2YXRlQ29tcGlsZShKSQogICAgIGlmIChtX2NvbXBpbGF0aW9uKSB7CiAgICAgICAgIGlm
IChPcHRpb25zOjpkaXNhc3NlbWJsZUJhc2VsaW5lRm9yUHJvZmlsZXIoKSkKICAgICAgICAgICAg
IG1fZGlzYXNzZW1ibGVyLT5yZXBvcnRUb1Byb2ZpbGVyKG1fY29tcGlsYXRpb24uZ2V0KCksIHBh
dGNoQnVmZmVyKTsKLSAgICAgICAgbV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21w
aWxhdGlvbihtX2NvbXBpbGF0aW9uKTsKKyAgICAgICAgbV92bS0+bV9wZXJCeXRlY29kZVByb2Zp
bGVyLT5hZGRDb21waWxhdGlvbihtX2NvZGVCbG9jaywgbV9jb21waWxhdGlvbik7CiAgICAgfQog
CiAgICAgaWYgKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmRpZEJ1aWxkTWFwcGluZygpKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsNiArMjU3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBKSVQoVk0qLCBDb2Rl
QmxvY2sqID0gMCk7CisgICAgICAgIH5KSVQoKTsKIAogICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlTWFpblBhc3MoKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUxpbmtQYXNzKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCShy
ZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2Vt
Ymxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMi0yMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVy
LmgiCisjaW5jbHVkZSAiUHJvZmlsZXJDb21waWxhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjAwNjIzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTIzNSw2ICsxMjM1LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aQogICAgIH0KIAogICAgIGlmICghY29kZUJsb2NrLT5jaGVja0lmT3B0aW1pemF0aW9uVGhy
ZXNob2xkUmVhY2hlZCgpKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2Nr
LCAiZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJjb3VudGVyID0gIiwgY29kZUJsb2NrLT5qaXRFeGVj
dXRlQ291bnRlcigpKSk7CiAgICAgICAgIGNvZGVCbG9jay0+dXBkYXRlQWxsUHJlZGljdGlvbnMo
KTsKICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgIGRhdGFM
b2coIkNob29zaW5nIG5vdCB0byBvcHRpbWl6ZSAiLCAqY29kZUJsb2NrLCAiIHlldCwgYmVjYXVz
ZSB0aGUgdGhyZXNob2xkIGhhc24ndCBiZWVuIHJlYWNoZWQuXG4iKTsKQEAgLTEyNDIsMTcgKzEy
NDMsMjAgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgIH0K
ICAgICAKICAgICBpZiAodm0uZW5hYmxlZFByb2ZpbGVyKCkpIHsKKyAgICAgICAgQ09ERUJMT0NL
X0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoInByb2ZpbGVyIGlz
IGVuYWJsZWQiKSk7CiAgICAgICAgIHVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kT3B0aW1pemVBZnRl
cldhcm1VcChjb2RlQmxvY2spOwogICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwog
ICAgIH0KIAogICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCktPmRlYnVnZ2VyKCk7CiAgICAgaWYgKGRlYnVnZ2VyICYmIChkZWJ1Z2dlci0+aXNTdGVwcGlu
ZygpIHx8IGNvZGVCbG9jay0+YmFzZWxpbmVBbHRlcm5hdGl2ZSgpLT5oYXNEZWJ1Z2dlclJlcXVl
c3RzKCkpKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlP
cHRpbWl6ZVRvREZHIiwgKCJkZWJ1Z2dlciBpcyBzdGVwcGluZyBvciBoYXMgcmVxdWVzdHMiKSk7
CiAgICAgICAgIHVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kT3B0aW1pemVBZnRlcldhcm1VcChjb2Rl
QmxvY2spOwogICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogICAgIH0KIAogICAg
IGlmIChjb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKSB7CisgICAgICAgIENPREVC
TE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJzaG91bGQg
YWx3YXlzIGJlIGlubGluZWQiKSk7CiAgICAgICAgIHVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kT3B0
aW1pemVBZnRlcldhcm1VcChjb2RlQmxvY2spOwogICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9z
ZU9TUigpKQogICAgICAgICAgICAgZGF0YUxvZygiQ2hvb3Npbmcgbm90IHRvIG9wdGltaXplICIs
ICpjb2RlQmxvY2ssICIgeWV0LCBiZWNhdXNlIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID09IHRy
dWUuXG4iKTsKQEAgLTEyOTMsNiArMTI5Nyw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGkKICAgICAgICAgd29ya2xpc3RTdGF0ZSA9IERGRzo6V29ya2xpc3Q6Ok5v
dEtub3duOwogCiAgICAgaWYgKHdvcmtsaXN0U3RhdGUgPT0gREZHOjpXb3JrbGlzdDo6Q29tcGls
aW5nKSB7CisgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlPcHRp
bWl6ZVRvREZHIiwgKCJjb21waWxpbmciKSk7CiAgICAgICAgIC8vIFdlIGNhbm5vdCBiZSBpbiB0
aGUgcHJvY2VzcyBvZiBhc3luY2hyb25vdXMgY29tcGlsYXRpb24gYW5kIGFsc28gaGF2ZSBhbiBv
cHRpbWl6ZWQKICAgICAgICAgLy8gcmVwbGFjZW1lbnQuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpOwpAQCAtMTMwNyw2ICsxMzEy
LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICAv
LyBDb2RlQmxvY2s6OnNldE9wdGltaXphdGlvblRocmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJl
c3VsdCgpIGFuZCB3ZSBoYXZlCiAgICAgICAgIC8vIG5vdGhpbmcgbGVmdCB0byBkby4KICAgICAg
ICAgaWYgKCFjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsKKyAgICAgICAg
ICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlPcHRpbWl6ZVRvREZHIiwg
KCJjb21waWxlZCBhbmQgZmFpbGVkIikpOwogICAgICAgICAgICAgY29kZUJsb2NrLT51cGRhdGVB
bGxQcmVkaWN0aW9ucygpOwogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkK
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDb2RlIGJsb2NrICIsICpjb2RlQmxvY2ssICIgd2Fz
IGNvbXBpbGVkIGJ1dCBpdCBkb2Vzbid0IGhhdmUgYW4gb3B0aW1pemVkIHJlcGxhY2VtZW50Llxu
Iik7CkBAIC0xMzI5LDYgKzEzMzUsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElP
TiBvcGVyYXRpCiAgICAgICAgIC8vIHNob3VsZFJlb3B0aW1pemVGcm9tTG9vcE5vdygpIHRvIGFs
d2F5cyByZXR1cm4gdHJ1ZS4gQnV0IHdlIG1ha2UgaXQgZG8gc29tZQogICAgICAgICAvLyBhZGRp
dGlvbmFsIGNoZWNraW5nIGFueXdheSwgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2YgcmVjb21waWxh
dGlvbiB0aHJhc2hpbmcuCiAgICAgICAgIGlmIChjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNo
b3VsZFJlb3B0aW1pemVGcm9tTG9vcE5vdygpKSB7CisgICAgICAgICAgICBDT0RFQkxPQ0tfTE9H
X0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgic2hvdWxkIHJlb3B0aW1p
emUgZnJvbSBsb29wIG5vdyIpKTsKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NS
KCkpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAiVHJp
Z2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAiLCAqY29kZUJsb2NrLApAQCAtMTMzOSw2ICsxMzQ2
LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFjb2RlQmxvY2stPnNob3VsZE9wdGltaXplTm93
KCkpIHsKKyAgICAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlP
cHRpbWl6ZVRvREZHIiwgKCJpbnN1ZmZpY2llbnQgcHJvZmlsaW5nIikpOwogICAgICAgICAgICAg
aWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAg
ICAgICAgICAgICAgICAgICAgICJEZWxheWluZyBvcHRpbWl6YXRpb24gZm9yICIsICpjb2RlQmxv
Y2ssCkBAIC0xMzY5LDE0ICsxMzc3LDE3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGkKICAgICAgICAgICAgIHZtLCByZXBsYWNlbWVudENvZGVCbG9jaywgbnVsbHB0
ciwgREZHOjpERkdNb2RlLCBieXRlY29kZUluZGV4LAogICAgICAgICAgICAgbXVzdEhhbmRsZVZh
bHVlcywgSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZSgpKTsKICAg
ICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQgIT0gQ29tcGlsYXRpb25TdWNjZXNzZnVsKQorICAg
ICAgICBpZiAocmVzdWx0ICE9IENvbXBpbGF0aW9uU3VjY2Vzc2Z1bCkgeworICAgICAgICAgICAg
Q09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoImNv
bXBpbGF0aW9uIGZhaWxlZCIpKTsKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwg
MCk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRDb2Rl
QmxvY2sgPSBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCk7CiAgICAgQVNTRVJUKEpJVENvZGU6Omlz
T3B0aW1pemluZ0pJVChvcHRpbWl6ZWRDb2RlQmxvY2stPmppdFR5cGUoKSkpOwogICAgIAogICAg
IGlmICh2b2lkKiBkYXRhQnVmZmVyID0gREZHOjpwcmVwYXJlT1NSRW50cnkoZXhlYywgb3B0aW1p
emVkQ29kZUJsb2NrLCBieXRlY29kZUluZGV4KSkgeworICAgICAgICBDT0RFQkxPQ0tfTE9HX0VW
RU5UKG9wdGltaXplZENvZGVCbG9jaywgIm9zckVudHJ5IiwgKCJhdCBiYyMiLCBieXRlY29kZUlu
ZGV4KSk7CiAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKICAgICAgICAgICAg
IGRhdGFMb2coCiAgICAgICAgICAgICAgICAgIlBlcmZvcm1pbmcgT1NSICIsICpjb2RlQmxvY2ss
ICIgLT4gIiwgKm9wdGltaXplZENvZGVCbG9jaywgIi5cbiIpOwpAQCAtMTQwNiw2ICsxNDE3LDcg
QEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgIC8vIHJpZ2h0
IG5vdy4gU28sIHdlIG9ubHkgdHJpZ2dlciByZW9wdGltaXphdGlvbiBvbmx5IHVwb24gdGhlIG1v
cmUgY29uc2VydmF0aXZlIChub24tbG9vcCkKICAgICAvLyByZW9wdGltaXphdGlvbiB0cmlnZ2Vy
LgogICAgIGlmIChvcHRpbWl6ZWRDb2RlQmxvY2stPnNob3VsZFJlb3B0aW1pemVOb3coKSkgewor
ICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RG
RyIsICgic2hvdWxkIHJlb3B0aW1pemUgbm93IikpOwogICAgICAgICBpZiAoT3B0aW9uczo6dmVy
Ym9zZU9TUigpKSB7CiAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICJUcmln
Z2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICIsICpjb2RlQmxvY2ssICIgLT4gIiwKQEAgLTE0MTks
NiArMTQzMSw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAg
ICAvLyBsb25nZXIgYW5kIHRoZW4gdHJ5IGFnYWluLgogICAgIGNvZGVCbG9jay0+b3B0aW1pemVB
ZnRlcldhcm1VcCgpOwogICAgIAorICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAi
ZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJPU1IgZmFpbGVkIikpOwogICAgIHJldHVybiBlbmNvZGVS
ZXN1bHQoMCwgMCk7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzE5LDYgKzMxOSw3IEBAIGlubGluZSBib29sIGppdENvbXBpbGVBbmRTZXRIZXVyaXN0aWNzKEMK
ICAgICBjb2RlQmxvY2stPnVwZGF0ZUFsbFZhbHVlUHJvZmlsZVByZWRpY3Rpb25zKCk7CiAKICAg
ICBpZiAoIWNvZGVCbG9jay0+Y2hlY2tJZkpJVFRocmVzaG9sZFJlYWNoZWQoKSkgeworICAgICAg
ICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5SklUQ29tcGlsZSIsICgidGhy
ZXNob2xkIG5vdCByZWFjaGVkLCBjb3VudGVyID0gIiwgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVD
b3VudGVyKCkpKTsKICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAg
ICAgIGRhdGFMb2dGKCIgICAgSklUIHRocmVzaG9sZCBzaG91bGQgYmUgbGlmdGVkLlxuIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMzNSw2ICszMzYsNyBAQCBpbmxpbmUgYm9vbCBqaXRD
b21waWxlQW5kU2V0SGV1cmlzdGljcyhDCiAgICAgICAgIENvbXBpbGF0aW9uUmVzdWx0IHJlc3Vs
dCA9IEpJVDo6Y29tcGlsZSgmdm0sIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsK
ICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAgICAgY2FzZSBDb21waWxhdGlvbkZhaWxl
ZDoKKyAgICAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlKSVRD
b21waWxlIiwgKCJjb21waWxhdGlvbiBmYWlsZWQiKSk7CiAgICAgICAgICAgICBpZiAoT3B0aW9u
czo6dmVyYm9zZU9TUigpKQogICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgSklUIGNvbXBp
bGF0aW9uIGZhaWxlZC5cbiIpOwogICAgICAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGlt
ZVNvb24oKTsKQEAgLTM3Miw2ICszNzQsOCBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGVu
dHJ5T1NSKEV4ZWNTCiAgICAgaWYgKCFqaXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyhjb2RlQmxv
Y2ssIGV4ZWMpKQogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIDApOwogICAgIAorICAgIENP
REVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiT1NSIGVudHJ5IiwgKCJpbiBwcm9sb2d1ZSIp
KTsKKyAgICAKICAgICBpZiAoa2luZCA9PSBQcm9sb2d1ZSkKICAgICAgICAgTExJTlRfUkVUVVJO
X1RXTyhjb2RlQmxvY2stPmppdENvZGUoKS0+ZXhlY3V0YWJsZUFkZHJlc3MoKSwgMCk7CiAgICAg
QVNTRVJUKGtpbmQgPT0gQXJpdHlDaGVjayk7CkBAIC00MjksNiArNDMzLDggQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0wobG9vcF9vc3IpCiAgICAgaWYgKCFqaXRDb21waWxlQW5kU2V0SGV1cmlzdGlj
cyhjb2RlQmxvY2ssIGV4ZWMpKQogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIDApOwogICAg
IAorICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAib3NyRW50cnkiLCAoImF0IGJj
IyIsIHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisKICAgICBBU1NF
UlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwogICAgIAog
ICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+IG1hcDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5j
cHAJKHJldmlzaW9uIDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlckNvbXBpbGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Miw2ICs0Miw3IEBAIENvbXBpbGF0aW9uOjpDb21waWxhdGlvbihCeXRlY29kZXMqIGJ5dGUKICAg
ICAsIG1fbnVtSW5saW5lZEdldEJ5SWRzKDApCiAgICAgLCBtX251bUlubGluZWRQdXRCeUlkcygw
KQogICAgICwgbV9udW1JbmxpbmVkQ2FsbHMoMCkKKyAgICAsIG1fdWlkKFVJRDo6Y3JlYXRlKCkp
CiB7CiB9CiAKQEAgLTEwNiw2ICsxMDcsMTEgQEAgdm9pZCBDb21waWxhdGlvbjo6c2V0SmV0dGlz
b25SZWFzb24oSmV0dAogICAgICAgICBtX2FkZGl0aW9uYWxKZXR0aXNvblJlYXNvbiA9IENTdHJp
bmcoKTsKIH0KIAordm9pZCBDb21waWxhdGlvbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAoreworICAgIG91dC5wcmludCgiQ29tcCIsIG1fdWlkKTsKK30KKwogSlNWYWx1ZSBDb21waWxh
dGlvbjo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgSlNPYmplY3QqIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwpAQCAtMTQ5LDYgKzE1NSw4IEBAIEpTVmFs
dWUgQ29tcGlsYXRpb246OnRvSlMoRXhlY1N0YXRlKiBleGUKICAgICBpZiAoIW1fYWRkaXRpb25h
bEpldHRpc29uUmVhc29uLmlzTnVsbCgpKQogICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVj
LT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYWRkaXRpb25hbEpldHRpc29uUmVhc29uLCBq
c1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4KG1fYWRkaXRpb25hbEpldHRpc29uUmVhc29u
KSkpOwogICAgIAorICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS51aWQsIG1fdWlkLnRvSlMoZXhlYykpOworICAgIAogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNv
bXBpbGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQ29tcGlsYXRpb24uaAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUHJvZmlsZXJPU1JFeGl0
U2l0ZS5oIgogI2luY2x1ZGUgIlByb2ZpbGVyT3JpZ2luU3RhY2suaCIKICNpbmNsdWRlICJQcm9m
aWxlclByb2ZpbGVkQnl0ZWNvZGVzLmgiCisjaW5jbHVkZSAiUHJvZmlsZXJVSUQuaCIKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4K
IApAQCAtNzUsNiArNzYsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXRKZXR0aXNvblJl
YXNvbihKZXR0aXNvblJlYXNvbiwgY29uc3QgRmlyZURldGFpbCopOwogICAgIAorICAgIFVJRCB1
aWQoKSBjb25zdCB7IHJldHVybiBtX3VpZDsgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0OwogICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKICAgICAK
IHByaXZhdGU6CkBAIC05MCw2ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9udW1J
bmxpbmVkR2V0QnlJZHM7CiAgICAgdW5zaWduZWQgbV9udW1JbmxpbmVkUHV0QnlJZHM7CiAgICAg
dW5zaWduZWQgbV9udW1JbmxpbmVkQ2FsbHM7CisgICAgVUlEIG1fdWlkOwogfTsKIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OlByb2ZpbGVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAyMDA2MjMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkpTT05PYmpl
Y3QuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBQcm9maWxlciB7CiAKQEAgLTU4LDcgKzU5LDExIEBAIERhdGFiYXNlOjp+RGF0YWJh
c2UoKQogQnl0ZWNvZGVzKiBEYXRhYmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKENvZGVCbG9jayog
Y29kZUJsb2NrKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisgICAg
cmV0dXJuIGVuc3VyZUJ5dGVjb2Rlc0Zvcihsb2NrZXIsIGNvZGVCbG9jayk7Cit9CisKK0J5dGVj
b2RlcyogRGF0YWJhc2U6OmVuc3VyZUJ5dGVjb2Rlc0Zvcihjb25zdCBMb2NrSG9sZGVyJiwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCit7CiAgICAgY29kZUJsb2NrID0gY29kZUJsb2NrLT5iYXNlbGlu
ZVZlcnNpb24oKTsKICAgICAKICAgICBIYXNoTWFwPENvZGVCbG9jayosIEJ5dGVjb2Rlcyo+Ojpp
dGVyYXRvciBpdGVyID0gbV9ieXRlY29kZXNNYXAuZmluZChjb2RlQmxvY2spOwpAQCAtNzgsMTMg
KzgzLDE4IEBAIHZvaWQgRGF0YWJhc2U6Om5vdGlmeURlc3RydWN0aW9uKENvZGVCbG8KICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIAogICAgIG1fYnl0ZWNvZGVzTWFwLnJlbW92
ZShjb2RlQmxvY2spOworICAgIG1fY29tcGlsYXRpb25NYXAucmVtb3ZlKGNvZGVCbG9jayk7CiB9
CiAKLXZvaWQgRGF0YWJhc2U6OmFkZENvbXBpbGF0aW9uKFBhc3NSZWZQdHI8Q29tcGlsYXRpb24+
IGNvbXBpbGF0aW9uKQordm9pZCBEYXRhYmFzZTo6YWRkQ29tcGlsYXRpb24oQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFBhc3NSZWZQdHI8Q29tcGlsYXRpb24+IHBhc3NlZENvbXBpbGF0aW9uKQogewor
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9u
VGhyZWFkKCkpOworCisgICAgUmVmUHRyPENvbXBpbGF0aW9uPiBjb21waWxhdGlvbiA9IHBhc3Nl
ZENvbXBpbGF0aW9uOwogICAgIAogICAgIG1fY29tcGlsYXRpb25zLmFwcGVuZChjb21waWxhdGlv
bik7CisgICAgbV9jb21waWxhdGlvbk1hcC5zZXQoY29kZUJsb2NrLCBjb21waWxhdGlvbik7CiB9
CiAKIEpTVmFsdWUgRGF0YWJhc2U6OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdApAQCAtMTAx
LDYgKzExMSwxMSBAQCBKU1ZhbHVlIERhdGFiYXNlOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgCiAg
ICAgICAgIGNvbXBpbGF0aW9ucy0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgbV9jb21waWxhdGlv
bnNbaV0tPnRvSlMoZXhlYykpOwogICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb21waWxhdGlvbnMsIGNvbXBpbGF0aW9ucyk7CiAgICAgCisg
ICAgSlNBcnJheSogZXZlbnRzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ldmVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGV2
ZW50cy0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgbV9ldmVudHNbaV0udG9KUyhleGVjKSk7Cisg
ICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmV2
ZW50cywgZXZlbnRzKTsKKyAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMzMsNiAr
MTQ4LDE1IEBAIHZvaWQgRGF0YWJhc2U6OnJlZ2lzdGVyVG9TYXZlQXRFeGl0KGNvbnMKICAgICBt
X3Nob3VsZFNhdmVBdEV4aXQgPSB0cnVlOwogfQogCit2b2lkIERhdGFiYXNlOjpsb2dFdmVudChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgY2hhciogc3VtbWFyeSwgY29uc3QgQ1N0cmluZyYg
ZGV0YWlsKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgQnl0
ZWNvZGVzKiBieXRlY29kZXMgPSBlbnN1cmVCeXRlY29kZXNGb3IobG9ja2VyLCBjb2RlQmxvY2sp
OworICAgIENvbXBpbGF0aW9uKiBjb21waWxhdGlvbiA9IG1fY29tcGlsYXRpb25NYXAuZ2V0KGNv
ZGVCbG9jayk7CisgICAgbV9ldmVudHMuYXBwZW5kKEV2ZW50KGN1cnJlbnRUaW1lKCksIGJ5dGVj
b2RlcywgY29tcGlsYXRpb24sIHN1bW1hcnksIGRldGFpbCkpOworfQorCiB2b2lkIERhdGFiYXNl
OjphZGREYXRhYmFzZVRvQXRFeGl0KCkKIHsKICAgICBpZiAoKytkaWRSZWdpc3RlckF0RXhpdCA9
PSAxKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJh
c2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJEYXRhYmFzZS5oCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJQcm9maWxlckJ5dGVjb2Rlcy5oIgogI2luY2x1ZGUgIlBy
b2ZpbGVyQ29tcGlsYXRpb24uaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uS2luZC5o
IgorI2luY2x1ZGUgIlByb2ZpbGVyRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAgLTUy
LDcgKzUzLDcgQEAgcHVibGljOgogICAgIEJ5dGVjb2RlcyogZW5zdXJlQnl0ZWNvZGVzRm9yKENv
ZGVCbG9jayopOwogICAgIHZvaWQgbm90aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJsb2NrKik7CiAgICAg
Ci0gICAgdm9pZCBhZGRDb21waWxhdGlvbihQYXNzUmVmUHRyPENvbXBpbGF0aW9uPik7CisgICAg
dm9pZCBhZGRDb21waWxhdGlvbihDb2RlQmxvY2sqLCBQYXNzUmVmUHRyPENvbXBpbGF0aW9uPik7
CiAgICAgCiAgICAgLy8gQ29udmVydHMgdGhlIGRhdGFiYXNlIHRvIGEgSmF2YVNjcmlwdCBvYmpl
Y3QgdGhhdCBpcyBzdWl0YWJsZSBmb3IgSlNPTiBzdHJpbmdpZmljYXRpb24uCiAgICAgLy8gTm90
ZSB0aGF0IGl0J3MgcHJvYmFibHkgYSBnb29kIGlkZWEgdG8gdXNlIGFuIEV4ZWNTdGF0ZSogYXNz
b2NpYXRlZCB3aXRoIGEgZ2xvYmFsCkBAIC03MCw3ICs3MSwxMSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHJlZ2lzdGVyVG9TYXZlQXRFeGl0KGNvbnN0IGNoYXIqIGZpbGVuYW1lKTsKICAgICAKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGxvZ0V2ZW50KENvZGVCbG9jayogY29kZUJsb2NrLCBj
b25zdCBjaGFyKiBzdW1tYXJ5LCBjb25zdCBDU3RyaW5nJiBkZXRhaWwpOworICAgIAogcHJpdmF0
ZToKKyAgICBCeXRlY29kZXMqIGVuc3VyZUJ5dGVjb2Rlc0Zvcihjb25zdCBMb2NrSG9sZGVyJiwg
Q29kZUJsb2NrKik7CisgICAgCiAgICAgdm9pZCBhZGREYXRhYmFzZVRvQXRFeGl0KCk7CiAgICAg
dm9pZCByZW1vdmVEYXRhYmFzZUZyb21BdEV4aXQoKTsKICAgICB2b2lkIHBlcmZvcm1BdEV4aXRT
YXZlKCkgY29uc3Q7CkBAIC04Miw2ICs4Nyw4IEBAIHByaXZhdGU6CiAgICAgU2VnbWVudGVkVmVj
dG9yPEJ5dGVjb2Rlcz4gbV9ieXRlY29kZXM7CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBCeXRl
Y29kZXMqPiBtX2J5dGVjb2Rlc01hcDsKICAgICBWZWN0b3I8UmVmUHRyPENvbXBpbGF0aW9uPj4g
bV9jb21waWxhdGlvbnM7CisgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBSZWZQdHI8Q29tcGlsYXRp
b24+PiBtX2NvbXBpbGF0aW9uTWFwOworICAgIFZlY3RvcjxFdmVudD4gbV9ldmVudHM7CiAgICAg
Ym9vbCBtX3Nob3VsZFNhdmVBdEV4aXQ7CiAgICAgQ1N0cmluZyBtX2F0RXhpdFNhdmVGaWxlbmFt
ZTsKICAgICBEYXRhYmFzZSogbV9uZXh0UmVnaXN0ZXJlZERhdGFiYXNlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckV2ZW50LmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckV2ZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
cm9maWxlckV2ZW50LmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJQcm9maWxlckJ5dGVjb2Rlcy5oIgorI2luY2x1
ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKKyNpbmNsdWRlICJQcm9maWxlclVJRC5oIgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKKwordm9pZCBFdmVudDo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChtX3RpbWUsICI6ICIsIHBv
aW50ZXJEdW1wKG1fYnl0ZWNvZGVzKSk7CisgICAgaWYgKG1fY29tcGlsYXRpb24pCisgICAgICAg
IG91dC5wcmludCgiICIsICptX2NvbXBpbGF0aW9uKTsKKyAgICBvdXQucHJpbnQoIjogIiwgbV9z
dW1tYXJ5KTsKKyAgICBpZiAobV9kZXRhaWwubGVuZ3RoKCkpCisgICAgICAgIG91dC5wcmludCgi
ICgiLCBtX2RldGFpbCwgIikiKTsKK30KKworSlNWYWx1ZSBFdmVudDo6dG9KUyhFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0Cit7CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGV4ZWMpOworICAgIAorICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS50aW1lLCBqc051bWJlcihtX3RpbWUpKTsKKyAgICByZXN1bHQtPnB1
dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGVzSUQsIGpz
TnVtYmVyKG1fYnl0ZWNvZGVzLT5pZCgpKSk7CisgICAgaWYgKG1fY29tcGlsYXRpb24pCisgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
b21waWxhdGlvblVJRCwgbV9jb21waWxhdGlvbi0+dWlkKCkudG9KUyhleGVjKSk7CisgICAgcmVz
dWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnN1bW1hcnks
IGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjgobV9zdW1tYXJ5KSkpOworICAgIGlmICht
X2RldGFpbC5sZW5ndGgoKSkKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmRldGFpbCwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpmcm9t
VVRGOChtX2RldGFpbCkpKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6UHJvZmlsZXIKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgUHJvZmlsZXJFdmVudF9oCisjZGVmaW5lIFByb2ZpbGVyRXZlbnRfaAorCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9m
aWxlciB7CisKK2NsYXNzIEJ5dGVjb2RlczsKK2NsYXNzIENvbXBpbGF0aW9uOworCitjbGFzcyBF
dmVudCB7CitwdWJsaWM6CisgICAgRXZlbnQoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgRXZl
bnQoZG91YmxlIHRpbWUsIEJ5dGVjb2RlcyogYnl0ZWNvZGVzLCBDb21waWxhdGlvbiogY29tcGls
YXRpb24sIGNvbnN0IGNoYXIqIHN1bW1hcnksIGNvbnN0IENTdHJpbmcmIGRldGFpbCkKKyAgICAg
ICAgOiBtX3RpbWUodGltZSkKKyAgICAgICAgLCBtX2J5dGVjb2RlcyhieXRlY29kZXMpCisgICAg
ICAgICwgbV9jb21waWxhdGlvbihjb21waWxhdGlvbikKKyAgICAgICAgLCBtX3N1bW1hcnkoc3Vt
bWFyeSkKKyAgICAgICAgLCBtX2RldGFpbChkZXRhaWwpCisgICAgeworICAgIH0KKyAgICAKKyAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2J5dGVjb2RlczsKKyAgICB9CisgICAgCisgICAgZG91YmxlIHRpbWUoKSBjb25zdCB7IHJldHVy
biBtX3RpbWU7IH0KKyAgICBCeXRlY29kZXMqIGJ5dGVjb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1f
Ynl0ZWNvZGVzOyB9CisgICAgQ29tcGlsYXRpb24qIGNvbXBpbGF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9jb21waWxhdGlvbjsgfQorICAgIGNvbnN0IGNoYXIqIHN1bW1hcnkoKSBjb25zdCB7IHJl
dHVybiBtX3N1bW1hcnk7IH0KKyAgICBjb25zdCBDU3RyaW5nJiBkZXRhaWwoKSBjb25zdCB7IHJl
dHVybiBtX2RldGFpbDsgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OworICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6Cisg
ICAgZG91YmxlIG1fdGltZSB7IDAgfTsKKyAgICBCeXRlY29kZXMqIG1fYnl0ZWNvZGVzIHsgbnVs
bHB0ciB9OworICAgIENvbXBpbGF0aW9uKiBtX2NvbXBpbGF0aW9uIHsgbnVsbHB0ciB9OworICAg
IGNvbnN0IGNoYXIqIG1fc3VtbWFyeSB7IG51bGxwdHIgfTsKKyAgICBDU3RyaW5nIG1fZGV0YWls
OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlByb2ZpbGVyCisKKyNlbmRpZiAvLyBQcm9m
aWxlckV2ZW50X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVyVUlELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJVSUQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyVUlELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQcm9maWxlclVJRC5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
UHJvZmlsZXIgeworCitVSUQgVUlEOjpjcmVhdGUoKQoreworICAgIHN0YXRpYyBTdGF0aWNMb2Nr
IGxvY2s7CisgICAgc3RhdGljIHVpbnQ2NF90IGNvdW50ZXI7CisgICAgCisgICAgTG9ja0hvbGRl
ciBsb2NrZXIobG9jayk7CisgICAgVUlEIHJlc3VsdDsKKyAgICByZXN1bHQubV91aWQgPSArK2Nv
dW50ZXI7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBVSUQ6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQobV91aWQpOworfQorCitKU1ZhbHVlIFVJ
RDo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIHRvU3RyaW5nKCp0aGlzKSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQcm9maWxl
cgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJVSUQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJVSUQu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
clVJRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUHJvZmlsZXJVSURfaAorI2Rl
ZmluZSBQcm9maWxlclVJRF9oCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBQcm9maWxlciB7CisKK2NsYXNzIFVJRCB7CitwdWJsaWM6CisgICAg
VUlEKCkKKyAgICAgICAgOiBtX3VpZCgwKQorICAgIHsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IFVJRCBmcm9tSW50KHVpbnQ2NF90IHZhbHVlKQorICAgIHsKKyAgICAgICAgVUlEIHJlc3VsdDsK
KyAgICAgICAgcmVzdWx0Lm1fdWlkID0gdmFsdWU7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorICAgIAorICAgIFVJRChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAg
ICAgIDogbV91aWQoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKQorICAgIHsK
KyAgICB9CisgICAgCisgICAgc3RhdGljIFVJRCBjcmVhdGUoKTsKKyAgICAKKyAgICB1aW50NjRf
dCB0b0ludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV91aWQ7CisgICAgfQorICAg
IAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVSUQmIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fdWlkID09IG90aGVyLm1fdWlkOworICAgIH0KKyAgICAKKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgVUlEJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKnRoaXMgIT0gVUlEKCk7CisgICAg
fQorICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuICp0aGlzICE9IFVJRChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7
CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIEludEhhc2g8dWludDY0X3Q+OjpoYXNoKG1fdWlkKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSopIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICB1aW50NjRfdCBtX3VpZDsKK307CisKK3N0
cnVjdCBVSURIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVSUQmIGtleSkg
eyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVJRCYg
YSwgY29uc3QgVUlEJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6UHJvZmlsZXIKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNo
PEpTQzo6UHJvZmlsZXI6OlVJRD4geworICAgIHR5cGVkZWYgSlNDOjpQcm9maWxlcjo6VUlESGFz
aCBIYXNoOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6UHJvZmlsZXI6OlVJRD4gOiBTaW1wbGVD
bGFzc0hhc2hUcmFpdHM8SlNDOjpQcm9maWxlcjo6VUlEPiB7IH07CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCisjZW5kaWYgLy8gUHJvZmlsZXJVSURfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJldmlzaW9uIDIwMDYy
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQAogICAgIG1hY3JvKGNvbGxhdGlvbikg
XAogICAgIG1hY3JvKGNvbHVtbikgXAogICAgIG1hY3JvKGNvbXBpbGF0aW9uS2luZCkgXAorICAg
IG1hY3JvKGNvbXBpbGF0aW9uVUlEKSBcCiAgICAgbWFjcm8oY29tcGlsYXRpb25zKSBcCiAgICAg
bWFjcm8oY29tcGlsZSkgXAogICAgIG1hY3JvKGNvbmZpZ3VyYWJsZSkgXApAQCAtMTM2LDEyICsx
MzcsMTQgQEAKICAgICBtYWNybyhkZWZpbmVQcm9wZXJ0eSkgXAogICAgIG1hY3JvKGRlc2NyaXB0
aW9uKSBcCiAgICAgbWFjcm8oZGVzY3JpcHRpb25zKSBcCisgICAgbWFjcm8oZGV0YWlsKSBcCiAg
ICAgbWFjcm8oZGlzcGxheU5hbWUpIFwKICAgICBtYWNybyhkb2N1bWVudCkgXAogICAgIG1hY3Jv
KGRvbmUpIFwKICAgICBtYWNybyhlbnVtZXJhYmxlKSBcCiAgICAgbWFjcm8oZXJhKSBcCiAgICAg
bWFjcm8oZXZhbCkgXAorICAgIG1hY3JvKGV2ZW50cykgXAogICAgIG1hY3JvKGV4ZWMpIFwKICAg
ICBtYWNybyhleGVjdXRpb25Db3VudCkgXAogICAgIG1hY3JvKGV4aXRLaW5kKSBcCkBAIC0yMjcs
OSArMjMwLDExIEBACiAgICAgbWFjcm8oc3RhY2spIFwKICAgICBtYWNybyhzdGlja3kpIFwKICAg
ICBtYWNybyhzdWJhcnJheSkgXAorICAgIG1hY3JvKHN1bW1hcnkpIFwKICAgICBtYWNybyh0YXJn
ZXQpIFwKICAgICBtYWNybyh0ZXN0KSBcCiAgICAgbWFjcm8odGhlbikgXAorICAgIG1hY3JvKHRp
bWUpIFwKICAgICBtYWNybyh0aW1lWm9uZSkgXAogICAgIG1hY3JvKHRpbWVab25lTmFtZSkgXAog
ICAgIG1hY3JvKHRvRXhwb25lbnRpYWwpIFwKQEAgLTI0MCw2ICsyNDUsNyBAQAogICAgIG1hY3Jv
KHRvUHJlY2lzaW9uKSBcCiAgICAgbWFjcm8odG9TdHJpbmcpIFwKICAgICBtYWNybyh0b3ApIFwK
KyAgICBtYWNybyh1aWQpIFwKICAgICBtYWNybyh1bmljb2RlKSBcCiAgICAgbWFjcm8odXNhZ2Up
IFwKICAgICBtYWNybyh2YWx1ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDIwMDYyMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIw
MTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJQYXJzZXIu
aCIKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVy
LmgiCisjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVkZSAiV0FTTUZ1bmN0aW9uUGFyc2Vy
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTE3Niw2ICsxNzcsOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2Rl
KFZNJiB2CiB7CiAgICAgQVNTRVJUKHZtLmhlYXAuaXNEZWZlcnJlZCgpKTsKICAgICAKKyAgICBD
T0RFQkxPQ0tfTE9HX0VWRU5UKGdlbmVyaWNDb2RlQmxvY2ssICJpbnN0YWxsQ29kZSIsICgpKTsK
KyAgICAKICAgICBDb2RlQmxvY2sqIG9sZENvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgCiAgICAg
c3dpdGNoIChjb2RlVHlwZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShy
ZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MTIsNiArNjEyLDkgQEAgcHVibGljOgogICAgIEJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkmIGJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKSB7IHJldHVybiAqbV9i
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OyB9CiAgICAgCiAgICAgU2hhZG93Q2hpY2tlbiYgc2hh
ZG93Q2hpY2tlbigpIHsgcmV0dXJuICptX3NoYWRvd0NoaWNrZW47IH0KKyAgICAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgbG9nRXZlbnQoQ29kZUJsb2NrKiwgY29uc3Qg
Y2hhciogc3VtbWFyeSwgY29uc3QgRnVuYyYgZnVuYyk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNSW5saW5lcy5oCShyZXZpc2lvbiAyMDA2MjMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaWZuZGVmIFZNSW5saW5lc19oCiAjZGVmaW5lIFZNSW5saW5lc19oCiAKKyNpbmNsdWRlICJQ
cm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXRjaGRvZy5o
IgogCkBAIC0zOCw2ICszOSwxNSBAQCBib29sIFZNOjpzaG91bGRUcmlnZ2VyVGVybWluYXRpb24o
RXhlY1N0CiAgICAgcmV0dXJuIHdhdGNoZG9nKCktPnNob3VsZFRlcm1pbmF0ZShleGVjKTsKIH0K
IAordGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KK3ZvaWQgVk06OmxvZ0V2ZW50KENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBjaGFyKiBzdW1tYXJ5LCBjb25zdCBGdW5jJiBmdW5jKQoreworICAg
IGlmIChMSUtFTFkoIW1fcGVyQnl0ZWNvZGVQcm9maWxlcikpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX3BlckJ5dGVjb2RlUHJvZmlsZXItPmxvZ0V2ZW50KGNvZGVCbG9jaywgc3VtbWFy
eSwgZnVuYygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBMTEludERh
dGFfaApJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDY0NykKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDUtMTAgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRlcm5hbCBKU0MgcHJvZmlsZXIgc2hvdWxk
IGhhdmUgYSB0aW1lc3RhbXBlZCBsb2cgb2YgZXZlbnRzIGZvciBlYWNoIGNvZGUgYmxvY2sKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzUzOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgKiB3dGYvUHJp
bnRTdHJlYW0uaDoKKyAgICAgICAgKFdURjo6UHJpbnRTdHJlYW06OnByaW50KToKKwogMjAxNi0w
NS0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEdldCByaWQg
b2YgYSBsb3Qgb2YgY2FsbHMgdG8gUmVmUHRyOjpyZWxlYXNlKCkKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1ByaW50U3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUHJpbnRTdHJl
YW0uaAkocmV2aXNpb24gMjAwNjIzKQorKysgU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw2ICs1NSw4IEBAIHB1YmxpYzoKICAg
ICAvLyBUeXBpY2FsbHkgYSBuby1vcCBmb3IgbWFueSBzdWJjbGFzc2VzIG9mIFByaW50U3RyZWFt
LCB0aGlzIGlzIGEgaGludCB0aGF0CiAgICAgLy8gdGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBm
bHVzaCBpdHMgYnVmZmVycyBpZiBpdCBoYWQgbm90IGRvbmUgc28gYWxyZWFkeS4KICAgICB2aXJ0
dWFsIHZvaWQgZmx1c2goKTsKKyAgICAKKyAgICB2b2lkIHByaW50KCkgeyB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgcHJpbnQoY29uc3QgVCYgdmFsdWUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>