<?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>210521</bug_id>
          
          <creation_ts>2020-04-14 16:11:43 -0700</creation_ts>
          <short_desc>Move ApplePay code from WebKitAdditions to WebCore and WebKit</short_desc>
          <delta_ts>2020-04-25 21:58:21 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1641590</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-14 16:11:43 -0700</bug_when>
    <thetext>Move ApplePay code from WebKitAdditions to WebCore and WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641592</commentid>
    <comment_count>1</comment_count>
      <attachid>396473</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-14 16:20:45 -0700</bug_when>
    <thetext>Created attachment 396473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641599</commentid>
    <comment_count>2</comment_count>
      <attachid>396475</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-14 16:40:54 -0700</bug_when>
    <thetext>Created attachment 396475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641603</commentid>
    <comment_count>3</comment_count>
      <attachid>396477</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-14 16:47:03 -0700</bug_when>
    <thetext>Created attachment 396477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641613</commentid>
    <comment_count>4</comment_count>
      <attachid>396479</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-14 17:03:52 -0700</bug_when>
    <thetext>Created attachment 396479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641614</commentid>
    <comment_count>5</comment_count>
      <attachid>396480</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-14 17:21:13 -0700</bug_when>
    <thetext>Created attachment 396480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641620</commentid>
    <comment_count>6</comment_count>
      <attachid>396483</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-14 17:42:05 -0700</bug_when>
    <thetext>Created attachment 396483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641640</commentid>
    <comment_count>7</comment_count>
      <attachid>396487</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-14 18:30:13 -0700</bug_when>
    <thetext>Created attachment 396487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641645</commentid>
    <comment_count>8</comment_count>
      <attachid>396489</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-14 19:08:14 -0700</bug_when>
    <thetext>Created attachment 396489
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641666</commentid>
    <comment_count>9</comment_count>
      <attachid>396495</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-14 20:56:36 -0700</bug_when>
    <thetext>Created attachment 396495
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641671</commentid>
    <comment_count>10</comment_count>
      <attachid>396496</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-14 21:42:29 -0700</bug_when>
    <thetext>Created attachment 396496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641692</commentid>
    <comment_count>11</comment_count>
      <attachid>396505</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-14 23:22:40 -0700</bug_when>
    <thetext>Created attachment 396505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641852</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-15 10:14:59 -0700</bug_when>
    <thetext>Hooray!  I got all EWS green.
This needs to be landed at the same time as removing the internal files to not break the internal build, so I&apos;ll do this late at night.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643159</commentid>
    <comment_count>13</comment_count>
      <attachid>396505</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-18 21:39:12 -0700</bug_when>
    <thetext>Comment on attachment 396505
Patch

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

&gt; Source/WebCore/DerivedSources.make:-1258
&gt; --include WebCoreDerivedSourcesAdditions.make

This is still needed.  I won&apos;t remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643162</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-18 21:57:03 -0700</bug_when>
    <thetext>This is super tricky to do without renaming all the new files because internal SDKs have all the files in them and they are included.  I think I&apos;ll have to put a prefix on all the new files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645676</commentid>
    <comment_count>15</comment_count>
      <attachid>397593</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-25 15:42:13 -0700</bug_when>
    <thetext>Created attachment 397593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645734</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-25 20:03:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/r260717</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645735</commentid>
    <comment_count>17</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-25 20:04:15 -0700</bug_when>
    <thetext>Corresponding internal change ef405149415e6e6f7df4758f25f06befdff410a1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645736</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-25 20:04:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/62379475&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645742</commentid>
    <comment_count>19</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-25 20:32:50 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/260718/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645745</commentid>
    <comment_count>20</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-25 21:11:58 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/260719/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645752</commentid>
    <comment_count>21</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-25 21:58:21 -0700</bug_when>
    <thetext>https://trac.webkit.org/r260721</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396473</attachid>
            <date>2020-04-14 16:20:45 -0700</date>
            <delta_ts>2020-04-14 16:40:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210521-20200414162044.patch</filename>
            <type>text/plain</type>
            <size>124473</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAyMC0wNC0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgQXBw
bGVQYXkgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0byBXZWJDb3JlIGFuZCBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDUyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9ubHkgNCBtaW5v
ciBtb2RpZmljYXRpb25zIHdlcmUgbmVjZXNzYXJ5LCBhcyBmb2xsb3dzOgorCisgICAgICAgIDEu
IFBheW1lbnRTZXR1cEZlYXR1cmVzJ3MgUmV0YWluUHRyPE5TQXJyYXk8UEtQYXltZW50U2V0dXBG
ZWF0dXJlICo+PiB3YXMgY2hhbmdlZCB0byBSZXRhaW5QdHI8TlNBcnJheT4gdG8gd29yayB3aXRo
IEMrKy4KKyAgICAgICAgMi4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlBZGRpdGlvbnMgbWVz
c2FnZXMgd2VyZSBtb3ZlZCB0byBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSwgcmVtb3Zpbmcg
dGhlIG5lZWQgZm9yCisgICAgICAgICAgIHRoZSBleHRyYSBtZXNzYWdlIHJlY2VpdmVyLCB0aGUg
T3B0aW9uYWw8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlBZGRpdGlvbnM+LCBhbmQgdGhlIGZp
bmlzaENvbnN0cnVjdGlvbi4KKyAgICAgICAgMy4gV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAn
cyBtYWNyb3MgdGhhdCBjb2xsaWRlZCB3aXRoIG90aGVyIG1hY3JvcyB3ZXJlIHJlbmFtZWQuICBU
aGlzIHdhcyBuZWNlc3NhcnkgYmVjYXVzZSBvZiBkaWZmZXJlbnQgc291cmNlIHVuaWZpY2F0aW9u
LgorICAgICAgICA0LiBQYXltZW50U2V0dXBGZWF0dXJlcy5oIHdhcyByZW5hbWVkIHRvIEFwcGxl
UGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaCB0byBiZSBhYmxlIHRvIGJ1aWxkIHdpdGggUGF5bWVu
dFNldHVwRmVhdHVyZXMuaCBpbiB0aGUgU0RLLgorCisgICAgICAgIFRoZSByZXN0IGlzIGp1c3Qg
Y29weSBhbmQgcGFzdGUuCisKKyAgICAgICAgVGhlcmUgaXNuJ3QgYSBnb29kIHdheSB0byBsYW5k
IHRoaXMgd2l0aG91dCBicmVha2luZyB0aGUgYnVpbGQgd2l0aG91dCByZW1vdmluZyB0aGUgZmls
ZXMgZnJvbSBXZWJLaXRBZGRpdGlvbnMgYXQgdGhlIHNhbWUgdGltZSwKKyAgICAgICAgc28gSSds
bCBkbyB0aGUgdHdvIGF0IHRoZSBzYW1lIHRpbWUgbGF0ZSBhdCBuaWdodCB0byBub3QgY2F1c2Ug
ZGlzcnVwdGlvbi4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1
cmF0aW9uLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGw6
CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5pZGw6CisgICAg
ICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5pZGw6
CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbmlzaENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6cmVx
dWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVJlcXVlc3RCYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNl
c3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAg
ICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Omluc3RhbGxtZW50
Q29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6c2V0SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnNob3VsZERpc2Nsb3NlRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlT
ZXR1cDo6Z2V0U2V0dXBGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVw
OjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpBcHBsZVBheVNldHVw
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGVQYXlTZXR1cDo6c3VzcGVuZCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1
cDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuaWRs
OiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6cGxhdGZvcm1GZWF0
dXJlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0
dXJlLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVy
ZTo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6
c3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU6OnN1
cHBvcnRzSW5zdGFsbG1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0
dXBGZWF0dXJlOjpBcHBsZVBheVNldHVwRmVhdHVyZSk6CisgICAgICAgICogTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaWRsOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpnZXRTZXR1cEZlYXR1cmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6YmVnaW5BcHBsZVBheVNl
dHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6ZW5kQXBw
bGVQYXlTZXR1cCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1l
bnRDb25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
Ojp0b0RlY2ltYWxOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1GZWF0dXJlVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQbGF0Zm9ybUNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjo6UGF5bWVudElu
c3RhbGxtZW50Q29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uOjpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXlt
ZW50TWV0aG9kQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5pc2hDb252ZXJ0aW5nKToK
KyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RVcGRhdGVDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRNZXRob2RVcGRhdGU6OnNldEluc3RhbGxt
ZW50R3JvdXBJZGVudGlmaWVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkZGl0aW9uYWxF
cnJvcik6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBh
eVJlcXVlc3QuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6
bW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXApOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNob3dQbGF5YmFja1RhcmdldFBp
Y2tlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjbGllbnRT
dGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzZXRQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpwbGF5YmFja1RhcmdldFBpY2tlcldh
c0Rpc21pc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpj
b25maWd1cmVQbGF5YmFja1RhcmdldENsaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVk
aWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhdGNoZG9n
VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6d2F0Y2hk
b2dUaW1lckZpcmVkKToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9XZWJDb3JlQWRkaXRpb25zLm1tOgorCiAyMDIwLTA0LTEwICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGVyc2lzdGVudENvZGVycyBzaG91
bGQgdXNlIG1vZGVybiBkZWNvZGluZyBzeW50YXgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBAIEpTX0JJTkRJTkdfSURM
UyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlFcnJvci5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yQ29kZS5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yQ29udGFjdEZp
ZWxkLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5TGluZUl0ZW0uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbCBcCkBAIC0xMTgsNiArMTE5LDkgQEAgSlNfQklO
RElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJl
cXVlc3RCYXNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
U2Vzc2lvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNl
c3Npb25FcnJvci5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNldHVwLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXBGZWF0dXJlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
U2V0dXBGZWF0dXJlVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5pZGwg
XApAQCAtMTI1NSw4ICsxMjU5LDYgQEAgdnBhdGggJS5pbiAkKFdFQktJVEFERElUSU9OU19IRUFE
RVJfU0VBUgogQURESVRJT05BTF9FVkVOVF9OQU1FUyA9CiBBRERJVElPTkFMX0VWRU5UX1RBUkdF
VF9GQUNUT1JZID0KIAotLWluY2x1ZGUgV2ViQ29yZURlcml2ZWRTb3VyY2VzQWRkaXRpb25zLm1h
a2UKLQogSlNfQklORElOR19JRExTICs9ICQoQURESVRJT05BTF9CSU5ESU5HX0lETFMpCiAKIGFs
bCA6ICQoQURESVRJT05BTF9CSU5ESU5HX0lETFM6JS5pZGw9SlMlLmgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTU5Myw2ICs1OTMsOCBAQCBXSExTTFN0YW5k
YXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQ
YXltZW50QXV0aG9yaXplZEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQ
YXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5UmVxdWVzdEJhc2UuY3BwCisgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNw
cAorICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUubW0KICAgICBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmNwcApAQCAtNjAwLDYgKzYwMiw3IEBA
IFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRDb29yZGluYXRvci5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29y
ZGluYXRvckNsaWVudC5jcHAKKyAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24ubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0VmFs
aWRhdG9yLm1tCiAgICAgTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lvbi5jcHAKIApAQCAt
NjE4LDYgKzYyMSw3IEBAIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAgICAg
SlNBcHBsZVBheUVycm9yLmNwcAogICAgIEpTQXBwbGVQYXlFcnJvckNvZGUuY3BwCiAgICAgSlNB
cHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmNwcAorICAgIEpTQXBwbGVQYXlJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uY3BwCiAgICAgSlNBcHBsZVBheUxpbmVJdGVtLmNwcAogICAgIEpTQXBwbGVQ
YXlNZXJjaGFudENhcGFiaWxpdHkuY3BwCiAgICAgSlNBcHBsZVBheU1vZGlmaWVyLmNwcApAQCAt
NjM1LDYgKzYzOSw5IEBAIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAgICAg
SlNBcHBsZVBheVJlcXVlc3RCYXNlLmNwcAogICAgIEpTQXBwbGVQYXlTZXNzaW9uLmNwcAogICAg
IEpTQXBwbGVQYXlTZXNzaW9uRXJyb3IuY3BwCisgICAgSlNBcHBsZVBheVNldHVwLmNwcAorICAg
IEpTQXBwbGVQYXlTZXR1cEZlYXR1cmUuY3BwCisgICAgSlNBcHBsZVBheVNldHVwRmVhdHVyZVR5
cGUuY3BwCiAgICAgSlNBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwCiAg
ICAgSlNBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5jcHAKICAgICBKU0FwcGxlUGF5U2hp
cHBpbmdNZXRob2QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lO
U1RBTExNRU5UUykKKworI2luY2x1ZGUgIkFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
cnVjdCBBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbiB7CisgICAgQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlIGZlYXR1cmVUeXBlIHsgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlOjpBcHBs
ZUNhcmQgfTsKKyAgICBTdHJpbmcgbWVyY2hhbmRpc2luZ0ltYWdlRGF0YTsKKyAgICBTdHJpbmcg
b3BlblRvQnV5VGhyZXNob2xkQW1vdW50OworICAgIFN0cmluZyBiaW5kaW5nVG90YWxBbW91bnQ7
CisgICAgU3RyaW5nIGN1cnJlbmN5Q29kZTsKKyAgICBTdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVy
OworICAgIFN0cmluZyByZWZlcnJlcklkZW50aWZpZXI7CisgICAgYm9vbCBpc0luU3RvcmVQdXJj
aGFzZSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxs
bWVudENvbmZpZ3VyYXRpb24uaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9u
YWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UUywKK10gZGljdGlvbmFyeSBBcHBsZVBheUluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbiB7CisgICAgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIGZlYXR1cmVU
eXBlID0gImFwcGxlQ2FyZCI7CisgICAgRE9NU3RyaW5nIG1lcmNoYW5kaXNpbmdJbWFnZURhdGE7
CisgICAgRE9NU3RyaW5nIG9wZW5Ub0J1eVRocmVzaG9sZEFtb3VudDsKKyAgICBET01TdHJpbmcg
YmluZGluZ1RvdGFsQW1vdW50OworICAgIERPTVN0cmluZyBjdXJyZW5jeUNvZGU7CisgICAgRE9N
U3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsKKyAgICBET01TdHJpbmcgcmVmZXJyZXJJZGVudGlm
aWVyOworICAgIGJvb2xlYW4gaXNJblN0b3JlUHVyY2hhc2U7Cit9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5oCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsNiBAQAogI2luY2x1ZGUgIkFwcGxl
UGF5UGF5bWVudENvbnRhY3QuaCIKICNpbmNsdWRlICJBcHBsZVBheVBheW1lbnRNZXRob2QuaCIK
IAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25z
L0FwcGxlUGF5UGF5bWVudEFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IEFwcGxlUGF5UGF5bWVudCB7CkBAIC00NiwxMSArNDIsNyBAQCBzdHJ1Y3Qg
QXBwbGVQYXlQYXltZW50IHsKICAgICBUb2tlbiB0b2tlbjsKICAgICBPcHRpb25hbDxBcHBsZVBh
eVBheW1lbnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKICAgICBPcHRpb25hbDxBcHBsZVBheVBh
eW1lbnRDb250YWN0PiBzaGlwcGluZ0NvbnRhY3Q7Ci0KLSNpZiBkZWZpbmVkKEFQUExFUEFZUEFZ
TUVOVF9BRERJVElPTlMpCi1BUFBMRVBBWVBBWU1FTlRfQURESVRJT05TCi0jdW5kZWYgQVBQTEVQ
QVlQQVlNRU5UX0FERElUSU9OUwotI2VuZGlmCisgICAgU3RyaW5nIGluc3RhbGxtZW50QXV0aG9y
aXphdGlvblRva2VuOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbAkocmV2aXNpb24gMjU5OTIyKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAgICAgcmVxdWlyZWQgQXBwbGVQYXlQYXltZW50
VG9rZW4gdG9rZW47CiAgICAgQXBwbGVQYXlQYXltZW50Q29udGFjdCBiaWxsaW5nQ29udGFjdDsK
ICAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IHNoaXBwaW5nQ29udGFjdDsKKyAgICBbQ29uZGl0
aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gRE9NU3RyaW5nIGluc3RhbGxtZW50QXV0aG9y
aXphdGlvblRva2VuOwogfTsKIAogWwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oCShyZXZpc2lvbiAyNTk5
MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1l
dGhvZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsNiBAQAogI2luY2x1ZGUgIkFwcGxl
UGF5UGF5bWVudFBhc3MuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAotI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCi0jaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0FwcGxlUGF5UGF5
bWVudE1ldGhvZEFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBjbGFzcyBBcHBsZVBheVBheW1lbnRNZXRob2RUeXBlOwpAQCAtNDYsMTEgKzQyLDcgQEAg
c3RydWN0IEFwcGxlUGF5UGF5bWVudE1ldGhvZCB7ICAgIAogICAgIE9wdGlvbmFsPFR5cGU+IHR5
cGU7CiAgICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50UGFzcz4gcGF5bWVudFBhc3M7CiAgICAg
T3B0aW9uYWw8QXBwbGVQYXlQYXltZW50Q29udGFjdD4gYmlsbGluZ0NvbnRhY3Q7Ci0KLSNpZiBk
ZWZpbmVkKEFQUExFUEFZUEFZTUVOVE1FVEhPRF9BRERJVElPTlMpCi1BUFBMRVBBWVBBWU1FTlRN
RVRIT0RfQURESVRJT05TCi0jdW5kZWYgQVBQTEVQQVlQQVlNRU5UTUVUSE9EX0FERElUSU9OUwot
I2VuZGlmCisgICAgU3RyaW5nIGJpbmRUb2tlbjsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhv
ZC5pZGwJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsNCArMzMs
NSBAQAogICAgIEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGUgdHlwZTsKICAgICBBcHBsZVBheVBh
eW1lbnRQYXNzIHBheW1lbnRQYXNzOwogICAgIEFwcGxlUGF5UGF5bWVudENvbnRhY3QgYmlsbGlu
Z0NvbnRhY3Q7CisgICAgW0NvbmRpdGlvbmFsPUFQUExFX1BBWV9JTlNUQUxMTUVOVFNdIERPTVN0
cmluZyBiaW5kVG9rZW47CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCShyZXZp
c2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UGF5bWVudE1ldGhvZFVwZGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyMCArMjksMTIgQEAK
IAogI2luY2x1ZGUgIkFwcGxlUGF5TGluZUl0ZW0uaCIKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCi0jaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0FwcGxlUGF5UGF5bWVudE1ldGhvZFVw
ZGF0ZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0
IEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZSB7CiAgICAgQXBwbGVQYXlMaW5lSXRlbSBuZXdU
b3RhbDsKICAgICBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4gbmV3TGluZUl0ZW1zOwotCi0jaWYg
ZGVmaW5lZChBUFBMRVBBWVBBWU1FTlRNRVRIT0RVUERBVEVfQURESVRJT05TKQotQVBQTEVQQVlQ
QVlNRU5UTUVUSE9EVVBEQVRFX0FERElUSU9OUwotI3VuZGVmIEFQUExFUEFZUEFZTUVOVE1FVEhP
RFVQREFURV9BRERJVElPTlMKLSNlbmRpZgorICAgIFN0cmluZyBpbnN0YWxsbWVudEdyb3VwSWRl
bnRpZmllcjsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5pZGwJKHJl
dmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNCArMjgsNSBA
QAogXSBkaWN0aW9uYXJ5IEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZSB7CiAgICAgcmVxdWly
ZWQgQXBwbGVQYXlMaW5lSXRlbSBuZXdUb3RhbDsKICAgICBzZXF1ZW5jZTxBcHBsZVBheUxpbmVJ
dGVtPiBuZXdMaW5lSXRlbXM7CisgICAgW0NvbmRpdGlvbmFsPUFQUExFX1BBWV9JTlNUQUxMTUVO
VFNdIERPTVN0cmluZyBpbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcjsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0
QmFzZS5jcHAJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE2ICsz
MSwyOSBAQAogI2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRvci5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlSZXF1ZXN0QmFzZUFkZGl0
aW9ucy5jcHA+Ci0jZWxzZQogbmFtZXNwYWNlIFdlYkNvcmUgewotc3RhdGljIHZvaWQgZmluaXNo
Q29udmVydGluZyhBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIEFwcGxlUGF5UmVxdWVz
dEJhc2UmKSB7IH0KLXN0YXRpYyBib29sIHJlcXVpcmVzU3VwcG9ydGVkTmV0d29ya3ModW5zaWdu
ZWQsIGNvbnN0IEFwcGxlUGF5UmVxdWVzdEJhc2UmKSB7IHJldHVybiB0cnVlOyB9Ci19CisKK3N0
YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qm
IHJlc3VsdCwgQXBwbGVQYXlSZXF1ZXN0QmFzZSYgcmVxdWVzdCkKK3sKKyNpZiBFTkFCTEUoQVBQ
TEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBpZiAocmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3Vy
YXRpb24pCisgICAgICAgIHJlc3VsdC5zZXRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oV1RGTW92
ZSgqcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHJlc3VsdCk7CisgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwogI2VuZGlmCit9CiAK
LW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyBib29sIHJlcXVpcmVzU3VwcG9ydGVkTmV0d29y
a3ModW5zaWduZWQgdmVyc2lvbiwgY29uc3QgQXBwbGVQYXlSZXF1ZXN0QmFzZSYgcmVxdWVzdCkK
K3sKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICByZXR1cm4gdmVyc2lv
biA8IDggfHwgIXJlcXVlc3QuaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0odmVyc2lvbik7CisgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOworICAgIHJl
dHVybiB0cnVlOworI2VuZGlmCit9CiAKIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8U3RyaW5n
Pj4gY29udmVydEFuZFZhbGlkYXRlKERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWduZWQgdmVyc2lv
biwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN1cHBvcnRlZE5ldHdvcmtzLCBjb25zdCBQYXltZW50
Q29vcmRpbmF0b3ImIHBheW1lbnRDb29yZGluYXRvcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5oCShyZXZp
c2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UmVxdWVzdEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEwIEBACiAjaWYgRU5B
QkxFKEFQUExFX1BBWSkKIAogI2luY2x1ZGUgIkFwcGxlUGF5Q29udGFjdEZpZWxkLmgiCisjaW5j
bHVkZSAiQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBcHBs
ZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudENvbnRh
Y3QuaCIKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW5jbHVkZSA8V2ViS2l0QWRk
aXRpb25zL0FwcGxlUGF5UmVxdWVzdEJhc2VBZGRpdGlvbnMuaD4KLSNlbmRpZgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwpAQCAtNTQsMTAgKzUxLDcgQEAgc3RydWN0
IEFwcGxlUGF5UmVxdWVzdEJhc2UgewogICAgIFN0cmluZyBhcHBsaWNhdGlvbkRhdGE7CiAgICAg
VmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkQ291bnRyaWVzOwogCi0jaWYgZGVmaW5lZChBUFBMRVBB
WVJFUVVFU1RCQVNFX0FERElUSU9OUykKLUFQUExFUEFZUkVRVUVTVEJBU0VfQURESVRJT05TCi0j
dW5kZWYgQVBQTEVQQVlSRVFVRVNUQkFTRV9BRERJVElPTlMKLSNlbmRpZgorICAgIE9wdGlvbmFs
PEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBpbnN0YWxsbWVudENvbmZpZ3VyYXRp
b247CiB9OwogCiBFeGNlcHRpb25PcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdD4gY29u
dmVydEFuZFZhbGlkYXRlKERvY3VtZW50JiwgdW5zaWduZWQgdmVyc2lvbiwgQXBwbGVQYXlSZXF1
ZXN0QmFzZSYsIGNvbnN0IFBheW1lbnRDb29yZGluYXRvciYpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNl
c3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNSArNjUsMTcgQEAKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNpZiBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBh
eVNlc3Npb25BZGRpdGlvbnMuY3BwPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRp
YyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUGF5bWVudE1ldGhvZFVwZGF0ZSYsIEFwcGxlUGF5UGF5
bWVudE1ldGhvZFVwZGF0ZSYmKSB7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7
CitzdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBheW1lbnRNZXRob2RVcGRhdGUmIGNvbnZl
cnRlZFVwZGF0ZSwgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlJiYgdXBkYXRlKQoreworI2lm
IEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGNvbnZlcnRlZFVwZGF0ZS5zZXRJ
bnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcih1cGRhdGUuaW5zdGFsbG1lbnRHcm91cElkZW50aWZp
ZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udmVydGVkVXBkYXRlKTsKKyAgICBVTlVT
RURfUEFSQU0odXBkYXRlKTsKKyNlbmRpZgorfQogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoQXBwbGVQYXlTZXNzaW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qu
aAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNCAr
MjgsMTEgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiUGF5bWVudENvbnRh
Y3QuaCIKKyNpbmNsdWRlICJQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgiCiAjaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNp
bmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3RBZGRp
dGlvbnMuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CkBAIC0xNDEsMTAgKzEzOCw4IEBAIHB1YmxpYzoKICAg
ICBSZXF1ZXN0ZXIgcmVxdWVzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZXI7IH0KICAg
ICB2b2lkIHNldFJlcXVlc3RlcihSZXF1ZXN0ZXIgcmVxdWVzdGVyKSB7IG1fcmVxdWVzdGVyID0g
cmVxdWVzdGVyOyB9CiAKLSNpZiBkZWZpbmVkKEFQUExFUEFZU0VTU0lPTlBBWU1FTlRSRVFVRVNU
X1BVQkxJQ19BRERJVElPTlMpCi1BUFBMRVBBWVNFU1NJT05QQVlNRU5UUkVRVUVTVF9QVUJMSUNf
QURESVRJT05TCi0jdW5kZWYgQVBQTEVQQVlTRVNTSU9OUEFZTUVOVFJFUVVFU1RfUFVCTElDX0FE
RElUSU9OUwotI2VuZGlmCisgICAgY29uc3QgUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlv
biYgaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb247IH0KKyAgICB2b2lkIHNldEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uJiYgaW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
KSB7IG1faW5zdGFsbG1lbnRDb25maWd1cmF0aW9uID0gV1RGTW92ZShpbnN0YWxsbWVudENvbmZp
Z3VyYXRpb24pOyB9CiAKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV92ZXJzaW9uIHsgMCB9OwpA
QCAtMTcyLDEwICsxNjcsNyBAQCBwcml2YXRlOgogCiAgICAgUmVxdWVzdGVyIG1fcmVxdWVzdGVy
IHsgUmVxdWVzdGVyOjpBcHBsZVBheUpTIH07CiAKLSNpZiBkZWZpbmVkKEFQUExFUEFZU0VTU0lP
TlBBWU1FTlRSRVFVRVNUX1BSSVZBVEVfQURESVRJT05TKQotQVBQTEVQQVlTRVNTSU9OUEFZTUVO
VFJFUVVFU1RfUFJJVkFURV9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVNFU1NJT05QQVlNRU5U
UkVRVUVTVF9QUklWQVRFX0FERElUSU9OUwotI2VuZGlmCisgICAgUGF5bWVudEluc3RhbGxtZW50
Q29uZmlndXJhdGlvbiBtX2luc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKIH07CiAKIHN0cnVjdCBQ
YXltZW50RXJyb3IgewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNldHVwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5U2V0dXAuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXBw
bGVQYXlTZXR1cC5oIgorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSlNBcHBsZVBheVNldHVwRmVhdHVyZS5oIgorI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUg
IlBheW1lbnRDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRvckNsaWVu
dC5oIgorI2luY2x1ZGUgIlBheW1lbnRTZXNzaW9uLmgiCisjaW5jbHVkZSAiUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wg
c2hvdWxkRGlzY2xvc2VGZWF0dXJlcyhEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgYXV0byog
cGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UgfHwgcGFnZS0+dXNlc0VwaGVt
ZXJhbFNlc3Npb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGRvY3Vt
ZW50LnNldHRpbmdzKCkuYXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQoKTsKK30K
Kwordm9pZCBBcHBsZVBheVNldHVwOjpnZXRTZXR1cEZlYXR1cmVzKERvY3VtZW50JiBkb2N1bWVu
dCwgU2V0dXBGZWF0dXJlc1Byb21pc2UmJiBwcm9taXNlKQoreworICAgIGF1dG8gY2FuQ2FsbCA9
IFBheW1lbnRTZXNzaW9uOjpjYW5DcmVhdGVTZXNzaW9uKGRvY3VtZW50KTsKKyAgICBpZiAoY2Fu
Q2FsbC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLnNldHRsZShjYW5DYWxsLnJl
bGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHBh
Z2UgPSBkb2N1bWVudC5wYWdlKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIHByb21pc2Uu
c2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UpIHsKKyAgICAgICAgcHJv
bWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBSZXNvbHZlIHdpdGggYW4gZW1wdHkgc2VxdWVuY2Ugb2Yg
ZmVhdHVyZXMgaWYgQXBwbGUgUGF5IGNhcGFiaWxpdHkgZGlzY2xvc3VyZSBpcyBub3QgYWxsb3dl
ZC4KKyAgICBpZiAoIXNob3VsZERpc2Nsb3NlRmVhdHVyZXMoZG9jdW1lbnQpKSB7CisgICAgICAg
IHByb21pc2UucmVzb2x2ZSh7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9z
ZXR1cEZlYXR1cmVzUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CisKKyAgICBwYWdlLT5wYXlt
ZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5nZXRTZXR1cEZlYXR1cmVzKG1fY29uZmlndXJhdGlv
biwgZG9jdW1lbnQudXJsKCksIFt0aGlzLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0Fj
dGl2aXR5KCp0aGlzKV0oVmVjdG9yPFJlZjxBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYgc2V0dXBG
ZWF0dXJlcykgeworICAgICAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkKKyAgICAgICAg
ICAgIHN0ZDo6ZXhjaGFuZ2UobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSwgV1RGOjpudWxsb3B0KS0+
c2V0dGxlKFdURk1vdmUoc2V0dXBGZWF0dXJlcykpOworICAgIH0pOworfQorCit2b2lkIEFwcGxl
UGF5U2V0dXA6OmJlZ2luKERvY3VtZW50JiBkb2N1bWVudCwgVmVjdG9yPFJlZlB0cjxBcHBsZVBh
eVNldHVwRmVhdHVyZT4+JiYgZmVhdHVyZXMsIEJlZ2luUHJvbWlzZSYmIHByb21pc2UpCit7Cisg
ICAgYXV0byBjYW5DYWxsID0gUGF5bWVudFNlc3Npb246OmNhbkNyZWF0ZVNlc3Npb24oZG9jdW1l
bnQpOworICAgIGlmIChjYW5DYWxsLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2Uu
c2V0dGxlKGNhbkNhbGwucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmICghVXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpKSB7CisgICAgICAgIHByb21pc2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NF
cnJvciwgIk11c3QgY2FsbCBBcHBsZVBheVNldHVwLmJlZ2luIGZyb20gYSB1c2VyIGdlc3R1cmUg
aGFuZGxlci4iIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBwYWdlID0g
ZG9jdW1lbnQucGFnZSgpOworICAgIGlmICghcGFnZSkgeworICAgICAgICBwcm9taXNlLnNldHRs
ZShFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtX2JlZ2luUHJvbWlzZSkgeworICAgICAgICBwcm9taXNlLnNldHRsZShF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1fYmVnaW5Qcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKyAgICBtX3BlbmRpbmdB
Y3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOworCisgICAgcGFnZS0+cGF5bWVu
dENvb3JkaW5hdG9yKCkuY2xpZW50KCkuYmVnaW5BcHBsZVBheVNldHVwKG1fY29uZmlndXJhdGlv
biwgZG9jdW1lbnQudXJsKCksIFdURk1vdmUoZmVhdHVyZXMpLCBbdGhpc10oYm9vbCByZXN1bHQp
IHsKKyAgICAgICAgaWYgKG1fYmVnaW5Qcm9taXNlKQorICAgICAgICAgICAgc3RkOjpleGNoYW5n
ZShtX2JlZ2luUHJvbWlzZSwgV1RGOjpudWxsb3B0KS0+c2V0dGxlKHJlc3VsdCk7CisgICAgfSk7
Cit9CisKK0FwcGxlUGF5U2V0dXA6OkFwcGxlUGF5U2V0dXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBBY3RpdmVE
T01PYmplY3QoJmNvbnRleHQpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1
cmF0aW9uKSkKK3sKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKK30KKwordm9pZCBBcHBsZVBheVNl
dHVwOjpzdG9wKCkKK3sKKyAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkKKyAgICAgICAg
c3RkOjpleGNoYW5nZShtX3NldHVwRmVhdHVyZXNQcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0
bGUoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKKworICAgIGlmIChtX2JlZ2luUHJvbWlzZSkK
KyAgICAgICAgc3RkOjpleGNoYW5nZShtX2JlZ2luUHJvbWlzZSwgV1RGOjpudWxsb3B0KS0+c2V0
dGxlKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7CisKKyAgICBpZiAoYXV0byBwYWdlID0gZG93
bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLnBhZ2UoKSkKKyAgICAg
ICAgcGFnZS0+cGF5bWVudENvb3JkaW5hdG9yKCkuY2xpZW50KCkuZW5kQXBwbGVQYXlTZXR1cCgp
OworCisgICAgbV9wZW5kaW5nQWN0aXZpdHkgPSBudWxscHRyOworfQorCit2b2lkIEFwcGxlUGF5
U2V0dXA6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKK3sKKyAgICBzdG9wKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VU
VVApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
U2V0dXAuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2V0dXAuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorCisjaW5j
bHVkZSA8V2ViQ29yZS9BY3RpdmVET01PYmplY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0pTRE9N
UHJvbWlzZURlZmVycmVkLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBcHBsZVBheVNl
dHVwRmVhdHVyZTsKK2NsYXNzIERlZmVycmVkUHJvbWlzZTsKK2NsYXNzIERvY3VtZW50OworCitj
bGFzcyBBcHBsZVBheVNldHVwIDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFJlZkNv
dW50ZWQ8QXBwbGVQYXlTZXR1cD4geworcHVibGljOgorICAgIHN0cnVjdCBDb25maWd1cmF0aW9u
IHsKKyAgICAgICAgU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsKKyAgICAgICAgU3RyaW5nIHJl
ZmVycmVySWRlbnRpZmllcjsKKyAgICAgICAgU3RyaW5nIHNpZ25hdHVyZTsKKyAgICAgICAgVmVj
dG9yPFN0cmluZz4gc2lnbmVkRmllbGRzOworICAgIH07CisKKyAgICBzdGF0aWMgUmVmPEFwcGxl
UGF5U2V0dXA+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBDb25maWd1
cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFwcGxlUGF5U2V0dXAoY29udGV4dCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworICAg
IH0KKworICAgIHVzaW5nIFNldHVwRmVhdHVyZXNQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVk
PElETFNlcXVlbmNlPElETEludGVyZmFjZTxBcHBsZVBheVNldHVwRmVhdHVyZT4+PjsKKyAgICB2
b2lkIGdldFNldHVwRmVhdHVyZXMoRG9jdW1lbnQmLCBTZXR1cEZlYXR1cmVzUHJvbWlzZSYmKTsK
KworICAgIHVzaW5nIEJlZ2luUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFu
PjsKKyAgICB2b2lkIGJlZ2luKERvY3VtZW50JiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheVNldHVw
RmVhdHVyZT4+JiYsIEJlZ2luUHJvbWlzZSYmKTsKKworcHJpdmF0ZToKKyAgICBBcHBsZVBheVNl
dHVwKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBDb25maWd1cmF0aW9uJiYpOworCisgICAgLy8g
QWN0aXZlRE9NT2JqZWN0CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJBcHBsZVBheVNldHVwIjsgfQorICAgIHZvaWQgc3RvcCgpIGZp
bmFsOworICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKKworICAg
IENvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworICAgIE9wdGlvbmFsPFNldHVwRmVhdHVy
ZXNQcm9taXNlPiBtX3NldHVwRmVhdHVyZXNQcm9taXNlOworICAgIE9wdGlvbmFsPEJlZ2luUHJv
bWlzZT4gbV9iZWdpblByb21pc2U7CisgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxBcHBsZVBh
eVNldHVwPj4gbV9wZW5kaW5nQWN0aXZpdHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuaWRsCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25k
aXRpb25hbD1BUFBMRV9QQVlfU0VUVVAsCitdIGRpY3Rpb25hcnkgQXBwbGVQYXlTZXR1cENvbmZp
Z3VyYXRpb24geworICAgIERPTVN0cmluZyBtZXJjaGFudElkZW50aWZpZXI7CisgICAgRE9NU3Ry
aW5nIHJlZmVycmVySWRlbnRpZmllcjsKKyAgICBET01TdHJpbmcgc2lnbmF0dXJlOworICAgIHNl
cXVlbmNlPERPTVN0cmluZz4gc2lnbmVkRmllbGRzOworfTsKKworWworICAgIEFjdGl2ZURPTU9i
amVjdCwKKyAgICBDb25kaXRpb25hbD1BUFBMRV9QQVlfU0VUVVAsCisgICAgQ29uc3RydWN0b3Io
QXBwbGVQYXlTZXR1cENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiksCisgICAgQ29uc3RydWN0
b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorICAgIEVuYWJsZWRCeVNldHRpbmc9
QXBwbGVQYXksCisgICAgU2VjdXJlQ29udGV4dCwKK10gaW50ZXJmYWNlIEFwcGxlUGF5U2V0dXAg
eworICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gUHJvbWlzZTxzZXF1ZW5jZTxBcHBsZVBheVNldHVw
RmVhdHVyZT4+IGdldFNldHVwRmVhdHVyZXMoKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFBy
b21pc2U8Ym9vbGVhbj4gYmVnaW4oc2VxdWVuY2U8QXBwbGVQYXlTZXR1cEZlYXR1cmU+IHNldHVw
RmVhdHVyZXMpOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXR1cEZlYXR1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIFBLUGF5bWVudFNl
dHVwRmVhdHVyZTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEFwcGxlUGF5
U2V0dXBGZWF0dXJlVHlwZSA6IHVpbnQ4X3Q7CisKK2NsYXNzIEFwcGxlUGF5U2V0dXBGZWF0dXJl
IDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGVQYXlTZXR1cEZlYXR1cmU+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPEFwcGxlUGF5U2V0dXBGZWF0dXJlPiBjcmVhdGUoUEtQYXltZW50U2V0dXBG
ZWF0dXJlICpmZWF0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXBw
bGVQYXlTZXR1cEZlYXR1cmUoZmVhdHVyZSkpOworICAgIH0KKworICAgIEFwcGxlUGF5U2V0dXBG
ZWF0dXJlVHlwZSB0eXBlKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhf
dCB7CisgICAgICAgIFVuc3VwcG9ydGVkLAorICAgICAgICBTdXBwb3J0ZWQsCisgICAgICAgIFN1
cHBsZW1lbnRhcnlTdXBwb3J0ZWQsCisgICAgICAgIENvbXBsZXRlZCwKKyAgICB9OworICAgIFN0
YXRlIHN0YXRlKCkgY29uc3Q7CisKKyAgICBQS1BheW1lbnRTZXR1cEZlYXR1cmUgKnBsYXRmb3Jt
RmVhdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZS5nZXQoKTsgfQorCisjaWYgRU5BQkxF
KEFQUExFX1BBWV9JTlNUQUxMTUVOVFMpCisgICAgYm9vbCBzdXBwb3J0c0luc3RhbGxtZW50cygp
IGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
QXBwbGVQYXlTZXR1cEZlYXR1cmUoUEtQYXltZW50U2V0dXBGZWF0dXJlICopOworCisgICAgUmV0
YWluUHRyPFBLUGF5bWVudFNldHVwRmVhdHVyZT4gbV9mZWF0dXJlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlT
ZXR1cEZlYXR1cmUuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1BUFBMRV9QQVlf
U0VUVVAsCitdIGVudW0gQXBwbGVQYXlTZXR1cEZlYXR1cmVTdGF0ZSB7CisgICAgInVuc3VwcG9y
dGVkIiwKKyAgICAic3VwcG9ydGVkIiwKKyAgICAic3VwcGxlbWVudGFyeVN1cHBvcnRlZCIsCisg
ICAgImNvbXBsZXRlZCIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1BUFBMRV9QQVlfU0VUVVAs
CisgICAgRW5hYmxlZEJ5U2V0dGluZz1BcHBsZVBheSwKKyAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAorICAgIFNlY3VyZUNvbnRleHQsCitdIGludGVyZmFjZSBBcHBsZVBheVNldHVwRmVh
dHVyZSB7CisgICAgW0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5
U2V0dXBGZWF0dXJlVHlwZSB0eXBlOworICAgIFtDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBBcHBsZVBheVNldHVwRmVhdHVyZVN0YXRlIHN0YXRlOworICAgIFtDYWNoZWRBdHRy
aWJ1dGUsIENvbmRpdGlvbmFsPUFQUExFX1BBWV9JTlNUQUxMTUVOVFNdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIHN1cHBvcnRzSW5zdGFsbG1lbnRzOworfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5t
bQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2V0dXBGZWF0dXJlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaCIKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCisKKyNpbXBvcnQgIkFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5oIgorI2ltcG9ydCAiUGFzc0tpdFNQSUFkZGl0aW9ucy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZSBBcHBsZVBh
eVNldHVwRmVhdHVyZTo6dHlwZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChbbV9mZWF0dXJlIHR5
cGVdKSB7CisgICAgY2FzZSBQS1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQYXk6CisgICAg
ICAgIHJldHVybiBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlUGF5OworICAgICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIGNhc2UgUEtQYXltZW50U2V0
dXBGZWF0dXJlVHlwZUFwcGxlUGF5X1g6CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAorICAgICAgICByZXR1cm4gQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlOjpBcHBs
ZUNhcmQ7CisgICAgfQorfQorCitBcHBsZVBheVNldHVwRmVhdHVyZTo6U3RhdGUgQXBwbGVQYXlT
ZXR1cEZlYXR1cmU6OnN0YXRlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKFttX2ZlYXR1cmUgc3Rh
dGVdKSB7CisgICAgY2FzZSBQS1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVVuc3VwcG9ydGVkOgor
ICAgICAgICByZXR1cm4gU3RhdGU6OlVuc3VwcG9ydGVkOworICAgIGNhc2UgUEtQYXltZW50U2V0
dXBGZWF0dXJlU3RhdGVTdXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6U3VwcG9ydGVk
OworICAgIGNhc2UgUEtQYXltZW50U2V0dXBGZWF0dXJlU3RhdGVTdXBwbGVtZW50YXJ5U3VwcG9y
dGVkOgorICAgICAgICByZXR1cm4gU3RhdGU6OlN1cHBsZW1lbnRhcnlTdXBwb3J0ZWQ7CisgICAg
Y2FzZSBQS1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZUNvbXBsZXRlZDoKKyAgICAgICAgcmV0dXJu
IFN0YXRlOjpDb21wbGV0ZWQ7CisgICAgfQorfQorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNU
QUxMTUVOVFMpCitib29sIEFwcGxlUGF5U2V0dXBGZWF0dXJlOjpzdXBwb3J0c0luc3RhbGxtZW50
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2ZlYXR1cmUgc3VwcG9ydGVkT3B0aW9uc10gJiBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVTdXBwb3J0ZWRPcHRpb25zSW5zdGFsbG1lbnRzOworfQorI2Vu
ZGlmCisKK0FwcGxlUGF5U2V0dXBGZWF0dXJlOjpBcHBsZVBheVNldHVwRmVhdHVyZShQS1BheW1l
bnRTZXR1cEZlYXR1cmUgKmZlYXR1cmUpCisgICAgOiBtX2ZlYXR1cmUgeyBmZWF0dXJlIH0KK3sK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BB
WV9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlT
ZXR1cEZlYXR1cmVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
ZW51bSBjbGFzcyBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgOiB1aW50OF90IHsKKyAgICBBcHBs
ZVBheSwKKyAgICBBcHBsZUNhcmQsCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBl
LmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1BUFBMRV9QQVlfU0VUVVAsCitdIGVu
dW0gQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIHsKKyAgICAiYXBwbGVQYXkiLAorICAgICJhcHBs
ZUNhcmQiCit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Q29vcmRpbmF0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCShyZXZpc2lvbiAyNTk5MjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMTIgQEAKICNpZiBFTkFCTEUoQVBQTEVf
UEFZKQogCiAjaW5jbHVkZSAiQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaCIKKyNpbmNs
dWRlICJBcHBsZVBheVNldHVwLmgiCisjaW5jbHVkZSAiQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCIK
KyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9QYXltZW50Q29vcmRpbmF0b3JDbGllbnRB
ZGRpdGlvbnMuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3Vt
ZW50OwpAQCAtNzEsMTMgKzcwLDEyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmly
dHVhbCB2b2lkIGdldFNldHVwRmVhdHVyZXMoY29uc3QgQXBwbGVQYXlTZXR1cDo6Q29uZmlndXJh
dGlvbiYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZjxBcHBs
ZVBheVNldHVwRmVhdHVyZT4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5BcHBsZVBheVNldHVwKGNvbnN0
IEFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwmLCBWZWN0b3I8UmVmUHRy
PEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZW5kQXBwbGVQYXlTZXR1cCgpIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCB+UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwotCi0jaWYgZGVmaW5l
ZChQQVlNRU5UQ09PUkRJTkFUT1JDTElFTlRfQURESVRJT05TKQotUEFZTUVOVENPT1JESU5BVE9S
Q0xJRU5UX0FERElUSU9OUwotI3VuZGVmIFBBWU1FTlRDT09SRElOQVRPUkNMSUVOVF9BRERJVElP
TlMKLSNlbmRpZgogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RB
TExNRU5UUykKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBQS1Bh
eW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworCitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OworICAgIFBheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24oY29uc3QgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3Vy
YXRpb24mKTsKKyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFJldGFpblB0cjxQ
S1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+JiYpOworCisgICAgUEtQYXltZW50SW5z
dGFsbG1lbnRDb25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
PiBtX2NvbmZpZ3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50
Q29uZmlndXJhdGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNT
S0lUX0lOU1RBTExNRU5UUykKKworI2ltcG9ydCAiQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3Vy
YXRpb24uaCIKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0b0RlY2ltYWxOdW1iZXIoKSBp
biBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLgorc3RhdGljIE5TRGVjaW1hbE51bWJl
ciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQoreworICAgIGlmICghYW1v
dW50KQorICAgICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciB6ZXJvXTsKKyAgICByZXR1cm4g
W05TRGVjaW1hbE51bWJlciBkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzphbW91bnQgbG9jYWxlOkB7
IE5TTG9jYWxlRGVjaW1hbFNlcGFyYXRvciA6IEAiLiIgfV07Cit9CisKK3N0YXRpYyBQS1BheW1l
bnRTZXR1cEZlYXR1cmVUeXBlIHBsYXRmb3JtRmVhdHVyZVR5cGUoY29uc3QgQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlJiBmZWF0dXJlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVUeXBlKSB7
CisgICAgY2FzZSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlUGF5OgorICAgICAgICBy
ZXR1cm4gUEtQYXltZW50U2V0dXBGZWF0dXJlVHlwZUFwcGxlUGF5OworICAgIGNhc2UgQXBwbGVQ
YXlTZXR1cEZlYXR1cmVUeXBlOjpBcHBsZUNhcmQ6CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCisgICAgICAgIHJldHVybiBQS1BheW1lbnRTZXR1cEZlYXR1cmVU
eXBlQXBwbGVQYXlfWDsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CisgICAgfQorfQorCitzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbj4gY3JlYXRlUGxhdGZvcm1Db25maWd1cmF0aW9uKGNvbnN0IEFwcGxlUGF5SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uJiBjb3JlQ29uZmlndXJhdGlvbikKK3sKKyAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1
cmF0aW9uSW5zdGFuY2UoKSBpbml0XSk7CisKKyAgICBbY29uZmlndXJhdGlvbiBzZXRGZWF0dXJl
OnBsYXRmb3JtRmVhdHVyZVR5cGUoY29yZUNvbmZpZ3VyYXRpb24uZmVhdHVyZVR5cGUpXTsKKwor
ICAgIFtjb25maWd1cmF0aW9uIHNldEJpbmRpbmdUb3RhbEFtb3VudDp0b0RlY2ltYWxOdW1iZXIo
Y29yZUNvbmZpZ3VyYXRpb24uYmluZGluZ1RvdGFsQW1vdW50KV07CisgICAgW2NvbmZpZ3VyYXRp
b24gc2V0Q3VycmVuY3lDb2RlOmNvcmVDb25maWd1cmF0aW9uLmN1cnJlbmN5Q29kZV07CisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0SW5TdG9yZVB1cmNoYXNlOmNvcmVDb25maWd1cmF0aW9uLmlzSW5T
dG9yZVB1cmNoYXNlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRPcGVuVG9CdXlUaHJlc2hvbGRB
bW91bnQ6dG9EZWNpbWFsTnVtYmVyKGNvcmVDb25maWd1cmF0aW9uLm9wZW5Ub0J1eVRocmVzaG9s
ZEFtb3VudCldOworCisgICAgYXV0byBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhID0gYWRvcHROUyhb
W05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmNvcmVDb25maWd1cmF0
aW9uLm1lcmNoYW5kaXNpbmdJbWFnZURhdGEgb3B0aW9uczowXSk7CisgICAgW2NvbmZpZ3VyYXRp
b24gc2V0TWVyY2hhbmRpc2luZ0ltYWdlRGF0YTptZXJjaGFuZGlzaW5nSW1hZ2VEYXRhLmdldCgp
XTsKKworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVF9JREVOVElGSUVSUykKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgaWYgKCFbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHNldEluc3RhbGxtZW50TWVyY2hhbnRJZGVudGlmaWVyOildIHx8ICFbY29uZmlndXJh
dGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFJlZmVycmVySWRlbnRpZmllcjop
XSkKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisjZW5kaWYKKyAgICBbY29uZmlndXJh
dGlvbiBzZXRJbnN0YWxsbWVudE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5t
ZXJjaGFudElkZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldFJlZmVycmVySWRlbnRp
Zmllcjpjb3JlQ29uZmlndXJhdGlvbi5yZWZlcnJlcklkZW50aWZpZXJdOworI2VuZGlmCisKKyAg
ICByZXR1cm4gY29uZmlndXJhdGlvbjsKK30KKworUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbjo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihjb25zdCBBcHBsZVBheUluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmlndXJhdGlv
biB7IGNyZWF0ZVBsYXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSB9Cit7Cit9CisK
K1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb246OlBheW1lbnRJbnN0YWxsbWVudENvbmZp
Z3VyYXRpb24oUmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4mJiBj
b25maWd1cmF0aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShjb25maWd1cmF0
aW9uKSB9Cit7Cit9CisKK1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiAqUGF5bWVu
dEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjo6cGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9k
VXBkYXRlLmgJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAs
NiBAQAogI2luY2x1ZGUgIkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNs
dWRlIDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudE1ldGhvZFVwZGF0ZUFkZGl0aW9ucy5oPgotI2Vu
ZGlmCi0KIE9CSkNfQ0xBU1MgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGU7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDExICs0Niw4IEBAIHB1YmxpYzoKICAgICBjb25z
dCBUb3RhbEFuZExpbmVJdGVtcyYgdG90YWxBbmRMaW5lSXRlbXMoKSBjb25zdDsKICAgICBQS1Bh
eW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSAqcGxhdGZvcm1VcGRhdGUoKSBjb25zdDsK
IAotI2lmIGRlZmluZWQoUEFZTUVOVE1FVEhPRFVQREFURV9QVUJMSUNfQURESVRJT05TKQotUEFZ
TUVOVE1FVEhPRFVQREFURV9QVUJMSUNfQURESVRJT05TCi0jdW5kZWYgUEFZTUVOVE1FVEhPRFVQ
REFURV9QVUJMSUNfQURESVRJT05TCi0jZW5kaWYKLSAgICAKKyAgICB2b2lkIHNldEluc3RhbGxt
ZW50R3JvdXBJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOworCiBwcml2YXRlOgogICAgIE9wdGlv
bmFsPFRvdGFsQW5kTGluZUl0ZW1zPiBtX3RvdGFsQW5kTGluZUl0ZW1zOwogICAgIFJldGFpblB0
cjxQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZT4gbV9wbGF0Zm9ybVVwZGF0ZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2Ev
UGF5bWVudENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMs
MTUgKzMzLDE4IEBACiAjaW1wb3J0ICJQYXltZW50TWV0aG9kLmgiCiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1w
b3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudENvY29hQWRkaXRpb25zLm1tPgotI2Vsc2UKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50
ICosIEFwcGxlUGF5UGF5bWVudCYpIHsgfQotfQotI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKK3N0YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50ICpwYXltZW50LCBBcHBs
ZVBheVBheW1lbnQmIHJlc3VsdCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQor
ICAgIGlmIChOU1N0cmluZyAqaW5zdGFsbG1lbnRBdXRob3JpemF0aW9uVG9rZW4gPSBwYXltZW50
Lmluc3RhbGxtZW50QXV0aG9yaXphdGlvblRva2VuKQorICAgICAgICByZXN1bHQuaW5zdGFsbG1l
bnRBdXRob3JpemF0aW9uVG9rZW4gPSBpbnN0YWxsbWVudEF1dGhvcml6YXRpb25Ub2tlbjsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHBheW1lbnQpOworICAgIFVOVVNFRF9QQVJBTShyZXN1bHQp
OworI2VuZGlmCit9CiAKIHN0YXRpYyBBcHBsZVBheVBheW1lbnQ6OlRva2VuIGNvbnZlcnQoUEtQ
YXltZW50VG9rZW4gKnBheW1lbnRUb2tlbikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1t
CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2Nv
Y29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDE4
IEBACiAjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRNZXRob2RUeXBlLmgiCiAjaW1wb3J0IDxwYWwv
c3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0j
aW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudE1ldGhvZENvY29hQWRkaXRpb25zLm1tPgot
I2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmco
UEtQYXltZW50TWV0aG9kICosIEFwcGxlUGF5UGF5bWVudE1ldGhvZCYpIHsgfQotfQotI2VuZGlm
CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQ
YXltZW50TWV0aG9kICpwYXltZW50TWV0aG9kLCBBcHBsZVBheVBheW1lbnRNZXRob2QmIHJlc3Vs
dCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGlmIChOU1N0cmluZyAq
YmluZFRva2VuID0gcGF5bWVudE1ldGhvZC5iaW5kVG9rZW4pCisgICAgICAgIHJlc3VsdC5iaW5k
VG9rZW4gPSBiaW5kVG9rZW47CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwYXltZW50TWV0aG9k
KTsKKyAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKKyNlbmRpZgorfQogCiBzdGF0aWMgQXBwbGVQ
YXlQYXltZW50UGFzczo6QWN0aXZhdGlvblN0YXRlIGNvbnZlcnQoUEtQYXltZW50UGFzc0FjdGl2
YXRpb25TdGF0ZSBwYXltZW50UGFzc0FjdGl2YXRpb25TdGF0ZSkKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RVcGRhdGVDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksMTEgQEAgUEtQYXltZW50UmVxdWVzdFBheW1lbnRN
ZXRob2RVcGRhdGUgKlBheQogICAgIHJldHVybiBtX3BsYXRmb3JtVXBkYXRlLmdldCgpOwogfQog
Cit2b2lkIFBheW1lbnRNZXRob2RVcGRhdGU6OnNldEluc3RhbGxtZW50R3JvdXBJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgaW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXIpCit7CisgICAgW21fcGxh
dGZvcm1VcGRhdGUgc2V0SW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXI6aW5zdGFsbG1lbnRHcm91
cElkZW50aWZpZXJdOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoQVBQTEVfUEFZKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9j
b2NvYS9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2EubW0J
KHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudFNlc3Npb25FcnJvckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNSAr
MzEsMjcgQEAKICNpbXBvcnQgIkFwcGxlUGF5U2Vzc2lvbkVycm9yLmgiCiAjaW1wb3J0IDxwYWwv
Y29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQot
I2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYUFkZGl0aW9u
cy5tbT4KLSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgT3B0aW9uYWw8QXBwbGVQ
YXlTZXNzaW9uRXJyb3I+IGFkZGl0aW9uYWxFcnJvcihOU0Vycm9yICopIHsgcmV0dXJuIFdURjo6
bnVsbG9wdDsgfQotfQotI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyBPcHRp
b25hbDxBcHBsZVBheVNlc3Npb25FcnJvcj4gYWRkaXRpb25hbEVycm9yKE5TRXJyb3IgKmVycm9y
KQoreworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisgICAgLy8gRklYTUU6IFJlcGxh
Y2Ugd2l0aCBQS1BheW1lbnRFcnJvckJpbmRUb2tlblVzZXJJbmZvS2V5IGFuZAorICAgIC8vIFBL
UGF5bWVudEF1dGhvcml6YXRpb25GZWF0dXJlQXBwbGljYXRpb25FcnJvciB3aGVuIHRoZXkncmUg
YXZhaWxhYmxlIGluIGFuIFNESy4KKyAgICBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBiaW5kVG9r
ZW5LZXkgPSBAIlBLUGF5bWVudEVycm9yQmluZFRva2VuIjsKKyAgICBzdGF0aWMgY29uc3RleHBy
IE5TSW50ZWdlciBwa1BheW1lbnRBdXRob3JpemF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3Ig
PSAtMjAxNjsKKworICAgIGlmIChlcnJvci5jb2RlICE9IHBrUGF5bWVudEF1dGhvcml6YXRpb25G
ZWF0dXJlQXBwbGljYXRpb25FcnJvcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIGlkIGJpbmRUb2tlblZhbHVlID0gZXJyb3IudXNlckluZm9bYmluZFRva2VuS2V5XTsKKyAg
ICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFiaW5kVG9rZW5WYWx1
ZSB8fCBbYmluZFRva2VuVmFsdWUgaXNLaW5kT2ZDbGFzczpOU1N0cmluZy5jbGFzc10pOworICAg
IHJldHVybiBBcHBsZVBheVNlc3Npb25FcnJvciB7ICJmZWF0dXJlQXBwbGljYXRpb25FcnJvciJf
cywgeyB7ICJiaW5kVG9rZW4iX3MsIChOU1N0cmluZyAqKWJpbmRUb2tlblZhbHVlIH0gfSB9Owor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXJyb3IpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisjZW5kaWYKK30KIAogUGF5bWVudFNlc3Npb25FcnJvcjo6UGF5bWVudFNlc3Npb25FcnJvcihS
ZXRhaW5QdHI8TlNFcnJvcj4mJiBlcnJvcikKICAgICA6IG1fcGxhdGZvcm1FcnJvciB7IFdURk1v
dmUoZXJyb3IpIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVu
dHJlcXVlc3QvQXBwbGVQYXlSZXF1ZXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwJKHJl
dmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVu
dHJlcXVlc3QvQXBwbGVQYXlSZXF1ZXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNCArMjgs
NSBAQAogXSBkaWN0aW9uYXJ5IEFwcGxlUGF5UmVxdWVzdCA6IEFwcGxlUGF5UmVxdWVzdEJhc2Ug
ewogICAgIHJlcXVpcmVkIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKICAgICByZXF1aXJlZCBET01T
dHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgIFtDb25kaXRpb25hbD1BUFBMRV9QQVlfSU5T
VEFMTE1FTlRTXSBBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbiBpbnN0YWxsbWVudENv
bmZpZ3VyYXRpb247CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKHJldmlz
aW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIHRhc2tEZWxheUludGVy
dmFsIHsgMTAwX21zIH07CiAKLSN1bmRlZiBMT0dJREVOVElGSUVSCi0jZGVmaW5lIExPR0lERU5U
SUZJRVIgX19mdW5jX18KLQotI3VuZGVmIEFMV0FZU19MT0cKLSNkZWZpbmUgQUxXQVlTX0xPRyBs
b2dnZXIoKS5sb2dBbHdheXMKKyNkZWZpbmUgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VS
IGxvZ2dlcigpLmxvZ0Fsd2F5cwogCiBzdHJ1Y3QgQ2xpZW50U3RhdGUgewogICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2MSwxOSArMTU3LDE5IEBAIHZvaWQgV2ViTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGkKICAgICBpZiAobV9tb2NrUGlja2VyRW5hYmxl
ZCA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAg
ICAgbV9tb2NrUGlja2VyRW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBT
dHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKIHsK
LSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNT
SU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbW9ja1BpY2tlcigpLnNldFN0YXRlKG5hbWUsIHN0
YXRlKTsKIH0KIAogdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpCiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwogICAg
IG1vY2tQaWNrZXIoKS5kaXNtaXNzUG9wdXAoKTsKIH0KIApAQCAtMjA4LDcgKzIwNCw3IEBAIHVp
bnQ2NF90IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXkKICAgICBpZiAoaW5kZXggIT0g
bm90Rm91bmQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCBjb250ZXh0SWQpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXywgY29udGV4dElkKTsKICAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChtYWtlVW5pcXVlPENs
aWVudFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOwogCiAgICAgaWYgKG1fZXh0ZXJuYWxPdXRw
dXREZXZpY2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKQEAgLTIyNCw3ICsyMjAsNyBA
QCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVBsYXliCiAgICAgaWYgKGluZGV4
ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm47CiAKLSAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsKKyAgICBBTFdBWVNfTE9HX01FRElB
U0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsKIAog
ICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGluZGV4KTsKICAgICBzY2hlZHVsZURlbGF5ZWRUYXNr
KFRhcmdldE1vbml0b3JpbmdDb25maWd1cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25maWd1
cmF0aW9uVGFzayk7CkBAIC0yMzcsNyArMjMzLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjpyZW1vdmVBbGxQbAogCiAgICAgZm9yIChzaXplX3QgaSA9IG1fY2xpZW50U3RhdGUuc2l6
ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAgICAgIGlmICgmbV9jbGllbnRTdGF0ZVtpIC0gMV0tPmNs
aWVudCA9PSAmY2xpZW50KSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
IG1fY2xpZW50U3RhdGVbaSAtIDFdLmdldCgpKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVE
SUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpIC0gMV0uZ2V0KCkpOwog
ICAgICAgICAgICAgbV9jbGllbnRTdGF0ZS5yZW1vdmUoaSAtIDEpOwogICAgICAgICB9CiAgICAg
fQpAQCAtMjU3LDcgKzI1Myw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvd1Bs
YXliYWMKICAgICAgICAgc3RhdGUtPnByZXZpb3VzbHlSZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0ZSA9
PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOwogICAgIH0KIAotICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCkpOworICAgIEFMV0FZU19MT0dfTUVE
SUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCkpOwog
CiAgICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSA9IGZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbaW5k
ZXhdLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSk7CiAg
ICAgdGFyZ2V0UGlja2VyKCkuc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKEZsb2F0UmVjdChyZWN0
KSwgaGFzQWN0aXZlUm91dGUsIHVzZURhcmtBcHBlYXJhbmNlKTsKQEAgLTI3NSw3ICsyNzEsNyBA
QCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlCiAgICAgaWYgKG5ld0Zs
YWdzID09IG9sZEZsYWdzKQogICAgICAgICByZXR1cm47CiAKLSAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIsIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3IGZsYWdzID0gIiwgbmV3
RmxhZ3MpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9j
bGllbnRTdGF0ZVtpbmRleF0uZ2V0KCksICJuZXcgZmxhZ3MgPSAiLCBuZXdGbGFncyk7CiAKICAg
ICBjaGFuZ2VkQ2xpZW50U3RhdGUtPmZsYWdzID0gbmV3RmxhZ3M7CiAKQEAgLTI5OSwyNSArMjk1
LDI1IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y2xpZW50U3RhdGUKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0ZS0+ZmxhZ3MsIE1l
ZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZsYWdzQXJlU2V0KHN0
YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7Ci0gICAgICAgICAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIHN0YXRlLmdldCgpLCAiIHJldHVybmluZyBlYXJs
eSIpOworICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19f
LCBzdGF0ZS5nZXQoKSwgIiByZXR1cm5pbmcgZWFybHkiKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIERvIG5vdCBiZWdpbiBwbGF5aW5nIHRvIHRoZSBk
ZXZpY2UgdW5sZXNzIHBsYXliYWNrIGhhcyBqdXN0IHN0YXJ0ZWQuCiAgICAgaWYgKCFmbGFnc0Fy
ZVNldChuZXdGbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pIHx8IGZsYWdzQXJl
U2V0KG9sZEZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpIHsKLSAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGVhcmx5LCBwbGF5YmFjayBkaWRu
J3QganVzdCBzdGFydCIpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIo
X19mdW5jX18sICJyZXR1cm5pbmcgZWFybHksIHBsYXliYWNrIGRpZG4ndCBqdXN0IHN0YXJ0Iik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGll
bnRTdGF0ZSkgewogICAgICAgICBpZiAoc3RhdGUgPT0gY2hhbmdlZENsaWVudFN0YXRlKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3Rh
dGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChmYWxzZSki
KTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIp
OwogICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0
YXRlLT5jb250ZXh0SWQsIGZhbHNlKTsKICAgICB9CiAKLSAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsIGNoYW5nZWRDbGllbnRTdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlU
b1BsYXliYWNrVGFyZ2V0KHRydWUpIik7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5B
R0VSKF9fZnVuY19fLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOwogICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+
Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGNoYW5nZWRDbGllbnRTdGF0ZS0+
Y29udGV4dElkLCB0cnVlKTsKIAogICAgIGlmIChpbmRleCAmJiBtX2NsaWVudFN0YXRlLnNpemUo
KSA+IDEpCkBAIC0zMjYsNyArMzIyLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpj
bGllbnRTdGF0ZQogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldFBsYXliYWNrVGFy
Z2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmIHRhcmdldCkKIHsKLSAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsICJoYXMgYWN0aXZlIHJvdXRlID0gIiwgdGFyZ2V0LT5oYXNBY3RpdmVS
b3V0ZSgpKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJo
YXMgYWN0aXZlIHJvdXRlID0gIiwgdGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpKTsKICAgICBtX3Bs
YXliYWNrVGFyZ2V0ID0gV1RGTW92ZSh0YXJnZXQpOwogICAgIG1fdGFyZ2V0Q2hhbmdlZCA9IHRy
dWU7CiAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhUYXJnZXRDbGllbnRzQ29uZmlndXJhdGlvblRh
c2spOwpAQCAtMzM0LDcgKzMzMCw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0
UGxheWJhY2sKIAogdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpleHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZShib29sIGF2YWlsYWJsZSkKIHsKLSAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIGF2YWlsYWJsZSk7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCBhdmFpbGFibGUpOwogICAgIG1fZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGUgPSBhdmFpbGFibGU7CiAgICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3Rh
dGUpCiAgICAgICAgIHN0YXRlLT5jbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVE
aWRDaGFuZ2Uoc3RhdGUtPmNvbnRleHRJZCwgYXZhaWxhYmxlKTsKQEAgLTM0Miw3ICszMzgsNyBA
QCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmV4dGVybmFsT3V0CiAKIHZvaWQgV2ViTWVk
aWFTZXNzaW9uTWFuYWdlcjo6cGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoKQogewot
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJ
T05NQU5BR0VSKF9fZnVuY19fKTsKICAgICBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2Vk
ID0gdHJ1ZTsKICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldENsaWVudHNDb25maWd1cmF0
aW9uVGFzayk7CiB9CkBAIC0zNzUsNyArMzcxLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjpjb25maWd1cmVQbAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jbGllbnRTdGF0
ZS5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvJiBzdGF0ZSA9IG1fY2xpZW50U3RhdGVbaV07
CiAKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiwgcmVx
dWVzdGVkUGlja2VyID0gIiwgc3RhdGUtPnJlcXVlc3RlZFBpY2tlcik7CisgICAgICAgIEFMV0FZ
U19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIsIHJlcXVl
c3RlZFBpY2tlciA9ICIsIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIpOwogCiAgICAgICAgIGlmICgo
bV90YXJnZXRDaGFuZ2VkIHx8IG1fcGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzZWQpICYmIHN0
YXRlLT5yZXF1ZXN0ZWRQaWNrZXIpCiAgICAgICAgICAgICBpbmRleE9mQ2xpZW50VGhhdFJlcXVl
c3RlZFBpY2tlciA9IGk7CkBAIC00MDEsMTIgKzM5NywxMiBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmNvbmZpZ3VyZVBsCiAgICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFBsYXli
YWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsICptX3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7
CiAKICAgICAgICAgaWYgKGkgIT0gaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgfHwgIWhh
dmVBY3RpdmVSb3V0ZSkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBz
dGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNl
KSIpOworICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19f
LCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZh
bHNlKSIpOwogICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFj
a1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoc3RhdGUtPnJlcXVlc3RlZFBpY2tlciAmJiBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlz
c2VkKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIHN0YXRlLmdldCgp
LCAiIGNhbGxpbmcgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKKyAgICAgICAg
ICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCks
ICIgY2FsbGluZyBwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCIpOwogICAgICAgICAg
ICAgc3RhdGUtPmNsaWVudC5wbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZChzdGF0ZS0+
Y29udGV4dElkKTsKICAgICAgICAgfQogCkBAIC00MTgsNyArNDE0LDcgQEAgdm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAgIGlmIChoYXZlQWN0aXZlUm91dGUgJiYg
aW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgIT0gbm90Rm91bmQpIHsKICAgICAgICAgYXV0
byYgc3RhdGUgPSBtX2NsaWVudFN0YXRlW2luZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0XTsK
ICAgICAgICAgaWYgKCFmbGFnc0FyZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6Oklz
UGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIsIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tU
YXJnZXQodHJ1ZSkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdF
UihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFj
a1RhcmdldCh0cnVlKSIpOwogICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5
VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCB0cnVlKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTQzMyw3ICs0MjksNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZp
Z3VyZVBsCiAgICAgYm9vbCBoYXNBdmFpbGFiaWxpdHlMaXN0ZW5lciA9IGZhbHNlOwogICAgIGJv
b2wgaGF2ZUNsaWVudFdpdGhNZWRpYSA9IGZhbHNlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBt
X2NsaWVudFN0YXRlKSB7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUu
Z2V0KCkpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18s
IHN0YXRlLmdldCgpKTsKICAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIE1lZGlhUHJvZHVjZXI6
OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKSB7CiAgICAgICAgICAgICBtb25pdG9y
aW5nUmVxdWlyZWQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00NDUsMTAgKzQ0MSwx
MCBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsCiAgICAgfQogCiAg
ICAgaWYgKG1vbml0b3JpbmdSZXF1aXJlZCB8fCAoaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgJiYg
aGF2ZUNsaWVudFdpdGhNZWRpYSkpIHsKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lP
Tk1BTkFHRVIoX19mdW5jX18sICJzdGFydGluZyBtb25pdG9yaW5nIik7CiAgICAgICAgIHRhcmdl
dFBpY2tlcigpLnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInN0b3BwaW5nIG1vbml0b3Jp
bmciKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAi
c3RvcHBpbmcgbW9uaXRvcmluZyIpOwogICAgICAgICB0YXJnZXRQaWNrZXIoKS5zdG9wTW9uaXRv
cmluZ1BsYXliYWNrVGFyZ2V0cygpOwogICAgIH0KIH0KQEAgLTQ5MCw3ICs0ODYsNyBAQCB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhCiAKICAgICBpZiAoIW1fcGxheWJh
Y2tUYXJnZXQgfHwgIW1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkpIHsKICAgICAg
ICAgaWYgKG1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyB0aW1lciIpOworICAgICAgICAgICAgQUxXQVlT
X0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAic3RvcHBpbmcgdGltZXIiKTsKICAg
ICAgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgPSB7IH07CiAgICAgICAgICAgICBt
X3dhdGNoZG9nVGltZXIuc3RvcCgpOwogICAgICAgICB9CkBAIC01MDIsNyArNDk4LDcgQEAgdm9p
ZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogICAgIGJvb2wgZGlkUGxheVRv
RW5kID0gZmFsc2U7CiAgICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsKIAot
ICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIHN0YXRlLmdldCgpLCAiIHBsYXllZFRv
RW5kID0gIiwgc3RhdGUtPnBsYXllZFRvRW5kKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNF
U1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBwbGF5ZWRUb0VuZCA9ICIsIHN0
YXRlLT5wbGF5ZWRUb0VuZCk7CiAKICAgICAgICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVT
ZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpCiAgICAgICAg
ICAgICBzdG9wVGltZXIgPSB0cnVlOwpAQCAtNTEyLDcgKzUwOCw3IEBAIHZvaWQgV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2EKICAgICB9CiAKICAgICBpZiAoc3RvcFRpbWVyKSB7
Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInN0b3BwaW5nIHRpbWVyIik7Cisg
ICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5n
IHRpbWVyIik7CiAgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgPSB7IH07CiAgICAg
ICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CiAgICAgfSBlbHNlIHsKQEAgLTUyMCw3ICs1MTYs
NyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhCiAgICAgICAgIGlm
IChpbnRlcnZhbCAhPSBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsIHx8ICFtX3dhdGNoZG9nVGlt
ZXIuaXNBY3RpdmUoKSkgewogICAgICAgICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hv
dChpbnRlcnZhbCk7CiAgICAgICAgIH0KLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAidGltZXIgc2NoZWR1bGVkIGZvciAiLCBpbnRlcnZhbC52YWx1ZSgpLCAiIHNlY29uZHMiKTsK
KyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAidGltZXIg
c2NoZWR1bGVkIGZvciAiLCBpbnRlcnZhbC52YWx1ZSgpLCAiIHNlY29uZHMiKTsKICAgICAgICAg
bV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCA9IGludGVydmFsOwogICAgIH0KIH0KQEAgLTUzMCw3
ICs1MjYsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OndhdGNoZG9nVGltCiAgICAg
aWYgKCFtX3BsYXliYWNrVGFyZ2V0KQogICAgICAgICByZXR1cm47CiAKLSAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXyk7CiAgICAgdGFyZ2V0UGlja2VyKCkuaW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cygpOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDEwMikKKysrIFNvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAy
MC0wNC0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIE1vdmUgQXBwbGVQYXkgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0byBXZWJDb3Jl
IGFuZCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jb2NvYS9Q
YXNzS2l0U29mdExpbmsubW06CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg6
CisKIDIwMjAtMDQtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZG9wdCBpbnRlcmZhY2UgQVZBdWRpb1JvdXRpbmdBcmJpdGVyIGZvciBNYWMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaAkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExp
bmsuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTggQEAgU09GVF9MSU5LX0NMQVNTX0ZP
Ul9IRUFERVIoUEFMLCBQS1BheW1lbgogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQ
S1BheW1lbnRNZXRob2QpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbikKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXlt
ZW50UmVxdWVzdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1BheW1l
bnRTZXR1cENvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5
bWVudFNldHVwRmVhdHVyZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXlt
ZW50U2V0dXBSZXF1ZXN0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1BheW1l
bnRTZXR1cFZpZXdDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQ
S1BheW1lbnRTdW1tYXJ5SXRlbSkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtT
aGlwcGluZ01ldGhvZCkKIAorI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlv
bikKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19DTEFTU19G
T1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIpCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5r
Lm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDMyIEBACiAKICNp
ZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCi0jZWxzZQorCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1Jf
U09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0dXBD
b250cm9sbGVyLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9O
QUxfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cEZlYXR1cmUsIFBBTF9F
WFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwUmVxdWVzdCwgUEFMX0VYUE9SVCkKKworI2lmIEhB
VkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJ
T05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbiwgUEFMX0VYUE9SVCkKKyNlbmRpZgorCisjZWxzZSAvLyBQTEFURk9STShNQUMpCisK
IFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQs
IFBBTF9FWFBPUlQpCisKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgUGFzc0tpdCwgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQorU09G
VF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1l
bnRTZXR1cENvbnRyb2xsZXIsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwRmVhdHVyZSwgUEFMX0VY
UE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tp
dCwgUEtQYXltZW50U2V0dXBSZXF1ZXN0LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cFZpZXdDb250
cm9sbGVyLCBQQUxfRVhQT1JUKQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKK1NP
RlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQogI2VuZGlmCiAKKyNlbmRp
ZiAvLyBQTEFURk9STShNQUMpCisKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0LCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bhc3NMaWJyYXJ5LCBQQUxf
RVhQT1JUKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNz
S2l0LCBQS1BheW1lbnQsIFBBTF9FWFBPUlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDExICs0NywyOCBAQCBXVEZfRVhURVJOX0NfRU5ECiAjaW1wb3J0IDxQYXNzS2l0L1BLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxQYXNz
S2l0L1BLUGF5bWVudE1ldGhvZC5oPgogI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRSZXF1ZXN0
X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
X1dlYktpdC5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRTZXR1cENvbnRyb2xsZXIuaD4K
KyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxQYXNz
S2l0Q29yZS9QS1BheW1lbnRSZXF1ZXN0U3RhdHVzX1ByaXZhdGUuaD4KICNpbXBvcnQgPFBhc3NL
aXRDb3JlL1BLUGF5bWVudFJlcXVlc3RfV2ViS2l0Lmg+CiAKKyNpZiBIQVZFKFBBU1NLSVRfSU5T
VEFMTE1FTlRTKQorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50X1ByaXZhdGUuaD4KKyNp
bXBvcnQgPFBhc3NLaXRDb3JlL1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oPgor
I2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50TWV0aG9kX1ByaXZhdGUuaD4KKyNlbmRpZgor
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50QXV0
aG9yaXphdGlvbkNvbnRyb2xsZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1l
bnRTZXR1cFZpZXdDb250cm9sbGVyLmg+CisjZW5kaWYKKworI2lmIEhBVkUoUEFTU0tJVF9JTlNU
QUxMTUVOVF9JREVOVElGSUVSUykgJiYgUExBVEZPUk0oTUFDKQorQGludGVyZmFjZSBQS1BheW1l
bnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKFdlYktpdFNQSSkKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5LCBudWxsYWJsZSkgTlNTdHJpbmcgKmluc3RhbGxtZW50TWVyY2hhbnRJZGVudGlm
aWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU1N0cmluZyAqcmVm
ZXJyZXJJZGVudGlmaWVyOworQGVuZAogI2VuZGlmCiAKICNlbHNlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
NTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTE5MDAsNiArMTkwMCw3IEBACiAJCTVDMkIxQUVDMjIzOTdF
QkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY3OEQwQjFDMjU0MjJDMDAyNDU0NDYgLyog
UmVzb3VyY2VSZXNwb25zZUNvY29hLm1tICovOyB9OwogCQk1QzQzMDRCMTE5MUFDOTA4MDAwRTJC
QzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRl
eHR1cmVMT0QuaCAqLzsgfTsKIAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hh
ZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUM0MzA0QjQxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5o
ICovOyB9OworCQk1QzUzRENFMTI0NDY1REZDMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNTNE
Q0NGMjQ0NjQ0OTkwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNUQyMzg1MjI3QTA2NTIw
MDBCOUJEQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUQyMzgzMjI3QTA2M0EwMDBCOUJEQSAvKiBDdXN0b21I
ZWFkZXJGaWVsZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4OEQ3MUQwRjFG
MkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDOUMyREI1MjI0MUE2N0IwMDk5NkIwQiAvKiBDb250
ZW50UnVsZUxpc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzlDMkRCMzIyNDFBNjczMDA5OTZCMEIgLyogQ29udGVudFJ1bGVMaXN0UmVz
dWx0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC05MDkxLDYgKzkwOTIsMTggQEAKIAkJNUM1MzgxQjExRDg3RDQ1NzAwRTJFQkU2IC8qIFVSTFNl
YXJjaFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxTZWFyY2hQ
YXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1MzgxQjMxRDg3RTA4MTAw
RTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM1MzgxQjQxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0M2MjQ0NjQ0OTcwMEE5MzEyNCAvKiBB
cHBsZVBheVNldHVwLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBsZVBheVNldHVwLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQzkyNDQ2NDQ5ODAwQTkzMTI0
IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDNTNEQ0NBMjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVy
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyog
QXBwbGVQYXlTZXR1cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsZVBh
eVNldHVwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0NDMjQ0NjQ0OTkw
MEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQ0UyNDQ2NDQ5OTAw
QTkzMTI0IC8qIFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDRjI0NDY0NDk5MDBBOTMxMjQgLyog
QXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXBwbGVQYXlTZXR1cEZlYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1
M0RDRDAyNDQ2NDQ5QTAwQTkzMTI0IC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0QyMjQ0
NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFwcGxlUGF5U2V0dXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5U2V0dXBGZWF0
dXJlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENENTI0NDY0NDlC
MDBBOTMxMjQgLyogQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDRDYyNDQ2NDQ5QzAwQTkzMTI0IC8qIEFw
cGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQ
YXlTZXR1cEZlYXR1cmVUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1
RDIzODMyMjdBMDYzQTAwMEI5QkRBIC8qIEN1c3RvbUhlYWRlckZpZWxkcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21IZWFkZXJGaWVsZHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUM1RDIzODYyMjdBMDc3QzAwMEI5QkRBIC8qIEN1c3RvbUhlYWRl
ckZpZWxkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21I
ZWFkZXJGaWVsZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzY2OEU2NDFF
N0M2QzM1MDBEMzJCM0IgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjcxLDYgKzE3Mjg0LDggQEAKIAkJCQlBMUJC
ODU5QjIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaWRsICovLAogCQkJCUEx
QkI4NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggKi8s
CiAJCQkJQTFCQjg1QTIyMTU5QUY1NzAwNjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JDb250YWN0Rmll
bGQuaWRsICovLAorCQkJCTVDNTNEQ0QwMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheUluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0Q1MjQ0NjQ0OUIwMEE5MzEyNCAv
KiBBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwgKi8sCiAJCQkJN0M2NTc5RTIx
RTAwODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAqLywKIAkJCQk3QzY1NzlFNDFF
MDA4MkM4MDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5pZGwgKi8sCiAJCQkJQTFERjVBQTgx
RjgwNzBENDAwNThBNDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmNwcCAqLywKQEAg
LTE3MzA4LDYgKzE3MzIzLDE0IEBACiAJCQkJQTE5NTZGMUYyMzMxQThDNzAwNTdFOUQyIC8qIEFw
cGxlUGF5U2Vzc2lvbkVycm9yLmlkbCAqLywKIAkJCQkxQTU4RTg2MzFEMTlENERGMDBDMEVBNzMg
LyogQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwICovLAogCQkJCTFBNThFODY0MUQx
OUQ0REYwMEMwRUE3MyAvKiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oICovLAorCQkJ
CTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNwcCAqLywKKwkJCQk1
QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICovLAorCQkJCTVDNTNE
Q0M2MjQ0NjQ0OTcwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLywKKwkJCQk1QzUzREND
RjI0NDY0NDk5MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAqLywKKwkJCQk1QzUz
RENDQTI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaWRsICovLAorCQkJ
CTVDNTNEQ0M5MjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5tbSAqLywK
KwkJCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBl
LmggKi8sCisJCQkJNUM1M0RDRDYyNDQ2NDQ5QzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0
dXJlVHlwZS5pZGwgKi8sCiAJCQkJMUE4QTY0NDcxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5
U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAgKi8sCiAJCQkJMUE4QTY0NDgxRDE5RkNG
QjAwRDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5oICovLAog
CQkJCTFBOEE2NDQ5MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNl
bGVjdGVkRXZlbnQuaWRsICovLApAQCAtMTczMzEsNiArMTczNTQsOCBAQAogCQkJCUExMDRFQzUz
MjIwQTAxNzQwMENCRjY3QSAvKiBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuY3BwICovLAogCQkJ
CTFBNThFODYyMUQxOUQzQkYwMEMwRUE3MyAvKiBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCAq
LywKIAkJCQk3Q0Y5MzBFNjFFMDFGOUFEMDBCQUZGQkUgLyogUGF5bWVudEhlYWRlcnMuaCAqLywK
KwkJCQk1QzUzRENDRTI0NDY0NDk5MDBBOTMxMjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0NDMjQ0NjQ0OTkwMEE5MzEyNCAvKiBQYXltZW50SW5z
dGFsbG1lbnRDb25maWd1cmF0aW9uLm1tICovLAogCQkJCTFBRTk2QTg3MUQxQTBDRUIwMEI4Njc2
OCAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uLmggKi8sCiAJCQkJMUE4QTY0MzkxRDE5RkM1MzAw
RDBFMDBGIC8qIFBheW1lbnRNZXRob2QuaCAqLywKIAkJCQlBMURGRDUyNDIzMzQ1OTNBMDA0MkZD
REIgLyogUGF5bWVudE1ldGhvZFVwZGF0ZS5oICovLApAQCAtMjkzOTcsNiArMjk0MjIsNyBAQAog
CQkJCTFBOEE2NDU5MUQxOUZDRkMwMEQwRTAwRiAvKiBBcHBsZVBheVNlc3Npb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExOTU2RjIwMjMzMUE4QzcwMDU3RTlEMiAvKiBBcHBsZVBheVNlc3Npb25F
cnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1OEU4NjUxRDE5RDRFQjAwQzBFQTczIC8qIEFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzUzRENF
MTI0NDY1REZDMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBOEE2NDVDMUQxOUZDRkMwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nQ29udGFj
dFNlbGVjdGVkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMkM1OUYyMjAzNUZDRDYwMDEy
MjM2QiAvKiBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0M2NTc5RTgxRTAwODMxNjAwRTNBMjdBIC8qIEFwcGxlUGF5U2hpcHBpbmdNZXRob2QuaCBp
biBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViQ29y
ZUFkZGl0aW9ucy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9XZWJDb3JlQWRkaXRpb25zLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw3ICsyNCwzIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBZGRpdGlvbnMu
bW0+Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAwODEpCisrKyBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIwLTA0LTE0
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
TW92ZSBBcHBsZVBheSBjb2RlIGZyb20gV2ViS2l0QWRkaXRpb25zIHRvIFdlYkNvcmUgYW5kIFdl
YktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
NTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
OgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVz
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJlczo6cGxhdGZv
cm1GZWF0dXJlcyBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5
bWVudFNldHVwRmVhdHVyZXMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0
dXBGZWF0dXJlczo6UGF5bWVudFNldHVwRmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpQYXlt
ZW50U2V0dXBGZWF0dXJlczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVu
dFNldHVwRmVhdHVyZXM6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cEZl
YXR1cmVzOjpvcGVyYXRvciBWZWN0b3I8UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4gY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1
cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uOjpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9BcHBs
ZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6dG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAq
IFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZmluaXNoQ29uc3RydWN0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1BheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24ubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0QWRkaXRpb25z
Ojp0b1BsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAoV2ViS2l0QWRkaXRpb25zOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0QWRkaXRpb25zOjpQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpmaW5pc2hDcmVhdGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpnZXRTZXR1
cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OmJlZ2luQXBwbGVQYXlTZXR1cCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjplbmRBcHBsZVBheVNldHVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQmVnaW5BcHBsZVBheVNldHVwKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtRW5kQXBwbGVQYXlT
ZXR1cCk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tOgorICAgICAgICAoSVBDOjpmaW5pc2hEZWNvZGluZyk6CisgICAgICAgIChJUEM6OmZpbmlz
aEVuY29kaW5nKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5h
dG9yOjpnZXRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3Jk
aW5hdG9yOjpiZWdpbkFwcGxlUGF5U2V0dXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50
Q29vcmRpbmF0b3I6OmVuZEFwcGxlUGF5U2V0dXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmg6CisKIDIwMjAtMDQtMTQgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgSW5qZWN0ZWRCdW5kbGUgcGFyYW1l
dGVycyBvZnRlbiBuZWVkIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGNhbGxlZCBiZWZvcmUgdW5h
cmNoaXZpbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI1OTky
MikKKysrIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpA
QCAtMjUwLDggKzI1MCw2IEBAIFNDUklQVFMgPSBcCiBGUkFNRVdPUktfRkxBR1MgPSAkKHNoZWxs
IGVjaG8gJChCVUlMVF9QUk9EVUNUU19ESVIpICQoRlJBTUVXT1JLX1NFQVJDSF9QQVRIUykgJChT
WVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUykgfCBwZXJsIC1lICdwcmludCAiLUYgIiAuIGpv
aW4oIiAtRiAiLCBzcGxpdCgiICIsIDw+KSk7JykKIEhFQURFUl9GTEFHUyA9ICQoc2hlbGwgZWNo
byAkKEJVSUxUX1BST0RVQ1RTX0RJUikgJChIRUFERVJfU0VBUkNIX1BBVEhTKSAkKFNZU1RFTV9I
RUFERVJfU0VBUkNIX1BBVEhTKSB8IHBlcmwgLWUgJ3ByaW50ICItSSIgLiBqb2luKCIgLUkiLCBz
cGxpdCgiICIsIDw+KSk7JykKIAotLWluY2x1ZGUgV2ViS2l0RGVyaXZlZFNvdXJjZXNBZGRpdGlv
bnMubWFrZQotCiAuUEhPTlkgOiBhbGwKIAogYWxsIDogXApJbmRleDogU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDggQEAgU2hhcmVkL0FQSS9Db2NvYS9XS0Jy
b3dzaW5nQ29udGV4dEhhbmRsZQogU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdC5tbQog
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCiAKK1NoYXJlZC9BcHBsZVBh
eS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tCitTaGFyZWQvQXBwbGVQYXkvUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbi5tbQogU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5LmNwcAogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5Q29jb2EubW0KIFNoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlJT1MubW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQkod29ya2luZyBjb3B5KQpAQCAtNjQxLDYgKzY0MSw3IEBAIGRlZiBoZWFkZXJzX2Zv
cl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnOiBb
JyJMYXllckhvc3RpbmdDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGlu
Z01vZGUnOiBbJyJMYXllclRyZWVDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlBhZ2VT
dGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5oIiddLAorICAgICAgICAnV2ViS2l0OjpQYXltZW50U2V0
dXBGZWF0dXJlcyc6IFsnIkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6UmVzcGVjdFNlbGVjdGlvbkFuY2hvcic6IFsnIkdlc3R1cmVUeXBlcy5oIidd
LAogICAgICAgICAnV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVh
dHVyZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBs
ZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCitPQkpDX0NMQVNTIFBLUGF5bWVudFNldHVw
RmVhdHVyZTsKKworI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaD4KKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFt
ZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2RlcjsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFBheW1lbnRTZXR1cEZlYXR1cmVzIHsKK3B1YmxpYzoKKyAg
ICBQYXltZW50U2V0dXBGZWF0dXJlcyhWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0
dXBGZWF0dXJlPj4mJik7CisgICAgUGF5bWVudFNldHVwRmVhdHVyZXMoUmV0YWluUHRyPE5TQXJy
YXk+JiYgPSBudWxscHRyKTsKKworICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0
OworICAgIHN0YXRpYyBPcHRpb25hbDxQYXltZW50U2V0dXBGZWF0dXJlcz4gZGVjb2RlKElQQzo6
RGVjb2RlciYpOworCisgICAgTlNBcnJheSAqcGxhdGZvcm1GZWF0dXJlcygpIGNvbnN0IHsgcmV0
dXJuIG1fcGxhdGZvcm1GZWF0dXJlcy5nZXQoKTsgfQorICAgIG9wZXJhdG9yIFZlY3RvcjxSZWY8
V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PigpIGNvbnN0OworCitwcml2YXRlOgorICAg
IFJldGFpblB0cjxOU0FycmF5PiBtX3BsYXRmb3JtRmVhdHVyZXM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0
dXJlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBs
ZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oIgorCisjaWYgSEFWRShQ
QVNTS0lUX1BBWU1FTlRfU0VUVVApCisKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIK
KyNpbXBvcnQgIkRlY29kZXIuaCIKKyNpbXBvcnQgIkVuY29kZXIuaCIKKyNpbXBvcnQgPFdlYkNv
cmUvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaD4KKworI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRT
b2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIE5TQXJyYXk8UEtQYXlt
ZW50U2V0dXBGZWF0dXJlICo+ICp0b1BsYXRmb3JtRmVhdHVyZXMoVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYgZmVhdHVyZXMpCit7CisgICAgTlNNdXRhYmxl
QXJyYXkgKnBsYXRmb3JtRmVhdHVyZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNp
dHk6ZmVhdHVyZXMuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiBmZWF0dXJlcykg
eworICAgICAgICBpZiAoZmVhdHVyZSkKKyAgICAgICAgICAgIFtwbGF0Zm9ybUZlYXR1cmVzIGFk
ZE9iamVjdDpmZWF0dXJlLT5wbGF0Zm9ybUZlYXR1cmUoKV07CisgICAgfQorICAgIHJldHVybiBw
bGF0Zm9ybUZlYXR1cmVzOworfQorCitQYXltZW50U2V0dXBGZWF0dXJlczo6UGF5bWVudFNldHVw
RmVhdHVyZXMoVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYg
ZmVhdHVyZXMpCisgICAgOiBtX3BsYXRmb3JtRmVhdHVyZXMgeyB0b1BsYXRmb3JtRmVhdHVyZXMo
V1RGTW92ZShmZWF0dXJlcykpIH0KK3sKK30KKworUGF5bWVudFNldHVwRmVhdHVyZXM6OlBheW1l
bnRTZXR1cEZlYXR1cmVzKFJldGFpblB0cjxOU0FycmF5PiYmIHBsYXRmb3JtRmVhdHVyZXMpCisg
ICAgOiBtX3BsYXRmb3JtRmVhdHVyZXMgeyBXVEZNb3ZlKHBsYXRmb3JtRmVhdHVyZXMpIH0KK3sK
K30KKwordm9pZCBQYXltZW50U2V0dXBGZWF0dXJlczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcGxhdGZvcm1GZWF0dXJlczsKK30KKwor
T3B0aW9uYWw8UGF5bWVudFNldHVwRmVhdHVyZXM+IFBheW1lbnRTZXR1cEZlYXR1cmVzOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0YXRpYyBOU0FycmF5ICphbGxvd2Vk
Q2xhc3NlczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgYXV0byBhbGxvd2VkID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjJdKTsKKyAgICAgICAgW2Fs
bG93ZWQgYWRkT2JqZWN0OltOU0FycmF5IGNsYXNzXV07CisgICAgICAgIGlmIChhdXRvIHBrUGF5
bWVudFNldHVwRmVhdHVyZUNsYXNzID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cEZlYXR1cmVDbGFz
cygpKQorICAgICAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVudFNldHVwRmVhdHVy
ZUNsYXNzXTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxsb3dlZCBjb3B5XTsKKyAgICB9
KTsKKworICAgIGF1dG8gcGxhdGZvcm1GZWF0dXJlcyA9IElQQzo6ZGVjb2RlPE5TQXJyYXk8UEtQ
YXltZW50U2V0dXBGZWF0dXJlICo+PihkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CisgICAgaWYg
KCFwbGF0Zm9ybUZlYXR1cmVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
cmV0dXJuIFBheW1lbnRTZXR1cEZlYXR1cmVzIHsgV1RGTW92ZSgqcGxhdGZvcm1GZWF0dXJlcykg
fTsKK30KKworUGF5bWVudFNldHVwRmVhdHVyZXM6Om9wZXJhdG9yIFZlY3RvcjxSZWY8V2ViQ29y
ZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PigpIGNvbnN0Cit7CisgICAgVmVjdG9yPFJlZjxXZWJD
b3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+IGZlYXR1cmVzOworICAgIGZlYXR1cmVzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoW21fcGxhdGZvcm1GZWF0dXJlcyBjb3VudF0pOworICAgIGZvciAo
UEtQYXltZW50U2V0dXBGZWF0dXJlICpwbGF0Zm9ybUZlYXR1cmUgaW4gbV9wbGF0Zm9ybUZlYXR1
cmVzLmdldCgpKQorICAgICAgICBmZWF0dXJlcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6QXBw
bGVQYXlTZXR1cEZlYXR1cmU6OmNyZWF0ZShwbGF0Zm9ybUZlYXR1cmUpKTsKKyAgICByZXR1cm4g
ZmVhdHVyZXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShQ
QVNTS0lUX1BBWU1FTlRfU0VUVVApCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKworI2luY2x1ZGUg
IkFwcGxlUGF5U2V0dXAuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb247
CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVuY29kZXI7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsK
K3B1YmxpYzoKKyAgICBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OworICAg
IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6
Q29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYpOworCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNv
ZGVyJikgY29uc3Q7CisgICAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKworICAgIFBLUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbiAqcGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0
aW9uLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbihSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiYmKTsKKworICAg
IFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BB
WU1FTlRfU0VUVVApCisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9u
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCisKKyNp
ZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKworI2ltcG9ydCAiQXJndW1lbnRDb2RlcnND
b2NvYS5oIgorI2ltcG9ydCAiRGVjb2Rlci5oIgorI2ltcG9ydCAiRW5jb2Rlci5oIgorI2ltcG9y
dCA8d3RmL1VSTC5oPgorCisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CisK
K0BpbnRlcmZhY2UgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIChXZWJLaXQpCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqc2lnbmVkRmllbGRzOwor
QGVuZAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFJldGFpblB0cjxQS1BheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb24+IHRvUGxhdGZvcm1Db25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvcmVDb25maWd1cmF0aW9uLCBjb25zdCBV
UkwmIHVybCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFQQUw6OmdldFBLUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbkNsYXNzKCkpCisgICAgICAgIHJldHVybiBuaWw7CisjZW5kaWYK
KworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb25JbnN0YW5jZSgpIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBz
ZXRNZXJjaGFudElkZW50aWZpZXI6Y29yZUNvbmZpZ3VyYXRpb24ubWVyY2hhbnRJZGVudGlmaWVy
XTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRPcmlnaW5hdGluZ1VSTDp1cmxdOworICAgIFtjb25m
aWd1cmF0aW9uIHNldFJlZmVycmVySWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5yZWZlcnJl
cklkZW50aWZpZXJdOworQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgorICAgIFtj
b25maWd1cmF0aW9uIHNldFNpZ25hdHVyZTpjb3JlQ29uZmlndXJhdGlvbi5zaWduYXR1cmVdOwor
QUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKKworICAgIGlmIChbY29uZmlndXJhdGlv
biByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFNpZ25lZEZpZWxkczopXSkgeworICAg
ICAgICBOU011dGFibGVBcnJheSAqc2lnbmVkRmllbGRzID0gW05TTXV0YWJsZUFycmF5IGFycmF5
V2l0aENhcGFjaXR5OmNvcmVDb25maWd1cmF0aW9uLnNpZ25lZEZpZWxkcy5zaXplKCldOworICAg
ICAgICBmb3IgKGF1dG8mIHNpZ25lZEZpZWxkIDogY29yZUNvbmZpZ3VyYXRpb24uc2lnbmVkRmll
bGRzKQorICAgICAgICAgICAgW3NpZ25lZEZpZWxkcyBhZGRPYmplY3Q6c2lnbmVkRmllbGRdOwor
ICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRTaWduZWRGaWVsZHM6c2lnbmVkRmllbGRzXTsKKyAg
ICB9CisKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK30KKworUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNldHVwOjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCkKKyAg
ICA6IG1fY29uZmlndXJhdGlvbiB7IHRvUGxhdGZvcm1Db25maWd1cmF0aW9uKGNvbmZpZ3VyYXRp
b24sIHVybCkgfQoreworfQorCitQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+JiYg
Y29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IFdURk1vdmUoY29uZmlndXJh
dGlvbikgfQoreworfQorCit2b2lkIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2NvbmZpZ3Vy
YXRpb247Cit9CisKK09wdGlvbmFsPFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+IFBheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAg
c3RhdGljIE5TQXJyYXkgKmFsbG93ZWRDbGFzc2VzOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBh
dXRvIGFsbG93ZWQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2Fw
YWNpdHk6MV0pOworICAgICAgICBpZiAoYXV0byBwa1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25D
bGFzcyA9IFBBTDo6Z2V0UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAg
ICAgICAgIFthbGxvd2VkIGFkZE9iamVjdDpwa1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFz
c107CisgICAgICAgIGFsbG93ZWRDbGFzc2VzID0gW2FsbG93ZWQgY29weV07CisgICAgfSk7CisK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBJUEM6OmRlY29kZTxQS1BheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24+KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsKKyAgICBpZiAoIWNvbmZpZ3VyYXRp
b24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbiB7IFdURk1vdmUoKmNvbmZpZ3VyYXRpb24pIH07Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdEFkZGl0aW9ucworCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BBWU1F
TlRfU0VUVVApCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCShyZXZpc2lvbiAyNTk5MjIp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDYgQEAgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OldlYlBheW1lbnRDbwogICAgICwgbV9jYW5NYWtlUGF5bWVudHNRdWV1ZSB7
IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNhbk1ha2VQYXltZW50cyIpIH0K
IHsKICAgICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoKnRo
aXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCAqdGhpcyk7Ci0gICAgZmluaXNoQ29uc3RydWN0aW9uKCp0aGlzKTsKIH0KIAogV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LmgJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDggKzM3LDEwIEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNs
dWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2lu
Y2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9u
cy5oPgorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorI2luY2x1ZGUgPHd0Zi9XZWFr
T2JqQ1B0ci5oPgorT0JKQ19DTEFTUyBQS1BheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyOworT0JK
Q19DTEFTUyBVSVZpZXdDb250cm9sbGVyOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBJUEMgewpAQCAt
NjIsNiArNjQsOCBAQCBPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitjbGFzcyBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOworY2xhc3MgUGF5bWVu
dFNldHVwRmVhdHVyZXM7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5CkBAIC0xMjQsNiArMTI4LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBh
Ym9ydFBheW1lbnRTZXNzaW9uKCk7CiAgICAgdm9pZCBjYW5jZWxQYXltZW50U2Vzc2lvbigpOwog
CisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisgICAgdm9pZCBnZXRTZXR1cEZlYXR1
cmVzKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFBheW1lbnRTZXR1cEZlYXR1cmVzJik+JiYpOworICAgIHZvaWQgYmVnaW5BcHBs
ZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mLCBjb25zdCBQYXltZW50
U2V0dXBGZWF0dXJlcyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZv
aWQgZW5kQXBwbGVQYXlTZXR1cCgpOworICAgIHZvaWQgcGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0
dXAoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYsIGNvbnN0IFBheW1lbnRTZXR1cEZl
YXR1cmVzJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBwbGF0
Zm9ybUVuZEFwcGxlUGF5U2V0dXAoKTsKKyNlbmRpZgorCiAgICAgYm9vbCBjYW5CZWdpbigpIGNv
bnN0OwogICAgIGJvb2wgY2FuQ2FuY2VsKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5Db21wbGV0ZVBh
eW1lbnQoKSBjb25zdDsKQEAgLTE5MSwxMiArMjAzLDggQEAgcHJpdmF0ZToKICAgICBSZXRhaW5Q
dHI8TlNXaW5kb3c+IG1fc2hlZXRXaW5kb3c7CiAgICAgUmV0YWluUHRyPE5TT2JqZWN0PiBtX3No
ZWV0V2luZG93V2lsbENsb3NlT2JzZXJ2ZXI7CiAjZW5kaWYKLSAgICAKLSNpZiBkZWZpbmVkKFdF
QlBBWU1FTlRDT09SRElOQVRPUlBST1hZX0FERElUSU9OUykKLVdFQlBBWU1FTlRDT09SRElOQVRP
UlBST1hZX0FERElUSU9OUwotI3VuZGVmIFdFQlBBWU1FTlRDT09SRElOQVRPUlBST1hZX0FERElU
SU9OUwotI2Vsc2UKLSAgICB2b2lkIGZpbmlzaENvbnN0cnVjdGlvbihXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYpIHsgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXZWFrT2JqQ1B0cjxQS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyPiBtX3BheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyOwog
I2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM4
LDYgKzM4LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IE4KICAg
ICBDb21wbGV0ZVBheW1lbnRTZXNzaW9uKE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3Jp
emF0aW9uUmVzdWx0PiByZXN1bHQpCiAgICAgQWJvcnRQYXltZW50U2Vzc2lvbigpCiAgICAgQ2Fu
Y2VsUGF5bWVudFNlc3Npb24oKQorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorICAg
IEdldFNldHVwRmVhdHVyZXMoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb24pIC0+IChXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzIGZlYXR1cmVzKSBBc3lu
YworICAgIEJlZ2luQXBwbGVQYXlTZXR1cChXZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24gY29uZmlndXJhdGlvbiwgV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJlcyBmZWF0dXJlcykg
LT4gKGJvb2wgcmVzdWx0KSBBc3luYworICAgIEVuZEFwcGxlUGF5U2V0dXAoKQorI2VuZGlmCiB9
CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9jb2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
LmgiCisKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKworI2ltcG9ydCAiQXJndW1l
bnRDb2RlcnNDb2NvYS5oIgorI2ltcG9ydCAiRGVjb2Rlci5oIgorI2ltcG9ydCAiRW5jb2Rlci5o
IgorI2ltcG9ydCAiUGFzc0tpdFNvZnRMaW5rQWRkaXRpb25zLmgiCisjaW1wb3J0IDx3dGYvVVJM
Lmg+CisKK0BpbnRlcmZhY2UgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIChXZWJLaXQpCitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqc2lnbmVkRmll
bGRzOworQGVuZAorCituYW1lc3BhY2UgV2ViS2l0QWRkaXRpb25zIHsKKworc3RhdGljIFJldGFp
blB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+IHRvUGxhdGZvcm1Db25maWd1cmF0aW9u
KGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvcmVDb25maWd1
cmF0aW9uLCBjb25zdCBVUkwmIHVybCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFQ
QUw6OmdldFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkNsYXNzKCkpCisgICAgICAgIHJldHVy
biBuaWw7CisjZW5kaWYKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25JbnN0YW5jZSgpIGluaXRdKTsKKyAgICBb
Y29uZmlndXJhdGlvbiBzZXRNZXJjaGFudElkZW50aWZpZXI6Y29yZUNvbmZpZ3VyYXRpb24ubWVy
Y2hhbnRJZGVudGlmaWVyXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRPcmlnaW5hdGluZ1VSTDp1
cmxdOworICAgIFtjb25maWd1cmF0aW9uIHNldFJlZmVycmVySWRlbnRpZmllcjpjb3JlQ29uZmln
dXJhdGlvbi5yZWZlcnJlcklkZW50aWZpZXJdOworQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJE
U19CRUdJTgorICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25hdHVyZTpjb3JlQ29uZmlndXJhdGlv
bi5zaWduYXR1cmVdOworQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKKworICAgIGlm
IChbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFNpZ25lZEZp
ZWxkczopXSkgeworICAgICAgICBOU011dGFibGVBcnJheSAqc2lnbmVkRmllbGRzID0gW05TTXV0
YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNvcmVDb25maWd1cmF0aW9uLnNpZ25lZEZpZWxk
cy5zaXplKCldOworICAgICAgICBmb3IgKGF1dG8mIHNpZ25lZEZpZWxkIDogY29yZUNvbmZpZ3Vy
YXRpb24uc2lnbmVkRmllbGRzKQorICAgICAgICAgICAgW3NpZ25lZEZpZWxkcyBhZGRPYmplY3Q6
c2lnbmVkRmllbGRdOworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRTaWduZWRGaWVsZHM6c2ln
bmVkRmllbGRzXTsKKyAgICB9CisKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK30KKworUGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25z
dCBVUkwmIHVybCkKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IHRvUGxhdGZvcm1Db25maWd1cmF0
aW9uKGNvbmZpZ3VyYXRpb24sIHVybCkgfQoreworfQorCitQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IFdU
Rk1vdmUoY29uZmlndXJhdGlvbikgfQoreworfQorCit2b2lkIFBheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBtX2NvbmZpZ3VyYXRpb247Cit9CisKK09wdGlvbmFsPFBheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24+IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCit7CisgICAgc3RhdGljIE5TQXJyYXkgKmFsbG93ZWRDbGFzc2VzOworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10geworICAgICAgICBhdXRvIGFsbG93ZWQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQ2FwYWNpdHk6MV0pOworICAgICAgICBpZiAoYXV0byBwa1BheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb25DbGFzcyA9IFBBTDo6Z2V0UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
Q2xhc3MoKSkKKyAgICAgICAgICAgIFthbGxvd2VkIGFkZE9iamVjdDpwa1BheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb25DbGFzc107CisgICAgICAgIGFsbG93ZWRDbGFzc2VzID0gW2FsbG93ZWQgY29w
eV07CisgICAgfSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBJUEM6OmRlY29kZTxQS1Bh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsKKyAgICBp
ZiAoIWNvbmZpZ3VyYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiB7IFdURk1vdmUoKmNvbmZpZ3VyYXRpb24p
IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdEFkZGl0aW9ucworCisjZW5kaWYgLy8gSEFW
RShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM3LDE2ICszNywxNyBAQAogI2ltcG9ydCA8d3RmL1VSTC5oPgogI2lt
cG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKLSNpbXBvcnQgPHBhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsuaD4KLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxX
ZWJLaXRBZGRpdGlvbnMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYUFkZGl0aW9ucy5t
bT4KLSNlbHNlCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXN0YXRpYyB2b2lkIGZpbmlzaENyZWF0aW5n
KFBLUGF5bWVudFJlcXVlc3QgKiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3QmKSB7IH0KLX0KKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKyNpbXBv
cnQgIkFQSVVJQ2xpZW50LmgiCisjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVz
LmgiCisjaW1wb3J0ICJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJXZWJQ
YWdlUHJveHkuaCIKKyNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMu
aCIKKyNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2VuZGlmCiAKKyNpbXBvcnQgPHBhbC9j
b2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKwogLy8gRklYTUU6IFdlIGRvbid0IHN1cHBvcnQgYW55
IHBsYXRmb3JtcyB3aXRob3V0IC1zZXRUaHVtYm5haWxVUkxzOiwgc28gdGhpcyBjYW4gYmUgcmVt
b3ZlZC4KIEBpbnRlcmZhY2UgUEtQYXltZW50UmVxdWVzdCAoKQogQHByb3BlcnR5IChub25hdG9t
aWMsIHN0cm9uZykgTlNVUkwgKnRodW1ibmFpbFVSTDsKQEAgLTYxLDYgKzYyLDE5IEBAIEBpbnRl
cmZhY2UgUEtQYXltZW50UmVxdWVzdCAoU3RhZ2luZykKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K3N0YXRpYyB2b2lkIGZpbmlzaENyZWF0aW5nKFBLUGF5bWVudFJlcXVlc3QgKnBsYXRmb3JtUmVx
dWVzdCwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVl
c3QpCit7CisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICBpZiAoUEtQYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gcmVxdWVzdC5pbnN0YWxs
bWVudENvbmZpZ3VyYXRpb24oKS5wbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSkgeworICAgICAgICBw
bGF0Zm9ybVJlcXVlc3QuaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjsK
KyAgICAgICAgcGxhdGZvcm1SZXF1ZXN0LnJlcXVlc3RUeXBlID0gUEtQYXltZW50UmVxdWVzdFR5
cGVJbnN0YWxsbWVudDsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwbGF0Zm9ybVJl
cXVlc3QpOworICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKKyNlbmRpZgorfQorCiB2b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3Rp
dmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRv
bWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICNpZiBQTEFURk9STShNQUMpCkBAIC0yNzksNiArMjkzLDEwOSBAQCB2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9yCiAgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVy
LT5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24odXBkYXRlKTsKIH0KIAorI2lmIEhBVkUo
UEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpnZXRTZXR1cEZlYXR1cmVzKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24sIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6R2V0U2V0dXBG
ZWF0dXJlczo6QXN5bmNSZXBseSYmIHJlcGx5KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBp
ZiAoIVBBTDo6Z2V0UEtQYXltZW50U2V0dXBDb250cm9sbGVyQ2xhc3MoKSkgeworICAgICAgICBy
ZXBseSh7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBhdXRvIGNv
bXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKE5TQXJyYXk8
UEtQYXltZW50U2V0dXBGZWF0dXJlICo+ICpmZWF0dXJlcykgbXV0YWJsZSB7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgZmVhdHVyZXMg
PSByZXRhaW5QdHIoZmVhdHVyZXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgcmVwbHkoUGF5
bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKGZlYXR1cmVzKSB9KTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CisKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KKyAgICBbUEFMOjpn
ZXRQS1BheW1lbnRTZXR1cENvbnRyb2xsZXJDbGFzcygpIHBheW1lbnRTZXR1cEZlYXR1cmVzRm9y
Q29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLnBsYXRmb3JtQ29uZmlndXJhdGlvbigpIGNvbXBs
ZXRpb246Y29tcGxldGlvbi5nZXQoKV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VO
RAorfQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpiZWdpbkFwcGxlUGF5U2V0
dXAoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3Qg
UGF5bWVudFNldHVwRmVhdHVyZXMmIGZlYXR1cmVzLCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OkJlZ2luQXBwbGVQYXlTZXR1cDo6QXN5bmNSZXBseSYmIHJlcGx5KQorewor
ICAgIHBsYXRmb3JtQmVnaW5BcHBsZVBheVNldHVwKGNvbmZpZ3VyYXRpb24sIGZlYXR1cmVzLCBX
VEZNb3ZlKHJlcGx5KSk7Cit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmVu
ZEFwcGxlUGF5U2V0dXAoKQoreworICAgIHBsYXRmb3JtRW5kQXBwbGVQYXlTZXR1cCgpOworfQor
CisjaWYgUExBVEZPUk0oTUFDKQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uLCBjb25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYgZmVhdHVyZXMsIE1l
c3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6QmVnaW5BcHBsZVBheVNldHVwOjpB
c3luY1JlcGx5JiYgcmVwbHkpCit7CisgICAgaWYgKCFQQUw6OmdldFBLUGF5bWVudFNldHVwUmVx
dWVzdENsYXNzKCkpIHsKKyAgICAgICAgcmVwbHkoZmFsc2UpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byByZXF1ZXN0ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFNl
dHVwUmVxdWVzdEluc3RhbmNlKCkgaW5pdF0pOworICAgIFtyZXF1ZXN0IHNldENvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5wbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKV07CisgICAgW3JlcXVlc3Qg
c2V0UGF5bWVudFNldHVwRmVhdHVyZXM6ZmVhdHVyZXMucGxhdGZvcm1GZWF0dXJlcygpXTsKKwor
ICAgIGF1dG8gY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5
KV0oQk9PTCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtyZXBseSA9IFdURk1vdmUocmVwbHkpLCBzdWNjZXNzXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgcmVwbHkoc3VjY2Vzcyk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgYXV0byBw
YXltZW50U2V0dXBDb250cm9sbGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFNldHVw
Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0pOworCitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VB
UkRTX0JFR0lOCisgICAgW3BheW1lbnRTZXR1cENvbnRyb2xsZXIgcHJlc2VudFBheW1lbnRTZXR1
cFJlcXVlc3Q6cmVxdWVzdC5nZXQoKSBjb21wbGV0aW9uOmNvbXBsZXRpb24uZ2V0KCldOworQUxM
T1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1FbmRBcHBsZVBheVNldHVwKCkKK3sKK30KKworI2Vsc2UgLy8g
UExBVEZPUk0oTUFDKQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9y
bUJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uLCBjb25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYgZmVhdHVyZXMsIE1lc3NhZ2Vz
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6QmVnaW5BcHBsZVBheVNldHVwOjpBc3luY1Jl
cGx5JiYgcmVwbHkpCit7CisgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250
cm9sbGVyID0gbV9wYXltZW50Q29vcmRpbmF0b3JQcm94eS5tX2NsaWVudC5wYXltZW50Q29vcmRp
bmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIobV9wYXltZW50Q29vcmRpbmF0b3JQcm94eSk7
CisgICAgaWYgKCFwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIpIHsKKyAgICAgICAgcmVwbHkoZmFs
c2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXF1ZXN0ID0gYWRvcHRO
UyhbUEFMOjphbGxvY1BLUGF5bWVudFNldHVwUmVxdWVzdEluc3RhbmNlKCkgaW5pdF0pOworICAg
IFtyZXF1ZXN0IHNldENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5wbGF0Zm9ybUNvbmZpZ3Vy
YXRpb24oKV07CisgICAgW3JlcXVlc3Qgc2V0UGF5bWVudFNldHVwRmVhdHVyZXM6ZmVhdHVyZXMu
cGxhdGZvcm1GZWF0dXJlcygpXTsKKworICAgIGF1dG8gcGF5bWVudFNldHVwVmlld0NvbnRyb2xs
ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlckluc3Rh
bmNlKCkgaW5pdFdpdGhQYXltZW50U2V0dXBSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldKTsKKyAgICBp
ZiAoIXBheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyKSB7CisgICAgICAgIHJlcGx5KGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29tcGxldGlvbiA9IG1ha2VCbG9j
a1B0cihbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgcmVwbHkodHJ1ZSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZW5k
QXBwbGVQYXlTZXR1cCgpOworICAgIFtwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgcHJlc2VudFZp
ZXdDb250cm9sbGVyOnBheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyLmdldCgpIGFuaW1hdGVkOllF
UyBjb21wbGV0aW9uOmNvbXBsZXRpb24uZ2V0KCldOworICAgIG1fcGF5bWVudFNldHVwVmlld0Nv
bnRyb2xsZXIgPSBwYXltZW50U2V0dXBWaWV3Q29udHJvbGxlci5nZXQoKTsKK30KKwordm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1FbmRBcHBsZVBheVNldHVwKCkKK3sK
KyAgICBbbV9wYXltZW50U2V0dXBWaWV3Q29udHJvbGxlciBkaXNtaXNzVmlld0NvbnRyb2xsZXJB
bmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOworICAgIG1fcGF5bWVudFNldHVwVmlld0NvbnRy
b2xsZXIgPSBuaWw7Cit9CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKKyNlbmRpZiAvLyBI
QVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0JKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxOSArNDEsNTUgQEAKICNpbXBvcnQg
PFVJS2l0L1VJRm9udC5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQot
I2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hQWRkaXRp
b25zLm1tPgotI2VsaWYgRU5BQkxFKEFQUExFX1BBWSkKIG5hbWVzcGFjZSBJUEMgewotc3RhdGlj
IGJvb2wgZmluaXNoRGVjb2RpbmcoRGVjb2RlciYsIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0JikgeyByZXR1cm4gdHJ1ZTsgfQotc3RhdGljIHZvaWQgZmluaXNoRW5jb2Rp
bmcoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
JikgeyB9Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworI2lmIEVOQUJMRShBUFBMRV9QQVkp
CisKK3N0YXRpYyBib29sIGZpbmlzaERlY29kaW5nKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShB
UFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb24+IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKKyAgICBkZWNv
ZGVyID4+IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKKyAgICBpZiAoIWluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVxdWVzdC5zZXRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb24oV1RGTW92ZSgqaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKSk7
CisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAg
ICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIH0KKwor
c3RhdGljIHZvaWQgZmluaXNoRW5jb2RpbmcoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QpCit7CisjaWYgRU5BQkxF
KEFQUExFX1BBWV9JTlNUQUxMTUVOVFMpCisgICAgZW5jb2RlciA8PCByZXF1ZXN0Lmluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbigpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZW5jb2Rlcik7Cisg
ICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwogI2VuZGlmCit9CiAKLW5hbWVzcGFjZSBJUEMgewot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
IAotI2lmIEVOQUJMRShBUFBMRV9QQVkpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uKQoreworICAgIGVuY29kZXIgPDwgY29uZmlndXJhdGlvbi5wbGF0Zm9ybUNvbmZpZ3VyYXRp
b24oKTsKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gSVBDOjpkZWNvZGU8UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPihkZWNvZGVy
LCBQQUw6OmdldFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbkNsYXNzKCkpOworICAg
IGlmICghY29uZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IHJldHVybiB7IFdURk1vdmUoKmNvbmZpZ3VyYXRpb24pIH07Cit9CisKKyNlbmRpZiAvLyBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5
bWVudD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50JiBw
YXltZW50KQogewpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDAzLDYgKzQwMDMs
MTAgQEAKIAkJNUM0NkMwQUQyMUI3MTk4QzAwQkM1OTkxIC8qIFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNDZD
MEFFMjFCNzFBRTIwMEJDNTk5MSAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbklu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUM0QjlEOEEyMTBBOEM0NjAwOEYxNEQxIC8qIFVuZG9PclJlZG8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVW5kb09yUmVkby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QzUzRENERDI0NDY1QkY5MDBBOTMxMjQgLyogQXBwbGVQYXlQYXltZW50U2V0dXBG
ZWF0dXJlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcGxl
UGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDNTNEQ0RFMjQ0NjVCRjkwMEE5MzEyNCAvKiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDREYyNDQ2NUJGOTAwQTkz
MTI0IC8qIEFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzUzRENFMDI0NDY1QkY5MDBBOTMxMjQgLyogUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDNUNFQzM4MjIwOTU4MzIwMEQ2QkJCMCAvKiBEYWVtb25FbnRyeVBvaW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhZW1vbkVudHJ5UG9pbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1Q0VDMzkyMjA5NTgzMjAwRDZCQkIwIC8qIERhZW1v
bkVudHJ5UG9pbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
YWVtb25FbnRyeVBvaW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVEMjM4
NzIyN0ExODkxMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJuYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDksNiArNjIxMywxMCBAQAog
CQkJCTFBQjFGNzc3MUQxQjMwQTkwMDdDOUJEMSAvKiBjb2NvYSAqLywKIAkJCQkxQUIxRjc3QTFE
MUIzMEE5MDA3QzlCRDEgLyogaW9zICovLAogCQkJCTFBQjFGNzdDMUQxQjMwQTkwMDdDOUJEMSAv
KiBtYWMgKi8sCisJCQkJNUM1M0RDREYyNDQ2NUJGOTAwQTkzMTI0IC8qIEFwcGxlUGF5UGF5bWVu
dFNldHVwRmVhdHVyZXMuaCAqLywKKwkJCQk1QzUzRENERDI0NDY1QkY5MDBBOTMxMjQgLyogQXBw
bGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbSAqLywKKwkJCQk1QzUzRENERTI0NDY1QkY5MDBB
OTMxMjQgLyogUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0UwMjQ0
NjVCRjkwMEE5MzEyNCAvKiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tICovLAogCQkJCTFB
QjFGNzg4MUQxQjMzNTUwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAg
Ki8sCiAJCQkJMUFCMUY3ODkxRDFCMzM1NTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LmggKi8sCiAJCQkJMUFCMUY3OEExRDFCMzM1NTAwN0M5QkQxIC8qIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5j
cHAJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw5
IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCisjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50
U2V0dXBGZWF0dXJlcy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGlu
YXRvck1lc3NhZ2VzLmgiCkBAIC0yMjAsNiArMjIyLDM2IEBAIGJvb2wgV2ViUGF5bWVudENvb3Jk
aW5hdG9yOjpyZW1vdGVVSUVuYWIKIH0KICNlbmRpZgogCit2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvcjo6Z2V0U2V0dXBGZWF0dXJlcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisg
ICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OkdldFNldHVwRmVhdHVyZXMoUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiB7
IGNvbmZpZ3VyYXRpb24sIHVybCB9KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oY29uZmlndXJhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKHVy
bCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvcjo6YmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFdlYkNvcmU6OkFwcGxl
UGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNp
ZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKyAgICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6QmVnaW5BcHBsZVBh
eVNldHVwKFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24geyBjb25maWd1cmF0aW9uLCB1cmwgfSwg
UGF5bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKGZlYXR1cmVzKSB9KSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29uZmlndXJhdGlvbik7
CisgICAgVU5VU0VEX1BBUkFNKHVybCk7CisgICAgVU5VU0VEX1BBUkFNKGZlYXR1cmVzKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3I6OmVuZEFwcGxlUGF5U2V0dXAoKQoreworI2lmIEhBVkUoUEFTU0tJVF9QQVlN
RU5UX1NFVFVQKQorICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6RW5kQXBwbGVQYXlTZXR1cCgpKTsKKyNlbmRpZgorfQorCiB9CiAKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC04NSw2ICs4NSwxMCBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIHVzZXJBZ2Vu
dFNjcmlwdHNCbG9ja2VkRXJyb3JNZXNzYWdlKCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lkIGdl
dFNldHVwRmVhdHVyZXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlv
biYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZjxXZWJDb3Jl
OjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luQXBw
bGVQYXlTZXR1cChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1cmF0aW9uJiwg
Y29uc3QgVVJMJiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgZW5k
QXBwbGVQYXlTZXR1cCgpIGZpbmFsOworCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKIApAQCAtMTEyLDEwICsxMTYsNiBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2Um
IG1fd2ViUGFnZTsKIAogICAgIE9wdGlvbmFsPEF2YWlsYWJsZVBheW1lbnROZXR3b3Jrc1NldD4g
bV9hdmFpbGFibGVQYXltZW50TmV0d29ya3M7Ci0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBheW1lbnRDb29yZGluYXRvckFkZGl0aW9u
cy5oPgotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396475</attachid>
            <date>2020-04-14 16:40:54 -0700</date>
            <delta_ts>2020-04-14 16:47:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210521-20200414164053.patch</filename>
            <type>text/plain</type>
            <size>124542</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAyMC0wNC0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgQXBw
bGVQYXkgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0byBXZWJDb3JlIGFuZCBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDUyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgT25seSA0IG1pbm9yIG1v
ZGlmaWNhdGlvbnMgd2VyZSBuZWNlc3NhcnksIGFzIGZvbGxvd3M6CisKKyAgICAgICAgMS4gUGF5
bWVudFNldHVwRmVhdHVyZXMncyBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1
cmUgKj4+IHdhcyBjaGFuZ2VkIHRvIFJldGFpblB0cjxOU0FycmF5PiB0byB3b3JrIHdpdGggQysr
LgorICAgICAgICAyLiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucyBtZXNzYWdl
cyB3ZXJlIG1vdmVkIHRvIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LCByZW1vdmluZyB0aGUg
bmVlZCBmb3IKKyAgICAgICAgICAgdGhlIGV4dHJhIG1lc3NhZ2UgcmVjZWl2ZXIsIHRoZSBPcHRp
b25hbDxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucz4sIGFuZCB0aGUgZmluaXNo
Q29uc3RydWN0aW9uLgorICAgICAgICAzLiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCdzIG1h
Y3JvcyB0aGF0IGNvbGxpZGVkIHdpdGggb3RoZXIgbWFjcm9zIHdlcmUgcmVuYW1lZC4gIFRoaXMg
d2FzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIGRpZmZlcmVudCBzb3VyY2UgdW5pZmljYXRpb24uCisg
ICAgICAgIDQuIFBheW1lbnRTZXR1cEZlYXR1cmVzLmggd2FzIHJlbmFtZWQgdG8gQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5oIHRvIGJlIGFibGUgdG8gYnVpbGQgd2l0aCBQYXltZW50U2V0
dXBGZWF0dXJlcy5oIGluIHRoZSBTREsuCisKKyAgICAgICAgVGhlIHJlc3QgaXMganVzdCBjb3B5
IGFuZCBwYXN0ZS4KKworICAgICAgICBUaGVyZSBpc24ndCBhIGdvb2Qgd2F5IHRvIGxhbmQgdGhp
cyB3aXRob3V0IGJyZWFraW5nIHRoZSBidWlsZCB3aXRob3V0IHJlbW92aW5nIHRoZSBmaWxlcyBm
cm9tIFdlYktpdEFkZGl0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBzbyBJJ2xsIGRv
IHRoZSB0d28gYXQgdGhlIHNhbWUgdGltZSBsYXRlIGF0IG5pZ2h0IHRvIG5vdCBjYXVzZSBkaXNy
dXB0aW9uLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJl
c1N1cHBvcnRlZE5ldHdvcmtzKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5pc2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6aW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpzZXRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkRGlzY2xvc2VGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVw
OjpnZXRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OmJl
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsZVBheVNldHVwOjpzdXNwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2V0dXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGw6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpwbGF0Zm9ybUZlYXR1cmUg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0
dXJlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpzdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6c3VwcG9y
dHNJbnN0YWxsbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZl
YXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGw6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpiZWdpbkFwcGxlUGF5U2V0dXAp
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjplbmRBcHBsZVBh
eVNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
RGVjaW1hbE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUZlYXR1cmVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOjpQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmg6CisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5p
c2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRN
ZXRob2RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaENvbnZlcnRpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRH
cm91cElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVu
dFNlc3Npb25FcnJvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEVycm9y
KToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVx
dWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpyZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
dFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlz
bWlzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0Q2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2F0Y2hkb2dUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bWVyRmlyZWQpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dl
YkNvcmVBZGRpdGlvbnMubW06CisKIDIwMjAtMDQtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQZXJzaXN0ZW50Q29kZXJzIHNob3VsZCB1
c2UgbW9kZXJuIGRlY29kaW5nIHN5bnRheApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgSlNfQklORElOR19JRExTID0g
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb2RlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlMaW5lSXRlbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnQuaWRsIFwKQEAgLTExOCw2ICsxMTksOSBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVz
dEJhc2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bkVycm9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXAuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kLmlkbCBcCkBA
IC0xMjU1LDggKzEyNTksNiBAQCB2cGF0aCAlLmluICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9T
RUFSCiBBRERJVElPTkFMX0VWRU5UX05BTUVTID0KIEFERElUSU9OQUxfRVZFTlRfVEFSR0VUX0ZB
Q1RPUlkgPQogCi0taW5jbHVkZSBXZWJDb3JlRGVyaXZlZFNvdXJjZXNBZGRpdGlvbnMubWFrZQot
CiBKU19CSU5ESU5HX0lETFMgKz0gJChBRERJVElPTkFMX0JJTkRJTkdfSURMUykKIAogYWxsIDog
JChBRERJVElPTkFMX0JJTkRJTkdfSURMUzolLmlkbD1KUyUuaCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTkzLDYgKzU5Myw4IEBAIFdITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlS
ZXF1ZXN0QmFzZS5jcHAKKyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCisg
ICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQogICAgIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwCkBAIC02MDAsNiArNjAyLDcgQEAgV0hM
U0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmNwcAorICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbi5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0
b3IubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcAogCkBAIC02MTgs
NiArNjIxLDcgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5RXJyb3IuY3BwCiAgICAgSlNBcHBsZVBheUVycm9yQ29kZS5jcHAKICAgICBKU0FwcGxl
UGF5RXJyb3JDb250YWN0RmllbGQuY3BwCisgICAgSlNBcHBsZVBheUluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5jcHAKICAgICBKU0FwcGxlUGF5TGluZUl0ZW0uY3BwCiAgICAgSlNBcHBsZVBheU1l
cmNoYW50Q2FwYWJpbGl0eS5jcHAKICAgICBKU0FwcGxlUGF5TW9kaWZpZXIuY3BwCkBAIC02MzUs
NiArNjM5LDkgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5UmVxdWVzdEJhc2UuY3BwCiAgICAgSlNBcHBsZVBheVNlc3Npb24uY3BwCiAgICAgSlNB
cHBsZVBheVNlc3Npb25FcnJvci5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXAuY3BwCisgICAgSlNB
cHBsZVBheVNldHVwRmVhdHVyZS5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5j
cHAKICAgICBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAKICAgICBK
U0FwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLmNwcAogICAgIEpTQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFM
TE1FTlRTKQorCisjaW5jbHVkZSAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVh
dHVyZVR5cGUgZmVhdHVyZVR5cGUgeyBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlQ2Fy
ZCB9OworICAgIFN0cmluZyBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhOworICAgIFN0cmluZyBvcGVu
VG9CdXlUaHJlc2hvbGRBbW91bnQ7CisgICAgU3RyaW5nIGJpbmRpbmdUb3RhbEFtb3VudDsKKyAg
ICBTdHJpbmcgY3VycmVuY3lDb2RlOworICAgIFN0cmluZyBtZXJjaGFudElkZW50aWZpZXI7Cisg
ICAgU3RyaW5nIHJlZmVycmVySWRlbnRpZmllcjsKKyAgICBib29sIGlzSW5TdG9yZVB1cmNoYXNl
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50
Q29uZmlndXJhdGlvbi5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1B
UFBMRV9QQVlfSU5TVEFMTE1FTlRTLAorXSBkaWN0aW9uYXJ5IEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgZmVhdHVyZVR5cGUg
PSAiYXBwbGVDYXJkIjsKKyAgICBET01TdHJpbmcgbWVyY2hhbmRpc2luZ0ltYWdlRGF0YTsKKyAg
ICBET01TdHJpbmcgb3BlblRvQnV5VGhyZXNob2xkQW1vdW50OworICAgIERPTVN0cmluZyBiaW5k
aW5nVG90YWxBbW91bnQ7CisgICAgRE9NU3RyaW5nIGN1cnJlbmN5Q29kZTsKKyAgICBET01TdHJp
bmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgIERPTVN0cmluZyByZWZlcnJlcklkZW50aWZpZXI7
CisgICAgYm9vbGVhbiBpc0luU3RvcmVQdXJjaGFzZTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmgJKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50Q29udGFjdC5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudE1ldGhvZC5oIgogCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBw
bGVQYXlQYXltZW50QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50IHsKQEAgLTQ2LDExICs0Miw3IEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnQgewogICAgIFRva2VuIHRva2VuOwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5
bWVudENvbnRhY3Q+IGJpbGxpbmdDb250YWN0OwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVu
dENvbnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsKLQotI2lmIGRlZmluZWQoQVBQTEVQQVlQQVlNRU5U
X0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBB
WU1FTlRfQURESVRJT05TCi0jZW5kaWYKKyAgICBTdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICByZXF1aXJlZCBBcHBsZVBheVBheW1lbnRUb2tl
biB0b2tlbjsKICAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IGJpbGxpbmdDb250YWN0OwogICAg
IEFwcGxlUGF5UGF5bWVudENvbnRhY3Qgc2hpcHBpbmdDb250YWN0OworICAgIFtDb25kaXRpb25h
bD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSBET01TdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiBbCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmgJKHJldmlzaW9uIDI1OTkyMikK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50UGFzcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50
TWV0aG9kQWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVt
IGNsYXNzIEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGU7CkBAIC00NiwxMSArNDIsNyBAQCBzdHJ1
Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kIHsgICAgCiAgICAgT3B0aW9uYWw8VHlwZT4gdHlwZTsK
ICAgICBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRQYXNzPiBwYXltZW50UGFzczsKICAgICBPcHRp
b25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKLQotI2lmIGRlZmlu
ZWQoQVBQTEVQQVlQQVlNRU5UTUVUSE9EX0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVE1FVEhP
RF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBBWU1FTlRNRVRIT0RfQURESVRJT05TCi0jZW5k
aWYKKyAgICBTdHJpbmcgYmluZFRva2VuOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlk
bAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRNZXRob2QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0ICszMyw1IEBA
CiAgICAgQXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZSB0eXBlOwogICAgIEFwcGxlUGF5UGF5bWVu
dFBhc3MgcGF5bWVudFBhc3M7CiAgICAgQXBwbGVQYXlQYXltZW50Q29udGFjdCBiaWxsaW5nQ29u
dGFjdDsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gRE9NU3RyaW5n
IGJpbmRUb2tlbjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSwxMiBAQAogCiAj
aW5jbHVkZSAiQXBwbGVQYXlMaW5lSXRlbS5oIgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRl
QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICBBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFs
OwogICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXM7Ci0KLSNpZiBkZWZp
bmVkKEFQUExFUEFZUEFZTUVOVE1FVEhPRFVQREFURV9BRERJVElPTlMpCi1BUFBMRVBBWVBBWU1F
TlRNRVRIT0RVUERBVEVfQURESVRJT05TCi0jdW5kZWYgQVBQTEVQQVlQQVlNRU5UTUVUSE9EVVBE
QVRFX0FERElUSU9OUwotI2VuZGlmCisgICAgU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlm
aWVyOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbAkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw0ICsyOCw1IEBACiBd
IGRpY3Rpb25hcnkgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICByZXF1aXJlZCBB
cHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsOwogICAgIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+
IG5ld0xpbmVJdGVtczsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10g
RE9NU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlmaWVyOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNl
LmNwcAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVJlcXVlc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI5
IEBACiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVJlcXVlc3RCYXNlQWRkaXRpb25z
LmNwcD4KLSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgdm9pZCBmaW5pc2hDb252
ZXJ0aW5nKEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQXBwbGVQYXlSZXF1ZXN0QmFz
ZSYpIHsgfQotc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1bnNpZ25lZCwg
Y29uc3QgQXBwbGVQYXlSZXF1ZXN0QmFzZSYpIHsgcmV0dXJuIHRydWU7IH0KLX0KKworc3RhdGlj
IHZvaWQgZmluaXNoQ29udmVydGluZyhBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVz
dWx0LCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9Q
QVlfSU5TVEFMTE1FTlRTKQorICAgIGlmIChyZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlv
bikKKyAgICAgICAgcmVzdWx0LnNldEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihXVEZNb3ZlKCpy
ZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAjZW5kaWYKK30KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1
bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIHJldHVybiB2ZXJzaW9uIDwg
OCB8fCAhcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTSh2ZXJzaW9uKTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CisgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKK30KIAogc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiBj
b252ZXJ0QW5kVmFsaWRhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCB2ZXJzaW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkTmV0d29ya3MsIGNvbnN0IFBheW1lbnRDb29y
ZGluYXRvciYgcGF5bWVudENvb3JkaW5hdG9yKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1
ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMTAgQEAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiQXBwbGVQYXlDb250YWN0RmllbGQuaCIKKyNpbmNsdWRl
ICJBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFwcGxlUGF5
TWVyY2hhbnRDYXBhYmlsaXR5LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50Q29udGFjdC5o
IgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlv
bnMvQXBwbGVQYXlSZXF1ZXN0QmFzZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC01NCwxMCArNTEsNyBAQCBzdHJ1Y3QgQXBw
bGVQYXlSZXF1ZXN0QmFzZSB7CiAgICAgU3RyaW5nIGFwcGxpY2F0aW9uRGF0YTsKICAgICBWZWN0
b3I8U3RyaW5nPiBzdXBwb3J0ZWRDb3VudHJpZXM7CiAKLSNpZiBkZWZpbmVkKEFQUExFUEFZUkVR
VUVTVEJBU0VfQURESVRJT05TKQotQVBQTEVQQVlSRVFVRVNUQkFTRV9BRERJVElPTlMKLSN1bmRl
ZiBBUFBMRVBBWVJFUVVFU1RCQVNFX0FERElUSU9OUwotI2VuZGlmCisgICAgT3B0aW9uYWw8QXBw
bGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsK
IH07CiAKIEV4Y2VwdGlvbk9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0PiBjb252ZXJ0
QW5kVmFsaWRhdGUoRG9jdW1lbnQmLCB1bnNpZ25lZCB2ZXJzaW9uLCBBcHBsZVBheVJlcXVlc3RC
YXNlJiwgY29uc3QgUGF5bWVudENvb3JkaW5hdG9yJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCShyZXZpc2lvbiAy
NTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDE1ICs2NSwxNyBAQAogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAotI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCi0jaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0FwcGxlUGF5U2Vz
c2lvbkFkZGl0aW9ucy5jcHA+Ci0jZWxzZQogbmFtZXNwYWNlIFdlYkNvcmUgewotc3RhdGljIHZv
aWQgZmluaXNoQ29udmVydGluZyhQYXltZW50TWV0aG9kVXBkYXRlJiwgQXBwbGVQYXlQYXltZW50
TWV0aG9kVXBkYXRlJiYpIHsgfQotfQotI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0
YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUGF5bWVudE1ldGhvZFVwZGF0ZSYgY29udmVydGVk
VXBkYXRlLCBBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUmJiB1cGRhdGUpCit7CisjaWYgRU5B
QkxFKEFQUExFX1BBWV9JTlNUQUxMTUVOVFMpCisgICAgY29udmVydGVkVXBkYXRlLnNldEluc3Rh
bGxtZW50R3JvdXBJZGVudGlmaWVyKHVwZGF0ZS5pbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcik7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjb252ZXJ0ZWRVcGRhdGUpOworICAgIFVOVVNFRF9Q
QVJBTSh1cGRhdGUpOworI2VuZGlmCit9CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChB
cHBsZVBheVNlc3Npb24pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCShy
ZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE0ICsyOCwx
MSBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJQYXltZW50Q29udGFjdC5o
IgorI2luY2x1ZGUgIlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1
ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdEFkZGl0aW9u
cy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1czsKQEAgLTE0MSw5ICsxMzgsOSBAQCBwdWJsaWM6CiAgICAgUmVx
dWVzdGVyIHJlcXVlc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVyOyB9CiAgICAgdm9p
ZCBzZXRSZXF1ZXN0ZXIoUmVxdWVzdGVyIHJlcXVlc3RlcikgeyBtX3JlcXVlc3RlciA9IHJlcXVl
c3RlcjsgfQogCi0jaWYgZGVmaW5lZChBUFBMRVBBWVNFU1NJT05QQVlNRU5UUkVRVUVTVF9QVUJM
SUNfQURESVRJT05TKQotQVBQTEVQQVlTRVNTSU9OUEFZTUVOVFJFUVVFU1RfUFVCTElDX0FERElU
SU9OUwotI3VuZGVmIEFQUExFUEFZU0VTU0lPTlBBWU1FTlRSRVFVRVNUX1BVQkxJQ19BRERJVElP
TlMKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGNvbnN0IFBheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb24mIGluc3RhbGxtZW50Q29uZmlndXJhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOyB9CisgICAgdm9pZCBzZXRJbnN0YWxs
bWVudENvbmZpZ3VyYXRpb24oUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiYmIGluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbikgeyBtX2luc3RhbGxtZW50Q29uZmlndXJhdGlvbiA9IFdURk1v
dmUoaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0x
NzIsOSArMTY5LDggQEAgcHJpdmF0ZToKIAogICAgIFJlcXVlc3RlciBtX3JlcXVlc3RlciB7IFJl
cXVlc3Rlcjo6QXBwbGVQYXlKUyB9OwogCi0jaWYgZGVmaW5lZChBUFBMRVBBWVNFU1NJT05QQVlN
RU5UUkVRVUVTVF9QUklWQVRFX0FERElUSU9OUykKLUFQUExFUEFZU0VTU0lPTlBBWU1FTlRSRVFV
RVNUX1BSSVZBVEVfQURESVRJT05TCi0jdW5kZWYgQVBQTEVQQVlTRVNTSU9OUEFZTUVOVFJFUVVF
U1RfUFJJVkFURV9BRERJVElPTlMKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAg
IFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gbV9pbnN0YWxsbWVudENvbmZpZ3VyYXRp
b247CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTZXR1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNldHVwLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkFwcGxlUGF5U2V0dXAuaCIKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCisKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkpTQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCIKKyNp
bmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJQYXltZW50Q29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJQYXltZW50Q29vcmRpbmF0b3JD
bGllbnQuaCIKKyNpbmNsdWRlICJQYXltZW50U2Vzc2lvbi5oIgorI2luY2x1ZGUgIlBheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBi
b29sIHNob3VsZERpc2Nsb3NlRmVhdHVyZXMoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIGF1
dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7CisgICAgaWYgKCFwYWdlIHx8IHBhZ2UtPnVzZXNF
cGhlbWVyYWxTZXNzaW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBk
b2N1bWVudC5zZXR0aW5ncygpLmFwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkKCk7
Cit9CisKK3ZvaWQgQXBwbGVQYXlTZXR1cDo6Z2V0U2V0dXBGZWF0dXJlcyhEb2N1bWVudCYgZG9j
dW1lbnQsIFNldHVwRmVhdHVyZXNQcm9taXNlJiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvIGNhbkNh
bGwgPSBQYXltZW50U2Vzc2lvbjo6Y2FuQ3JlYXRlU2Vzc2lvbihkb2N1bWVudCk7CisgICAgaWYg
KGNhbkNhbGwuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoY2FuQ2Fs
bC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byBwYWdlID0gZG9jdW1lbnQucGFnZSgpOworICAgIGlmICghcGFnZSkgeworICAgICAgICBwcm9t
aXNlLnNldHRsZShFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNlKSB7CisgICAgICAg
IHByb21pc2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gUmVzb2x2ZSB3aXRoIGFuIGVtcHR5IHNlcXVlbmNl
IG9mIGZlYXR1cmVzIGlmIEFwcGxlIFBheSBjYXBhYmlsaXR5IGRpc2Nsb3N1cmUgaXMgbm90IGFs
bG93ZWQuCisgICAgaWYgKCFzaG91bGREaXNjbG9zZUZlYXR1cmVzKGRvY3VtZW50KSkgeworICAg
ICAgICBwcm9taXNlLnJlc29sdmUoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fc2V0dXBGZWF0dXJlc1Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworCisgICAgcGFnZS0+
cGF5bWVudENvb3JkaW5hdG9yKCkuY2xpZW50KCkuZ2V0U2V0dXBGZWF0dXJlcyhtX2NvbmZpZ3Vy
YXRpb24sIGRvY3VtZW50LnVybCgpLCBbdGhpcywgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRp
bmdBY3Rpdml0eSgqdGhpcyldKFZlY3RvcjxSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmIHNl
dHVwRmVhdHVyZXMpIHsKKyAgICAgICAgaWYgKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UpCisgICAg
ICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UsIFdURjo6bnVsbG9w
dCktPnNldHRsZShXVEZNb3ZlKHNldHVwRmVhdHVyZXMpKTsKKyAgICB9KTsKK30KKwordm9pZCBB
cHBsZVBheVNldHVwOjpiZWdpbihEb2N1bWVudCYgZG9jdW1lbnQsIFZlY3RvcjxSZWZQdHI8QXBw
bGVQYXlTZXR1cEZlYXR1cmU+PiYmIGZlYXR1cmVzLCBCZWdpblByb21pc2UmJiBwcm9taXNlKQor
eworICAgIGF1dG8gY2FuQ2FsbCA9IFBheW1lbnRTZXNzaW9uOjpjYW5DcmVhdGVTZXNzaW9uKGRv
Y3VtZW50KTsKKyAgICBpZiAoY2FuQ2FsbC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9t
aXNlLnNldHRsZShjYW5DYWxsLnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoIVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdl
c3R1cmUoKSkgeworICAgICAgICBwcm9taXNlLnNldHRsZShFeGNlcHRpb24geyBJbnZhbGlkQWNj
ZXNzRXJyb3IsICJNdXN0IGNhbGwgQXBwbGVQYXlTZXR1cC5iZWdpbiBmcm9tIGEgdXNlciBnZXN0
dXJlIGhhbmRsZXIuIiB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcGFn
ZSA9IGRvY3VtZW50LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgcHJvbWlzZS5z
ZXR0bGUoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobV9iZWdpblByb21pc2UpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0
bGUoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX2JlZ2luUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CisgICAgbV9wZW5k
aW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKKworICAgIHBhZ2UtPnBh
eW1lbnRDb29yZGluYXRvcigpLmNsaWVudCgpLmJlZ2luQXBwbGVQYXlTZXR1cChtX2NvbmZpZ3Vy
YXRpb24sIGRvY3VtZW50LnVybCgpLCBXVEZNb3ZlKGZlYXR1cmVzKSwgW3RoaXNdKGJvb2wgcmVz
dWx0KSB7CisgICAgICAgIGlmIChtX2JlZ2luUHJvbWlzZSkKKyAgICAgICAgICAgIHN0ZDo6ZXhj
aGFuZ2UobV9iZWdpblByb21pc2UsIFdURjo6bnVsbG9wdCktPnNldHRsZShyZXN1bHQpOworICAg
IH0pOworfQorCitBcHBsZVBheVNldHVwOjpBcHBsZVBheVNldHVwKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIDogQWN0
aXZlRE9NT2JqZWN0KCZjb250ZXh0KQorICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29u
ZmlndXJhdGlvbikpCit7CisgICAgc3VzcGVuZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgQXBwbGVQ
YXlTZXR1cDo6c3RvcCgpCit7CisgICAgaWYgKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UpCisgICAg
ICAgIHN0ZDo6ZXhjaGFuZ2UobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSwgV1RGOjpudWxsb3B0KS0+
c2V0dGxlKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7CisKKyAgICBpZiAobV9iZWdpblByb21p
c2UpCisgICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9iZWdpblByb21pc2UsIFdURjo6bnVsbG9wdCkt
PnNldHRsZShFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworCisgICAgaWYgKGF1dG8gcGFnZSA9
IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS5wYWdlKCkpCisg
ICAgICAgIHBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLmNsaWVudCgpLmVuZEFwcGxlUGF5U2V0
dXAoKTsKKworICAgIG1fcGVuZGluZ0FjdGl2aXR5ID0gbnVsbHB0cjsKK30KKwordm9pZCBBcHBs
ZVBheVNldHVwOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCit7CisgICAgc3RvcCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZ
X1NFVFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNl
dHVwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNldHVwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVNldHVwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKwor
I2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZlRE9NT2JqZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9K
U0RPTVByb21pc2VEZWZlcnJlZC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXBwbGVQ
YXlTZXR1cEZlYXR1cmU7CitjbGFzcyBEZWZlcnJlZFByb21pc2U7CitjbGFzcyBEb2N1bWVudDsK
KworY2xhc3MgQXBwbGVQYXlTZXR1cCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBS
ZWZDb3VudGVkPEFwcGxlUGF5U2V0dXA+IHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgQ29uZmlndXJh
dGlvbiB7CisgICAgICAgIFN0cmluZyBtZXJjaGFudElkZW50aWZpZXI7CisgICAgICAgIFN0cmlu
ZyByZWZlcnJlcklkZW50aWZpZXI7CisgICAgICAgIFN0cmluZyBzaWduYXR1cmU7CisgICAgICAg
IFZlY3RvcjxTdHJpbmc+IHNpZ25lZEZpZWxkczsKKyAgICB9OworCisgICAgc3RhdGljIFJlZjxB
cHBsZVBheVNldHVwPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgQ29u
ZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBcHBsZVBheVNldHVwKGNvbnRleHQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsK
KyAgICB9CisKKyAgICB1c2luZyBTZXR1cEZlYXR1cmVzUHJvbWlzZSA9IERPTVByb21pc2VEZWZl
cnJlZDxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8QXBwbGVQYXlTZXR1cEZlYXR1cmU+Pj47Cisg
ICAgdm9pZCBnZXRTZXR1cEZlYXR1cmVzKERvY3VtZW50JiwgU2V0dXBGZWF0dXJlc1Byb21pc2Um
Jik7CisKKyAgICB1c2luZyBCZWdpblByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9v
bGVhbj47CisgICAgdm9pZCBiZWdpbihEb2N1bWVudCYsIFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlT
ZXR1cEZlYXR1cmU+PiYmLCBCZWdpblByb21pc2UmJik7CisKK3ByaXZhdGU6CisgICAgQXBwbGVQ
YXlTZXR1cChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgQ29uZmlndXJhdGlvbiYmKTsKKworICAg
IC8vIEFjdGl2ZURPTU9iamVjdAorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiQXBwbGVQYXlTZXR1cCI7IH0KKyAgICB2b2lkIHN0b3Ao
KSBmaW5hbDsKKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7CisK
KyAgICBDb25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKKyAgICBPcHRpb25hbDxTZXR1cEZl
YXR1cmVzUHJvbWlzZT4gbV9zZXR1cEZlYXR1cmVzUHJvbWlzZTsKKyAgICBPcHRpb25hbDxCZWdp
blByb21pc2U+IG1fYmVnaW5Qcm9taXNlOworICAgIFJlZlB0cjxQZW5kaW5nQWN0aXZpdHk8QXBw
bGVQYXlTZXR1cD4+IG1fcGVuZGluZ0FjdGl2aXR5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmlkbAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAg
Q29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFVFVQLAorXSBkaWN0aW9uYXJ5IEFwcGxlUGF5U2V0dXBD
b25maWd1cmF0aW9uIHsKKyAgICBET01TdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgIERP
TVN0cmluZyByZWZlcnJlcklkZW50aWZpZXI7CisgICAgRE9NU3RyaW5nIHNpZ25hdHVyZTsKKyAg
ICBzZXF1ZW5jZTxET01TdHJpbmc+IHNpZ25lZEZpZWxkczsKK307CisKK1sKKyAgICBBY3RpdmVE
T01PYmplY3QsCisgICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFVFVQLAorICAgIENvbnN0cnVj
dG9yKEFwcGxlUGF5U2V0dXBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pLAorICAgIENvbnN0
cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICBFbmFibGVkQnlTZXR0
aW5nPUFwcGxlUGF5LAorICAgIFNlY3VyZUNvbnRleHQsCitdIGludGVyZmFjZSBBcHBsZVBheVNl
dHVwIHsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFByb21pc2U8c2VxdWVuY2U8QXBwbGVQYXlT
ZXR1cEZlYXR1cmU+PiBnZXRTZXR1cEZlYXR1cmVzKCk7CisgICAgW0NhbGxXaXRoPURvY3VtZW50
XSBQcm9taXNlPGJvb2xlYW4+IGJlZ2luKHNlcXVlbmNlPEFwcGxlUGF5U2V0dXBGZWF0dXJlPiBz
ZXR1cEZlYXR1cmVzKTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2V0dXBGZWF0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBQS1BheW1l
bnRTZXR1cEZlYXR1cmU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBBcHBs
ZVBheVNldHVwRmVhdHVyZVR5cGUgOiB1aW50OF90OworCitjbGFzcyBBcHBsZVBheVNldHVwRmVh
dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFwcGxlUGF5U2V0dXBGZWF0dXJlPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxBcHBsZVBheVNldHVwRmVhdHVyZT4gY3JlYXRlKFBLUGF5bWVudFNl
dHVwRmVhdHVyZSAqZmVhdHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEFwcGxlUGF5U2V0dXBGZWF0dXJlKGZlYXR1cmUpKTsKKyAgICB9CisKKyAgICBBcHBsZVBheVNl
dHVwRmVhdHVyZVR5cGUgdHlwZSgpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVp
bnQ4X3QgeworICAgICAgICBVbnN1cHBvcnRlZCwKKyAgICAgICAgU3VwcG9ydGVkLAorICAgICAg
ICBTdXBwbGVtZW50YXJ5U3VwcG9ydGVkLAorICAgICAgICBDb21wbGV0ZWQsCisgICAgfTsKKyAg
ICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OworCisgICAgUEtQYXltZW50U2V0dXBGZWF0dXJlICpwbGF0
Zm9ybUZlYXR1cmUoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmUuZ2V0KCk7IH0KKworI2lmIEVO
QUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGJvb2wgc3VwcG9ydHNJbnN0YWxsbWVu
dHMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IEFwcGxlUGF5U2V0dXBGZWF0dXJlKFBLUGF5bWVudFNldHVwRmVhdHVyZSAqKTsKKworICAg
IFJldGFpblB0cjxQS1BheW1lbnRTZXR1cEZlYXR1cmU+IG1fZmVhdHVyZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2V0dXBGZWF0dXJlLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9QVBQTEVf
UEFZX1NFVFVQLAorXSBlbnVtIEFwcGxlUGF5U2V0dXBGZWF0dXJlU3RhdGUgeworICAgICJ1bnN1
cHBvcnRlZCIsCisgICAgInN1cHBvcnRlZCIsCisgICAgInN1cHBsZW1lbnRhcnlTdXBwb3J0ZWQi
LAorICAgICJjb21wbGV0ZWQiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX1NF
VFVQLAorICAgIEVuYWJsZWRCeVNldHRpbmc9QXBwbGVQYXksCisgICAgSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZSwKKyAgICBTZWN1cmVDb250ZXh0LAorXSBpbnRlcmZhY2UgQXBwbGVQYXlTZXR1
cEZlYXR1cmUgeworICAgIFtDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBBcHBs
ZVBheVNldHVwRmVhdHVyZVR5cGUgdHlwZTsKKyAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25s
eSBhdHRyaWJ1dGUgQXBwbGVQYXlTZXR1cEZlYXR1cmVTdGF0ZSBzdGF0ZTsKKyAgICBbQ2FjaGVk
QXR0cmlidXRlLCBDb25kaXRpb25hbD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0c0luc3RhbGxtZW50czsKK307CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1
cmUubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVNldHVwRmVhdHVyZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFwcGxlUGF5U2V0
dXBGZWF0dXJlLmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorCisjaW1wb3J0ICJB
cHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaCIKKyNpbXBvcnQgIlBhc3NLaXRTUElBZGRpdGlvbnMu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgQXBw
bGVQYXlTZXR1cEZlYXR1cmU6OnR5cGUoKSBjb25zdAoreworICAgIHN3aXRjaCAoW21fZmVhdHVy
ZSB0eXBlXSkgeworICAgIGNhc2UgUEtQYXltZW50U2V0dXBGZWF0dXJlVHlwZUFwcGxlUGF5Ogor
ICAgICAgICByZXR1cm4gQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlOjpBcHBsZVBheTsKKyAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBjYXNlIFBLUGF5bWVu
dFNldHVwRmVhdHVyZVR5cGVBcHBsZVBheV9YOgorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKKyAgICAgICAgcmV0dXJuIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZTo6
QXBwbGVDYXJkOworICAgIH0KK30KKworQXBwbGVQYXlTZXR1cEZlYXR1cmU6OlN0YXRlIEFwcGxl
UGF5U2V0dXBGZWF0dXJlOjpzdGF0ZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChbbV9mZWF0dXJl
IHN0YXRlXSkgeworICAgIGNhc2UgUEtQYXltZW50U2V0dXBGZWF0dXJlU3RhdGVVbnN1cHBvcnRl
ZDoKKyAgICAgICAgcmV0dXJuIFN0YXRlOjpVbnN1cHBvcnRlZDsKKyAgICBjYXNlIFBLUGF5bWVu
dFNldHVwRmVhdHVyZVN0YXRlU3VwcG9ydGVkOgorICAgICAgICByZXR1cm4gU3RhdGU6OlN1cHBv
cnRlZDsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlU3VwcGxlbWVudGFyeVN1
cHBvcnRlZDoKKyAgICAgICAgcmV0dXJuIFN0YXRlOjpTdXBwbGVtZW50YXJ5U3VwcG9ydGVkOwor
ICAgIGNhc2UgUEtQYXltZW50U2V0dXBGZWF0dXJlU3RhdGVDb21wbGV0ZWQ6CisgICAgICAgIHJl
dHVybiBTdGF0ZTo6Q29tcGxldGVkOworICAgIH0KK30KKworI2lmIEVOQUJMRShBUFBMRV9QQVlf
SU5TVEFMTE1FTlRTKQorYm9vbCBBcHBsZVBheVNldHVwRmVhdHVyZTo6c3VwcG9ydHNJbnN0YWxs
bWVudHMoKSBjb25zdAoreworICAgIHJldHVybiBbbV9mZWF0dXJlIHN1cHBvcnRlZE9wdGlvbnNd
ICYgUEtQYXltZW50U2V0dXBGZWF0dXJlU3VwcG9ydGVkT3B0aW9uc0luc3RhbGxtZW50czsKK30K
KyNlbmRpZgorCitBcHBsZVBheVNldHVwRmVhdHVyZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmUoUEtQ
YXltZW50U2V0dXBGZWF0dXJlICpmZWF0dXJlKQorICAgIDogbV9mZWF0dXJlIHsgZmVhdHVyZSB9
Cit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBM
RV9QQVlfU0VUVVApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2VudW0gY2xhc3MgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIDogdWludDhfdCB7CisgICAg
QXBwbGVQYXksCisgICAgQXBwbGVDYXJkLAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJl
VHlwZS5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFVFVQLAor
XSBlbnVtIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZSB7CisgICAgImFwcGxlUGF5IiwKKyAgICAi
YXBwbGVDYXJkIgorfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAkocmV2aXNpb24gMjU5OTIy
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEyIEBACiAjaWYgRU5BQkxFKEFQ
UExFX1BBWSkKIAogI2luY2x1ZGUgIkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgiCisj
aW5jbHVkZSAiQXBwbGVQYXlTZXR1cC5oIgorI2luY2x1ZGUgIkFwcGxlUGF5U2V0dXBGZWF0dXJl
LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAotI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudENvb3JkaW5hdG9yQ2xp
ZW50QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBE
b2N1bWVudDsKQEAgLTcxLDEzICs3MCwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAg
IHZpcnR1YWwgdm9pZCBnZXRTZXR1cEZlYXR1cmVzKGNvbnN0IEFwcGxlUGF5U2V0dXA6OkNvbmZp
Z3VyYXRpb24mLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWY8
QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOyB9CisgICAgdmlydHVhbCB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChj
b25zdCBBcHBsZVBheVNldHVwOjpDb25maWd1cmF0aW9uJiwgY29uc3QgVVJMJiwgVmVjdG9yPFJl
ZlB0cjxBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGVuZEFwcGxlUGF5U2V0dXAoKSB7IH0KKwogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgflBheW1lbnRDb29yZGluYXRvckNsaWVudCgpID0gZGVmYXVsdDsKLQotI2lmIGRl
ZmluZWQoUEFZTUVOVENPT1JESU5BVE9SQ0xJRU5UX0FERElUSU9OUykKLVBBWU1FTlRDT09SRElO
QVRPUkNMSUVOVF9BRERJVElPTlMKLSN1bmRlZiBQQVlNRU5UQ09PUkRJTkFUT1JDTElFTlRfQURE
SVRJT05TCi0jZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbi5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEhBVkUoUEFTU0tJVF9J
TlNUQUxMTUVOVFMpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1Mg
UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0cnVjdCBBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKKworY2xhc3MgV0VC
Q09SRV9FWFBPUlQgUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiB7CitwdWJsaWM6Cisg
ICAgUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsKKyAgICBQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKGNvbnN0IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uJik7CisgICAgUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihSZXRhaW5Q
dHI8UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiYmKTsKKworICAgIFBLUGF5bWVu
dEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiAqcGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbj4gbV9jb25maWd1cmF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxs
bWVudENvbmZpZ3VyYXRpb24ubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCIKKworI2lmIEhBVkUo
UEFTU0tJVF9JTlNUQUxMTUVOVFMpCisKKyNpbXBvcnQgIkFwcGxlUGF5SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uLmgiCisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworLy8gRklYTUU6IE1lcmdlIHdpdGggdG9EZWNpbWFsTnVtYmVy
KCkgaW4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS4KK3N0YXRpYyBOU0RlY2ltYWxO
dW1iZXIgKnRvRGVjaW1hbE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCkKK3sKKyAgICBpZiAo
IWFtb3VudCkKKyAgICAgICAgcmV0dXJuIFtOU0RlY2ltYWxOdW1iZXIgemVyb107CisgICAgcmV0
dXJuIFtOU0RlY2ltYWxOdW1iZXIgZGVjaW1hbE51bWJlcldpdGhTdHJpbmc6YW1vdW50IGxvY2Fs
ZTpAeyBOU0xvY2FsZURlY2ltYWxTZXBhcmF0b3IgOiBAIi4iIH1dOworfQorCitzdGF0aWMgUEtQ
YXltZW50U2V0dXBGZWF0dXJlVHlwZSBwbGF0Zm9ybUZlYXR1cmVUeXBlKGNvbnN0IEFwcGxlUGF5
U2V0dXBGZWF0dXJlVHlwZSYgZmVhdHVyZVR5cGUpCit7CisgICAgc3dpdGNoIChmZWF0dXJlVHlw
ZSkgeworICAgIGNhc2UgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlOjpBcHBsZVBheToKKyAgICAg
ICAgcmV0dXJuIFBLUGF5bWVudFNldHVwRmVhdHVyZVR5cGVBcHBsZVBheTsKKyAgICBjYXNlIEFw
cGxlUGF5U2V0dXBGZWF0dXJlVHlwZTo6QXBwbGVDYXJkOgorICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICByZXR1cm4gUEtQYXltZW50U2V0dXBGZWF0
dXJlVHlwZUFwcGxlUGF5X1g7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAorICAgIH0KK30KKworc3RhdGljIFJldGFpblB0cjxQS1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24+IGNyZWF0ZVBsYXRmb3JtQ29uZmlndXJhdGlvbihjb25zdCBBcHBsZVBheUlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbiYgY29yZUNvbmZpZ3VyYXRpb24pCit7CisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbkluc3RhbmNlKCkgaW5pdF0pOworCisgICAgW2NvbmZpZ3VyYXRpb24gc2V0RmVh
dHVyZTpwbGF0Zm9ybUZlYXR1cmVUeXBlKGNvcmVDb25maWd1cmF0aW9uLmZlYXR1cmVUeXBlKV07
CisKKyAgICBbY29uZmlndXJhdGlvbiBzZXRCaW5kaW5nVG90YWxBbW91bnQ6dG9EZWNpbWFsTnVt
YmVyKGNvcmVDb25maWd1cmF0aW9uLmJpbmRpbmdUb3RhbEFtb3VudCldOworICAgIFtjb25maWd1
cmF0aW9uIHNldEN1cnJlbmN5Q29kZTpjb3JlQ29uZmlndXJhdGlvbi5jdXJyZW5jeUNvZGVdOwor
ICAgIFtjb25maWd1cmF0aW9uIHNldEluU3RvcmVQdXJjaGFzZTpjb3JlQ29uZmlndXJhdGlvbi5p
c0luU3RvcmVQdXJjaGFzZV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0T3BlblRvQnV5VGhyZXNo
b2xkQW1vdW50OnRvRGVjaW1hbE51bWJlcihjb3JlQ29uZmlndXJhdGlvbi5vcGVuVG9CdXlUaHJl
c2hvbGRBbW91bnQpXTsKKworICAgIGF1dG8gbWVyY2hhbmRpc2luZ0ltYWdlRGF0YSA9IGFkb3B0
TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzpjb3JlQ29uZmln
dXJhdGlvbi5tZXJjaGFuZGlzaW5nSW1hZ2VEYXRhIG9wdGlvbnM6MF0pOworICAgIFtjb25maWd1
cmF0aW9uIHNldE1lcmNoYW5kaXNpbmdJbWFnZURhdGE6bWVyY2hhbmRpc2luZ0ltYWdlRGF0YS5n
ZXQoKV07CisKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRfSURFTlRJRklFUlMpCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIGlmICghW2NvbmZpZ3VyYXRpb24gcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihzZXRJbnN0YWxsbWVudE1lcmNoYW50SWRlbnRpZmllcjopXSB8fCAhW2NvbmZp
Z3VyYXRpb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRSZWZlcnJlcklkZW50aWZp
ZXI6KV0pCisgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uOworI2VuZGlmCisgICAgW2NvbmZp
Z3VyYXRpb24gc2V0SW5zdGFsbG1lbnRNZXJjaGFudElkZW50aWZpZXI6Y29yZUNvbmZpZ3VyYXRp
b24ubWVyY2hhbnRJZGVudGlmaWVyXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRSZWZlcnJlcklk
ZW50aWZpZXI6Y29yZUNvbmZpZ3VyYXRpb24ucmVmZXJyZXJJZGVudGlmaWVyXTsKKyNlbmRpZgor
CisgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Cit9CisKK1BheW1lbnRJbnN0YWxsbWVudENvbmZp
Z3VyYXRpb246OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oY29uc3QgQXBwbGVQYXlJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2NvbmZpZ3Vy
YXRpb24geyBjcmVhdGVQbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikgfQorewor
fQorCitQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOjpQYXltZW50SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IFdURk1vdmUoY29uZmln
dXJhdGlvbikgfQoreworfQorCitQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKlBh
eW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1l
dGhvZFVwZGF0ZS5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRNZXRob2RVcGRhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAg
KzMwLDYgQEAKICNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0j
aW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1BheW1lbnRNZXRob2RVcGRhdGVBZGRpdGlvbnMuaD4K
LSNlbmRpZgotCiBPQkpDX0NMQVNTIFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRl
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCwxMSArNDYsMTAgQEAgcHVibGljOgogICAg
IGNvbnN0IFRvdGFsQW5kTGluZUl0ZW1zJiB0b3RhbEFuZExpbmVJdGVtcygpIGNvbnN0OwogICAg
IFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICpwbGF0Zm9ybVVwZGF0ZSgpIGNv
bnN0OwogCi0jaWYgZGVmaW5lZChQQVlNRU5UTUVUSE9EVVBEQVRFX1BVQkxJQ19BRERJVElPTlMp
Ci1QQVlNRU5UTUVUSE9EVVBEQVRFX1BVQkxJQ19BRERJVElPTlMKLSN1bmRlZiBQQVlNRU5UTUVU
SE9EVVBEQVRFX1BVQkxJQ19BRERJVElPTlMKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRT
KQorICAgIHZvaWQgc2V0SW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7
CiAjZW5kaWYKLSAgICAKKwogcHJpdmF0ZToKICAgICBPcHRpb25hbDxUb3RhbEFuZExpbmVJdGVt
cz4gbV90b3RhbEFuZExpbmVJdGVtczsKICAgICBSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdFBh
eW1lbnRNZXRob2RVcGRhdGU+IG1fcGxhdGZvcm1VcGRhdGU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5tbQkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1ICszMywxOCBAQAogI2ltcG9y
dCAiUGF5bWVudE1ldGhvZC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+
CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25z
L1BheW1lbnRDb2NvYUFkZGl0aW9ucy5tbT4KLSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1z
dGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBLUGF5bWVudCAqLCBBcHBsZVBheVBheW1lbnQm
KSB7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CitzdGF0aWMgdm9pZCBmaW5p
c2hDb252ZXJ0aW5nKFBLUGF5bWVudCAqcGF5bWVudCwgQXBwbGVQYXlQYXltZW50JiByZXN1bHQp
Cit7CisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICBpZiAoTlNTdHJpbmcgKmlu
c3RhbGxtZW50QXV0aG9yaXphdGlvblRva2VuID0gcGF5bWVudC5pbnN0YWxsbWVudEF1dGhvcml6
YXRpb25Ub2tlbikKKyAgICAgICAgcmVzdWx0Lmluc3RhbGxtZW50QXV0aG9yaXphdGlvblRva2Vu
ID0gaW5zdGFsbG1lbnRBdXRob3JpemF0aW9uVG9rZW47CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShwYXltZW50KTsKKyAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKKyNlbmRpZgorfQogCiBzdGF0
aWMgQXBwbGVQYXlQYXltZW50OjpUb2tlbiBjb252ZXJ0KFBLUGF5bWVudFRva2VuICpwYXltZW50
VG9rZW4pCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRNZXRob2RDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQkocmV2aXNpb24gMjU5OTIyKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDE1ICszMiwxOCBAQAogI2ltcG9ydCAiQXBwbGVQ
YXlQYXltZW50TWV0aG9kVHlwZS5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRp
b25zL1BheW1lbnRNZXRob2RDb2NvYUFkZGl0aW9ucy5tbT4KLSNlbHNlCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1zdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBLUGF5bWVudE1ldGhvZCAqLCBB
cHBsZVBheVBheW1lbnRNZXRob2QmKSB7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBLUGF5bWVudE1ldGhvZCAqcGF5bWVu
dE1ldGhvZCwgQXBwbGVQYXlQYXltZW50TWV0aG9kJiByZXN1bHQpCit7CisjaWYgSEFWRShQQVNT
S0lUX0lOU1RBTExNRU5UUykKKyAgICBpZiAoTlNTdHJpbmcgKmJpbmRUb2tlbiA9IHBheW1lbnRN
ZXRob2QuYmluZFRva2VuKQorICAgICAgICByZXN1bHQuYmluZFRva2VuID0gYmluZFRva2VuOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGF5bWVudE1ldGhvZCk7CisgICAgVU5VU0VEX1BBUkFN
KHJlc3VsdCk7CisjZW5kaWYKK30KIAogc3RhdGljIEFwcGxlUGF5UGF5bWVudFBhc3M6OkFjdGl2
YXRpb25TdGF0ZSBjb252ZXJ0KFBLUGF5bWVudFBhc3NBY3RpdmF0aW9uU3RhdGUgcGF5bWVudFBh
c3NBY3RpdmF0aW9uU3RhdGUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRNZXRob2RVcGRhdGVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RVcGRhdGVDb2Nv
YS5tbQkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5
LDYgKzU5LDEzIEBAIFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICpQYXkKICAg
ICByZXR1cm4gbV9wbGF0Zm9ybVVwZGF0ZS5nZXQoKTsKIH0KIAorI2lmIEhBVkUoUEFTU0tJVF9J
TlNUQUxMTUVOVFMpCit2b2lkIFBheW1lbnRNZXRob2RVcGRhdGU6OnNldEluc3RhbGxtZW50R3Jv
dXBJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXIpCit7
CisgICAgW21fcGxhdGZvcm1VcGRhdGUgc2V0SW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXI6aW5z
dGFsbG1lbnRHcm91cElkZW50aWZpZXJdOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRT
ZXNzaW9uRXJyb3JDb2NvYS5tbQkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMxLDE1ICszMSwyNyBAQAogI2ltcG9ydCAiQXBwbGVQYXlTZXNzaW9uRXJy
b3IuaCIKICNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KIAotI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudFNlc3Np
b25FcnJvckNvY29hQWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0
YXRpYyBPcHRpb25hbDxBcHBsZVBheVNlc3Npb25FcnJvcj4gYWRkaXRpb25hbEVycm9yKE5TRXJy
b3IgKikgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci19Ci0jZW5kaWYKIAotbmFtZXNwYWNlIFdl
YkNvcmUgeworc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5U2Vzc2lvbkVycm9yPiBhZGRpdGlvbmFs
RXJyb3IoTlNFcnJvciAqZXJyb3IpCit7CisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
KyAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIFBLUGF5bWVudEVycm9yQmluZFRva2VuVXNlcklu
Zm9LZXkgYW5kCisgICAgLy8gUEtQYXltZW50QXV0aG9yaXphdGlvbkZlYXR1cmVBcHBsaWNhdGlv
bkVycm9yIHdoZW4gdGhleSdyZSBhdmFpbGFibGUgaW4gYW4gU0RLLgorICAgIHN0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IGJpbmRUb2tlbktleSA9IEAiUEtQYXltZW50RXJyb3JCaW5kVG9rZW4iOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgTlNJbnRlZ2VyIHBrUGF5bWVudEF1dGhvcml6YXRpb25GZWF0
dXJlQXBwbGljYXRpb25FcnJvciA9IC0yMDE2OworCisgICAgaWYgKGVycm9yLmNvZGUgIT0gcGtQ
YXltZW50QXV0aG9yaXphdGlvbkZlYXR1cmVBcHBsaWNhdGlvbkVycm9yKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgaWQgYmluZFRva2VuVmFsdWUgPSBlcnJvci51c2VySW5m
b1tiaW5kVG9rZW5LZXldOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oIWJpbmRUb2tlblZhbHVlIHx8IFtiaW5kVG9rZW5WYWx1ZSBpc0tpbmRPZkNsYXNzOk5T
U3RyaW5nLmNsYXNzXSk7CisgICAgcmV0dXJuIEFwcGxlUGF5U2Vzc2lvbkVycm9yIHsgImZlYXR1
cmVBcHBsaWNhdGlvbkVycm9yIl9zLCB7IHsgImJpbmRUb2tlbiJfcywgKE5TU3RyaW5nICopYmlu
ZFRva2VuVmFsdWUgfSB9IH07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorfQogCiBQYXltZW50U2Vzc2lvbkVycm9yOjpQ
YXltZW50U2Vzc2lvbkVycm9yKFJldGFpblB0cjxOU0Vycm9yPiYmIGVycm9yKQogICAgIDogbV9w
bGF0Zm9ybUVycm9yIHsgV1RGTW92ZShlcnJvcikgfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVJlcXVlc3QuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBw
bGVQYXlSZXF1ZXN0LmlkbAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVJlcXVlc3QuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw0ICsyOCw1IEBACiBdIGRpY3Rpb25hcnkgQXBwbGVQYXlSZXF1ZXN0IDog
QXBwbGVQYXlSZXF1ZXN0QmFzZSB7CiAgICAgcmVxdWlyZWQgdW5zaWduZWQgbG9uZyB2ZXJzaW9u
OwogICAgIHJlcXVpcmVkIERPTVN0cmluZyBtZXJjaGFudElkZW50aWZpZXI7CisgICAgW0NvbmRp
dGlvbmFsPUFQUExFX1BBWV9JTlNUQUxMTUVOVFNdIEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1
cmF0aW9uIGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDExICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IFNl
Y29uZHMgdGFza0RlbGF5SW50ZXJ2YWwgeyAxMDBfbXMgfTsKIAotI3VuZGVmIExPR0lERU5USUZJ
RVIKLSNkZWZpbmUgTE9HSURFTlRJRklFUiBfX2Z1bmNfXwotCi0jdW5kZWYgQUxXQVlTX0xPRwot
I2RlZmluZSBBTFdBWVNfTE9HIGxvZ2dlcigpLmxvZ0Fsd2F5cworI2RlZmluZSBBTFdBWVNfTE9H
X01FRElBU0VTU0lPTk1BTkFHRVIgbG9nZ2VyKCkubG9nQWx3YXlzCiAKIHN0cnVjdCBDbGllbnRT
dGF0ZSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYxLDE5ICsx
NTcsMTkgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRNb2NrTWVkaQogICAgIGlm
IChtX21vY2tQaWNrZXJFbmFibGVkID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fKTsKICAgICBtX21vY2tQaWNrZXJFbmFibGVkID0gZW5hYmxlZDsKIH0K
IAogdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlN0YXRlIHN0YXRlKQogewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisgICAg
QUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKICAgICBtb2NrUGlja2Vy
KCkuc2V0U3RhdGUobmFtZSwgc3RhdGUpOwogfQogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6Om1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkKIHsKLSAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFO
QUdFUihfX2Z1bmNfXyk7CiAgICAgbW9ja1BpY2tlcigpLmRpc21pc3NQb3B1cCgpOwogfQogCkBA
IC0yMDgsNyArMjA0LDcgQEAgdWludDY0X3QgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxh
eQogICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGNvbnRleHRJZCk7CisgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBjb250ZXh0SWQpOwogICAgIG1fY2xpZW50U3RhdGUu
YXBwZW5kKG1ha2VVbmlxdWU8Q2xpZW50U3RhdGU+KGNsaWVudCwgY29udGV4dElkKSk7CiAKICAg
ICBpZiAobV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB8fCBtX3BsYXliYWNrVGFyZ2V0
KQpAQCAtMjI0LDcgKzIyMCw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3Zl
UGxheWIKICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCkpOwor
ICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0
ZVtpbmRleF0uZ2V0KCkpOwogCiAgICAgbV9jbGllbnRTdGF0ZS5yZW1vdmUoaW5kZXgpOwogICAg
IHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0TW9uaXRvcmluZ0NvbmZpZ3VyYXRpb25UYXNrIHwg
VGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKQEAgLTIzNyw3ICsyMzMsNyBAQCB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZUFsbFBsCiAKICAgICBmb3IgKHNpemVfdCBp
ID0gbV9jbGllbnRTdGF0ZS5zaXplKCk7IGkgPiAwOyAtLWkpIHsKICAgICAgICAgaWYgKCZtX2Ns
aWVudFN0YXRlW2kgLSAxXS0+Y2xpZW50ID09ICZjbGllbnQpIHsKLSAgICAgICAgICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgbV9jbGllbnRTdGF0ZVtpIC0gMV0uZ2V0KCkpOworICAgICAg
ICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0
YXRlW2kgLSAxXS5nZXQoKSk7CiAgICAgICAgICAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpIC0g
MSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTcsNyArMjUzLDcgQEAgdm9pZCBXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaG93UGxheWJhYwogICAgICAgICBzdGF0ZS0+cHJldmlvdXNseVJlcXVl
c3RlZFBpY2tlciA9IHN0YXRlID09IGNsaWVudFJlcXVlc3RpbmdQaWNrZXI7CiAgICAgfQogCi0g
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7
CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0
YXRlW2luZGV4XS5nZXQoKSk7CiAKICAgICBib29sIGhhc0FjdGl2ZVJvdXRlID0gZmxhZ3NBcmVT
ZXQobV9jbGllbnRTdGF0ZVtpbmRleF0tPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdU
b0V4dGVybmFsRGV2aWNlKTsKICAgICB0YXJnZXRQaWNrZXIoKS5zaG93UGxheWJhY2tUYXJnZXRQ
aWNrZXIoRmxvYXRSZWN0KHJlY3QpLCBoYXNBY3RpdmVSb3V0ZSwgdXNlRGFya0FwcGVhcmFuY2Up
OwpAQCAtMjc1LDcgKzI3MSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y2xpZW50
U3RhdGUKICAgICBpZiAobmV3RmxhZ3MgPT0gb2xkRmxhZ3MpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCks
ICJuZXcgZmxhZ3MgPSAiLCBuZXdGbGFncyk7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSwgIm5ldyBmbGFncyA9
ICIsIG5ld0ZsYWdzKTsKIAogICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+ZmxhZ3MgPSBuZXdGbGFn
czsKIApAQCAtMjk5LDI1ICsyOTUsMjUgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpj
bGllbnRTdGF0ZQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGZsYWdzQXJl
U2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmlj
ZSkgJiYgZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdW
aWRlbykpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0
KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VT
U0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIHJldHVybmluZyBlYXJseSIpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRG8gbm90IGJl
Z2luIHBsYXlpbmcgdG8gdGhlIGRldmljZSB1bmxlc3MgcGxheWJhY2sgaGFzIGp1c3Qgc3RhcnRl
ZC4KICAgICBpZiAoIWZsYWdzQXJlU2V0KG5ld0ZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlp
bmdWaWRlbykgfHwgZmxhZ3NBcmVTZXQob2xkRmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWlu
Z1ZpZGVvKSkgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcg
ZWFybHksIHBsYXliYWNrIGRpZG4ndCBqdXN0IHN0YXJ0Iik7CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInJldHVybmluZyBlYXJseSwgcGxheWJhY2sg
ZGlkbid0IGp1c3Qgc3RhcnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGZvciAo
YXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBjaGFu
Z2VkQ2xpZW50U3RhdGUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0KGZhbHNlKSIpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQoZmFsc2UpIik7CiAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxh
eVRvUGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgZmFsc2UpOwogICAgIH0KIAotICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgY2hhbmdlZENsaWVudFN0YXRlLmdldCgpLCAiIGNh
bGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKKyAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIGNoYW5nZWRDbGllbnRTdGF0ZS5nZXQo
KSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpIik7CiAgICAg
Y2hhbmdlZENsaWVudFN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
Y2hhbmdlZENsaWVudFN0YXRlLT5jb250ZXh0SWQsIHRydWUpOwogCiAgICAgaWYgKGluZGV4ICYm
IG1fY2xpZW50U3RhdGUuc2l6ZSgpID4gMSkKQEAgLTMyNiw3ICszMjIsNyBAQCB2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2V0UGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0
KQogewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImhhcyBhY3RpdmUgcm91dGUgPSAi
LCB0YXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgImhhcyBhY3RpdmUgcm91dGUgPSAiLCB0YXJnZXQtPmhhc0FjdGl2
ZVJvdXRlKCkpOwogICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEZNb3ZlKHRhcmdldCk7CiAgICAg
bV90YXJnZXRDaGFuZ2VkID0gdHJ1ZTsKICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldENs
aWVudHNDb25maWd1cmF0aW9uVGFzayk7CkBAIC0zMzQsNyArMzMwLDcgQEAgdm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5YmFjawogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wgYXZhaWxhYmxl
KQogewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgYXZhaWxhYmxlKTsKKyAgICBBTFdB
WVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIGF2YWlsYWJsZSk7CiAgICAgbV9l
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IGF2YWlsYWJsZTsKICAgICBmb3IgKGF1dG8m
IHN0YXRlIDogbV9jbGllbnRTdGF0ZSkKICAgICAgICAgc3RhdGUtPmNsaWVudC5leHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShzdGF0ZS0+Y29udGV4dElkLCBhdmFpbGFibGUp
OwpAQCAtMzQyLDcgKzMzOCw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJu
YWxPdXQKIAogdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpwbGF5YmFja1RhcmdldFBpY2tl
cldhc0Rpc21pc3NlZCgpCiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBB
TFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwogICAgIG1fcGxheWJhY2tU
YXJnZXRQaWNrZXJEaXNtaXNzZWQgPSB0cnVlOwogICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFy
Z2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKIH0KQEAgLTM3NSw3ICszNzEsNyBAQCB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2NsaWVudFN0YXRlLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1dG8mIHN0YXRl
ID0gbV9jbGllbnRTdGF0ZVtpXTsKIAotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
IHN0YXRlLmdldCgpLCAiLCByZXF1ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVzdGVkUGlj
a2VyKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBz
dGF0ZS5nZXQoKSwgIiwgcmVxdWVzdGVkUGlja2VyID0gIiwgc3RhdGUtPnJlcXVlc3RlZFBpY2tl
cik7CiAKICAgICAgICAgaWYgKChtX3RhcmdldENoYW5nZWQgfHwgbV9wbGF5YmFja1RhcmdldFBp
Y2tlckRpc21pc3NlZCkgJiYgc3RhdGUtPnJlcXVlc3RlZFBpY2tlcikKICAgICAgICAgICAgIGlu
ZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyID0gaTsKQEAgLTQwMSwxMiArMzk3LDEyIEBA
IHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICAgICAgICAgIHN0
YXRlLT5jbGllbnQuc2V0UGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgKm1fcGxheWJh
Y2tUYXJnZXQuY29weVJlZigpKTsKIAogICAgICAgICBpZiAoaSAhPSBpbmRleE9mQ2xpZW50V2ls
bFBsYXlUb1RhcmdldCB8fCAhaGF2ZUFjdGl2ZVJvdXRlKSB7Ci0gICAgICAgICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoZmFsc2UpIik7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VT
U0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxh
eVRvUGxheWJhY2tUYXJnZXQoZmFsc2UpIik7CiAgICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIGZhbHNlKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChzdGF0ZS0+cmVxdWVzdGVkUGlja2VyICYmIG1fcGxheWJh
Y2tUYXJnZXRQaWNrZXJEaXNtaXNzZWQpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rp
c21pc3NlZCIpOworICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlz
bWlzc2VkIik7CiAgICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnBsYXliYWNrVGFyZ2V0UGlja2Vy
V2FzRGlzbWlzc2VkKHN0YXRlLT5jb250ZXh0SWQpOwogICAgICAgICB9CiAKQEAgLTQxOCw3ICs0
MTQsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsCiAgICAgaWYg
KGhhdmVBY3RpdmVSb3V0ZSAmJiBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCAhPSBub3RG
b3VuZCkgewogICAgICAgICBhdXRvJiBzdGF0ZSA9IG1fY2xpZW50U3RhdGVbaW5kZXhPZkNsaWVu
dFdpbGxQbGF5VG9UYXJnZXRdOwogICAgICAgICBpZiAoIWZsYWdzQXJlU2V0KHN0YXRlLT5mbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSkpIHsKLSAgICAgICAg
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRT
aG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOworICAgICAgICAgICAgQUxXQVlTX0xP
R19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpIik7CiAgICAgICAgICAgICBzdGF0ZS0+
Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIHRy
dWUpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDMzLDcgKzQyOSw3IEBAIHZvaWQgV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBib29sIGhhc0F2YWlsYWJpbGl0eUxpc3Rl
bmVyID0gZmFsc2U7CiAgICAgYm9vbCBoYXZlQ2xpZW50V2l0aE1lZGlhID0gZmFsc2U7CiAgICAg
Zm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsKLSAgICAgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSk7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNT
SU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCkpOwogICAgICAgICBpZiAoc3RhdGUtPmZs
YWdzICYgTWVkaWFQcm9kdWNlcjo6UmVxdWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpIHsK
ICAgICAgICAgICAgIG1vbml0b3JpbmdSZXF1aXJlZCA9IHRydWU7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTQ0NSwxMCArNDQxLDEwIEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29u
ZmlndXJlUGwKICAgICB9CiAKICAgICBpZiAobW9uaXRvcmluZ1JlcXVpcmVkIHx8IChoYXNBdmFp
bGFiaWxpdHlMaXN0ZW5lciAmJiBoYXZlQ2xpZW50V2l0aE1lZGlhKSkgewotICAgICAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsICJzdGFydGluZyBtb25pdG9yaW5nIik7CisgICAgICAgIEFM
V0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0YXJ0aW5nIG1vbml0b3Jp
bmciKTsKICAgICAgICAgdGFyZ2V0UGlja2VyKCkuc3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tU
YXJnZXRzKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAic3RvcHBpbmcgbW9uaXRvcmluZyIpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lP
Tk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGluZyBtb25pdG9yaW5nIik7CiAgICAgICAgIHRhcmdl
dFBpY2tlcigpLnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CiAgICAgfQogfQpAQCAt
NDkwLDcgKzQ4Niw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2EK
IAogICAgIGlmICghbV9wbGF5YmFja1RhcmdldCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0
aXZlUm91dGUoKSkgewogICAgICAgICBpZiAobV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsK
LSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInN0b3BwaW5nIHRpbWVyIik7
CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJz
dG9wcGluZyB0aW1lciIpOwogICAgICAgICAgICAgbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCA9
IHsgfTsKICAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CiAgICAgICAgIH0KQEAg
LTUwMiw3ICs0OTgsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdh
CiAgICAgYm9vbCBkaWRQbGF5VG9FbmQgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIHN0YXRlIDog
bV9jbGllbnRTdGF0ZSkgewogCi0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3Rh
dGUuZ2V0KCksICIgcGxheWVkVG9FbmQgPSAiLCBzdGF0ZS0+cGxheWVkVG9FbmQpOworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAi
IHBsYXllZFRvRW5kID0gIiwgc3RhdGUtPnBsYXllZFRvRW5kKTsKIAogICAgICAgICBpZiAoZmxh
Z3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFs
RGV2aWNlKSAmJiBmbGFnc0FyZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxh
eWluZ1ZpZGVvKSkKICAgICAgICAgICAgIHN0b3BUaW1lciA9IHRydWU7CkBAIC01MTIsNyArNTA4
LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogICAgIH0KIAog
ICAgIGlmIChzdG9wVGltZXIpIHsKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAi
c3RvcHBpbmcgdGltZXIiKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VS
KF9fZnVuY19fLCAic3RvcHBpbmcgdGltZXIiKTsKICAgICAgICAgbV9jdXJyZW50V2F0Y2hkb2dJ
bnRlcnZhbCA9IHsgfTsKICAgICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKICAgICB9IGVs
c2UgewpAQCAtNTIwLDcgKzUxNiw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29u
ZmlndXJlV2EKICAgICAgICAgaWYgKGludGVydmFsICE9IG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2
YWwgfHwgIW1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKSB7CiAgICAgICAgICAgICBtX3dhdGNo
ZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKICAgICAgICAgfQotICAgICAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsICJ0aW1lciBzY2hlZHVsZWQgZm9yICIsIGludGVydmFsLnZh
bHVlKCksICIgc2Vjb25kcyIpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18sICJ0aW1lciBzY2hlZHVsZWQgZm9yICIsIGludGVydmFsLnZhbHVlKCksICIg
c2Vjb25kcyIpOwogICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0gaW50ZXJ2YWw7
CiAgICAgfQogfQpAQCAtNTMwLDcgKzUyNiw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6d2F0Y2hkb2dUaW0KICAgICBpZiAoIW1fcGxheWJhY2tUYXJnZXQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKICAgICB0YXJnZXRQaWNrZXIoKS5pbnZhbGlkYXRl
UGxheWJhY2tUYXJnZXRzKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24g
MjYwMTAyKQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBBcHBsZVBheSBjb2RlIGZyb20gV2ViS2l0
QWRkaXRpb25zIHRvIFdlYkNvcmUgYW5kIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
eSBFc3Rlcy4KKworICAgICAgICAqIHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaDoKKyAgICAg
ICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tOgorICAgICAgICAqIHBhbC9zcGkvY29j
b2EvUGFzc0tpdFNQSS5oOgorCiAyMDIwLTA0LTE0ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRvcHQgaW50ZXJmYWNlIEFWQXVkaW9Sb3V0aW5nQXJiaXRlciBm
b3IgTWFjCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGlu
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNv
ZnRMaW5rLmgJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29j
b2EvUGFzc0tpdFNvZnRMaW5rLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDE4IEBAIFNP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW4KIFNPRlRfTElOS19DTEFTU19G
T1JfSEVBREVSKFBBTCwgUEtQYXltZW50TWV0aG9kKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFE
RVIoUEFMLCBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24pCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihQQUwsIFBLUGF5bWVudFJlcXVlc3QpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQ
QUwsIFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbikKK1NPRlRfTElOS19DTEFTU19GT1JfSEVB
REVSKFBBTCwgUEtQYXltZW50U2V0dXBDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9I
RUFERVIoUEFMLCBQS1BheW1lbnRTZXR1cEZlYXR1cmUpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihQQUwsIFBLUGF5bWVudFNldHVwUmVxdWVzdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVB
REVSKFBBTCwgUEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcikKIFNPRlRfTElOS19DTEFTU19G
T1JfSEVBREVSKFBBTCwgUEtQYXltZW50U3VtbWFyeUl0ZW0pCiBTT0ZUX0xJTktfQ0xBU1NfRk9S
X0hFQURFUihQQUwsIFBLU2hpcHBpbmdNZXRob2QpCiAKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFM
TE1FTlRTKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1BheW1lbnRJbnN0YWxs
bWVudENvbmZpZ3VyYXRpb24pCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBT
T0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudEF1dGhvcml6YXRpb25Db250
cm9sbGVyKQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NL
aXRTb2Z0TGluay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L1Bhc3NLaXRTb2Z0TGluay5tbQkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUv
UEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDEw
ICszMiwzMiBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVX
T1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQQUxfRVhQT1JUKQotI2Vs
c2UKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUxfV0lUSF9FWFBPUlQoUEFM
LCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24sIFBBTF9FWFBPUlQpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQs
IFBLUGF5bWVudFNldHVwQ29udHJvbGxlciwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0
dXBGZWF0dXJlLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9O
QUxfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cFJlcXVlc3QsIFBBTF9F
WFBPUlQpCisKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfT1BUSU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24sIFBBTF9FWFBPUlQpCisjZW5kaWYKKworI2Vsc2UgLy8g
UExBVEZPUk0oTUFDKQorCiBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoUEFMLCBQYXNzS2l0LCBQQUxfRVhQT1JUKQorCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiwg
UEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
UGFzc0tpdCwgUEtQYXltZW50U2V0dXBDb250cm9sbGVyLCBQQUxfRVhQT1JUKQorU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1
cEZlYXR1cmUsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwUmVxdWVzdCwgUEFMX0VYUE9SVCkKK1NP
RlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXlt
ZW50U2V0dXBWaWV3Q29udHJvbGxlciwgUEFMX0VYUE9SVCkKKworI2lmIEhBVkUoUEFTU0tJVF9J
TlNUQUxMTUVOVFMpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IFBhc3NLaXQsIFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkK
ICNlbmRpZgogCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCiBTT0ZUX0xJTktfQ0xBU1NfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdCwgUEFMX0VYUE9SVCkK
IFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXNzTGlicmFyeSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50LCBQQUxfRVhQT1JUKQpJbmRleDogU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAkocmV2aXNpb24gMjU5
OTIyKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NywxMSArNDcsMjggQEAgV1RGX0VYVEVSTl9DX0VORAogI2ltcG9y
dCA8UGFzc0tpdC9QS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5o
PgogI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRNZXRob2QuaD4KICNpbXBvcnQgPFBhc3NLaXQv
UEtQYXltZW50UmVxdWVzdF9Qcml2YXRlLmg+CisjaW1wb3J0IDxQYXNzS2l0L1BLUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbl9XZWJLaXQuaD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0
dXBDb250cm9sbGVyLmg+CisjaW1wb3J0IDxQYXNzS2l0L1BLUGF5bWVudFNldHVwUmVxdWVzdC5o
PgogI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50UmVxdWVzdFN0YXR1c19Qcml2YXRlLmg+
CiAjaW1wb3J0IDxQYXNzS2l0Q29yZS9QS1BheW1lbnRSZXF1ZXN0X1dlYktpdC5oPgogCisjaWYg
SEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyNpbXBvcnQgPFBhc3NLaXRDb3JlL1BLUGF5bWVu
dF9Qcml2YXRlLmg+CisjaW1wb3J0IDxQYXNzS2l0Q29yZS9QS1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPFBhc3NLaXRDb3JlL1BLUGF5bWVudE1ldGhvZF9Qcml2
YXRlLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxQYXNz
S2l0L1BLUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyX1ByaXZhdGUuaD4KKyNpbXBvcnQg
PFBhc3NLaXQvUEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlci5oPgorI2VuZGlmCisKKyNpZiBI
QVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRfSURFTlRJRklFUlMpICYmIFBMQVRGT1JNKE1BQykKK0Bp
bnRlcmZhY2UgUEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIChXZWJLaXRTUEkpCitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgbnVsbGFibGUpIE5TU3RyaW5nICppbnN0YWxsbWVu
dE1lcmNoYW50SWRlbnRpZmllcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJs
ZSkgTlNTdHJpbmcgKnJlZmVycmVySWRlbnRpZmllcjsKK0BlbmQKICNlbmRpZgogCiAjZWxzZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAwLDYgKzE5MDAsNyBAQAog
CQk1QzJCMUFFQzIyMzk3RUJDMDBCOTFDRjcgLyogUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNzhEMEIxQzI1
NDIyQzAwMjQ1NDQ2IC8qIFJlc291cmNlUmVzcG9uc2VDb2NvYS5tbSAqLzsgfTsKIAkJNUM0MzA0
QjExOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDMwNEFFMTkxQUM5MDgwMDBFMkJD
MCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggKi87IH07CiAJCTVDNDMwNEI2MTkxQUVGNDYwMDBF
MkJDMCAvKiBKU0VYVFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDMwNEI0MTkxQUVGNDYwMDBFMkJDMCAvKiBKU0VYVFNo
YWRlclRleHR1cmVMT0QuaCAqLzsgfTsKKwkJNUM1M0RDRTEyNDQ2NURGQzAwQTkzMTI0IC8qIEFw
cGxlUGF5U2V0dXBGZWF0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzUzRENDRjI0NDY0NDk5MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1
cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
QzVEMjM4NTIyN0EwNjUyMDAwQjlCREEgLyogQ3VzdG9tSGVhZGVyRmllbGRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzVEMjM4MzIyN0EwNjNBMDAw
QjlCREEgLyogQ3VzdG9tSGVhZGVyRmllbGRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUM3Qzg4RDgxRDBGMUY0QTAwOUQyRjZEIC8qIFNvY2tl
dFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzdDODhENzFEMEYxRjJCMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzlDMkRCNTIyNDFBNjdC
MDA5OTZCMEIgLyogQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5QzJEQjMyMjQxQTY3MzAwOTk2QjBCIC8qIENv
bnRlbnRSdWxlTGlzdFJlc3VsdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtOTA5MSw2ICs5MDkyLDE4IEBACiAJCTVDNTM4MUIxMUQ4N0Q0NTcw
MEUyRUJFNiAvKiBVUkxTZWFyY2hQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVVJMU2VhcmNoUGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
NTM4MUIzMUQ4N0UwODEwMEUyRUJFNiAvKiBKU1VSTFNlYXJjaFBhcmFtcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VSTFNlYXJjaFBhcmFtcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNTM4MUI0MUQ4N0UwODEwMEUyRUJFNiAvKiBKU1VS
TFNlYXJjaFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1VSTFNl
YXJjaFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDNjI0NDY0
NDk3MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
QXBwbGVQYXlTZXR1cC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0M5
MjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcGxlUGF5U2V0dXBGZWF0dXJlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDQTI0NDY0NDk4MDBBOTMxMjQgLyogQXBw
bGVQYXlTZXR1cEZlYXR1cmUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFwcGxlUGF5U2V0
dXBGZWF0dXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQ0IyNDQ2
NDQ5ODAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXBwbGVQYXlTZXR1cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
QzUzRENDQzI0NDY0NDk5MDBBOTMxMjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlv
bi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
NTNEQ0NFMjQ0NjQ0OTkwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQ0YyNDQ2
NDQ5OTAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5U2V0dXBGZWF0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTVDNTNEQ0QwMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheUluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBs
ZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzUzRENEMjI0NDY0NDlBMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBsZVBheVNldHVwLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDRDQyNDQ2NDQ5QjAwQTkzMTI0IC8qIEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUM1M0RDRDUyNDQ2NDQ5QjAwQTkzMTI0IC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBsZVBheUluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0Q2MjQ0NjQ0
OUMwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDNUQyMzgzMjI3QTA2M0EwMDBCOUJEQSAvKiBDdXN0b21IZWFkZXJGaWVs
ZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tSGVhZGVyRmllbGRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNUQyMzg2MjI3QTA3N0MwMDBCOUJE
QSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ3VzdG9tSGVhZGVyRmllbGRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUM2NjhFNjQxRTdDNkMzNTAwRDMyQjNCIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzI3MSw2ICsxNzI4
NCw4IEBACiAJCQkJQTFCQjg1OUIyMTU5QUVBMTAwNjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JDb2Rl
LmlkbCAqLywKIAkJCQlBMUJCODVBMDIxNTlBRjU3MDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNv
bnRhY3RGaWVsZC5oICovLAogCQkJCUExQkI4NUEyMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBh
eUVycm9yQ29udGFjdEZpZWxkLmlkbCAqLywKKwkJCQk1QzUzRENEMDI0NDY0NDlBMDBBOTMxMjQg
LyogQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk1QzUzRENENTI0
NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaWRsICov
LAogCQkJCTdDNjU3OUUyMUUwMDgyNzAwMEUzQTI3QSAvKiBBcHBsZVBheUxpbmVJdGVtLmggKi8s
CiAJCQkJN0M2NTc5RTQxRTAwODJDODAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaWRsICov
LAogCQkJCUExREY1QUE4MUY4MDcwRDQwMDU4QTQ3NyAvKiBBcHBsZVBheU1lcmNoYW50Q2FwYWJp
bGl0eS5jcHAgKi8sCkBAIC0xNzMwOCw2ICsxNzMyMywxNCBAQAogCQkJCUExOTU2RjFGMjMzMUE4
QzcwMDU3RTlEMiAvKiBBcHBsZVBheVNlc3Npb25FcnJvci5pZGwgKi8sCiAJCQkJMUE1OEU4NjMx
RDE5RDRERjAwQzBFQTczIC8qIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmNwcCAqLywK
IAkJCQkxQTU4RTg2NDFEMTlENERGMDBDMEVBNzMgLyogQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3QuaCAqLywKKwkJCQk1QzUzRENEMjI0NDY0NDlBMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1
cC5jcHAgKi8sCisJCQkJNUM1M0RDQ0IyNDQ2NDQ5ODAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXAu
aCAqLywKKwkJCQk1QzUzRENDNjI0NDY0NDk3MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5pZGwg
Ki8sCisJCQkJNUM1M0RDQ0YyNDQ2NDQ5OTAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJl
LmggKi8sCisJCQkJNUM1M0RDQ0EyNDQ2NDQ5ODAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0
dXJlLmlkbCAqLywKKwkJCQk1QzUzRENDOTI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1
cEZlYXR1cmUubW0gKi8sCisJCQkJNUM1M0RDRDQyNDQ2NDQ5QjAwQTkzMTI0IC8qIEFwcGxlUGF5
U2V0dXBGZWF0dXJlVHlwZS5oICovLAorCQkJCTVDNTNEQ0Q2MjQ0NjQ0OUMwMEE5MzEyNCAvKiBB
cHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaWRsICovLAogCQkJCTFBOEE2NDQ3MUQxOUZDRkIwMEQw
RTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwICovLAogCQkJ
CTFBOEE2NDQ4MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVj
dGVkRXZlbnQuaCAqLywKIAkJCQkxQThBNjQ0OTFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlT
aGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmlkbCAqLywKQEAgLTE3MzMxLDYgKzE3MzU0LDgg
QEAKIAkJCQlBMTA0RUM1MzIyMEEwMTc0MDBDQkY2N0EgLyogUGF5bWVudENvb3JkaW5hdG9yQ2xp
ZW50LmNwcCAqLywKIAkJCQkxQTU4RTg2MjFEMTlEM0JGMDBDMEVBNzMgLyogUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmggKi8sCiAJCQkJN0NGOTMwRTYxRTAxRjlBRDAwQkFGRkJFIC8qIFBheW1l
bnRIZWFkZXJzLmggKi8sCisJCQkJNUM1M0RDQ0UyNDQ2NDQ5OTAwQTkzMTI0IC8qIFBheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk1QzUzRENDQzI0NDY0NDk5MDBBOTMx
MjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5tbSAqLywKIAkJCQkxQUU5NkE4
NzFEMUEwQ0VCMDBCODY3NjggLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oICovLAogCQkJCTFB
OEE2NDM5MUQxOUZDNTMwMEQwRTAwRiAvKiBQYXltZW50TWV0aG9kLmggKi8sCiAJCQkJQTFERkQ1
MjQyMzM0NTkzQTAwNDJGQ0RCIC8qIFBheW1lbnRNZXRob2RVcGRhdGUuaCAqLywKQEAgLTI5Mzk3
LDYgKzI5NDIyLDcgQEAKIAkJCQkxQThBNjQ1OTFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlT
ZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTk1NkYyMDIzMzFBOEM3MDA1N0U5RDIgLyog
QXBwbGVQYXlTZXNzaW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNThFODY1MUQxOUQ0
RUIwMEMwRUE3MyAvKiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNUM1M0RDRTEyNDQ2NURGQzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThBNjQ1QzFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQ
YXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTJD
NTlGMjIwMzVGQ0Q2MDAxMjIzNkIgLyogQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTdDNjU3OUU4MUUwMDgzMTYwMEUzQTI3QSAvKiBBcHBsZVBheVNo
aXBwaW5nTWV0aG9kLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1dlYkNvcmVBZGRpdGlvbnMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvV2ViQ29yZUFkZGl0aW9ucy5tbQkocmV2aXNpb24gMjU5OTIyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViQ29yZUFkZGl0aW9ucy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjQsNyArMjQsMyBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgot
Ci0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9X
ZWJDb3JlQWRkaXRpb25zLm1tPgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYwMDgx
KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1
NSBAQAorMjAyMC0wNC0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIE1vdmUgQXBwbGVQYXkgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0
byBXZWJDb3JlIGFuZCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRT
ZXR1cEZlYXR1cmVzLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0
dXJlczo6cGxhdGZvcm1GZWF0dXJlcyBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5
L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQYXltZW50U2V0dXBGZWF0dXJlczo6UGF5bWVudFNldHVwRmVhdHVyZXMpOgorICAgICAgICAo
V2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJlczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXM6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlBh
eW1lbnRTZXR1cEZlYXR1cmVzOjpvcGVyYXRvciBWZWN0b3I8UmVmPFdlYkNvcmU6OkFwcGxlUGF5
U2V0dXBGZWF0dXJlPj4gY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9QYXltZW50
U2V0dXBDb25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uOjpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAq
IFNoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6dG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3Bw
OgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZmluaXNoQ29u
c3RydWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5
L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW06IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0QWRkaXRpb25zOjp0b1BsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXRB
ZGRpdGlvbnM6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAoV2ViS2l0QWRkaXRpb25zOjpQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0QWRkaXRpb25zOjpQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojpm
aW5pc2hDcmVhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpnZXRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OmJlZ2luQXBwbGVQYXlTZXR1cCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjplbmRBcHBsZVBheVNldHVwKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQmVnaW5BcHBsZVBheVNldHVw
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3Jt
RW5kQXBwbGVQYXlTZXR1cCk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpmaW5pc2hEZWNvZGluZyk6CisgICAgICAg
IChJUEM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPjo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5
bWVudENvb3JkaW5hdG9yOjpnZXRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yOjpiZWdpbkFwcGxlUGF5U2V0dXApOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OmVuZEFwcGxlUGF5U2V0dXApOgorICAgICAgICAqIFdl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmg6CisKIDIwMjAtMDQtMTQg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgSW5qZWN0ZWRC
dW5kbGUgcGFyYW1ldGVycyBvZnRlbiBuZWVkIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGNhbGxl
ZCBiZWZvcmUgdW5hcmNoaXZpbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJl
dmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkod29y
a2luZyBjb3B5KQpAQCAtMjUwLDggKzI1MCw2IEBAIFNDUklQVFMgPSBcCiBGUkFNRVdPUktfRkxB
R1MgPSAkKHNoZWxsIGVjaG8gJChCVUlMVF9QUk9EVUNUU19ESVIpICQoRlJBTUVXT1JLX1NFQVJD
SF9QQVRIUykgJChTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUykgfCBwZXJsIC1lICdwcmlu
dCAiLUYgIiAuIGpvaW4oIiAtRiAiLCBzcGxpdCgiICIsIDw+KSk7JykKIEhFQURFUl9GTEFHUyA9
ICQoc2hlbGwgZWNobyAkKEJVSUxUX1BST0RVQ1RTX0RJUikgJChIRUFERVJfU0VBUkNIX1BBVEhT
KSAkKFNZU1RFTV9IRUFERVJfU0VBUkNIX1BBVEhTKSB8IHBlcmwgLWUgJ3ByaW50ICItSSIgLiBq
b2luKCIgLUkiLCBzcGxpdCgiICIsIDw+KSk7JykKIAotLWluY2x1ZGUgV2ViS2l0RGVyaXZlZFNv
dXJjZXNBZGRpdGlvbnMubWFrZQotCiAuUEhPTlkgOiBhbGwKIAogYWxsIDogXApJbmRleDogU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDggQEAgU2hhcmVkL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZQogU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90
ZU9iamVjdC5tbQogU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCiAKK1No
YXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tCitTaGFyZWQvQXBw
bGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQogU2hhcmVkL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LmNwcAogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KIFNoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlJT1MubW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQkod29ya2luZyBjb3B5KQpAQCAtNjQxLDYgKzY0MSw3IEBAIGRl
ZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdD
b250ZXh0SUQnOiBbJyJMYXllckhvc3RpbmdDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6
OkxheWVySG9zdGluZ01vZGUnOiBbJyJMYXllclRyZWVDb250ZXh0LmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6OlBhZ2VTdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5oIiddLAorICAgICAgICAnV2ViS2l0
OjpQYXltZW50U2V0dXBGZWF0dXJlcyc6IFsnIkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMu
aCInXSwKICAgICAgICAgJ1dlYktpdDo6UmVzcGVjdFNlbGVjdGlvbkFuY2hvcic6IFsnIkdlc3R1
cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQnOiBbJyJXZWJF
dmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50JzogWyciV2ViRXZl
bnQuaCInXSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5
bWVudFNldHVwRmVhdHVyZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCitPQkpDX0NMQVNTIFBL
UGF5bWVudFNldHVwRmVhdHVyZTsKKworI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2RlcjsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBheW1lbnRTZXR1cEZlYXR1cmVzIHsK
K3B1YmxpYzoKKyAgICBQYXltZW50U2V0dXBGZWF0dXJlcyhWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJik7CisgICAgUGF5bWVudFNldHVwRmVhdHVyZXMoUmV0
YWluUHRyPE5TQXJyYXk+JiYgPSBudWxscHRyKTsKKworICAgIHZvaWQgZW5jb2RlKElQQzo6RW5j
b2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBPcHRpb25hbDxQYXltZW50U2V0dXBGZWF0dXJlcz4g
ZGVjb2RlKElQQzo6RGVjb2RlciYpOworCisgICAgTlNBcnJheSAqcGxhdGZvcm1GZWF0dXJlcygp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1GZWF0dXJlcy5nZXQoKTsgfQorICAgIG9wZXJhdG9y
IFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PigpIGNvbnN0OworCitw
cml2YXRlOgorICAgIFJldGFpblB0cjxOU0FycmF5PiBtX3BsYXRmb3JtRmVhdHVyZXM7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9QQVlNRU5U
X1NFVFVQKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXlt
ZW50U2V0dXBGZWF0dXJlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVy
ZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oIgor
CisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKKyNpbXBvcnQgIkFyZ3VtZW50Q29k
ZXJzQ29jb2EuaCIKKyNpbXBvcnQgIkRlY29kZXIuaCIKKyNpbXBvcnQgIkVuY29kZXIuaCIKKyNp
bXBvcnQgPFdlYkNvcmUvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaD4KKworI2ltcG9ydCA8cGFsL2Nv
Y29hL1Bhc3NLaXRTb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIE5T
QXJyYXk8UEtQYXltZW50U2V0dXBGZWF0dXJlICo+ICp0b1BsYXRmb3JtRmVhdHVyZXMoVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYgZmVhdHVyZXMpCit7Cisg
ICAgTlNNdXRhYmxlQXJyYXkgKnBsYXRmb3JtRmVhdHVyZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXlXaXRoQ2FwYWNpdHk6ZmVhdHVyZXMuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIGZlYXR1cmUg
OiBmZWF0dXJlcykgeworICAgICAgICBpZiAoZmVhdHVyZSkKKyAgICAgICAgICAgIFtwbGF0Zm9y
bUZlYXR1cmVzIGFkZE9iamVjdDpmZWF0dXJlLT5wbGF0Zm9ybUZlYXR1cmUoKV07CisgICAgfQor
ICAgIHJldHVybiBwbGF0Zm9ybUZlYXR1cmVzOworfQorCitQYXltZW50U2V0dXBGZWF0dXJlczo6
UGF5bWVudFNldHVwRmVhdHVyZXMoVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpBcHBsZVBheVNldHVw
RmVhdHVyZT4+JiYgZmVhdHVyZXMpCisgICAgOiBtX3BsYXRmb3JtRmVhdHVyZXMgeyB0b1BsYXRm
b3JtRmVhdHVyZXMoV1RGTW92ZShmZWF0dXJlcykpIH0KK3sKK30KKworUGF5bWVudFNldHVwRmVh
dHVyZXM6OlBheW1lbnRTZXR1cEZlYXR1cmVzKFJldGFpblB0cjxOU0FycmF5PiYmIHBsYXRmb3Jt
RmVhdHVyZXMpCisgICAgOiBtX3BsYXRmb3JtRmVhdHVyZXMgeyBXVEZNb3ZlKHBsYXRmb3JtRmVh
dHVyZXMpIH0KK3sKK30KKwordm9pZCBQYXltZW50U2V0dXBGZWF0dXJlczo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcGxhdGZvcm1GZWF0
dXJlczsKK30KKworT3B0aW9uYWw8UGF5bWVudFNldHVwRmVhdHVyZXM+IFBheW1lbnRTZXR1cEZl
YXR1cmVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0YXRpYyBOU0Fy
cmF5ICphbGxvd2VkQ2xhc3NlczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgYXV0byBhbGxvd2Vk
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjJdKTsK
KyAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OltOU0FycmF5IGNsYXNzXV07CisgICAgICAgIGlm
IChhdXRvIHBrUGF5bWVudFNldHVwRmVhdHVyZUNsYXNzID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1
cEZlYXR1cmVDbGFzcygpKQorICAgICAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVu
dFNldHVwRmVhdHVyZUNsYXNzXTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxsb3dlZCBj
b3B5XTsKKyAgICB9KTsKKworICAgIGF1dG8gcGxhdGZvcm1GZWF0dXJlcyA9IElQQzo6ZGVjb2Rl
PE5TQXJyYXk8UEtQYXltZW50U2V0dXBGZWF0dXJlICo+PihkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nl
cyk7CisgICAgaWYgKCFwbGF0Zm9ybUZlYXR1cmVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgcmV0dXJuIFBheW1lbnRTZXR1cEZlYXR1cmVzIHsgV1RGTW92ZSgqcGxhdGZv
cm1GZWF0dXJlcykgfTsKK30KKworUGF5bWVudFNldHVwRmVhdHVyZXM6Om9wZXJhdG9yIFZlY3Rv
cjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PigpIGNvbnN0Cit7CisgICAgVmVj
dG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+IGZlYXR1cmVzOworICAgIGZl
YXR1cmVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW21fcGxhdGZvcm1GZWF0dXJlcyBjb3VudF0p
OworICAgIGZvciAoUEtQYXltZW50U2V0dXBGZWF0dXJlICpwbGF0Zm9ybUZlYXR1cmUgaW4gbV9w
bGF0Zm9ybUZlYXR1cmVzLmdldCgpKQorICAgICAgICBmZWF0dXJlcy51bmNoZWNrZWRBcHBlbmQo
V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU6OmNyZWF0ZShwbGF0Zm9ybUZlYXR1cmUpKTsK
KyAgICByZXR1cm4gZmVhdHVyZXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkK
KworI2luY2x1ZGUgIkFwcGxlUGF5U2V0dXAuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBQS1BheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb247CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVu
Y29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYXltZW50U2V0dXBDb25m
aWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKCkgPSBk
ZWZhdWx0OworICAgIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6QXBw
bGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYpOworCisgICAgdm9pZCBlbmNv
ZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKworICAgIFBLUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbiAqcGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9jb25maWd1cmF0aW9uLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbihSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
PiYmKTsKKworICAgIFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+IG1fY29u
ZmlndXJhdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFW
RShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBD
b25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uLmgiCisKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKworI2ltcG9ydCAiQXJn
dW1lbnRDb2RlcnNDb2NvYS5oIgorI2ltcG9ydCAiRGVjb2Rlci5oIgorI2ltcG9ydCAiRW5jb2Rl
ci5oIgorI2ltcG9ydCA8d3RmL1VSTC5oPgorCisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNv
ZnRMaW5rLmg+CisKK0BpbnRlcmZhY2UgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIChXZWJL
aXQpCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqc2ln
bmVkRmllbGRzOworQGVuZAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFJldGFpblB0
cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+IHRvUGxhdGZvcm1Db25maWd1cmF0aW9uKGNv
bnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvcmVDb25maWd1cmF0
aW9uLCBjb25zdCBVUkwmIHVybCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFQQUw6
OmdldFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkNsYXNzKCkpCisgICAgICAgIHJldHVybiBu
aWw7CisjZW5kaWYKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25JbnN0YW5jZSgpIGluaXRdKTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRNZXJjaGFudElkZW50aWZpZXI6Y29yZUNvbmZpZ3VyYXRpb24ubWVyY2hh
bnRJZGVudGlmaWVyXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRPcmlnaW5hdGluZ1VSTDp1cmxd
OworICAgIFtjb25maWd1cmF0aW9uIHNldFJlZmVycmVySWRlbnRpZmllcjpjb3JlQ29uZmlndXJh
dGlvbi5yZWZlcnJlcklkZW50aWZpZXJdOworQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19C
RUdJTgorICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25hdHVyZTpjb3JlQ29uZmlndXJhdGlvbi5z
aWduYXR1cmVdOworQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKKworICAgIGlmIChb
Y29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFNpZ25lZEZpZWxk
czopXSkgeworICAgICAgICBOU011dGFibGVBcnJheSAqc2lnbmVkRmllbGRzID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNvcmVDb25maWd1cmF0aW9uLnNpZ25lZEZpZWxkcy5z
aXplKCldOworICAgICAgICBmb3IgKGF1dG8mIHNpZ25lZEZpZWxkIDogY29yZUNvbmZpZ3VyYXRp
b24uc2lnbmVkRmllbGRzKQorICAgICAgICAgICAgW3NpZ25lZEZpZWxkcyBhZGRPYmplY3Q6c2ln
bmVkRmllbGRdOworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRTaWduZWRGaWVsZHM6c2lnbmVk
RmllbGRzXTsKKyAgICB9CisKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK30KKworUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihjb25zdCBXZWJD
b3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBV
UkwmIHVybCkKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IHRvUGxhdGZvcm1Db25maWd1cmF0aW9u
KGNvbmZpZ3VyYXRpb24sIHVybCkgfQoreworfQorCitQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IFdURk1v
dmUoY29uZmlndXJhdGlvbikgfQoreworfQorCit2b2lkIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b246OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCBtX2NvbmZpZ3VyYXRpb247Cit9CisKK09wdGlvbmFsPFBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24+IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIpCit7CisgICAgc3RhdGljIE5TQXJyYXkgKmFsbG93ZWRDbGFzc2VzOworICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10g
eworICAgICAgICBhdXRvIGFsbG93ZWQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQ2FwYWNpdHk6MV0pOworICAgICAgICBpZiAoYXV0byBwa1BheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb25DbGFzcyA9IFBBTDo6Z2V0UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xh
c3MoKSkKKyAgICAgICAgICAgIFthbGxvd2VkIGFkZE9iamVjdDpwa1BheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb25DbGFzc107CisgICAgICAgIGFsbG93ZWRDbGFzc2VzID0gW2FsbG93ZWQgY29weV07
CisgICAgfSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBJUEM6OmRlY29kZTxQS1BheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24+KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsKKyAgICBpZiAo
IWNvbmZpZ3VyYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiB7IFdURk1vdmUoKmNvbmZpZ3VyYXRpb24pIH07
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdEFkZGl0aW9ucworCisjZW5kaWYgLy8gSEFWRShQ
QVNTS0lUX1BBWU1FTlRfU0VUVVApCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCShyZXZp
c2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDYgQEAgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OldlYlBheW1lbnRDbwogICAgICwgbV9jYW5NYWtlUGF5
bWVudHNRdWV1ZSB7IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNhbk1ha2VQ
YXltZW50cyIpIH0KIHsKICAgICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdl
UmVjZWl2ZXIoKnRoaXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7Ci0gICAgZmluaXNoQ29uc3RydWN0aW9uKCp0aGlz
KTsKIH0KIAogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgJKHJldmlzaW9uIDI1OTkyMikKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDEwIEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUFkZGl0aW9ucy5oPgorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorI2luY2x1
ZGUgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorT0JKQ19DTEFTUyBQS1BheW1lbnRTZXR1cFZpZXdDb250
cm9sbGVyOworT0JKQ19DTEFTUyBVSVZpZXdDb250cm9sbGVyOwogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBJUEMgewpAQCAtNjIsNiArNjQsOCBAQCBPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOwor
Y2xhc3MgUGF5bWVudFNldHVwRmVhdHVyZXM7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNz
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CkBAIC0xMjQsNiArMTI4LDE0IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBhYm9ydFBheW1lbnRTZXNzaW9uKCk7CiAgICAgdm9pZCBjYW5jZWxQYXltZW50
U2Vzc2lvbigpOwogCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisgICAgdm9pZCBn
ZXRTZXR1cEZlYXR1cmVzKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFBheW1lbnRTZXR1cEZlYXR1cmVzJik+JiYpOworICAgIHZv
aWQgYmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mLCBj
b25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworICAgIHZvaWQgZW5kQXBwbGVQYXlTZXR1cCgpOworICAgIHZvaWQgcGxhdGZvcm1CZWdp
bkFwcGxlUGF5U2V0dXAoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYsIGNvbnN0IFBh
eW1lbnRTZXR1cEZlYXR1cmVzJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Cisg
ICAgdm9pZCBwbGF0Zm9ybUVuZEFwcGxlUGF5U2V0dXAoKTsKKyNlbmRpZgorCiAgICAgYm9vbCBj
YW5CZWdpbigpIGNvbnN0OwogICAgIGJvb2wgY2FuQ2FuY2VsKCkgY29uc3Q7CiAgICAgYm9vbCBj
YW5Db21wbGV0ZVBheW1lbnQoKSBjb25zdDsKQEAgLTE5MSwxMiArMjAzLDggQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IG1fc2hlZXRXaW5kb3c7CiAgICAgUmV0YWluUHRyPE5T
T2JqZWN0PiBtX3NoZWV0V2luZG93V2lsbENsb3NlT2JzZXJ2ZXI7CiAjZW5kaWYKLSAgICAKLSNp
ZiBkZWZpbmVkKFdFQlBBWU1FTlRDT09SRElOQVRPUlBST1hZX0FERElUSU9OUykKLVdFQlBBWU1F
TlRDT09SRElOQVRPUlBST1hZX0FERElUSU9OUwotI3VuZGVmIFdFQlBBWU1FTlRDT09SRElOQVRP
UlBST1hZX0FERElUSU9OUwotI2Vsc2UKLSAgICB2b2lkIGZpbmlzaENvbnN0cnVjdGlvbihXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSYpIHsgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXZWFr
T2JqQ1B0cjxQS1BheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyPiBtX3BheW1lbnRTZXR1cFZpZXdD
b250cm9sbGVyOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5IE4KICAgICBDb21wbGV0ZVBheW1lbnRTZXNzaW9uKE9wdGlvbmFsPFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiByZXN1bHQpCiAgICAgQWJvcnRQYXltZW50U2Vzc2lv
bigpCiAgICAgQ2FuY2VsUGF5bWVudFNlc3Npb24oKQorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5U
X1NFVFVQKQorICAgIEdldFNldHVwRmVhdHVyZXMoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb24pIC0+IChXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzIGZl
YXR1cmVzKSBBc3luYworICAgIEJlZ2luQXBwbGVQYXlTZXR1cChXZWJLaXQ6OlBheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJl
cyBmZWF0dXJlcykgLT4gKGJvb2wgcmVzdWx0KSBBc3luYworICAgIEVuZEFwcGxlUGF5U2V0dXAo
KQorI2VuZGlmCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvY29jb2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9u
Lm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29h
L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uLmgiCisKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKworI2lt
cG9ydCAiQXJndW1lbnRDb2RlcnNDb2NvYS5oIgorI2ltcG9ydCAiRGVjb2Rlci5oIgorI2ltcG9y
dCAiRW5jb2Rlci5oIgorI2ltcG9ydCAiUGFzc0tpdFNvZnRMaW5rQWRkaXRpb25zLmgiCisjaW1w
b3J0IDx3dGYvVVJMLmg+CisKK0BpbnRlcmZhY2UgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
IChXZWJLaXQpCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheTxOU1N0cmluZyAq
PiAqc2lnbmVkRmllbGRzOworQGVuZAorCituYW1lc3BhY2UgV2ViS2l0QWRkaXRpb25zIHsKKwor
c3RhdGljIFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+IHRvUGxhdGZvcm1D
b25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24m
IGNvcmVDb25maWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCkKK3sKKyNpZiBQTEFURk9STShNQUMp
CisgICAgaWYgKCFQQUw6OmdldFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkNsYXNzKCkpCisg
ICAgICAgIHJldHVybiBuaWw7CisjZW5kaWYKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25JbnN0YW5jZSgpIGlu
aXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRNZXJjaGFudElkZW50aWZpZXI6Y29yZUNvbmZp
Z3VyYXRpb24ubWVyY2hhbnRJZGVudGlmaWVyXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRPcmln
aW5hdGluZ1VSTDp1cmxdOworICAgIFtjb25maWd1cmF0aW9uIHNldFJlZmVycmVySWRlbnRpZmll
cjpjb3JlQ29uZmlndXJhdGlvbi5yZWZlcnJlcklkZW50aWZpZXJdOworQUxMT1dfTkVXX0FQSV9X
SVRIT1VUX0dVQVJEU19CRUdJTgorICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25hdHVyZTpjb3Jl
Q29uZmlndXJhdGlvbi5zaWduYXR1cmVdOworQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19F
TkQKKworICAgIGlmIChbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHNldFNpZ25lZEZpZWxkczopXSkgeworICAgICAgICBOU011dGFibGVBcnJheSAqc2lnbmVkRmll
bGRzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNvcmVDb25maWd1cmF0aW9u
LnNpZ25lZEZpZWxkcy5zaXplKCldOworICAgICAgICBmb3IgKGF1dG8mIHNpZ25lZEZpZWxkIDog
Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmVkRmllbGRzKQorICAgICAgICAgICAgW3NpZ25lZEZpZWxk
cyBhZGRPYmplY3Q6c2lnbmVkRmllbGRdOworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRTaWdu
ZWRGaWVsZHM6c2lnbmVkRmllbGRzXTsKKyAgICB9CisKKyAgICByZXR1cm4gY29uZmlndXJhdGlv
bjsKK30KKworUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uLCBjb25zdCBVUkwmIHVybCkKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IHRvUGxhdGZv
cm1Db25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIHVybCkgfQoreworfQorCitQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1Bh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmln
dXJhdGlvbiB7IFdURk1vdmUoY29uZmlndXJhdGlvbikgfQoreworfQorCit2b2lkIFBheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCBtX2NvbmZpZ3VyYXRpb247Cit9CisKK09wdGlvbmFsPFBheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb24+IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RhdGljIE5TQXJyYXkgKmFsbG93ZWRDbGFzc2Vz
OworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10geworICAgICAgICBhdXRvIGFsbG93ZWQgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6MV0pOworICAgICAgICBpZiAoYXV0byBw
a1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcyA9IFBBTDo6Z2V0UEtQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgICAgIFthbGxvd2VkIGFkZE9iamVjdDpwa1Bh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzc107CisgICAgICAgIGFsbG93ZWRDbGFzc2VzID0g
W2FsbG93ZWQgY29weV07CisgICAgfSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBJUEM6
OmRlY29kZTxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+KGRlY29kZXIsIGFsbG93ZWRDbGFz
c2VzKTsKKyAgICBpZiAoIWNvbmZpZ3VyYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiB7IFdURk1vdmUoKmNv
bmZpZ3VyYXRpb24pIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdEFkZGl0aW9ucworCisj
ZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDE2ICszNywxNyBAQAogI2ltcG9ydCA8d3Rm
L1VSTC5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKLSNpbXBvcnQgPHBh
bC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
Ci0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YUFkZGl0aW9ucy5tbT4KLSNlbHNlCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXN0YXRpYyB2b2lkIGZp
bmlzaENyZWF0aW5nKFBLUGF5bWVudFJlcXVlc3QgKiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3QmKSB7IH0KLX0KKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9T
RVRVUCkKKyNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCisjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRT
ZXR1cEZlYXR1cmVzLmgiCisjaW1wb3J0ICJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCisj
aW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5TWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2VuZGlmCiAKKyNp
bXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKwogLy8gRklYTUU6IFdlIGRvbid0
IHN1cHBvcnQgYW55IHBsYXRmb3JtcyB3aXRob3V0IC1zZXRUaHVtYm5haWxVUkxzOiwgc28gdGhp
cyBjYW4gYmUgcmVtb3ZlZC4KIEBpbnRlcmZhY2UgUEtQYXltZW50UmVxdWVzdCAoKQogQHByb3Bl
cnR5IChub25hdG9taWMsIHN0cm9uZykgTlNVUkwgKnRodW1ibmFpbFVSTDsKQEAgLTYxLDYgKzYy
LDE5IEBAIEBpbnRlcmZhY2UgUEtQYXltZW50UmVxdWVzdCAoU3RhZ2luZykKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK3N0YXRpYyB2b2lkIGZpbmlzaENyZWF0aW5nKFBLUGF5bWVudFJlcXVlc3Qg
KnBsYXRmb3JtUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3QmIHJlcXVlc3QpCit7CisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICBp
ZiAoUEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gcmVx
dWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oKS5wbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSkg
eworICAgICAgICBwbGF0Zm9ybVJlcXVlc3QuaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uID0gY29u
ZmlndXJhdGlvbjsKKyAgICAgICAgcGxhdGZvcm1SZXF1ZXN0LnJlcXVlc3RUeXBlID0gUEtQYXlt
ZW50UmVxdWVzdFR5cGVJbnN0YWxsbWVudDsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShwbGF0Zm9ybVJlcXVlc3QpOworICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKKyNlbmRpZgor
fQorCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXlt
ZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICNpZiBQTEFURk9STShNQUMpCkBAIC0yNzksNiArMjkzLDEwOSBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9yCiAgICAgbV9hdXRob3JpemF0
aW9uUHJlc2VudGVyLT5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24odXBkYXRlKTsKIH0K
IAorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCit2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpnZXRTZXR1cEZlYXR1cmVzKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24mIGNvbmZpZ3VyYXRpb24sIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6R2V0U2V0dXBGZWF0dXJlczo6QXN5bmNSZXBseSYmIHJlcGx5KQoreworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBpZiAoIVBBTDo6Z2V0UEtQYXltZW50U2V0dXBDb250cm9sbGVyQ2xhc3MoKSkg
eworICAgICAgICByZXBseSh7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisK
KyAgICBhdXRvIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoW3JlcGx5ID0gV1RGTW92ZShyZXBs
eSldKE5TQXJyYXk8UEtQYXltZW50U2V0dXBGZWF0dXJlICo+ICpmZWF0dXJlcykgbXV0YWJsZSB7
CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5
KSwgZmVhdHVyZXMgPSByZXRhaW5QdHIoZmVhdHVyZXMpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgcmVwbHkoUGF5bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKGZlYXR1cmVzKSB9KTsKKyAg
ICAgICAgfSk7CisgICAgfSk7CisKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4K
KyAgICBbUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbnRyb2xsZXJDbGFzcygpIHBheW1lbnRTZXR1
cEZlYXR1cmVzRm9yQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLnBsYXRmb3JtQ29uZmlndXJh
dGlvbigpIGNvbXBsZXRpb246Y29tcGxldGlvbi5nZXQoKV07CitBTExPV19ORVdfQVBJX1dJVEhP
VVRfR1VBUkRTX0VORAorfQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpiZWdp
bkFwcGxlUGF5U2V0dXAoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbiwgY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMmIGZlYXR1cmVzLCBNZXNzYWdlczo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkJlZ2luQXBwbGVQYXlTZXR1cDo6QXN5bmNSZXBseSYm
IHJlcGx5KQoreworICAgIHBsYXRmb3JtQmVnaW5BcHBsZVBheVNldHVwKGNvbmZpZ3VyYXRpb24s
IGZlYXR1cmVzLCBXVEZNb3ZlKHJlcGx5KSk7Cit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OmVuZEFwcGxlUGF5U2V0dXAoKQoreworICAgIHBsYXRmb3JtRW5kQXBwbGVQYXlT
ZXR1cCgpOworfQorCisjaWYgUExBVEZPUk0oTUFDKQorCit2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYg
ZmVhdHVyZXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6QmVnaW5BcHBs
ZVBheVNldHVwOjpBc3luY1JlcGx5JiYgcmVwbHkpCit7CisgICAgaWYgKCFQQUw6OmdldFBLUGF5
bWVudFNldHVwUmVxdWVzdENsYXNzKCkpIHsKKyAgICAgICAgcmVwbHkoZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXF1ZXN0ID0gYWRvcHROUyhbUEFMOjphbGxv
Y1BLUGF5bWVudFNldHVwUmVxdWVzdEluc3RhbmNlKCkgaW5pdF0pOworICAgIFtyZXF1ZXN0IHNl
dENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5wbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKV07Cisg
ICAgW3JlcXVlc3Qgc2V0UGF5bWVudFNldHVwRmVhdHVyZXM6ZmVhdHVyZXMucGxhdGZvcm1GZWF0
dXJlcygpXTsKKworICAgIGF1dG8gY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihbcmVwbHkgPSBX
VEZNb3ZlKHJlcGx5KV0oQk9PTCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtyZXBseSA9IFdURk1vdmUocmVwbHkpLCBzdWNjZXNzXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgcmVwbHkoc3VjY2Vzcyk7CisgICAgICAgIH0pOworICAgIH0pOwor
CisgICAgYXV0byBwYXltZW50U2V0dXBDb250cm9sbGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudFNldHVwQ29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0pOworCitBTExPV19ORVdfQVBJ
X1dJVEhPVVRfR1VBUkRTX0JFR0lOCisgICAgW3BheW1lbnRTZXR1cENvbnRyb2xsZXIgcHJlc2Vu
dFBheW1lbnRTZXR1cFJlcXVlc3Q6cmVxdWVzdC5nZXQoKSBjb21wbGV0aW9uOmNvbXBsZXRpb24u
Z2V0KCldOworQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKK30KKwordm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1FbmRBcHBsZVBheVNldHVwKCkKK3sKK30K
KworI2Vsc2UgLy8gUExBVEZPUk0oTUFDKQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwbGF0Zm9ybUJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYgZmVhdHVy
ZXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6QmVnaW5BcHBsZVBheVNl
dHVwOjpBc3luY1JlcGx5JiYgcmVwbHkpCit7CisgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2Vu
dGluZ1ZpZXdDb250cm9sbGVyID0gbV9wYXltZW50Q29vcmRpbmF0b3JQcm94eS5tX2NsaWVudC5w
YXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIobV9wYXltZW50Q29vcmRp
bmF0b3JQcm94eSk7CisgICAgaWYgKCFwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIpIHsKKyAgICAg
ICAgcmVwbHkoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXF1
ZXN0ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFNldHVwUmVxdWVzdEluc3RhbmNlKCkg
aW5pdF0pOworICAgIFtyZXF1ZXN0IHNldENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5wbGF0
Zm9ybUNvbmZpZ3VyYXRpb24oKV07CisgICAgW3JlcXVlc3Qgc2V0UGF5bWVudFNldHVwRmVhdHVy
ZXM6ZmVhdHVyZXMucGxhdGZvcm1GZWF0dXJlcygpXTsKKworICAgIGF1dG8gcGF5bWVudFNldHVw
Vmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBWaWV3Q29u
dHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U2V0dXBSZXF1ZXN0OnJlcXVlc3QuZ2V0
KCldKTsKKyAgICBpZiAoIXBheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyKSB7CisgICAgICAgIHJl
cGx5KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29tcGxldGlv
biA9IG1ha2VCbG9ja1B0cihbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSgp
IG11dGFibGUgeworICAgICAgICAgICAgcmVwbHkodHJ1ZSk7CisgICAgICAgIH0pOworICAgIH0p
OworCisgICAgZW5kQXBwbGVQYXlTZXR1cCgpOworICAgIFtwcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXIgcHJlc2VudFZpZXdDb250cm9sbGVyOnBheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyLmdldCgp
IGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOmNvbXBsZXRpb24uZ2V0KCldOworICAgIG1fcGF5bWVu
dFNldHVwVmlld0NvbnRyb2xsZXIgPSBwYXltZW50U2V0dXBWaWV3Q29udHJvbGxlci5nZXQoKTsK
K30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1FbmRBcHBsZVBh
eVNldHVwKCkKK3sKKyAgICBbbV9wYXltZW50U2V0dXBWaWV3Q29udHJvbGxlciBkaXNtaXNzVmll
d0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOworICAgIG1fcGF5bWVudFNl
dHVwVmlld0NvbnRyb2xsZXIgPSBuaWw7Cit9CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisK
KyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0JKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxOSArNDEsNTUg
QEAKICNpbXBvcnQgPFVJS2l0L1VJRm9udC5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hQWRkaXRpb25zLm1tPgotI2VsaWYgRU5BQkxFKEFQUExFX1BBWSkKIG5hbWVzcGFjZSBJ
UEMgewotc3RhdGljIGJvb2wgZmluaXNoRGVjb2RpbmcoRGVjb2RlciYsIFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikgeyByZXR1cm4gdHJ1ZTsgfQotc3RhdGljIHZvaWQg
ZmluaXNoRW5jb2RpbmcoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0JikgeyB9Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworI2lmIEVOQUJM
RShBUFBMRV9QQVkpCisKK3N0YXRpYyBib29sIGZpbmlzaERlY29kaW5nKERlY29kZXImIGRlY29k
ZXIsIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0KQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIE9wdGlvbmFsPFdlYkNvcmU6
OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+IGluc3RhbGxtZW50Q29uZmlndXJhdGlv
bjsKKyAgICBkZWNvZGVyID4+IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKKyAgICBpZiAoIWlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVx
dWVzdC5zZXRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oV1RGTW92ZSgqaW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uKSk7CisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShk
ZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CisgICAgcmV0dXJuIHRydWU7Cisj
ZW5kaWYKIH0KKworc3RhdGljIHZvaWQgZmluaXNoRW5jb2RpbmcoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QpCit7
CisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNUQUxMTUVOVFMpCisgICAgZW5jb2RlciA8PCByZXF1
ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbigpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
ZW5jb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwogI2VuZGlmCit9CiAKLW5hbWVz
cGFjZSBJUEMgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisjaWYgSEFWRShQQVNTS0lUX0lO
U1RBTExNRU5UUykKIAotI2lmIEVOQUJMRShBUFBMRV9QQVkpCit2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKQoreworICAgIGVuY29kZXIgPDwgY29uZmlndXJhdGlvbi5wbGF0Zm9y
bUNvbmZpZ3VyYXRpb24oKTsKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1l
bnRDb25maWd1cmF0aW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gSVBDOjpkZWNvZGU8UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uPihkZWNvZGVyLCBQQUw6OmdldFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbkNs
YXNzKCkpOworICAgIGlmICghY29uZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIHJldHVybiB7IFdURk1vdmUoKmNvbmZpZ3VyYXRpb24pIH07Cit9CisKKyNl
bmRpZiAvLyBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6UGF5bWVudD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3Jl
OjpQYXltZW50JiBwYXltZW50KQogewpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00
MDAzLDYgKzQwMDMsMTAgQEAKIAkJNUM0NkMwQUQyMUI3MTk4QzAwQkM1OTkxIC8qIFdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDNDZDMEFFMjFCNzFBRTIwMEJDNTk5MSAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUM0QjlEOEEyMTBBOEM0NjAwOEYxNEQxIC8qIFVuZG9PclJlZG8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5kb09yUmVkby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzUzRENERDI0NDY1QkY5MDBBOTMxMjQgLyogQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTVDNTNEQ0RFMjQ0NjVCRjkwMEE5MzEyNCAvKiBQYXltZW50U2V0dXBDb25m
aWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDREYy
NDQ2NUJGOTAwQTkzMTI0IC8qIEFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENFMDI0NDY1QkY5MDBBOTMxMjQg
LyogUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDNUNFQzM4MjIwOTU4MzIwMEQ2QkJCMCAvKiBEYWVtb25FbnRy
eVBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhZW1vbkVudHJ5UG9p
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1Q0VDMzkyMjA5NTgzMjAwRDZC
QkIwIC8qIERhZW1vbkVudHJ5UG9pbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBEYWVtb25FbnRyeVBvaW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzVEMjM4NzIyN0ExODkxMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50
ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQ3VzdG9tSGVhZGVy
RmllbGRzSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDksNiAr
NjIxMywxMCBAQAogCQkJCTFBQjFGNzc3MUQxQjMwQTkwMDdDOUJEMSAvKiBjb2NvYSAqLywKIAkJ
CQkxQUIxRjc3QTFEMUIzMEE5MDA3QzlCRDEgLyogaW9zICovLAogCQkJCTFBQjFGNzdDMUQxQjMw
QTkwMDdDOUJEMSAvKiBtYWMgKi8sCisJCQkJNUM1M0RDREYyNDQ2NUJGOTAwQTkzMTI0IC8qIEFw
cGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaCAqLywKKwkJCQk1QzUzRENERDI0NDY1QkY5MDBB
OTMxMjQgLyogQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbSAqLywKKwkJCQk1QzUzRENE
RTI0NDY1QkY5MDBBOTMxMjQgLyogUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oICovLAorCQkJ
CTVDNTNEQ0UwMjQ0NjVCRjkwMEE5MzEyNCAvKiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1t
ICovLAogCQkJCTFBQjFGNzg4MUQxQjMzNTUwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS5jcHAgKi8sCiAJCQkJMUFCMUY3ODkxRDFCMzM1NTAwN0M5QkQxIC8qIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LmggKi8sCiAJCQkJMUFCMUY3OEExRDFCMzM1NTAwN0M5QkQxIC8q
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluICovLApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvci5jcHAJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCisjaW5jbHVkZSAiQXBw
bGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
KyNpbmNsdWRlICJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBh
eW1lbnRDb29yZGluYXRvck1lc3NhZ2VzLmgiCkBAIC0yMjAsNiArMjIyLDM2IEBAIGJvb2wgV2Vi
UGF5bWVudENvb3JkaW5hdG9yOjpyZW1vdGVVSUVuYWIKIH0KICNlbmRpZgogCit2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvcjo6Z2V0U2V0dXBGZWF0dXJlcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNldHVwOjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgSEFWRShQQVNTS0lUX1BBWU1F
TlRfU0VUVVApCisgICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkdldFNldHVwRmVhdHVyZXMoUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbiB7IGNvbmZpZ3VyYXRpb24sIHVybCB9KSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29uZmlndXJhdGlvbik7CisgICAgVU5V
U0VEX1BBUkFNKHVybCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyNlbmRpZgorfQor
Cit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6YmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFdl
YkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0
IFVSTCYgdXJsLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4m
JiBmZWF0dXJlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKyAgICBtX3dlYlBhZ2Uu
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
QmVnaW5BcHBsZVBheVNldHVwKFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24geyBjb25maWd1cmF0
aW9uLCB1cmwgfSwgUGF5bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKGZlYXR1cmVzKSB9KSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29u
ZmlndXJhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKHVybCk7CisgICAgVU5VU0VEX1BBUkFNKGZl
YXR1cmVzKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmVuZEFwcGxlUGF5U2V0dXAoKQoreworI2lmIEhBVkUo
UEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6RW5kQXBwbGVQYXlTZXR1cCgpKTsKKyNlbmRpZgorfQor
CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAkocmV2aXNpb24gMjU5OTIyKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSwxMCBAQCBwcml2YXRlOgogCiAgICAgU3Ry
aW5nIHVzZXJBZ2VudFNjcmlwdHNCbG9ja2VkRXJyb3JNZXNzYWdlKCkgY29uc3QgZmluYWw7CiAK
KyAgICB2b2lkIGdldFNldHVwRmVhdHVyZXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6
Q29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYpPiYmKSBmaW5hbDsKKyAgICB2
b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25m
aWd1cmF0aW9uJiwgY29uc3QgVVJMJiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpBcHBsZVBheVNl
dHVwRmVhdHVyZT4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwor
ICAgIHZvaWQgZW5kQXBwbGVQYXlTZXR1cCgpIGZpbmFsOworCiAgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKIApAQCAtMTEyLDEwICsxMTYsNiBAQCBwcml2YXRlOgog
ICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKIAogICAgIE9wdGlvbmFsPEF2YWlsYWJsZVBheW1lbnRO
ZXR3b3Jrc1NldD4gbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3M7Ci0KLSNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBheW1lbnRDb29yZGlu
YXRvckFkZGl0aW9ucy5oPgotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396477</attachid>
            <date>2020-04-14 16:47:03 -0700</date>
            <delta_ts>2020-04-14 17:03:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210521-20200414164702.patch</filename>
            <type>text/plain</type>
            <size>124435</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAyMC0wNC0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgQXBw
bGVQYXkgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0byBXZWJDb3JlIGFuZCBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDUyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgT25seSA0IG1pbm9yIG1v
ZGlmaWNhdGlvbnMgd2VyZSBuZWNlc3NhcnksIGFzIGZvbGxvd3M6CisKKyAgICAgICAgMS4gUGF5
bWVudFNldHVwRmVhdHVyZXMncyBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1
cmUgKj4+IHdhcyBjaGFuZ2VkIHRvIFJldGFpblB0cjxOU0FycmF5PiB0byB3b3JrIHdpdGggQysr
LgorICAgICAgICAyLiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucyBtZXNzYWdl
cyB3ZXJlIG1vdmVkIHRvIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LCByZW1vdmluZyB0aGUg
bmVlZCBmb3IKKyAgICAgICAgICAgdGhlIGV4dHJhIG1lc3NhZ2UgcmVjZWl2ZXIsIHRoZSBPcHRp
b25hbDxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucz4sIGFuZCB0aGUgZmluaXNo
Q29uc3RydWN0aW9uLgorICAgICAgICAzLiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCdzIG1h
Y3JvcyB0aGF0IGNvbGxpZGVkIHdpdGggb3RoZXIgbWFjcm9zIHdlcmUgcmVuYW1lZC4gIFRoaXMg
d2FzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIGRpZmZlcmVudCBzb3VyY2UgdW5pZmljYXRpb24uCisg
ICAgICAgIDQuIFBheW1lbnRTZXR1cEZlYXR1cmVzLmggd2FzIHJlbmFtZWQgdG8gQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5oIHRvIGJlIGFibGUgdG8gYnVpbGQgd2l0aCBQYXltZW50U2V0
dXBGZWF0dXJlcy5oIGluIHRoZSBTREsuCisKKyAgICAgICAgVGhlIHJlc3QgaXMganVzdCBjb3B5
IGFuZCBwYXN0ZS4KKworICAgICAgICBUaGVyZSBpc24ndCBhIGdvb2Qgd2F5IHRvIGxhbmQgdGhp
cyB3aXRob3V0IGJyZWFraW5nIHRoZSBidWlsZCB3aXRob3V0IHJlbW92aW5nIHRoZSBmaWxlcyBm
cm9tIFdlYktpdEFkZGl0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBzbyBJJ2xsIGRv
IHRoZSB0d28gYXQgdGhlIHNhbWUgdGltZSBsYXRlIGF0IG5pZ2h0IHRvIG5vdCBjYXVzZSBkaXNy
dXB0aW9uLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJl
c1N1cHBvcnRlZE5ldHdvcmtzKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5pc2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6aW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpzZXRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkRGlzY2xvc2VGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVw
OjpnZXRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OmJl
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsZVBheVNldHVwOjpzdXNwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2V0dXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGw6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpwbGF0Zm9ybUZlYXR1cmUg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0
dXJlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpzdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6c3VwcG9y
dHNJbnN0YWxsbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZl
YXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGw6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpiZWdpbkFwcGxlUGF5U2V0dXAp
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjplbmRBcHBsZVBh
eVNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
RGVjaW1hbE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUZlYXR1cmVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOjpQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmg6CisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5p
c2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRN
ZXRob2RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaENvbnZlcnRpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRH
cm91cElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVu
dFNlc3Npb25FcnJvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEVycm9y
KToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVx
dWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpyZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
dFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlz
bWlzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0Q2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2F0Y2hkb2dUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bWVyRmlyZWQpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dl
YkNvcmVBZGRpdGlvbnMubW06CisKIDIwMjAtMDQtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQZXJzaXN0ZW50Q29kZXJzIHNob3VsZCB1
c2UgbW9kZXJuIGRlY29kaW5nIHN5bnRheApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgSlNfQklORElOR19JRExTID0g
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb2RlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlMaW5lSXRlbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnQuaWRsIFwKQEAgLTExOCw2ICsxMTksOSBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVz
dEJhc2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bkVycm9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXAuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kLmlkbCBcCkBA
IC0xMjU1LDggKzEyNTksNiBAQCB2cGF0aCAlLmluICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9T
RUFSCiBBRERJVElPTkFMX0VWRU5UX05BTUVTID0KIEFERElUSU9OQUxfRVZFTlRfVEFSR0VUX0ZB
Q1RPUlkgPQogCi0taW5jbHVkZSBXZWJDb3JlRGVyaXZlZFNvdXJjZXNBZGRpdGlvbnMubWFrZQot
CiBKU19CSU5ESU5HX0lETFMgKz0gJChBRERJVElPTkFMX0JJTkRJTkdfSURMUykKIAogYWxsIDog
JChBRERJVElPTkFMX0JJTkRJTkdfSURMUzolLmlkbD1KUyUuaCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTkzLDYgKzU5Myw4IEBAIFdITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlS
ZXF1ZXN0QmFzZS5jcHAKKyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCisg
ICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQogICAgIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwCkBAIC02MDAsNiArNjAyLDcgQEAgV0hM
U0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmNwcAorICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbi5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0
b3IubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcAogCkBAIC02MTgs
NiArNjIxLDcgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5RXJyb3IuY3BwCiAgICAgSlNBcHBsZVBheUVycm9yQ29kZS5jcHAKICAgICBKU0FwcGxl
UGF5RXJyb3JDb250YWN0RmllbGQuY3BwCisgICAgSlNBcHBsZVBheUluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5jcHAKICAgICBKU0FwcGxlUGF5TGluZUl0ZW0uY3BwCiAgICAgSlNBcHBsZVBheU1l
cmNoYW50Q2FwYWJpbGl0eS5jcHAKICAgICBKU0FwcGxlUGF5TW9kaWZpZXIuY3BwCkBAIC02MzUs
NiArNjM5LDkgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5UmVxdWVzdEJhc2UuY3BwCiAgICAgSlNBcHBsZVBheVNlc3Npb24uY3BwCiAgICAgSlNB
cHBsZVBheVNlc3Npb25FcnJvci5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXAuY3BwCisgICAgSlNB
cHBsZVBheVNldHVwRmVhdHVyZS5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5j
cHAKICAgICBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAKICAgICBK
U0FwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLmNwcAogICAgIEpTQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFM
TE1FTlRTKQorCisjaW5jbHVkZSAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVh
dHVyZVR5cGUgZmVhdHVyZVR5cGUgeyBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlQ2Fy
ZCB9OworICAgIFN0cmluZyBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhOworICAgIFN0cmluZyBvcGVu
VG9CdXlUaHJlc2hvbGRBbW91bnQ7CisgICAgU3RyaW5nIGJpbmRpbmdUb3RhbEFtb3VudDsKKyAg
ICBTdHJpbmcgY3VycmVuY3lDb2RlOworICAgIFN0cmluZyBtZXJjaGFudElkZW50aWZpZXI7Cisg
ICAgU3RyaW5nIHJlZmVycmVySWRlbnRpZmllcjsKKyAgICBib29sIGlzSW5TdG9yZVB1cmNoYXNl
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50
Q29uZmlndXJhdGlvbi5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1B
UFBMRV9QQVlfSU5TVEFMTE1FTlRTLAorXSBkaWN0aW9uYXJ5IEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgZmVhdHVyZVR5cGUg
PSAiYXBwbGVDYXJkIjsKKyAgICBET01TdHJpbmcgbWVyY2hhbmRpc2luZ0ltYWdlRGF0YTsKKyAg
ICBET01TdHJpbmcgb3BlblRvQnV5VGhyZXNob2xkQW1vdW50OworICAgIERPTVN0cmluZyBiaW5k
aW5nVG90YWxBbW91bnQ7CisgICAgRE9NU3RyaW5nIGN1cnJlbmN5Q29kZTsKKyAgICBET01TdHJp
bmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgIERPTVN0cmluZyByZWZlcnJlcklkZW50aWZpZXI7
CisgICAgYm9vbGVhbiBpc0luU3RvcmVQdXJjaGFzZTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmgJKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50Q29udGFjdC5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudE1ldGhvZC5oIgogCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBw
bGVQYXlQYXltZW50QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50IHsKQEAgLTQ2LDExICs0Miw3IEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnQgewogICAgIFRva2VuIHRva2VuOwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5
bWVudENvbnRhY3Q+IGJpbGxpbmdDb250YWN0OwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVu
dENvbnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsKLQotI2lmIGRlZmluZWQoQVBQTEVQQVlQQVlNRU5U
X0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBB
WU1FTlRfQURESVRJT05TCi0jZW5kaWYKKyAgICBTdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICByZXF1aXJlZCBBcHBsZVBheVBheW1lbnRUb2tl
biB0b2tlbjsKICAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IGJpbGxpbmdDb250YWN0OwogICAg
IEFwcGxlUGF5UGF5bWVudENvbnRhY3Qgc2hpcHBpbmdDb250YWN0OworICAgIFtDb25kaXRpb25h
bD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSBET01TdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiBbCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmgJKHJldmlzaW9uIDI1OTkyMikK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50UGFzcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50
TWV0aG9kQWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVt
IGNsYXNzIEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGU7CkBAIC00NiwxMSArNDIsNyBAQCBzdHJ1
Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kIHsgICAgCiAgICAgT3B0aW9uYWw8VHlwZT4gdHlwZTsK
ICAgICBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRQYXNzPiBwYXltZW50UGFzczsKICAgICBPcHRp
b25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKLQotI2lmIGRlZmlu
ZWQoQVBQTEVQQVlQQVlNRU5UTUVUSE9EX0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVE1FVEhP
RF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBBWU1FTlRNRVRIT0RfQURESVRJT05TCi0jZW5k
aWYKKyAgICBTdHJpbmcgYmluZFRva2VuOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlk
bAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRNZXRob2QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0ICszMyw1IEBA
CiAgICAgQXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZSB0eXBlOwogICAgIEFwcGxlUGF5UGF5bWVu
dFBhc3MgcGF5bWVudFBhc3M7CiAgICAgQXBwbGVQYXlQYXltZW50Q29udGFjdCBiaWxsaW5nQ29u
dGFjdDsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gRE9NU3RyaW5n
IGJpbmRUb2tlbjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSwxMiBAQAogCiAj
aW5jbHVkZSAiQXBwbGVQYXlMaW5lSXRlbS5oIgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRl
QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICBBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFs
OwogICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXM7Ci0KLSNpZiBkZWZp
bmVkKEFQUExFUEFZUEFZTUVOVE1FVEhPRFVQREFURV9BRERJVElPTlMpCi1BUFBMRVBBWVBBWU1F
TlRNRVRIT0RVUERBVEVfQURESVRJT05TCi0jdW5kZWYgQVBQTEVQQVlQQVlNRU5UTUVUSE9EVVBE
QVRFX0FERElUSU9OUwotI2VuZGlmCisgICAgU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlm
aWVyOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbAkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw0ICsyOCw1IEBACiBd
IGRpY3Rpb25hcnkgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICByZXF1aXJlZCBB
cHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsOwogICAgIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+
IG5ld0xpbmVJdGVtczsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10g
RE9NU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlmaWVyOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNl
LmNwcAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVJlcXVlc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI5
IEBACiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVJlcXVlc3RCYXNlQWRkaXRpb25z
LmNwcD4KLSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgdm9pZCBmaW5pc2hDb252
ZXJ0aW5nKEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQXBwbGVQYXlSZXF1ZXN0QmFz
ZSYpIHsgfQotc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1bnNpZ25lZCwg
Y29uc3QgQXBwbGVQYXlSZXF1ZXN0QmFzZSYpIHsgcmV0dXJuIHRydWU7IH0KLX0KKworc3RhdGlj
IHZvaWQgZmluaXNoQ29udmVydGluZyhBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVz
dWx0LCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9Q
QVlfSU5TVEFMTE1FTlRTKQorICAgIGlmIChyZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlv
bikKKyAgICAgICAgcmVzdWx0LnNldEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihXVEZNb3ZlKCpy
ZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAjZW5kaWYKK30KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1
bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIHJldHVybiB2ZXJzaW9uIDwg
OCB8fCAhcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTSh2ZXJzaW9uKTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CisgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKK30KIAogc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiBj
b252ZXJ0QW5kVmFsaWRhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCB2ZXJzaW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkTmV0d29ya3MsIGNvbnN0IFBheW1lbnRDb29y
ZGluYXRvciYgcGF5bWVudENvb3JkaW5hdG9yKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1
ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMTAgQEAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiQXBwbGVQYXlDb250YWN0RmllbGQuaCIKKyNpbmNsdWRl
ICJBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFwcGxlUGF5
TWVyY2hhbnRDYXBhYmlsaXR5LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50Q29udGFjdC5o
IgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlv
bnMvQXBwbGVQYXlSZXF1ZXN0QmFzZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC01NCw5ICs1MSw4IEBAIHN0cnVjdCBBcHBs
ZVBheVJlcXVlc3RCYXNlIHsKICAgICBTdHJpbmcgYXBwbGljYXRpb25EYXRhOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHN1cHBvcnRlZENvdW50cmllczsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlSRVFV
RVNUQkFTRV9BRERJVElPTlMpCi1BUFBMRVBBWVJFUVVFU1RCQVNFX0FERElUSU9OUwotI3VuZGVm
IEFQUExFUEFZUkVRVUVTVEJBU0VfQURESVRJT05TCisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNU
QUxMTUVOVFMpCisgICAgT3B0aW9uYWw8QXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNSArNjUsMTcgQEAKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBs
ZVBheVNlc3Npb25BZGRpdGlvbnMuY3BwPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0
YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUGF5bWVudE1ldGhvZFVwZGF0ZSYsIEFwcGxlUGF5
UGF5bWVudE1ldGhvZFVwZGF0ZSYmKSB7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBheW1lbnRNZXRob2RVcGRhdGUmIGNv
bnZlcnRlZFVwZGF0ZSwgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlJiYgdXBkYXRlKQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGNvbnZlcnRlZFVwZGF0ZS5z
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcih1cGRhdGUuaW5zdGFsbG1lbnRHcm91cElkZW50
aWZpZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udmVydGVkVXBkYXRlKTsKKyAgICBV
TlVTRURfUEFSQU0odXBkYXRlKTsKKyNlbmRpZgorfQogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXBwbGVQYXlTZXNzaW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
NCArMjgsMTEgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiUGF5bWVudENv
bnRhY3QuaCIKKyNpbmNsdWRlICJQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
LSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3RB
ZGRpdGlvbnMuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CkBAIC0xNDEsOSArMTM4LDkgQEAgcHVibGljOgog
ICAgIFJlcXVlc3RlciByZXF1ZXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQog
ICAgIHZvaWQgc2V0UmVxdWVzdGVyKFJlcXVlc3RlciByZXF1ZXN0ZXIpIHsgbV9yZXF1ZXN0ZXIg
PSByZXF1ZXN0ZXI7IH0KIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNTSU9OUEFZTUVOVFJFUVVF
U1RfUFVCTElDX0FERElUSU9OUykKLUFQUExFUEFZU0VTU0lPTlBBWU1FTlRSRVFVRVNUX1BVQkxJ
Q19BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVNFU1NJT05QQVlNRU5UUkVRVUVTVF9QVUJMSUNf
QURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICBjb25zdCBQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uJiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2luc3RhbGxtZW50Q29uZmlndXJhdGlvbjsgfQorICAgIHZvaWQgc2V0
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24m
JiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pIHsgbV9pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24g
PSBXVEZNb3ZlKGluc3RhbGxtZW50Q29uZmlndXJhdGlvbik7IH0KICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtMTcyLDkgKzE2OSw4IEBAIHByaXZhdGU6CiAKICAgICBSZXF1ZXN0ZXIgbV9yZXF1ZXN0
ZXIgeyBSZXF1ZXN0ZXI6OkFwcGxlUGF5SlMgfTsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNT
SU9OUEFZTUVOVFJFUVVFU1RfUFJJVkFURV9BRERJVElPTlMpCi1BUFBMRVBBWVNFU1NJT05QQVlN
RU5UUkVRVUVTVF9QUklWQVRFX0FERElUSU9OUwotI3VuZGVmIEFQUExFUEFZU0VTU0lPTlBBWU1F
TlRSRVFVRVNUX1BSSVZBVEVfQURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5U
UykKKyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIG1faW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBcHBsZVBheVNldHVwLmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQor
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiUGF5bWVudFNlc3Npb24uaCIKKyNpbmNsdWRlICJQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgYm9vbCBzaG91bGREaXNjbG9zZUZlYXR1cmVzKERvY3VtZW50JiBkb2N1bWVudCkKK3sK
KyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpOworICAgIGlmICghcGFnZSB8fCBwYWdl
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gZG9jdW1lbnQuc2V0dGluZ3MoKS5hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxs
b3dlZCgpOworfQorCit2b2lkIEFwcGxlUGF5U2V0dXA6OmdldFNldHVwRmVhdHVyZXMoRG9jdW1l
bnQmIGRvY3VtZW50LCBTZXR1cEZlYXR1cmVzUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgYXV0
byBjYW5DYWxsID0gUGF5bWVudFNlc3Npb246OmNhbkNyZWF0ZVNlc3Npb24oZG9jdW1lbnQpOwor
ICAgIGlmIChjYW5DYWxsLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2Uuc2V0dGxl
KGNhbkNhbGwucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkgewor
ICAgICAgICBwcm9taXNlLnNldHRsZShFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJlc29sdmUgd2l0aCBhbiBlbXB0eSBz
ZXF1ZW5jZSBvZiBmZWF0dXJlcyBpZiBBcHBsZSBQYXkgY2FwYWJpbGl0eSBkaXNjbG9zdXJlIGlz
IG5vdCBhbGxvd2VkLgorICAgIGlmICghc2hvdWxkRGlzY2xvc2VGZWF0dXJlcyhkb2N1bWVudCkp
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX3NldHVwRmVhdHVyZXNQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKworICAg
IHBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLmNsaWVudCgpLmdldFNldHVwRmVhdHVyZXMobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShWZWN0b3I8UmVmPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4mJiBzZXR1cEZlYXR1cmVzKSB7CisgICAgICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3NldHVwRmVhdHVyZXNQcm9taXNlLCBXVEY6
Om51bGxvcHQpLT5zZXR0bGUoV1RGTW92ZShzZXR1cEZlYXR1cmVzKSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgQXBwbGVQYXlTZXR1cDo6YmVnaW4oRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0b3I8UmVm
UHRyPEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcywgQmVnaW5Qcm9taXNlJiYgcHJv
bWlzZSkKK3sKKyAgICBhdXRvIGNhbkNhbGwgPSBQYXltZW50U2Vzc2lvbjo6Y2FuQ3JlYXRlU2Vz
c2lvbihkb2N1bWVudCk7CisgICAgaWYgKGNhbkNhbGwuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoY2FuQ2FsbC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yLCAiTXVzdCBjYWxsIEFwcGxlUGF5U2V0dXAuYmVnaW4gZnJvbSBhIHVz
ZXIgZ2VzdHVyZSBoYW5kbGVyLiIgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIHBy
b21pc2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fYmVnaW5Qcm9taXNlKSB7CisgICAgICAgIHByb21p
c2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9iZWdpblByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAg
IG1fcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7CisKKyAgICBw
YWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5iZWdpbkFwcGxlUGF5U2V0dXAobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgV1RGTW92ZShmZWF0dXJlcyksIFt0aGlzXShi
b29sIHJlc3VsdCkgeworICAgICAgICBpZiAobV9iZWdpblByb21pc2UpCisgICAgICAgICAgICBz
dGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUocmVzdWx0
KTsKKyAgICB9KTsKK30KKworQXBwbGVQYXlTZXR1cDo6QXBwbGVQYXlTZXR1cChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQoreworICAgIHN1c3BlbmRJZk5lZWRlZCgpOworfQorCit2b2lk
IEFwcGxlUGF5U2V0dXA6OnN0b3AoKQoreworICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UsIFdURjo6bnVs
bG9wdCktPnNldHRsZShFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworCisgICAgaWYgKG1fYmVn
aW5Qcm9taXNlKQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51
bGxvcHQpLT5zZXR0bGUoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKKworICAgIGlmIChhdXRv
IHBhZ2UgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucGFn
ZSgpKQorICAgICAgICBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5lbmRBcHBs
ZVBheVNldHVwKCk7CisKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgQXBwbGVQYXlTZXR1cDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIHN0
b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQ
UExFX1BBWV9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXR1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTZXR1cC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VU
VVApCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2ZURPTU9iamVjdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSlNET01Qcm9taXNlRGVmZXJyZWQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEFwcGxlUGF5U2V0dXBGZWF0dXJlOworY2xhc3MgRGVmZXJyZWRQcm9taXNlOworY2xhc3MgRG9j
dW1lbnQ7CisKK2NsYXNzIEFwcGxlUGF5U2V0dXAgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBw
dWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwPiB7CitwdWJsaWM6CisgICAgc3RydWN0IENv
bmZpZ3VyYXRpb24geworICAgICAgICBTdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgICAg
ICBTdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgc2lnbmF0dXJlOwor
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBzaWduZWRGaWVsZHM7CisgICAgfTsKKworICAgIHN0YXRp
YyBSZWY8QXBwbGVQYXlTZXR1cD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXBwbGVQYXlTZXR1cChjb250ZXh0LCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKSk7CisgICAgfQorCisgICAgdXNpbmcgU2V0dXBGZWF0dXJlc1Byb21pc2UgPSBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4+OworICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhEb2N1bWVudCYsIFNldHVwRmVhdHVyZXNQ
cm9taXNlJiYpOworCisgICAgdXNpbmcgQmVnaW5Qcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4+OworICAgIHZvaWQgYmVnaW4oRG9jdW1lbnQmLCBWZWN0b3I8UmVmUHRyPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4mJiwgQmVnaW5Qcm9taXNlJiYpOworCitwcml2YXRlOgorICAg
IEFwcGxlUGF5U2V0dXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENvbmZpZ3VyYXRpb24mJik7
CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkFwcGxlUGF5U2V0dXAiOyB9CisgICAgdm9p
ZCBzdG9wKCkgZmluYWw7CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZp
bmFsOworCisgICAgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgT3B0aW9uYWw8
U2V0dXBGZWF0dXJlc1Byb21pc2U+IG1fc2V0dXBGZWF0dXJlc1Byb21pc2U7CisgICAgT3B0aW9u
YWw8QmVnaW5Qcm9taXNlPiBtX2JlZ2luUHJvbWlzZTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2
aXR5PEFwcGxlUGF5U2V0dXA+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGwJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNldHVwLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKK10gZGljdGlvbmFyeSBBcHBsZVBh
eVNldHVwQ29uZmlndXJhdGlvbiB7CisgICAgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsK
KyAgICBET01TdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgIERPTVN0cmluZyBzaWduYXR1
cmU7CisgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBzaWduZWRGaWVsZHM7Cit9OworCitbCisgICAg
QWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKKyAgICBD
b25zdHJ1Y3RvcihBcHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSwKKyAg
ICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgRW5hYmxl
ZEJ5U2V0dGluZz1BcHBsZVBheSwKKyAgICBTZWN1cmVDb250ZXh0LAorXSBpbnRlcmZhY2UgQXBw
bGVQYXlTZXR1cCB7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNlPHNlcXVlbmNlPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4gZ2V0U2V0dXBGZWF0dXJlcygpOworICAgIFtDYWxsV2l0aD1E
b2N1bWVudF0gUHJvbWlzZTxib29sZWFuPiBiZWdpbihzZXF1ZW5jZTxBcHBsZVBheVNldHVwRmVh
dHVyZT4gc2V0dXBGZWF0dXJlcyk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1Mg
UEtQYXltZW50U2V0dXBGZWF0dXJlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xh
c3MgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIDogdWludDhfdDsKKworY2xhc3MgQXBwbGVQYXlT
ZXR1cEZlYXR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwRmVhdHVyZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+IGNyZWF0ZShQS1Bh
eW1lbnRTZXR1cEZlYXR1cmUgKmZlYXR1cmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBcHBsZVBheVNldHVwRmVhdHVyZShmZWF0dXJlKSk7CisgICAgfQorCisgICAgQXBw
bGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGUoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgU3Rh
dGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5zdXBwb3J0ZWQsCisgICAgICAgIFN1cHBvcnRlZCwK
KyAgICAgICAgU3VwcGxlbWVudGFyeVN1cHBvcnRlZCwKKyAgICAgICAgQ29tcGxldGVkLAorICAg
IH07CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKKworICAgIFBLUGF5bWVudFNldHVwRmVhdHVy
ZSAqcGxhdGZvcm1GZWF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlLmdldCgpOyB9CisK
KyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBib29sIHN1cHBvcnRzSW5z
dGFsbG1lbnRzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBBcHBsZVBheVNldHVwRmVhdHVyZShQS1BheW1lbnRTZXR1cEZlYXR1cmUgKik7
CisKKyAgICBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBGZWF0dXJlPiBtX2ZlYXR1cmU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1NF
VFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFs
PUFQUExFX1BBWV9TRVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVN0YXRlIHsKKyAg
ICAidW5zdXBwb3J0ZWQiLAorICAgICJzdXBwb3J0ZWQiLAorICAgICJzdXBwbGVtZW50YXJ5U3Vw
cG9ydGVkIiwKKyAgICAiY29tcGxldGVkIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPUFQUExF
X1BBWV9TRVRVUCwKKyAgICBFbmFibGVkQnlTZXR0aW5nPUFwcGxlUGF5LAorICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCisgICAgU2VjdXJlQ29udGV4dCwKK10gaW50ZXJmYWNlIEFwcGxl
UGF5U2V0dXBGZWF0dXJlIHsKKyAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1
dGUgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGU7CisgICAgW0NhY2hlZEF0dHJpYnV0ZV0g
cmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5U2V0dXBGZWF0dXJlU3RhdGUgc3RhdGU7CisgICAg
W0NhY2hlZEF0dHJpYnV0ZSwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNJbnN0YWxsbWVudHM7Cit9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXBGZWF0dXJlLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBcHBs
ZVBheVNldHVwRmVhdHVyZS5oIgorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworI2lt
cG9ydCAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW1wb3J0ICJQYXNzS2l0U1BJQWRk
aXRpb25zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlIEFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0eXBlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKFtt
X2ZlYXR1cmUgdHlwZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVR5cGVBcHBs
ZVBheToKKyAgICAgICAgcmV0dXJuIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZTo6QXBwbGVQYXk7
CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQYXlfWDoKKyAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIHJldHVybiBBcHBsZVBheVNldHVwRmVhdHVy
ZVR5cGU6OkFwcGxlQ2FyZDsKKyAgICB9Cit9CisKK0FwcGxlUGF5U2V0dXBGZWF0dXJlOjpTdGF0
ZSBBcHBsZVBheVNldHVwRmVhdHVyZTo6c3RhdGUoKSBjb25zdAoreworICAgIHN3aXRjaCAoW21f
ZmVhdHVyZSBzdGF0ZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlVW5z
dXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6VW5zdXBwb3J0ZWQ7CisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBvcnRlZDoKKyAgICAgICAgcmV0dXJuIFN0YXRl
OjpTdXBwb3J0ZWQ7CisgICAgY2FzZSBQS1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBsZW1l
bnRhcnlTdXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6U3VwcGxlbWVudGFyeVN1cHBv
cnRlZDsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlQ29tcGxldGVkOgorICAg
ICAgICByZXR1cm4gU3RhdGU6OkNvbXBsZXRlZDsKKyAgICB9Cit9CisKKyNpZiBFTkFCTEUoQVBQ
TEVfUEFZX0lOU1RBTExNRU5UUykKK2Jvb2wgQXBwbGVQYXlTZXR1cEZlYXR1cmU6OnN1cHBvcnRz
SW5zdGFsbG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fZmVhdHVyZSBzdXBwb3J0ZWRP
cHRpb25zXSAmIFBLUGF5bWVudFNldHVwRmVhdHVyZVN1cHBvcnRlZE9wdGlvbnNJbnN0YWxsbWVu
dHM7Cit9CisjZW5kaWYKKworQXBwbGVQYXlTZXR1cEZlYXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlKFBLUGF5bWVudFNldHVwRmVhdHVyZSAqZmVhdHVyZSkKKyAgICA6IG1fZmVhdHVyZSB7IGZl
YXR1cmUgfQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoQVBQTEVfUEFZX1NFVFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1
cmVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitlbnVtIGNsYXNzIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZSA6IHVpbnQ4X3Qg
eworICAgIEFwcGxlUGF5LAorICAgIEFwcGxlQ2FyZCwKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZVR5cGUuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9T
RVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgeworICAgICJhcHBsZVBheSIs
CisgICAgImFwcGxlQ2FyZCIKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oIgorI2luY2x1ZGUgIkFwcGxlUGF5U2V0dXAuaCIKKyNpbmNsdWRlICJBcHBsZVBheVNldHVw
RmVhdHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BheW1lbnRDb29yZGlu
YXRvckNsaWVudEFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRG9jdW1lbnQ7CkBAIC03MSwxMyArNzAsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhjb25zdCBBcHBsZVBheVNldHVw
OjpDb25maWd1cmF0aW9uJiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8UmVmPEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsgfQorICAgIHZpcnR1YWwgdm9pZCBiZWdpbkFwcGxlUGF5
U2V0dXAoY29uc3QgQXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYsIFZl
Y3RvcjxSZWZQdHI8QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBlbmRBcHBsZVBheVNldHVwKCkgeyB9CisKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIH5QYXltZW50Q29vcmRpbmF0b3JDbGllbnQoKSA9IGRlZmF1bHQ7Ci0K
LSNpZiBkZWZpbmVkKFBBWU1FTlRDT09SRElOQVRPUkNMSUVOVF9BRERJVElPTlMpCi1QQVlNRU5U
Q09PUkRJTkFUT1JDTElFTlRfQURESVRJT05TCi0jdW5kZWYgUEFZTUVOVENPT1JESU5BVE9SQ0xJ
RU5UX0FERElUSU9OUwotI2VuZGlmCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBIQVZFKFBB
U1NLSVRfSU5TVEFMTE1FTlRTKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpD
X0NMQVNTIFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdHJ1Y3QgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisKK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24geworcHVi
bGljOgorICAgIFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oKSA9IGRlZmF1bHQ7Cisg
ICAgUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihjb25zdCBBcHBsZVBheUluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbiYpOworICAgIFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24o
UmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4mJik7CisKKyAgICBQ
S1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKnBsYXRmb3JtQ29uZmlndXJhdGlvbigp
IGNvbnN0OworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxQS1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24u
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5tbQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgiCisKKyNp
ZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorCisjaW1wb3J0ICJBcHBsZVBheUluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbi5oIgorI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBNZXJnZSB3aXRoIHRvRGVjaW1h
bE51bWJlcigpIGluIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuCitzdGF0aWMgTlNE
ZWNpbWFsTnVtYmVyICp0b0RlY2ltYWxOdW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQpCit7Cisg
ICAgaWYgKCFhbW91bnQpCisgICAgICAgIHJldHVybiBbTlNEZWNpbWFsTnVtYmVyIHplcm9dOwor
ICAgIHJldHVybiBbTlNEZWNpbWFsTnVtYmVyIGRlY2ltYWxOdW1iZXJXaXRoU3RyaW5nOmFtb3Vu
dCBsb2NhbGU6QHsgTlNMb2NhbGVEZWNpbWFsU2VwYXJhdG9yIDogQCIuIiB9XTsKK30KKworc3Rh
dGljIFBLUGF5bWVudFNldHVwRmVhdHVyZVR5cGUgcGxhdGZvcm1GZWF0dXJlVHlwZShjb25zdCBB
cHBsZVBheVNldHVwRmVhdHVyZVR5cGUmIGZlYXR1cmVUeXBlKQoreworICAgIHN3aXRjaCAoZmVh
dHVyZVR5cGUpIHsKKyAgICBjYXNlIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZTo6QXBwbGVQYXk6
CisgICAgICAgIHJldHVybiBQS1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQYXk7CisgICAg
Y2FzZSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlQ2FyZDoKKyAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudFNl
dHVwRmVhdHVyZVR5cGVBcHBsZVBheV9YOworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKKyAgICB9Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8UEtQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uPiBjcmVhdGVQbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29uc3QgQXBw
bGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24mIGNvcmVDb25maWd1cmF0aW9uKQoreworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRJbnN0YWxs
bWVudENvbmZpZ3VyYXRpb25JbnN0YW5jZSgpIGluaXRdKTsKKworICAgIFtjb25maWd1cmF0aW9u
IHNldEZlYXR1cmU6cGxhdGZvcm1GZWF0dXJlVHlwZShjb3JlQ29uZmlndXJhdGlvbi5mZWF0dXJl
VHlwZSldOworCisgICAgW2NvbmZpZ3VyYXRpb24gc2V0QmluZGluZ1RvdGFsQW1vdW50OnRvRGVj
aW1hbE51bWJlcihjb3JlQ29uZmlndXJhdGlvbi5iaW5kaW5nVG90YWxBbW91bnQpXTsKKyAgICBb
Y29uZmlndXJhdGlvbiBzZXRDdXJyZW5jeUNvZGU6Y29yZUNvbmZpZ3VyYXRpb24uY3VycmVuY3lD
b2RlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRJblN0b3JlUHVyY2hhc2U6Y29yZUNvbmZpZ3Vy
YXRpb24uaXNJblN0b3JlUHVyY2hhc2VdOworICAgIFtjb25maWd1cmF0aW9uIHNldE9wZW5Ub0J1
eVRocmVzaG9sZEFtb3VudDp0b0RlY2ltYWxOdW1iZXIoY29yZUNvbmZpZ3VyYXRpb24ub3BlblRv
QnV5VGhyZXNob2xkQW1vdW50KV07CisKKyAgICBhdXRvIG1lcmNoYW5kaXNpbmdJbWFnZURhdGEg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6Y29y
ZUNvbmZpZ3VyYXRpb24ubWVyY2hhbmRpc2luZ0ltYWdlRGF0YSBvcHRpb25zOjBdKTsKKyAgICBb
Y29uZmlndXJhdGlvbiBzZXRNZXJjaGFuZGlzaW5nSW1hZ2VEYXRhOm1lcmNoYW5kaXNpbmdJbWFn
ZURhdGEuZ2V0KCldOworCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UX0lERU5USUZJRVJT
KQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVtjb25maWd1cmF0aW9uIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Ioc2V0SW5zdGFsbG1lbnRNZXJjaGFudElkZW50aWZpZXI6KV0gfHwg
IVtjb25maWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UmVmZXJyZXJJ
ZGVudGlmaWVyOildKQorICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKKyNlbmRpZgorICAg
IFtjb25maWd1cmF0aW9uIHNldEluc3RhbGxtZW50TWVyY2hhbnRJZGVudGlmaWVyOmNvcmVDb25m
aWd1cmF0aW9uLm1lcmNoYW50SWRlbnRpZmllcl07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UmVm
ZXJyZXJJZGVudGlmaWVyOmNvcmVDb25maWd1cmF0aW9uLnJlZmVycmVySWRlbnRpZmllcl07Cisj
ZW5kaWYKKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCitQYXltZW50SW5zdGFsbG1l
bnRDb25maWd1cmF0aW9uOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKGNvbnN0IEFw
cGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9j
b25maWd1cmF0aW9uIHsgY3JlYXRlUGxhdGZvcm1Db25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24p
IH0KK3sKK30KKworUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjo6UGF5bWVudEluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbihSZXRhaW5QdHI8UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1
cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2NvbmZpZ3VyYXRpb24geyBXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pIH0KK3sKK30KKworUEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uICpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOjpwbGF0Zm9ybUNvbmZpZ3VyYXRp
b24oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVO
VFMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXRob2RV
cGRhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRNZXRob2RVcGRhdGUuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qu
aCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9QYXltZW50TWV0aG9kVXBkYXRlQWRkaXRp
b25zLmg+Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhv
ZFVwZGF0ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsMTEgKzQ2LDEwIEBAIHB1Ymxp
YzoKICAgICBjb25zdCBUb3RhbEFuZExpbmVJdGVtcyYgdG90YWxBbmRMaW5lSXRlbXMoKSBjb25z
dDsKICAgICBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSAqcGxhdGZvcm1VcGRh
dGUoKSBjb25zdDsKIAotI2lmIGRlZmluZWQoUEFZTUVOVE1FVEhPRFVQREFURV9QVUJMSUNfQURE
SVRJT05TKQotUEFZTUVOVE1FVEhPRFVQREFURV9QVUJMSUNfQURESVRJT05TCi0jdW5kZWYgUEFZ
TUVOVE1FVEhPRFVQREFURV9QVUJMSUNfQURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RB
TExNRU5UUykKKyAgICB2b2lkIHNldEluc3RhbGxtZW50R3JvdXBJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYpOwogI2VuZGlmCi0gICAgCisKIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8VG90YWxBbmRM
aW5lSXRlbXM+IG1fdG90YWxBbmRMaW5lSXRlbXM7CiAgICAgUmV0YWluUHRyPFBLUGF5bWVudFJl
cXVlc3RQYXltZW50TWV0aG9kVXBkYXRlPiBtX3BsYXRmb3JtVXBkYXRlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2Eu
bW0JKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
Y29jb2EvUGF5bWVudENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNSArMzMsMTggQEAK
ICNpbXBvcnQgIlBheW1lbnRNZXRob2QuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUGFzc0tp
dFNQSS5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFk
ZGl0aW9ucy9QYXltZW50Q29jb2FBZGRpdGlvbnMubW0+Ci0jZWxzZQogbmFtZXNwYWNlIFdlYkNv
cmUgewotc3RhdGljIHZvaWQgZmluaXNoQ29udmVydGluZyhQS1BheW1lbnQgKiwgQXBwbGVQYXlQ
YXltZW50JikgeyB9Ci19Ci0jZW5kaWYKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIHZv
aWQgZmluaXNoQ29udmVydGluZyhQS1BheW1lbnQgKnBheW1lbnQsIEFwcGxlUGF5UGF5bWVudCYg
cmVzdWx0KQoreworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisgICAgaWYgKE5TU3Ry
aW5nICppbnN0YWxsbWVudEF1dGhvcml6YXRpb25Ub2tlbiA9IHBheW1lbnQuaW5zdGFsbG1lbnRB
dXRob3JpemF0aW9uVG9rZW4pCisgICAgICAgIHJlc3VsdC5pbnN0YWxsbWVudEF1dGhvcml6YXRp
b25Ub2tlbiA9IGluc3RhbGxtZW50QXV0aG9yaXphdGlvblRva2VuOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0ocGF5bWVudCk7CisgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7CisjZW5kaWYKK30K
IAogc3RhdGljIEFwcGxlUGF5UGF5bWVudDo6VG9rZW4gY29udmVydChQS1BheW1lbnRUb2tlbiAq
cGF5bWVudFRva2VuKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9j
b2NvYS9QYXltZW50TWV0aG9kQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2EubW0JKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1l
dGhvZENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNSArMzIsMTggQEAKICNpbXBvcnQg
IkFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGUuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUGFz
c0tpdFNQSS5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktp
dEFkZGl0aW9ucy9QYXltZW50TWV0aG9kQ29jb2FBZGRpdGlvbnMubW0+Ci0jZWxzZQogbmFtZXNw
YWNlIFdlYkNvcmUgewotc3RhdGljIHZvaWQgZmluaXNoQ29udmVydGluZyhQS1BheW1lbnRNZXRo
b2QgKiwgQXBwbGVQYXlQYXltZW50TWV0aG9kJikgeyB9Ci19Ci0jZW5kaWYKIAotbmFtZXNwYWNl
IFdlYkNvcmUgeworc3RhdGljIHZvaWQgZmluaXNoQ29udmVydGluZyhQS1BheW1lbnRNZXRob2Qg
KnBheW1lbnRNZXRob2QsIEFwcGxlUGF5UGF5bWVudE1ldGhvZCYgcmVzdWx0KQoreworI2lmIEhB
VkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisgICAgaWYgKE5TU3RyaW5nICpiaW5kVG9rZW4gPSBw
YXltZW50TWV0aG9kLmJpbmRUb2tlbikKKyAgICAgICAgcmVzdWx0LmJpbmRUb2tlbiA9IGJpbmRU
b2tlbjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBheW1lbnRNZXRob2QpOworICAgIFVOVVNF
RF9QQVJBTShyZXN1bHQpOworI2VuZGlmCit9CiAKIHN0YXRpYyBBcHBsZVBheVBheW1lbnRQYXNz
OjpBY3RpdmF0aW9uU3RhdGUgY29udmVydChQS1BheW1lbnRQYXNzQWN0aXZhdGlvblN0YXRlIHBh
eW1lbnRQYXNzQWN0aXZhdGlvblN0YXRlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBk
YXRlQ29jb2EubW0JKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01OSw2ICs1OSwxMyBAQCBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSAq
UGF5CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1VcGRhdGUuZ2V0KCk7CiB9CiAKKyNpZiBIQVZFKFBB
U1NLSVRfSU5TVEFMTE1FTlRTKQordm9pZCBQYXltZW50TWV0aG9kVXBkYXRlOjpzZXRJbnN0YWxs
bWVudEdyb3VwSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGluc3RhbGxtZW50R3JvdXBJZGVudGlm
aWVyKQoreworICAgIFttX3BsYXRmb3JtVXBkYXRlIHNldEluc3RhbGxtZW50R3JvdXBJZGVudGlm
aWVyOmluc3RhbGxtZW50R3JvdXBJZGVudGlmaWVyXTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50U2Vzc2lvbkVycm9yQ29jb2EubW0JKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNSArMzEsMjcgQEAKICNpbXBvcnQgIkFwcGxlUGF5U2Vz
c2lvbkVycm9yLmgiCiAjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BheW1l
bnRTZXNzaW9uRXJyb3JDb2NvYUFkZGl0aW9ucy5tbT4KLSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1zdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlTZXNzaW9uRXJyb3I+IGFkZGl0aW9uYWxFcnJv
cihOU0Vycm9yICopIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQotfQotI2VuZGlmCiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKK3N0YXRpYyBPcHRpb25hbDxBcHBsZVBheVNlc3Npb25FcnJvcj4gYWRk
aXRpb25hbEVycm9yKE5TRXJyb3IgKmVycm9yKQoreworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxM
TUVOVFMpCisgICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBQS1BheW1lbnRFcnJvckJpbmRUb2tl
blVzZXJJbmZvS2V5IGFuZAorICAgIC8vIFBLUGF5bWVudEF1dGhvcml6YXRpb25GZWF0dXJlQXBw
bGljYXRpb25FcnJvciB3aGVuIHRoZXkncmUgYXZhaWxhYmxlIGluIGFuIFNESy4KKyAgICBzdGF0
aWMgTlNTdHJpbmcgKiBjb25zdCBiaW5kVG9rZW5LZXkgPSBAIlBLUGF5bWVudEVycm9yQmluZFRv
a2VuIjsKKyAgICBzdGF0aWMgY29uc3RleHByIE5TSW50ZWdlciBwa1BheW1lbnRBdXRob3JpemF0
aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3IgPSAtMjAxNjsKKworICAgIGlmIChlcnJvci5jb2Rl
ICE9IHBrUGF5bWVudEF1dGhvcml6YXRpb25GZWF0dXJlQXBwbGljYXRpb25FcnJvcikKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGlkIGJpbmRUb2tlblZhbHVlID0gZXJyb3Iu
dXNlckluZm9bYmluZFRva2VuS2V5XTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKCFiaW5kVG9rZW5WYWx1ZSB8fCBbYmluZFRva2VuVmFsdWUgaXNLaW5kT2ZD
bGFzczpOU1N0cmluZy5jbGFzc10pOworICAgIHJldHVybiBBcHBsZVBheVNlc3Npb25FcnJvciB7
ICJmZWF0dXJlQXBwbGljYXRpb25FcnJvciJfcywgeyB7ICJiaW5kVG9rZW4iX3MsIChOU1N0cmlu
ZyAqKWJpbmRUb2tlblZhbHVlIH0gfSB9OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXJyb3Ip
OworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYKK30KIAogUGF5bWVudFNlc3Npb25F
cnJvcjo6UGF5bWVudFNlc3Npb25FcnJvcihSZXRhaW5QdHI8TlNFcnJvcj4mJiBlcnJvcikKICAg
ICA6IG1fcGxhdGZvcm1FcnJvciB7IFdURk1vdmUoZXJyb3IpIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlSZXF1ZXN0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1
ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlSZXF1ZXN0LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNCArMjgsNSBAQAogXSBkaWN0aW9uYXJ5IEFwcGxlUGF5UmVx
dWVzdCA6IEFwcGxlUGF5UmVxdWVzdEJhc2UgewogICAgIHJlcXVpcmVkIHVuc2lnbmVkIGxvbmcg
dmVyc2lvbjsKICAgICByZXF1aXJlZCBET01TdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAg
IFtDb25kaXRpb25hbD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSBBcHBsZVBheUluc3RhbGxtZW50
Q29uZmlndXJhdGlvbiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MCwxMSArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBj
b25zdCBTZWNvbmRzIHRhc2tEZWxheUludGVydmFsIHsgMTAwX21zIH07CiAKLSN1bmRlZiBMT0dJ
REVOVElGSUVSCi0jZGVmaW5lIExPR0lERU5USUZJRVIgX19mdW5jX18KLQotI3VuZGVmIEFMV0FZ
U19MT0cKLSNkZWZpbmUgQUxXQVlTX0xPRyBsb2dnZXIoKS5sb2dBbHdheXMKKyNkZWZpbmUgQUxX
QVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSIGxvZ2dlcigpLmxvZ0Fsd2F5cwogCiBzdHJ1Y3Qg
Q2xpZW50U3RhdGUgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2
MSwxOSArMTU3LDE5IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGkK
ICAgICBpZiAobV9tb2NrUGlja2VyRW5hYmxlZCA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbV9tb2NrUGlja2VyRW5hYmxlZCA9IGVuYWJs
ZWQ7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIp
OworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbW9j
a1BpY2tlcigpLnNldFN0YXRlKG5hbWUsIHN0YXRlKTsKIH0KIAogdm9pZCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjptb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpCiB7
Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VT
U0lPTk1BTkFHRVIoX19mdW5jX18pOwogICAgIG1vY2tQaWNrZXIoKS5kaXNtaXNzUG9wdXAoKTsK
IH0KIApAQCAtMjA4LDcgKzIwNCw3IEBAIHVpbnQ2NF90IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmFkZFBsYXkKICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBjb250ZXh0SWQpOworICAgIEFMV0FZU19M
T0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgY29udGV4dElkKTsKICAgICBtX2NsaWVu
dFN0YXRlLmFwcGVuZChtYWtlVW5pcXVlPENsaWVudFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkp
OwogCiAgICAgaWYgKG1fZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgfHwgbV9wbGF5YmFj
a1RhcmdldCkKQEAgLTIyNCw3ICsyMjAsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnJlbW92ZVBsYXliCiAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm47
CiAKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdl
dCgpKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xp
ZW50U3RhdGVbaW5kZXhdLmdldCgpKTsKIAogICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGluZGV4
KTsKICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldE1vbml0b3JpbmdDb25maWd1cmF0aW9u
VGFzayB8IFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7CkBAIC0yMzcsNyArMjMzLDcg
QEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVBbGxQbAogCiAgICAgZm9yIChz
aXplX3QgaSA9IG1fY2xpZW50U3RhdGUuc2l6ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAgICAgIGlm
ICgmbV9jbGllbnRTdGF0ZVtpIC0gMV0tPmNsaWVudCA9PSAmY2xpZW50KSB7Ci0gICAgICAgICAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIG1fY2xpZW50U3RhdGVbaSAtIDFdLmdldCgpKTsK
KyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9j
bGllbnRTdGF0ZVtpIC0gMV0uZ2V0KCkpOwogICAgICAgICAgICAgbV9jbGllbnRTdGF0ZS5yZW1v
dmUoaSAtIDEpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjU3LDcgKzI1Myw3IEBAIHZvaWQgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvd1BsYXliYWMKICAgICAgICAgc3RhdGUtPnByZXZpb3Vz
bHlSZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0ZSA9PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOwogICAg
IH0KIAotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbV9jbGllbnRTdGF0ZVtpbmRleF0u
Z2V0KCkpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9j
bGllbnRTdGF0ZVtpbmRleF0uZ2V0KCkpOwogCiAgICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSA9IGZs
YWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbaW5kZXhdLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQ
bGF5aW5nVG9FeHRlcm5hbERldmljZSk7CiAgICAgdGFyZ2V0UGlja2VyKCkuc2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKEZsb2F0UmVjdChyZWN0KSwgaGFzQWN0aXZlUm91dGUsIHVzZURhcmtBcHBl
YXJhbmNlKTsKQEAgLTI3NSw3ICsyNzEsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmNsaWVudFN0YXRlCiAgICAgaWYgKG5ld0ZsYWdzID09IG9sZEZsYWdzKQogICAgICAgICByZXR1
cm47CiAKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIG1fY2xpZW50U3RhdGVbaW5kZXhd
LmdldCgpLCAibmV3IGZsYWdzID0gIiwgbmV3RmxhZ3MpOworICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCksICJuZXcg
ZmxhZ3MgPSAiLCBuZXdGbGFncyk7CiAKICAgICBjaGFuZ2VkQ2xpZW50U3RhdGUtPmZsYWdzID0g
bmV3RmxhZ3M7CiAKQEAgLTI5OSwyNSArMjk1LDI1IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6Y2xpZW50U3RhdGUKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChm
bGFnc0FyZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJu
YWxEZXZpY2UpICYmIGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQ
bGF5aW5nVmlkZW8pKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIHN0
YXRlLmdldCgpLCAiIHJldHVybmluZyBlYXJseSIpOworICAgICAgICAgICAgQUxXQVlTX0xPR19N
RURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiByZXR1cm5pbmcgZWFy
bHkiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIERv
IG5vdCBiZWdpbiBwbGF5aW5nIHRvIHRoZSBkZXZpY2UgdW5sZXNzIHBsYXliYWNrIGhhcyBqdXN0
IHN0YXJ0ZWQuCiAgICAgaWYgKCFmbGFnc0FyZVNldChuZXdGbGFncywgTWVkaWFQcm9kdWNlcjo6
SXNQbGF5aW5nVmlkZW8pIHx8IGZsYWdzQXJlU2V0KG9sZEZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJ
c1BsYXlpbmdWaWRlbykpIHsKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmV0
dXJuaW5nIGVhcmx5LCBwbGF5YmFjayBkaWRuJ3QganVzdCBzdGFydCIpOworICAgICAgICBBTFdB
WVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJyZXR1cm5pbmcgZWFybHksIHBs
YXliYWNrIGRpZG4ndCBqdXN0IHN0YXJ0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgewogICAgICAgICBpZiAoc3RhdGUg
PT0gY2hhbmdlZENsaWVudFN0YXRlKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQ
bGF5VG9QbGF5YmFja1RhcmdldChmYWxzZSkiKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNF
U1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBs
YXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOwogICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNo
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIGZhbHNlKTsKICAgICB9
CiAKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGNoYW5nZWRDbGllbnRTdGF0ZS5nZXQo
KSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpIik7CisgICAg
QUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBjaGFuZ2VkQ2xpZW50U3Rh
dGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKSIp
OwogICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNr
VGFyZ2V0KGNoYW5nZWRDbGllbnRTdGF0ZS0+Y29udGV4dElkLCB0cnVlKTsKIAogICAgIGlmIChp
bmRleCAmJiBtX2NsaWVudFN0YXRlLnNpemUoKSA+IDEpCkBAIC0zMjYsNyArMzIyLDcgQEAgdm9p
ZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjbGllbnRTdGF0ZQogCiB2b2lkIFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNldFBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYm
IHRhcmdldCkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJoYXMgYWN0aXZlIHJv
dXRlID0gIiwgdGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpKTsKKyAgICBBTFdBWVNfTE9HX01FRElB
U0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJoYXMgYWN0aXZlIHJvdXRlID0gIiwgdGFyZ2V0LT5o
YXNBY3RpdmVSb3V0ZSgpKTsKICAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGTW92ZSh0YXJnZXQp
OwogICAgIG1fdGFyZ2V0Q2hhbmdlZCA9IHRydWU7CiAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhU
YXJnZXRDbGllbnRzQ29uZmlndXJhdGlvblRhc2spOwpAQCAtMzM0LDcgKzMzMCw3IEBAIHZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0UGxheWJhY2sKIAogdm9pZCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sIGF2
YWlsYWJsZSkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGF2YWlsYWJsZSk7Cisg
ICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBhdmFpbGFibGUpOwog
ICAgIG1fZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgPSBhdmFpbGFibGU7CiAgICAgZm9y
IChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpCiAgICAgICAgIHN0YXRlLT5jbGllbnQuZXh0
ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uoc3RhdGUtPmNvbnRleHRJZCwgYXZh
aWxhYmxlKTsKQEAgLTM0Miw3ICszMzgsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmV4dGVybmFsT3V0CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6cGxheWJhY2tUYXJn
ZXRQaWNrZXJXYXNEaXNtaXNzZWQoKQogewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7
CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKICAgICBtX3Bs
YXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkID0gdHJ1ZTsKICAgICBzY2hlZHVsZURlbGF5ZWRU
YXNrKFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7CiB9CkBAIC0zNzUsNyArMzcxLDcg
QEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRv
JiBzdGF0ZSA9IG1fY2xpZW50U3RhdGVbaV07CiAKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBzdGF0ZS5nZXQoKSwgIiwgcmVxdWVzdGVkUGlja2VyID0gIiwgc3RhdGUtPnJlcXVl
c3RlZFBpY2tlcik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXywgc3RhdGUuZ2V0KCksICIsIHJlcXVlc3RlZFBpY2tlciA9ICIsIHN0YXRlLT5yZXF1ZXN0
ZWRQaWNrZXIpOwogCiAgICAgICAgIGlmICgobV90YXJnZXRDaGFuZ2VkIHx8IG1fcGxheWJhY2tU
YXJnZXRQaWNrZXJEaXNtaXNzZWQpICYmIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIpCiAgICAgICAg
ICAgICBpbmRleE9mQ2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciA9IGk7CkBAIC00MDEsMTIgKzM5
NywxMiBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsCiAgICAgICAg
ICAgICBzdGF0ZS0+Y2xpZW50LnNldFBsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsICpt
X3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7CiAKICAgICAgICAgaWYgKGkgIT0gaW5kZXhPZkNs
aWVudFdpbGxQbGF5VG9UYXJnZXQgfHwgIWhhdmVBY3RpdmVSb3V0ZSkgewotICAgICAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOworICAgICAgICAgICAgQUxXQVlTX0xPR19N
RURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNo
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOwogICAgICAgICAgICAgc3RhdGUtPmNs
aWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxz
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc3RhdGUtPnJlcXVlc3RlZFBpY2tlciAmJiBt
X3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tUYXJnZXRQaWNr
ZXJXYXNEaXNtaXNzZWQiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFO
QUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBwbGF5YmFja1RhcmdldFBpY2tl
cldhc0Rpc21pc3NlZCIpOwogICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5wbGF5YmFja1Rhcmdl
dFBpY2tlcldhc0Rpc21pc3NlZChzdGF0ZS0+Y29udGV4dElkKTsKICAgICAgICAgfQogCkBAIC00
MTgsNyArNDE0LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAog
ICAgIGlmIChoYXZlQWN0aXZlUm91dGUgJiYgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQg
IT0gbm90Rm91bmQpIHsKICAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0YXRlW2luZGV4
T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0XTsKICAgICAgICAgaWYgKCFmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpKSB7Ci0g
ICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIHN0YXRlLmdldCgpLCAiIGNhbGxp
bmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKKyAgICAgICAgICAgIEFM
V0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2Fs
bGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOwogICAgICAgICAgICAg
c3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4
dElkLCB0cnVlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTQzMyw3ICs0MjksNyBAQCB2b2lkIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsCiAgICAgYm9vbCBoYXNBdmFpbGFiaWxp
dHlMaXN0ZW5lciA9IGZhbHNlOwogICAgIGJvb2wgaGF2ZUNsaWVudFdpdGhNZWRpYSA9IGZhbHNl
OwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7Ci0gICAgICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0KCkpOworICAgICAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpKTsKICAgICAgICAgaWYgKHN0
YXRlLT5mbGFncyAmIE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRNb25pdG9y
aW5nKSB7CiAgICAgICAgICAgICBtb25pdG9yaW5nUmVxdWlyZWQgPSB0cnVlOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC00NDUsMTAgKzQ0MSwxMCBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmNvbmZpZ3VyZVBsCiAgICAgfQogCiAgICAgaWYgKG1vbml0b3JpbmdSZXF1aXJlZCB8fCAo
aGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgJiYgaGF2ZUNsaWVudFdpdGhNZWRpYSkpIHsKLSAgICAg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOworICAg
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdGFydGluZyBt
b25pdG9yaW5nIik7CiAgICAgICAgIHRhcmdldFBpY2tlcigpLnN0YXJ0aW5nTW9uaXRvcmluZ1Bs
YXliYWNrVGFyZ2V0cygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInN0b3BwaW5nIG1vbml0b3JpbmciKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAic3RvcHBpbmcgbW9uaXRvcmluZyIpOwogICAgICAg
ICB0YXJnZXRQaWNrZXIoKS5zdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOwogICAgIH0K
IH0KQEAgLTQ5MCw3ICs0ODYsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZp
Z3VyZVdhCiAKICAgICBpZiAoIW1fcGxheWJhY2tUYXJnZXQgfHwgIW1fcGxheWJhY2tUYXJnZXQt
Pmhhc0FjdGl2ZVJvdXRlKCkpIHsKICAgICAgICAgaWYgKG1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2
ZSgpKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyB0
aW1lciIpOworICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVu
Y19fLCAic3RvcHBpbmcgdGltZXIiKTsKICAgICAgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50
ZXJ2YWwgPSB7IH07CiAgICAgICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwogICAgICAg
ICB9CkBAIC01MDIsNyArNDk4LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25m
aWd1cmVXYQogICAgIGJvb2wgZGlkUGxheVRvRW5kID0gZmFsc2U7CiAgICAgZm9yIChhdXRvJiBz
dGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsKIAotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsIHN0YXRlLmdldCgpLCAiIHBsYXllZFRvRW5kID0gIiwgc3RhdGUtPnBsYXllZFRvRW5kKTsK
KyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5n
ZXQoKSwgIiBwbGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7CiAKICAgICAgICAg
aWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9F
eHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2Vy
OjpJc1BsYXlpbmdWaWRlbykpCiAgICAgICAgICAgICBzdG9wVGltZXIgPSB0cnVlOwpAQCAtNTEy
LDcgKzUwOCw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2EKICAg
ICB9CiAKICAgICBpZiAoc3RvcFRpbWVyKSB7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgInN0b3BwaW5nIHRpbWVyIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVyIik7CiAgICAgICAgIG1fY3VycmVudFdh
dGNoZG9nSW50ZXJ2YWwgPSB7IH07CiAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CiAg
ICAgfSBlbHNlIHsKQEAgLTUyMCw3ICs1MTYsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmNvbmZpZ3VyZVdhCiAgICAgICAgIGlmIChpbnRlcnZhbCAhPSBtX2N1cnJlbnRXYXRjaGRv
Z0ludGVydmFsIHx8ICFtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkgewogICAgICAgICAgICAg
bV93YXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hvdChpbnRlcnZhbCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidGltZXIgc2NoZWR1bGVkIGZvciAiLCBpbnRl
cnZhbC52YWx1ZSgpLCAiIHNlY29uZHMiKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJ
T05NQU5BR0VSKF9fZnVuY19fLCAidGltZXIgc2NoZWR1bGVkIGZvciAiLCBpbnRlcnZhbC52YWx1
ZSgpLCAiIHNlY29uZHMiKTsKICAgICAgICAgbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCA9IGlu
dGVydmFsOwogICAgIH0KIH0KQEAgLTUzMCw3ICs1MjYsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OndhdGNoZG9nVGltCiAgICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIEFMV0FZU19M
T0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgdGFyZ2V0UGlja2VyKCkuaW52
YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MDEwMikKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNC0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgQXBwbGVQYXkgY29kZSBmcm9t
IFdlYktpdEFkZGl0aW9ucyB0byBXZWJDb3JlIGFuZCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDUyMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg6
CisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbToKKyAgICAgICAgKiBwYWwv
c3BpL2NvY29hL1Bhc3NLaXRTUEkuaDoKKwogMjAyMC0wNC0xNCAgUGVuZyBMaXUgIDxwZW5nLmxp
dTZAYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IGludGVyZmFjZSBBVkF1ZGlvUm91dGluZ0Fy
Yml0ZXIgZm9yIE1hYwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0
U29mdExpbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSwx
OCBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVuCiBTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudE1ldGhvZCkKIFNPRlRfTElOS19DTEFTU19G
T1JfSEVBREVSKFBBTCwgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uKQogU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQS1BheW1lbnRSZXF1ZXN0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9I
RUFERVIoUEFMLCBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24pCitTT0ZUX0xJTktfQ0xBU1Nf
Rk9SX0hFQURFUihQQUwsIFBLUGF5bWVudFNldHVwQ29udHJvbGxlcikKK1NPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50U2V0dXBGZWF0dXJlKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQS1BheW1lbnRTZXR1cFJlcXVlc3QpCitTT0ZUX0xJTktfQ0xBU1Nf
Rk9SX0hFQURFUihQQUwsIFBLUGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIpCiBTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudFN1bW1hcnlJdGVtKQogU09GVF9MSU5LX0NM
QVNTX0ZPUl9IRUFERVIoUEFMLCBQS1NoaXBwaW5nTWV0aG9kKQogCisjaWYgSEFWRShQQVNTS0lU
X0lOU1RBTExNRU5UUykKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKQorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1BheW1lbnRBdXRob3JpemF0
aW9uQ29udHJvbGxlcikKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW0JKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiwxMCArMzIsMzIgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIFNPRlRfTElOS19QUklWQVRF
X0ZSQU1FV09SS19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEFMX0VYUE9S
VCkKLSNlbHNlCisKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQ
T1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JU
KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQS1BheW1lbnRTZXR1cENvbnRyb2xsZXIsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5
bWVudFNldHVwRmVhdHVyZSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNF
X09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0dXBSZXF1ZXN0
LCBQQUxfRVhQT1JUKQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKK1NPRlRfTElO
S19DTEFTU19GT1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQorI2VuZGlmCisKKyNl
bHNlIC8vIFBMQVRGT1JNKE1BQykKKwogU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEFMX0VYUE9SVCkKKworU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24sIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwQ29udHJvbGxlciwgUEFMX0VYUE9SVCkKK1NP
RlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXlt
ZW50U2V0dXBGZWF0dXJlLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cFJlcXVlc3QsIFBBTF9FWFBP
UlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQs
IFBLUGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIsIFBBTF9FWFBPUlQpCisKKyNpZiBIQVZFKFBB
U1NLSVRfSU5TVEFMTE1FTlRTKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24sIFBBTF9F
WFBPUlQpCiAjZW5kaWYKIAorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKwogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3QsIFBBTF9F
WFBPUlQpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NL
aXQsIFBLUGFzc0xpYnJhcnksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudCwgUEFMX0VYUE9SVCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgJKHJldmlz
aW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRT
UEkuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTEgKzQ3LDI4IEBAIFdURl9FWFRFUk5fQ19FTkQK
ICNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyX1By
aXZhdGUuaD4KICNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50TWV0aG9kLmg+CiAjaW1wb3J0IDxQ
YXNzS2l0L1BLUGF5bWVudFJlcXVlc3RfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1Bh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb25fV2ViS2l0Lmg+CisjaW1wb3J0IDxQYXNzS2l0L1BLUGF5
bWVudFNldHVwQ29udHJvbGxlci5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRTZXR1cFJl
cXVlc3QuaD4KICNpbXBvcnQgPFBhc3NLaXRDb3JlL1BLUGF5bWVudFJlcXVlc3RTdGF0dXNfUHJp
dmF0ZS5oPgogI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50UmVxdWVzdF9XZWJLaXQuaD4K
IAorI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisjaW1wb3J0IDxQYXNzS2l0Q29yZS9Q
S1BheW1lbnRfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDxQYXNzS2l0Q29yZS9QS1BheW1lbnRNZXRo
b2RfUHJpdmF0ZS5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9y
dCA8UGFzc0tpdC9QS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcl9Qcml2YXRlLmg+Cisj
aW1wb3J0IDxQYXNzS2l0L1BLUGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIuaD4KKyNlbmRpZgor
CisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UX0lERU5USUZJRVJTKSAmJiBQTEFURk9STShN
QUMpCitAaW50ZXJmYWNlIFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiAoV2ViS2l0
U1BJKQorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU1N0cmluZyAqaW5z
dGFsbG1lbnRNZXJjaGFudElkZW50aWZpZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwg
bnVsbGFibGUpIE5TU3RyaW5nICpyZWZlcnJlcklkZW50aWZpZXI7CitAZW5kCiAjZW5kaWYKIAog
I2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTkwMCw2ICsxOTAw
LDcgQEAKIAkJNUMyQjFBRUMyMjM5N0VCQzAwQjkxQ0Y3IC8qIFJlc291cmNlUmVzcG9uc2VDb2Nv
YS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjc4
RDBCMUMyNTQyMkMwMDI0NTQ0NiAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gKi87IH07CiAJ
CTVDNDMwNEIxMTkxQUM5MDgwMDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRTE5MUFDOTA4
MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oICovOyB9OwogCQk1QzQzMDRCNjE5MUFF
RjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRCNDE5MUFFRjQ2MDAwRTJCQzAgLyog
SlNFWFRTaGFkZXJUZXh0dXJlTE9ELmggKi87IH07CisJCTVDNTNEQ0UxMjQ0NjVERkMwMEE5MzEy
NCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUM1M0RDQ0YyNDQ2NDQ5OTAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0
dXBGZWF0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNUM1RDIzODUyMjdBMDY1MjAwMEI5QkRBIC8qIEN1c3RvbUhlYWRlckZpZWxkcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM1RDIzODMyMjdB
MDYzQTAwMEI5QkRBIC8qIEN1c3RvbUhlYWRlckZpZWxkcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDN0M4OEQ4MUQwRjFGNEEwMDlEMkY2RCAv
KiBTb2NrZXRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM3Qzg4RDcxRDBGMUYyQjAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUM5QzJEQjUy
MjQxQTY3QjAwOTk2QjBCIC8qIENvbnRlbnRSdWxlTGlzdFJlc3VsdHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUMyREIzMjI0MUE2NzMwMDk5NkIw
QiAvKiBDb250ZW50UnVsZUxpc3RSZXN1bHRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkwOTEsNiArOTA5MiwxOCBAQAogCQk1QzUzODFCMTFE
ODdENDU3MDBFMkVCRTYgLyogVVJMU2VhcmNoUGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVSTFNlYXJjaFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzUzODFCMzFEODdFMDgxMDBFMkVCRTYgLyogSlNVUkxTZWFyY2hQYXJhbXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVUkxTZWFyY2hQYXJhbXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzUzODFCNDFEODdFMDgxMDBFMkVCRTYg
LyogSlNVUkxTZWFyY2hQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNVUkxTZWFyY2hQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RD
QzYyNDQ2NDQ5NzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXAuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEFwcGxlUGF5U2V0dXAuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
QzUzRENDOTI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcHBsZVBheVNldHVwRmVhdHVyZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQ0EyNDQ2NDQ5ODAwQTkzMTI0
IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBs
ZVBheVNldHVwRmVhdHVyZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNE
Q0NCMjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5U2V0dXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUM1M0RDQ0MyNDQ2NDQ5OTAwQTkzMTI0IC8qIFBheW1lbnRJbnN0YWxsbWVudENvbmZp
Z3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzUzRENDRTI0NDY0NDk5MDBBOTMxMjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNE
Q0NGMjQ0NjQ0OTkwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsZVBheVNldHVwRmVhdHVyZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzUzRENEMDI0NDY0NDlBMDBBOTMxMjQgLyogQXBwbGVQYXlJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUM1M0RDRDIyNDQ2NDQ5QTAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXAuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwbGVQYXlTZXR1cC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0Q0MjQ0NjQ0OUIwMEE5MzEyNCAv
KiBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDNTNEQ0Q1MjQ0NjQ0OUIwMEE5MzEyNCAvKiBBcHBsZVBheUluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENE
NjI0NDY0NDlDMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzVEMjM4MzIyN0EwNjNBMDAwQjlCREEgLyogQ3VzdG9tSGVh
ZGVyRmllbGRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1c3RvbUhlYWRl
ckZpZWxkcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVEMjM4NjIyN0EwNzdD
MDAwQjlCREEgLyogQ3VzdG9tSGVhZGVyRmllbGRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEN1c3RvbUhlYWRlckZpZWxkcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDNjY4RTY0MUU3QzZDMzUwMEQzMkIzQiAvKiBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0
cmVhbUhhbmRsZUltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcyNzEs
NiArMTcyODQsOCBAQAogCQkJCUExQkI4NTlCMjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVy
cm9yQ29kZS5pZGwgKi8sCiAJCQkJQTFCQjg1QTAyMTU5QUY1NzAwNjdFMDdEIC8qIEFwcGxlUGF5
RXJyb3JDb250YWN0RmllbGQuaCAqLywKIAkJCQlBMUJCODVBMjIxNTlBRjU3MDA2N0UwN0QgLyog
QXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5pZGwgKi8sCisJCQkJNUM1M0RDRDAyNDQ2NDQ5QTAw
QTkzMTI0IC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmggKi8sCisJCQkJNUM1
M0RDRDUyNDQ2NDQ5QjAwQTkzMTI0IC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
LmlkbCAqLywKIAkJCQk3QzY1NzlFMjFFMDA4MjcwMDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRl
bS5oICovLAogCQkJCTdDNjU3OUU0MUUwMDgyQzgwMEUzQTI3QSAvKiBBcHBsZVBheUxpbmVJdGVt
LmlkbCAqLywKIAkJCQlBMURGNUFBODFGODA3MEQ0MDA1OEE0NzcgLyogQXBwbGVQYXlNZXJjaGFu
dENhcGFiaWxpdHkuY3BwICovLApAQCAtMTczMDgsNiArMTczMjMsMTQgQEAKIAkJCQlBMTk1NkYx
RjIzMzFBOEM3MDA1N0U5RDIgLyogQXBwbGVQYXlTZXNzaW9uRXJyb3IuaWRsICovLAogCQkJCTFB
NThFODYzMUQxOUQ0REYwMEMwRUE3MyAvKiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5j
cHAgKi8sCiAJCQkJMUE1OEU4NjQxRDE5RDRERjAwQzBFQTczIC8qIEFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0LmggKi8sCisJCQkJNUM1M0RDRDIyNDQ2NDQ5QTAwQTkzMTI0IC8qIEFwcGxl
UGF5U2V0dXAuY3BwICovLAorCQkJCTVDNTNEQ0NCMjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBh
eVNldHVwLmggKi8sCisJCQkJNUM1M0RDQzYyNDQ2NDQ5NzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0
dXAuaWRsICovLAorCQkJCTVDNTNEQ0NGMjQ0NjQ0OTkwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVw
RmVhdHVyZS5oICovLAorCQkJCTVDNTNEQ0NBMjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNl
dHVwRmVhdHVyZS5pZGwgKi8sCisJCQkJNUM1M0RDQzkyNDQ2NDQ5ODAwQTkzMTI0IC8qIEFwcGxl
UGF5U2V0dXBGZWF0dXJlLm1tICovLAorCQkJCTVDNTNEQ0Q0MjQ0NjQ0OUIwMEE5MzEyNCAvKiBB
cHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaCAqLywKKwkJCQk1QzUzRENENjI0NDY0NDlDMDBBOTMx
MjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbCAqLywKIAkJCQkxQThBNjQ0NzFEMTlG
Q0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmNwcCAq
LywKIAkJCQkxQThBNjQ0ODFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGluZ0NvbnRh
Y3RTZWxlY3RlZEV2ZW50LmggKi8sCiAJCQkJMUE4QTY0NDkxRDE5RkNGQjAwRDBFMDBGIC8qIEFw
cGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwgKi8sCkBAIC0xNzMzMSw2ICsx
NzM1NCw4IEBACiAJCQkJQTEwNEVDNTMyMjBBMDE3NDAwQ0JGNjdBIC8qIFBheW1lbnRDb29yZGlu
YXRvckNsaWVudC5jcHAgKi8sCiAJCQkJMUE1OEU4NjIxRDE5RDNCRjAwQzBFQTczIC8qIFBheW1l
bnRDb29yZGluYXRvckNsaWVudC5oICovLAogCQkJCTdDRjkzMEU2MUUwMUY5QUQwMEJBRkZCRSAv
KiBQYXltZW50SGVhZGVycy5oICovLAorCQkJCTVDNTNEQ0NFMjQ0NjQ0OTkwMEE5MzEyNCAvKiBQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmggKi8sCisJCQkJNUM1M0RDQ0MyNDQ2NDQ5
OTAwQTkzMTI0IC8qIFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0gKi8sCiAJCQkJ
MUFFOTZBODcxRDFBMENFQjAwQjg2NzY4IC8qIFBheW1lbnRNZXJjaGFudFNlc3Npb24uaCAqLywK
IAkJCQkxQThBNjQzOTFEMTlGQzUzMDBEMEUwMEYgLyogUGF5bWVudE1ldGhvZC5oICovLAogCQkJ
CUExREZENTI0MjMzNDU5M0EwMDQyRkNEQiAvKiBQYXltZW50TWV0aG9kVXBkYXRlLmggKi8sCkBA
IC0yOTM5Nyw2ICsyOTQyMiw3IEBACiAJCQkJMUE4QTY0NTkxRDE5RkNGQzAwRDBFMDBGIC8qIEFw
cGxlUGF5U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE5NTZGMjAyMzMxQThDNzAwNTdF
OUQyIC8qIEFwcGxlUGF5U2Vzc2lvbkVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU4RTg2
NTFEMTlENEVCMDBDMEVBNzMgLyogQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTVDNTNEQ0UxMjQ0NjVERkMwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVw
RmVhdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4QTY0NUMxRDE5RkNGQzAwRDBFMDBGIC8q
IEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTEyQzU5RjIyMDM1RkNENjAwMTIyMzZCIC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBk
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzY1NzlFODFFMDA4MzE2MDBFM0EyN0EgLyogQXBw
bGVQYXlTaGlwcGluZ01ldGhvZC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYkNvcmVBZGRpdGlvbnMubW0JKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYkNvcmVBZGRpdGlvbnMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDMgQEAKICAqLwogCiAjaW1wb3J0ICJjb25m
aWcuaCIKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRp
dGlvbnMvV2ViQ29yZUFkZGl0aW9ucy5tbT4KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI2MDA4MSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNTUgQEAKKzIwMjAtMDQtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIEFwcGxlUGF5IGNvZGUgZnJvbSBXZWJLaXRBZGRp
dGlvbnMgdG8gV2ViQ29yZSBhbmQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVz
dGVzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGF5bWVudFNl
dHVwRmVhdHVyZXM6OnBsYXRmb3JtRmVhdHVyZXMgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9B
cHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXM6OlBheW1lbnRTZXR1cEZlYXR1cmVzKToKKyAg
ICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzOjpkZWNvZGUpOgorICAgICAgICAoV2Vi
S2l0OjpQYXltZW50U2V0dXBGZWF0dXJlczo6b3BlcmF0b3IgVmVjdG9yPFJlZjxXZWJDb3JlOjpB
cHBsZVBheVNldHVwRmVhdHVyZT4+IGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkv
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbjo6cGxhdGZvcm1Db25maWd1cmF0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OnRvUGxhdGZvcm1Db25maWd1cmF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmZp
bmlzaENvbnN0cnVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9B
cHBsZVBheS9jb2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdEFkZGl0aW9uczo6dG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAo
V2ViS2l0QWRkaXRpb25zOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdEFkZGl0aW9uczo6UGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdEFkZGl0aW9uczo6UGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQ
YXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6ZmluaXNoQ3JlYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6Z2V0U2V0dXBGZWF0dXJlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpiZWdpbkFwcGxlUGF5U2V0dXApOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZW5kQXBwbGVQYXlTZXR1cCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUJlZ2luQXBwbGVQ
YXlTZXR1cCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUVuZEFwcGxlUGF5U2V0dXApOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6ZmluaXNoRGVjb2RpbmcpOgor
ICAgICAgICAoSVBDOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbj46OmRlY29kZSk6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvcjo6Z2V0U2V0dXBGZWF0dXJlcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBheW1lbnRDb29yZGluYXRvcjo6YmVnaW5BcHBsZVBheVNldHVwKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjplbmRBcHBsZVBheVNldHVwKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oOgorCiAyMDIw
LTA0LTE0ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIElu
amVjdGVkQnVuZGxlIHBhcmFtZXRlcnMgb2Z0ZW4gbmVlZCBpbml0aWFsaXphdGlvbiBmdW5jdGlv
biBjYWxsZWQgYmVmb3JlIHVuYXJjaGl2aW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTI1MCw4ICsyNTAsNiBAQCBTQ1JJUFRTID0gXAogRlJBTUVX
T1JLX0ZMQUdTID0gJChzaGVsbCBlY2hvICQoQlVJTFRfUFJPRFVDVFNfRElSKSAkKEZSQU1FV09S
S19TRUFSQ0hfUEFUSFMpICQoU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMpIHwgcGVybCAt
ZSAncHJpbnQgIi1GICIgLiBqb2luKCIgLUYgIiwgc3BsaXQoIiAiLCA8PikpOycpCiBIRUFERVJf
RkxBR1MgPSAkKHNoZWxsIGVjaG8gJChCVUlMVF9QUk9EVUNUU19ESVIpICQoSEVBREVSX1NFQVJD
SF9QQVRIUykgJChTWVNURU1fSEVBREVSX1NFQVJDSF9QQVRIUykgfCBwZXJsIC1lICdwcmludCAi
LUkiIC4gam9pbigiIC1JIiwgc3BsaXQoIiAiLCA8PikpOycpCiAKLS1pbmNsdWRlIFdlYktpdERl
cml2ZWRTb3VyY2VzQWRkaXRpb25zLm1ha2UKLQogLlBIT05ZIDogYWxsCiAKIGFsbCA6IFwKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiw4IEBAIFNo
YXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUKIFNoYXJlZC9BUEkvQ29jb2Ev
V0tSZW1vdGVPYmplY3QubW0KIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5t
bQogCitTaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbQorU2hh
cmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KIFNoYXJlZC9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKIFNoYXJlZC9BcHBsZVBheS9jb2NvYS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCiBTaGFyZWQvQXBwbGVQYXkvaW9zL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTY0MSw2ICs2NDEs
NyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJI
b3N0aW5nQ29udGV4dElEJzogWyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAogICAgICAgICAn
V2ViS2l0OjpMYXllckhvc3RpbmdNb2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5oIiddLAogICAg
ICAgICAnV2ViS2l0OjpQYWdlU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKKyAgICAgICAg
J1dlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMnOiBbJyJBcHBsZVBheVBheW1lbnRTZXR1cEZl
YXR1cmVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlJlc3BlY3RTZWxlY3Rpb25BbmNob3InOiBb
JyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViR2VzdHVyZUV2ZW50Jzog
WyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCc6IFsn
IldlYkV2ZW50LmgiJ10sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBs
ZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVw
RmVhdHVyZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKworT0JKQ19D
TEFTUyBQS1BheW1lbnRTZXR1cEZlYXR1cmU7CisKKyNpbmNsdWRlIDxXZWJDb3JlL0FwcGxlUGF5
U2V0dXBGZWF0dXJlLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVu
Y29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYXltZW50U2V0dXBGZWF0
dXJlcyB7CitwdWJsaWM6CisgICAgUGF5bWVudFNldHVwRmVhdHVyZXMoVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYpOworICAgIFBheW1lbnRTZXR1cEZlYXR1
cmVzKFJldGFpblB0cjxOU0FycmF5PiYmID0gbnVsbHB0cik7CisKKyAgICB2b2lkIGVuY29kZShJ
UEM6OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFNldHVwRmVh
dHVyZXM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKworICAgIE5TQXJyYXkgKnBsYXRmb3JtRmVh
dHVyZXMoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRmVhdHVyZXMuZ2V0KCk7IH0KKyAgICBv
cGVyYXRvciBWZWN0b3I8UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4oKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gbV9wbGF0Zm9ybUZlYXR1cmVz
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRf
UEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxl
UGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbQkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1
cEZlYXR1cmVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVy
ZXMuaCIKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW1wb3J0ICJBcmd1
bWVudENvZGVyc0NvY29hLmgiCisjaW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVy
LmgiCisjaW1wb3J0IDxXZWJDb3JlL0FwcGxlUGF5U2V0dXBGZWF0dXJlLmg+CisKKyNpbXBvcnQg
PHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0
YXRpYyBOU0FycmF5PFBLUGF5bWVudFNldHVwRmVhdHVyZSAqPiAqdG9QbGF0Zm9ybUZlYXR1cmVz
KFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmIGZlYXR1cmVz
KQoreworICAgIE5TTXV0YWJsZUFycmF5ICpwbGF0Zm9ybUZlYXR1cmVzID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5V2l0aENhcGFjaXR5OmZlYXR1cmVzLnNpemUoKV07CisgICAgZm9yIChhdXRvJiBm
ZWF0dXJlIDogZmVhdHVyZXMpIHsKKyAgICAgICAgaWYgKGZlYXR1cmUpCisgICAgICAgICAgICBb
cGxhdGZvcm1GZWF0dXJlcyBhZGRPYmplY3Q6ZmVhdHVyZS0+cGxhdGZvcm1GZWF0dXJlKCldOwor
ICAgIH0KKyAgICByZXR1cm4gcGxhdGZvcm1GZWF0dXJlczsKK30KKworUGF5bWVudFNldHVwRmVh
dHVyZXM6OlBheW1lbnRTZXR1cEZlYXR1cmVzKFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBwbGVQ
YXlTZXR1cEZlYXR1cmU+PiYmIGZlYXR1cmVzKQorICAgIDogbV9wbGF0Zm9ybUZlYXR1cmVzIHsg
dG9QbGF0Zm9ybUZlYXR1cmVzKFdURk1vdmUoZmVhdHVyZXMpKSB9Cit7Cit9CisKK1BheW1lbnRT
ZXR1cEZlYXR1cmVzOjpQYXltZW50U2V0dXBGZWF0dXJlcyhSZXRhaW5QdHI8TlNBcnJheT4mJiBw
bGF0Zm9ybUZlYXR1cmVzKQorICAgIDogbV9wbGF0Zm9ybUZlYXR1cmVzIHsgV1RGTW92ZShwbGF0
Zm9ybUZlYXR1cmVzKSB9Cit7Cit9CisKK3ZvaWQgUGF5bWVudFNldHVwRmVhdHVyZXM6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3BsYXRm
b3JtRmVhdHVyZXM7Cit9CisKK09wdGlvbmFsPFBheW1lbnRTZXR1cEZlYXR1cmVzPiBQYXltZW50
U2V0dXBGZWF0dXJlczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGF0
aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIGF1dG8g
YWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eToyXSk7CisgICAgICAgIFthbGxvd2VkIGFkZE9iamVjdDpbTlNBcnJheSBjbGFzc11dOworICAg
ICAgICBpZiAoYXV0byBwa1BheW1lbnRTZXR1cEZlYXR1cmVDbGFzcyA9IFBBTDo6Z2V0UEtQYXlt
ZW50U2V0dXBGZWF0dXJlQ2xhc3MoKSkKKyAgICAgICAgICAgIFthbGxvd2VkIGFkZE9iamVjdDpw
a1BheW1lbnRTZXR1cEZlYXR1cmVDbGFzc107CisgICAgICAgIGFsbG93ZWRDbGFzc2VzID0gW2Fs
bG93ZWQgY29weV07CisgICAgfSk7CisKKyAgICBhdXRvIHBsYXRmb3JtRmVhdHVyZXMgPSBJUEM6
OmRlY29kZTxOU0FycmF5PFBLUGF5bWVudFNldHVwRmVhdHVyZSAqPj4oZGVjb2RlciwgYWxsb3dl
ZENsYXNzZXMpOworICAgIGlmICghcGxhdGZvcm1GZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIHJldHVybiBQYXltZW50U2V0dXBGZWF0dXJlcyB7IFdURk1vdmUo
KnBsYXRmb3JtRmVhdHVyZXMpIH07Cit9CisKK1BheW1lbnRTZXR1cEZlYXR1cmVzOjpvcGVyYXRv
ciBWZWN0b3I8UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4oKSBjb25zdAorewor
ICAgIFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiBmZWF0dXJlczsK
KyAgICBmZWF0dXJlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFttX3BsYXRmb3JtRmVhdHVyZXMg
Y291bnRdKTsKKyAgICBmb3IgKFBLUGF5bWVudFNldHVwRmVhdHVyZSAqcGxhdGZvcm1GZWF0dXJl
IGluIG1fcGxhdGZvcm1GZWF0dXJlcy5nZXQoKSkKKyAgICAgICAgZmVhdHVyZXMudW5jaGVja2Vk
QXBwZW5kKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpjcmVhdGUocGxhdGZvcm1GZWF0
dXJlKSk7CisgICAgcmV0dXJuIGZlYXR1cmVzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQpJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9Q
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRf
U0VUVVApCisKKyNpbmNsdWRlICJBcHBsZVBheVNldHVwLmgiCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgUEtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uOworCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIERlY29kZXI7Citj
bGFzcyBFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbiB7CitwdWJsaWM6CisgICAgUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bigpID0gZGVmYXVsdDsKKyAgICBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNv
cmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwmKTsKKworICAgIHZv
aWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBPcHRpb25hbDxQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisKKyAgICBQS1Bh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gKnBsYXRmb3JtQ29uZmlndXJhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbj4mJik7CisKKyAgICBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
PiBtX2NvbmZpZ3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24u
bW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKKyNpbXBv
cnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKKyNpbXBvcnQgIkRlY29kZXIuaCIKKyNpbXBvcnQg
IkVuY29kZXIuaCIKKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKworI2ltcG9ydCA8cGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5oPgorCitAaW50ZXJmYWNlIFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
biAoV2ViS2l0KQorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKnNpZ25lZEZpZWxkczsKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBS
ZXRhaW5QdHI8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiB0b1BsYXRmb3JtQ29uZmlndXJh
dGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1cmF0aW9uJiBjb3JlQ29u
ZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlm
ICghUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcygpKQorICAgICAgICBy
ZXR1cm4gbmlsOworI2VuZGlmCisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uSW5zdGFuY2UoKSBpbml0XSk7Cisg
ICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVyY2hhbnRJZGVudGlmaWVyOmNvcmVDb25maWd1cmF0aW9u
Lm1lcmNoYW50SWRlbnRpZmllcl07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0T3JpZ2luYXRpbmdV
Ukw6dXJsXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRSZWZlcnJlcklkZW50aWZpZXI6Y29yZUNv
bmZpZ3VyYXRpb24ucmVmZXJyZXJJZGVudGlmaWVyXTsKK0FMTE9XX05FV19BUElfV0lUSE9VVF9H
VUFSRFNfQkVHSU4KKyAgICBbY29uZmlndXJhdGlvbiBzZXRTaWduYXR1cmU6Y29yZUNvbmZpZ3Vy
YXRpb24uc2lnbmF0dXJlXTsKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECisKKyAg
ICBpZiAoW2NvbmZpZ3VyYXRpb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRTaWdu
ZWRGaWVsZHM6KV0pIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkgKnNpZ25lZEZpZWxkcyA9IFtO
U011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjb3JlQ29uZmlndXJhdGlvbi5zaWduZWRG
aWVsZHMuc2l6ZSgpXTsKKyAgICAgICAgZm9yIChhdXRvJiBzaWduZWRGaWVsZCA6IGNvcmVDb25m
aWd1cmF0aW9uLnNpZ25lZEZpZWxkcykKKyAgICAgICAgICAgIFtzaWduZWRGaWVsZHMgYWRkT2Jq
ZWN0OnNpZ25lZEZpZWxkXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0U2lnbmVkRmllbGRz
OnNpZ25lZEZpZWxkc107CisgICAgfQorCisgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Cit9CisK
K1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwg
Y29uc3QgVVJMJiB1cmwpCisgICAgOiBtX2NvbmZpZ3VyYXRpb24geyB0b1BsYXRmb3JtQ29uZmln
dXJhdGlvbihjb25maWd1cmF0aW9uLCB1cmwpIH0KK3sKK30KKworUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihSZXRhaW5QdHI8UEtQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2NvbmZpZ3VyYXRpb24g
eyBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pIH0KK3sKK30KKwordm9pZCBQYXltZW50U2V0dXBDb25m
aWd1cmF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIgPDwgbV9jb25maWd1cmF0aW9uOworfQorCitPcHRpb25hbDxQYXltZW50U2V0dXBDb25m
aWd1cmF0aW9uPiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIHN0YXRpYyBOU0FycmF5ICphbGxvd2VkQ2xhc3NlczsKKyAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZs
YWcsIFtdIHsKKyAgICAgICAgYXV0byBhbGxvd2VkID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjFdKTsKKyAgICAgICAgaWYgKGF1dG8gcGtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbkNsYXNzKCkpCisgICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uQ2xhc3NdOworICAgICAgICBhbGxvd2VkQ2xhc3NlcyA9IFthbGxvd2Vk
IGNvcHldOworICAgIH0pOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gSVBDOjpkZWNvZGU8
UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPihkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7Cisg
ICAgaWYgKCFjb25maWd1cmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24geyBXVEZNb3ZlKCpjb25maWd1cmF0
aW9uKSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXRBZGRpdGlvbnMKKworI2VuZGlmIC8v
IEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNw
cAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2
IEBAIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpXZWJQYXltZW50Q28KICAgICAsIG1fY2Fu
TWFrZVBheW1lbnRzUXVldWUgeyBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5D
YW5NYWtlUGF5bWVudHMiKSB9CiB7CiAgICAgbV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9yQWRk
TWVzc2FnZVJlY2VpdmVyKCp0aGlzLCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwotICAgIGZpbmlzaENvbnN0cnVjdGlv
bigqdGhpcyk7CiB9CiAKIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp+V2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkoKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCShyZXZpc2lvbiAyNTk5
MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNywxMCBAQAogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlBZGRpdGlvbnMuaD4KKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkK
KyNpbmNsdWRlIDx3dGYvV2Vha09iakNQdHIuaD4KK09CSkNfQ0xBU1MgUEtQYXltZW50U2V0dXBW
aWV3Q29udHJvbGxlcjsKK09CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKICNlbmRpZgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTYyLDYgKzY0LDggQEAgT0JKQ19DTEFTUyBVSVZpZXdDb250cm9s
bGVyOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbjsKK2NsYXNzIFBheW1lbnRTZXR1cEZlYXR1cmVzOwogY2xhc3MgV2ViUGFnZVByb3h5Owog
CiBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQpAQCAtMTI0LDYgKzEyOCwxNCBAQCBw
cml2YXRlOgogICAgIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigpOwogICAgIHZvaWQgY2FuY2Vs
UGF5bWVudFNlc3Npb24oKTsKIAorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorICAg
IHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYpPiYmKTsK
KyAgICB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uJiwgY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyAgICB2b2lkIGVuZEFwcGxlUGF5U2V0dXAoKTsKKyAgICB2b2lkIHBsYXRm
b3JtQmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mLCBj
b25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworICAgIHZvaWQgcGxhdGZvcm1FbmRBcHBsZVBheVNldHVwKCk7CisjZW5kaWYKKwogICAg
IGJvb2wgY2FuQmVnaW4oKSBjb25zdDsKICAgICBib29sIGNhbkNhbmNlbCgpIGNvbnN0OwogICAg
IGJvb2wgY2FuQ29tcGxldGVQYXltZW50KCkgY29uc3Q7CkBAIC0xOTEsMTIgKzIwMyw4IEBAIHBy
aXZhdGU6CiAgICAgUmV0YWluUHRyPE5TV2luZG93PiBtX3NoZWV0V2luZG93OwogICAgIFJldGFp
blB0cjxOU09iamVjdD4gbV9zaGVldFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyOwogI2VuZGlmCi0g
ICAgCi0jaWYgZGVmaW5lZChXRUJQQVlNRU5UQ09PUkRJTkFUT1JQUk9YWV9BRERJVElPTlMpCi1X
RUJQQVlNRU5UQ09PUkRJTkFUT1JQUk9YWV9BRERJVElPTlMKLSN1bmRlZiBXRUJQQVlNRU5UQ09P
UkRJTkFUT1JQUk9YWV9BRERJVElPTlMKLSNlbHNlCi0gICAgdm9pZCBmaW5pc2hDb25zdHJ1Y3Rp
b24oV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSB7IH0KKyNpZiBQTEFURk9STShJT1MpCisg
ICAgV2Vha09iakNQdHI8UEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcj4gbV9wYXltZW50U2V0
dXBWaWV3Q29udHJvbGxlcjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSBOCiAgICAgQ29tcGxldGVQYXltZW50U2Vzc2lvbihPcHRpb25hbDxXZWJD
b3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gcmVzdWx0KQogICAgIEFib3J0UGF5bWVu
dFNlc3Npb24oKQogICAgIENhbmNlbFBheW1lbnRTZXNzaW9uKCkKKyNpZiBIQVZFKFBBU1NLSVRf
UEFZTUVOVF9TRVRVUCkKKyAgICBHZXRTZXR1cEZlYXR1cmVzKFdlYktpdDo6UGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSAtPiAoV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0
dXJlcyBmZWF0dXJlcykgQXN5bmMKKyAgICBCZWdpbkFwcGxlUGF5U2V0dXAoV2ViS2l0OjpQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFdlYktpdDo6UGF5bWVudFNldHVw
RmVhdHVyZXMgZmVhdHVyZXMpIC0+IChib29sIHJlc3VsdCkgQXN5bmMKKyAgICBFbmRBcHBsZVBh
eVNldHVwKCkKKyNlbmRpZgogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9jb2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVAp
CisKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKKyNpbXBvcnQgIkRlY29kZXIuaCIK
KyNpbXBvcnQgIkVuY29kZXIuaCIKKyNpbXBvcnQgIlBhc3NLaXRTb2Z0TGlua0FkZGl0aW9ucy5o
IgorI2ltcG9ydCA8d3RmL1VSTC5oPgorCitAaW50ZXJmYWNlIFBLUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbiAoV2ViS2l0KQorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8TlNT
dHJpbmcgKj4gKnNpZ25lZEZpZWxkczsKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdEFkZGl0aW9u
cyB7CisKK3N0YXRpYyBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiB0b1Bs
YXRmb3JtQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1
cmF0aW9uJiBjb3JlQ29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwpCit7CisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIGlmICghUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFz
cygpKQorICAgICAgICByZXR1cm4gbmlsOworI2VuZGlmCisKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uSW5zdGFu
Y2UoKSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVyY2hhbnRJZGVudGlmaWVyOmNv
cmVDb25maWd1cmF0aW9uLm1lcmNoYW50SWRlbnRpZmllcl07CisgICAgW2NvbmZpZ3VyYXRpb24g
c2V0T3JpZ2luYXRpbmdVUkw6dXJsXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRSZWZlcnJlcklk
ZW50aWZpZXI6Y29yZUNvbmZpZ3VyYXRpb24ucmVmZXJyZXJJZGVudGlmaWVyXTsKK0FMTE9XX05F
V19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KKyAgICBbY29uZmlndXJhdGlvbiBzZXRTaWduYXR1
cmU6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmF0dXJlXTsKK0FMTE9XX05FV19BUElfV0lUSE9VVF9H
VUFSRFNfRU5ECisKKyAgICBpZiAoW2NvbmZpZ3VyYXRpb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihzZXRTaWduZWRGaWVsZHM6KV0pIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkgKnNp
Z25lZEZpZWxkcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjb3JlQ29uZmln
dXJhdGlvbi5zaWduZWRGaWVsZHMuc2l6ZSgpXTsKKyAgICAgICAgZm9yIChhdXRvJiBzaWduZWRG
aWVsZCA6IGNvcmVDb25maWd1cmF0aW9uLnNpZ25lZEZpZWxkcykKKyAgICAgICAgICAgIFtzaWdu
ZWRGaWVsZHMgYWRkT2JqZWN0OnNpZ25lZEZpZWxkXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24g
c2V0U2lnbmVkRmllbGRzOnNpZ25lZEZpZWxkc107CisgICAgfQorCisgICAgcmV0dXJuIGNvbmZp
Z3VyYXRpb247Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwpCisgICAgOiBtX2NvbmZpZ3VyYXRpb24geyB0
b1BsYXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCB1cmwpIH0KK3sKK30KKworUGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihSZXRhaW5Q
dHI8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBt
X2NvbmZpZ3VyYXRpb24geyBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pIH0KK3sKK30KKwordm9pZCBQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgbV9jb25maWd1cmF0aW9uOworfQorCitPcHRpb25hbDxQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uPiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0YXRpYyBOU0FycmF5ICphbGxvd2Vk
Q2xhc3NlczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgYXV0byBhbGxvd2VkID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjFdKTsKKyAgICAgICAgaWYg
KGF1dG8gcGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbkNsYXNzKCkpCisgICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmpl
Y3Q6cGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3NdOworICAgICAgICBhbGxvd2VkQ2xh
c3NlcyA9IFthbGxvd2VkIGNvcHldOworICAgIH0pOworCisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gSVBDOjpkZWNvZGU8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPihkZWNvZGVyLCBhbGxv
d2VkQ2xhc3Nlcyk7CisgICAgaWYgKCFjb25maWd1cmF0aW9uKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgcmV0dXJuIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24geyBXVEZN
b3ZlKCpjb25maWd1cmF0aW9uKSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXRBZGRpdGlv
bnMKKworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNiArMzcsMTcgQEAKICNpbXBv
cnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCi0jaW1w
b3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+Ci0KLSNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2FBZGRpdGlvbnMubW0+Ci0jZWxzZQotbmFtZXNwYWNlIFdlYktpdCB7Ci1zdGF0aWMg
dm9pZCBmaW5pc2hDcmVhdGluZyhQS1BheW1lbnRSZXF1ZXN0ICosIGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikgeyB9Ci19CisjaWYgSEFWRShQQVNTS0lUX1BB
WU1FTlRfU0VUVVApCisjaW1wb3J0ICJBUElVSUNsaWVudC5oIgorI2ltcG9ydCAiQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5oIgorI2ltcG9ydCAiUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bi5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0ICJXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNlbmRp
ZgogCisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CisKIC8vIEZJWE1FOiBX
ZSBkb24ndCBzdXBwb3J0IGFueSBwbGF0Zm9ybXMgd2l0aG91dCAtc2V0VGh1bWJuYWlsVVJMczos
IHNvIHRoaXMgY2FuIGJlIHJlbW92ZWQuCiBAaW50ZXJmYWNlIFBLUGF5bWVudFJlcXVlc3QgKCkK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5TVVJMICp0aHVtYm5haWxVUkw7CkBAIC02
MSw2ICs2MiwxOSBAQCBAaW50ZXJmYWNlIFBLUGF5bWVudFJlcXVlc3QgKFN0YWdpbmcpCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgdm9pZCBmaW5pc2hDcmVhdGluZyhQS1BheW1lbnRS
ZXF1ZXN0ICpwbGF0Zm9ybVJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0JiByZXF1ZXN0KQoreworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMp
CisgICAgaWYgKFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlv
biA9IHJlcXVlc3QuaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKCkucGxhdGZvcm1Db25maWd1cmF0
aW9uKCkpIHsKKyAgICAgICAgcGxhdGZvcm1SZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlv
biA9IGNvbmZpZ3VyYXRpb247CisgICAgICAgIHBsYXRmb3JtUmVxdWVzdC5yZXF1ZXN0VHlwZSA9
IFBLUGF5bWVudFJlcXVlc3RUeXBlSW5zdGFsbG1lbnQ7CisgICAgfQorI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0ocGxhdGZvcm1SZXF1ZXN0KTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7Cisj
ZW5kaWYKK30KKwogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5N
YWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMjc5LDYgKzI5Mywx
MDkgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcgogICAgIG1fYXV0
aG9yaXphdGlvblByZXNlbnRlci0+Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHVwZGF0
ZSk7CiB9CiAKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKwordm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6Z2V0U2V0dXBGZWF0dXJlcyhjb25zdCBQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OkdldFNldHVwRmVhdHVyZXM6OkFzeW5jUmVwbHkmJiByZXBseSkKK3sKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgaWYgKCFQQUw6OmdldFBLUGF5bWVudFNldHVwQ29udHJvbGxlckNs
YXNzKCkpIHsKKyAgICAgICAgcmVwbHkoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgorCisgICAgYXV0byBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKFtyZXBseSA9IFdURk1v
dmUocmVwbHkpXShOU0FycmF5PFBLUGF5bWVudFNldHVwRmVhdHVyZSAqPiAqZmVhdHVyZXMpIG11
dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlcGx5ID0gV1RGTW92
ZShyZXBseSksIGZlYXR1cmVzID0gcmV0YWluUHRyKGZlYXR1cmVzKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIHJlcGx5KFBheW1lbnRTZXR1cEZlYXR1cmVzIHsgV1RGTW92ZShmZWF0dXJlcykg
fSk7CisgICAgICAgIH0pOworICAgIH0pOworCitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRT
X0JFR0lOCisgICAgW1BBTDo6Z2V0UEtQYXltZW50U2V0dXBDb250cm9sbGVyQ2xhc3MoKSBwYXlt
ZW50U2V0dXBGZWF0dXJlc0ZvckNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5wbGF0Zm9ybUNv
bmZpZ3VyYXRpb24oKSBjb21wbGV0aW9uOmNvbXBsZXRpb24uZ2V0KCldOworQUxMT1dfTkVXX0FQ
SV9XSVRIT1VUX0dVQVJEU19FTkQKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6YmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24sIGNvbnN0IFBheW1lbnRTZXR1cEZlYXR1cmVzJiBmZWF0dXJlcywgTWVzc2Fn
ZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpCZWdpbkFwcGxlUGF5U2V0dXA6OkFzeW5j
UmVwbHkmJiByZXBseSkKK3sKKyAgICBwbGF0Zm9ybUJlZ2luQXBwbGVQYXlTZXR1cChjb25maWd1
cmF0aW9uLCBmZWF0dXJlcywgV1RGTW92ZShyZXBseSkpOworfQorCit2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjplbmRBcHBsZVBheVNldHVwKCkKK3sKKyAgICBwbGF0Zm9ybUVuZEFw
cGxlUGF5U2V0dXAoKTsKK30KKworI2lmIFBMQVRGT1JNKE1BQykKKwordm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgUGF5bWVudFNldHVwRmVh
dHVyZXMmIGZlYXR1cmVzLCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkJl
Z2luQXBwbGVQYXlTZXR1cDo6QXN5bmNSZXBseSYmIHJlcGx5KQoreworICAgIGlmICghUEFMOjpn
ZXRQS1BheW1lbnRTZXR1cFJlcXVlc3RDbGFzcygpKSB7CisgICAgICAgIHJlcGx5KGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1BB
TDo6YWxsb2NQS1BheW1lbnRTZXR1cFJlcXVlc3RJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBbcmVx
dWVzdCBzZXRDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24ucGxhdGZvcm1Db25maWd1cmF0aW9u
KCldOworICAgIFtyZXF1ZXN0IHNldFBheW1lbnRTZXR1cEZlYXR1cmVzOmZlYXR1cmVzLnBsYXRm
b3JtRmVhdHVyZXMoKV07CisKKyAgICBhdXRvIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoW3Jl
cGx5ID0gV1RGTW92ZShyZXBseSldKEJPT0wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgc3VjY2Vzc10o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlcGx5KHN1Y2Nlc3MpOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGF1dG8gcGF5bWVudFNldHVwQ29udHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NQS1BheW1lbnRTZXR1cENvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdKTsKKworQUxMT1df
TkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgorICAgIFtwYXltZW50U2V0dXBDb250cm9sbGVy
IHByZXNlbnRQYXltZW50U2V0dXBSZXF1ZXN0OnJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbjpjb21w
bGV0aW9uLmdldCgpXTsKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECit9CisKK3Zv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtRW5kQXBwbGVQYXlTZXR1cCgp
Cit7Cit9CisKKyNlbHNlIC8vIFBMQVRGT1JNKE1BQykKKwordm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMm
IGZlYXR1cmVzLCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkJlZ2luQXBw
bGVQYXlTZXR1cDo6QXN5bmNSZXBseSYmIHJlcGx5KQoreworICAgIFVJVmlld0NvbnRyb2xsZXIg
KnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IG1fcGF5bWVudENvb3JkaW5hdG9yUHJveHkubV9j
bGllbnQucGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKG1fcGF5bWVu
dENvb3JkaW5hdG9yUHJveHkpOworICAgIGlmICghcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKSB7
CisgICAgICAgIHJlcGx5KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRTZXR1cFJlcXVlc3RJbnN0
YW5jZSgpIGluaXRdKTsKKyAgICBbcmVxdWVzdCBzZXRDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24ucGxhdGZvcm1Db25maWd1cmF0aW9uKCldOworICAgIFtyZXF1ZXN0IHNldFBheW1lbnRTZXR1
cEZlYXR1cmVzOmZlYXR1cmVzLnBsYXRmb3JtRmVhdHVyZXMoKV07CisKKyAgICBhdXRvIHBheW1l
bnRTZXR1cFZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFNldHVw
Vmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFNldHVwUmVxdWVzdDpyZXF1
ZXN0LmdldCgpXSk7CisgICAgaWYgKCFwYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcikgeworICAg
ICAgICByZXBseShmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNv
bXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKCkgbXV0YWJs
ZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVwbHkgPSBXVEZNb3ZlKHJl
cGx5KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlcGx5KHRydWUpOworICAgICAgICB9KTsK
KyAgICB9KTsKKworICAgIGVuZEFwcGxlUGF5U2V0dXAoKTsKKyAgICBbcHJlc2VudGluZ1ZpZXdD
b250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjpwYXltZW50U2V0dXBWaWV3Q29udHJvbGxl
ci5nZXQoKSBhbmltYXRlZDpZRVMgY29tcGxldGlvbjpjb21wbGV0aW9uLmdldCgpXTsKKyAgICBt
X3BheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyID0gcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIu
Z2V0KCk7Cit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtRW5k
QXBwbGVQYXlTZXR1cCgpCit7CisgICAgW21fcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIgZGlz
bWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKKyAgICBtX3Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyID0gbmlsOworfQorCisjZW5kaWYgLy8gUExBVEZPUk0o
TUFDKQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEsMTkg
KzQxLDU1IEBACiAjaW1wb3J0IDxVSUtpdC9VSUZvbnQuaD4KICNlbmRpZgogCi0jaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNDb2NvYUFkZGl0aW9ucy5tbT4KLSNlbGlmIEVOQUJMRShBUFBMRV9QQVkpCiBuYW1l
c3BhY2UgSVBDIHsKLXN0YXRpYyBib29sIGZpbmlzaERlY29kaW5nKERlY29kZXImLCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIHsgcmV0dXJuIHRydWU7IH0KLXN0YXRp
YyB2b2lkIGZpbmlzaEVuY29kaW5nKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdCYpIHsgfQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNp
ZiBFTkFCTEUoQVBQTEVfUEFZKQorCitzdGF0aWMgYm9vbCBmaW5pc2hEZWNvZGluZyhEZWNvZGVy
JiBkZWNvZGVyLCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVz
dCkKK3sKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBPcHRpb25hbDxX
ZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBpbnN0YWxsbWVudENvbmZp
Z3VyYXRpb247CisgICAgZGVjb2RlciA+PiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisgICAg
aWYgKCFpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJlcXVlc3Quc2V0SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFdURk1vdmUoKmluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbikpOworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOworICAgIHJldHVybiB0
cnVlOworI2VuZGlmCiB9CisKK3N0YXRpYyB2b2lkIGZpbmlzaEVuY29kaW5nKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1
ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGVuY29kZXIg
PDwgcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKGVuY29kZXIpOworICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKICNlbmRpZgorfQog
Ci1uYW1lc3BhY2UgSVBDIHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworI2lmIEhBVkUoUEFT
U0tJVF9JTlNUQUxMTUVOVFMpCiAKLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQordm9pZCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBlbmNvZGVyIDw8IGNvbmZpZ3VyYXRpb24u
cGxhdGZvcm1Db25maWd1cmF0aW9uKCk7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudElu
c3RhbGxtZW50Q29uZmlndXJhdGlvbj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbj4oZGVjb2RlciwgUEFMOjpnZXRQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3Vy
YXRpb25DbGFzcygpKTsKKyAgICBpZiAoIWNvbmZpZ3VyYXRpb24pCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyBXVEZNb3ZlKCpjb25maWd1cmF0aW9uKSB9Owor
fQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKIAogdm9pZCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
V2ViQ29yZTo6UGF5bWVudCYgcGF5bWVudCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjU5OTIyKQorKysgU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDAwMyw2ICs0MDAzLDEwIEBACiAJCTVDNDZDMEFEMjFCNzE5OEMwMEJDNTk5MSAvKiBX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzQ2QzBBRTIxQjcxQUUyMDBCQzU5OTEgLyogX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNEI5RDhBMjEwQThDNDYwMDhGMTREMSAvKiBVbmRvT3JS
ZWRvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9PclJlZG8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDREQyNDQ2NUJGOTAwQTkzMTI0IC8qIEFw
cGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzUzRENERTI0NDY1QkY5MDBBOTMxMjQgLyogUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
NTNEQ0RGMjQ0NjVCRjkwMEE5MzEyNCAvKiBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5UGF5bWVudFNldHVwRmVh
dHVyZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDRTAyNDQ2NUJGOTAw
QTkzMTI0IC8qIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVDRUMzODIyMDk1ODMyMDBENkJCQjAgLyogRGFl
bW9uRW50cnlQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYWVtb25F
bnRyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNUNFQzM5MjIwOTU4
MzIwMEQ2QkJCMCAvKiBEYWVtb25FbnRyeVBvaW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRGFlbW9uRW50cnlQb2ludC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUM1RDIzODcyMjdBMTg5MTAwMEI5QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZp
ZWxkc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0N1c3Rv
bUhlYWRlckZpZWxkc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
MjA5LDYgKzYyMTMsMTAgQEAKIAkJCQkxQUIxRjc3NzFEMUIzMEE5MDA3QzlCRDEgLyogY29jb2Eg
Ki8sCiAJCQkJMUFCMUY3N0ExRDFCMzBBOTAwN0M5QkQxIC8qIGlvcyAqLywKIAkJCQkxQUIxRjc3
QzFEMUIzMEE5MDA3QzlCRDEgLyogbWFjICovLAorCQkJCTVDNTNEQ0RGMjQ0NjVCRjkwMEE5MzEy
NCAvKiBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmggKi8sCisJCQkJNUM1M0RDREQyNDQ2
NUJGOTAwQTkzMTI0IC8qIEFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0gKi8sCisJCQkJ
NUM1M0RDREUyNDQ2NUJGOTAwQTkzMTI0IC8qIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaCAq
LywKKwkJCQk1QzUzRENFMDI0NDY1QkY5MDBBOTMxMjQgLyogUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbi5tbSAqLywKIAkJCQkxQUIxRjc4ODFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuY3BwICovLAogCQkJCTFBQjFGNzg5MUQxQjMzNTUwMDdDOUJEMSAvKiBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oICovLAogCQkJCTFBQjFGNzhBMUQxQjMzNTUwMDdD
OUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiAqLywKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3IuY3BwCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAorI2luY2x1
ZGUgIkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCisjaW5jbHVkZSAiUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRl
ICJXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oIgpAQCAtMjIwLDYgKzIyMiwzNiBAQCBi
b29sIFdlYlBheW1lbnRDb29yZGluYXRvcjo6cmVtb3RlVUlFbmFiCiB9CiAjZW5kaWYKIAordm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmdldFNldHVwRmVhdHVyZXMoY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1
cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNl
dHVwRmVhdHVyZT4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEhBVkUoUEFTU0tJ
VF9QQVlNRU5UX1NFVFVQKQorICAgIG1fd2ViUGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpHZXRTZXR1cEZlYXR1cmVzKFBheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb24geyBjb25maWd1cmF0aW9uLCB1cmwgfSksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbmZpZ3VyYXRpb24pOwor
ICAgIFVOVVNFRF9QQVJBTSh1cmwpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisjZW5k
aWYKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmJlZ2luQXBwbGVQYXlTZXR1cChj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVh
dHVyZT4+JiYgZmVhdHVyZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisgICAgbV93
ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OkJlZ2luQXBwbGVQYXlTZXR1cChQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgY29u
ZmlndXJhdGlvbiwgdXJsIH0sIFBheW1lbnRTZXR1cEZlYXR1cmVzIHsgV1RGTW92ZShmZWF0dXJl
cykgfSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGNvbmZpZ3VyYXRpb24pOworICAgIFVOVVNFRF9QQVJBTSh1cmwpOworICAgIFVOVVNFRF9Q
QVJBTShmZWF0dXJlcyk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworI2VuZGlmCit9
CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjplbmRBcHBsZVBheVNldHVwKCkKK3sKKyNp
ZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkVuZEFwcGxlUGF5U2V0dXAoKSk7CisjZW5k
aWYKK30KKwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgJKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsMTAgQEAgcHJpdmF0ZToKIAog
ICAgIFN0cmluZyB1c2VyQWdlbnRTY3JpcHRzQmxvY2tlZEVycm9yTWVzc2FnZSgpIGNvbnN0IGZp
bmFsOwogCisgICAgdm9pZCBnZXRTZXR1cEZlYXR1cmVzKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmKT4mJikgZmluYWw7
CisgICAgdm9pZCBiZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1
cDo6Q29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBw
bGVQYXlTZXR1cEZlYXR1cmU+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBm
aW5hbDsKKyAgICB2b2lkIGVuZEFwcGxlUGF5U2V0dXAoKSBmaW5hbDsKKwogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKQEAgLTExMiwxMCArMTE2LDYgQEAgcHJp
dmF0ZToKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CiAKICAgICBPcHRpb25hbDxBdmFpbGFibGVQ
YXltZW50TmV0d29ya3NTZXQ+IG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzOwotCi0jaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQYXltZW50
Q29vcmRpbmF0b3JBZGRpdGlvbnMuaD4KLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396479</attachid>
            <date>2020-04-14 17:03:52 -0700</date>
            <delta_ts>2020-04-14 17:21:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210521-20200414170351.patch</filename>
            <type>text/plain</type>
            <size>124472</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAyMC0wNC0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgQXBw
bGVQYXkgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0byBXZWJDb3JlIGFuZCBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDUyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgT25seSA0IG1pbm9yIG1v
ZGlmaWNhdGlvbnMgd2VyZSBuZWNlc3NhcnksIGFzIGZvbGxvd3M6CisKKyAgICAgICAgMS4gUGF5
bWVudFNldHVwRmVhdHVyZXMncyBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1
cmUgKj4+IHdhcyBjaGFuZ2VkIHRvIFJldGFpblB0cjxOU0FycmF5PiB0byB3b3JrIHdpdGggQysr
LgorICAgICAgICAyLiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucyBtZXNzYWdl
cyB3ZXJlIG1vdmVkIHRvIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LCByZW1vdmluZyB0aGUg
bmVlZCBmb3IKKyAgICAgICAgICAgdGhlIGV4dHJhIG1lc3NhZ2UgcmVjZWl2ZXIsIHRoZSBPcHRp
b25hbDxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucz4sIGFuZCB0aGUgZmluaXNo
Q29uc3RydWN0aW9uLgorICAgICAgICAzLiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCdzIG1h
Y3JvcyB0aGF0IGNvbGxpZGVkIHdpdGggb3RoZXIgbWFjcm9zIHdlcmUgcmVuYW1lZC4gIFRoaXMg
d2FzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIGRpZmZlcmVudCBzb3VyY2UgdW5pZmljYXRpb24uCisg
ICAgICAgIDQuIFBheW1lbnRTZXR1cEZlYXR1cmVzLmggd2FzIHJlbmFtZWQgdG8gQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5oIHRvIGJlIGFibGUgdG8gYnVpbGQgd2l0aCBQYXltZW50U2V0
dXBGZWF0dXJlcy5oIGluIHRoZSBTREsuCisKKyAgICAgICAgVGhlIHJlc3QgaXMganVzdCBjb3B5
IGFuZCBwYXN0ZS4KKworICAgICAgICBUaGVyZSBpc24ndCBhIGdvb2Qgd2F5IHRvIGxhbmQgdGhp
cyB3aXRob3V0IGJyZWFraW5nIHRoZSBidWlsZCB3aXRob3V0IHJlbW92aW5nIHRoZSBmaWxlcyBm
cm9tIFdlYktpdEFkZGl0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBzbyBJJ2xsIGRv
IHRoZSB0d28gYXQgdGhlIHNhbWUgdGltZSBsYXRlIGF0IG5pZ2h0IHRvIG5vdCBjYXVzZSBkaXNy
dXB0aW9uLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJl
c1N1cHBvcnRlZE5ldHdvcmtzKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5pc2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6aW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpzZXRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkRGlzY2xvc2VGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVw
OjpnZXRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OmJl
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsZVBheVNldHVwOjpzdXNwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2V0dXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGw6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpwbGF0Zm9ybUZlYXR1cmUg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0
dXJlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpzdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6c3VwcG9y
dHNJbnN0YWxsbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZl
YXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGw6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpiZWdpbkFwcGxlUGF5U2V0dXAp
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjplbmRBcHBsZVBh
eVNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
RGVjaW1hbE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUZlYXR1cmVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOjpQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmg6CisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5p
c2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRN
ZXRob2RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaENvbnZlcnRpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRH
cm91cElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVu
dFNlc3Npb25FcnJvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEVycm9y
KToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVx
dWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpyZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
dFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlz
bWlzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0Q2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2F0Y2hkb2dUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bWVyRmlyZWQpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dl
YkNvcmVBZGRpdGlvbnMubW06CisKIDIwMjAtMDQtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQZXJzaXN0ZW50Q29kZXJzIHNob3VsZCB1
c2UgbW9kZXJuIGRlY29kaW5nIHN5bnRheApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgSlNfQklORElOR19JRExTID0g
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb2RlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlMaW5lSXRlbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnQuaWRsIFwKQEAgLTExOCw2ICsxMTksOSBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVz
dEJhc2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bkVycm9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXAuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kLmlkbCBcCkBA
IC0xMjU1LDggKzEyNTksNiBAQCB2cGF0aCAlLmluICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9T
RUFSCiBBRERJVElPTkFMX0VWRU5UX05BTUVTID0KIEFERElUSU9OQUxfRVZFTlRfVEFSR0VUX0ZB
Q1RPUlkgPQogCi0taW5jbHVkZSBXZWJDb3JlRGVyaXZlZFNvdXJjZXNBZGRpdGlvbnMubWFrZQot
CiBKU19CSU5ESU5HX0lETFMgKz0gJChBRERJVElPTkFMX0JJTkRJTkdfSURMUykKIAogYWxsIDog
JChBRERJVElPTkFMX0JJTkRJTkdfSURMUzolLmlkbD1KUyUuaCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTkzLDYgKzU5Myw4IEBAIFdITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlS
ZXF1ZXN0QmFzZS5jcHAKKyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCisg
ICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQogICAgIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwCkBAIC02MDAsNiArNjAyLDcgQEAgV0hM
U0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmNwcAorICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbi5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0
b3IubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcAogCkBAIC02MTgs
NiArNjIxLDcgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5RXJyb3IuY3BwCiAgICAgSlNBcHBsZVBheUVycm9yQ29kZS5jcHAKICAgICBKU0FwcGxl
UGF5RXJyb3JDb250YWN0RmllbGQuY3BwCisgICAgSlNBcHBsZVBheUluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5jcHAKICAgICBKU0FwcGxlUGF5TGluZUl0ZW0uY3BwCiAgICAgSlNBcHBsZVBheU1l
cmNoYW50Q2FwYWJpbGl0eS5jcHAKICAgICBKU0FwcGxlUGF5TW9kaWZpZXIuY3BwCkBAIC02MzUs
NiArNjM5LDkgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5UmVxdWVzdEJhc2UuY3BwCiAgICAgSlNBcHBsZVBheVNlc3Npb24uY3BwCiAgICAgSlNB
cHBsZVBheVNlc3Npb25FcnJvci5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXAuY3BwCisgICAgSlNB
cHBsZVBheVNldHVwRmVhdHVyZS5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5j
cHAKICAgICBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAKICAgICBK
U0FwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLmNwcAogICAgIEpTQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFM
TE1FTlRTKQorCisjaW5jbHVkZSAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVh
dHVyZVR5cGUgZmVhdHVyZVR5cGUgeyBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlQ2Fy
ZCB9OworICAgIFN0cmluZyBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhOworICAgIFN0cmluZyBvcGVu
VG9CdXlUaHJlc2hvbGRBbW91bnQ7CisgICAgU3RyaW5nIGJpbmRpbmdUb3RhbEFtb3VudDsKKyAg
ICBTdHJpbmcgY3VycmVuY3lDb2RlOworICAgIFN0cmluZyBtZXJjaGFudElkZW50aWZpZXI7Cisg
ICAgU3RyaW5nIHJlZmVycmVySWRlbnRpZmllcjsKKyAgICBib29sIGlzSW5TdG9yZVB1cmNoYXNl
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50
Q29uZmlndXJhdGlvbi5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1B
UFBMRV9QQVlfSU5TVEFMTE1FTlRTLAorXSBkaWN0aW9uYXJ5IEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgZmVhdHVyZVR5cGUg
PSAiYXBwbGVDYXJkIjsKKyAgICBET01TdHJpbmcgbWVyY2hhbmRpc2luZ0ltYWdlRGF0YTsKKyAg
ICBET01TdHJpbmcgb3BlblRvQnV5VGhyZXNob2xkQW1vdW50OworICAgIERPTVN0cmluZyBiaW5k
aW5nVG90YWxBbW91bnQ7CisgICAgRE9NU3RyaW5nIGN1cnJlbmN5Q29kZTsKKyAgICBET01TdHJp
bmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgIERPTVN0cmluZyByZWZlcnJlcklkZW50aWZpZXI7
CisgICAgYm9vbGVhbiBpc0luU3RvcmVQdXJjaGFzZTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmgJKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50Q29udGFjdC5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudE1ldGhvZC5oIgogCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBw
bGVQYXlQYXltZW50QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50IHsKQEAgLTQ2LDExICs0Miw3IEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnQgewogICAgIFRva2VuIHRva2VuOwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5
bWVudENvbnRhY3Q+IGJpbGxpbmdDb250YWN0OwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVu
dENvbnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsKLQotI2lmIGRlZmluZWQoQVBQTEVQQVlQQVlNRU5U
X0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBB
WU1FTlRfQURESVRJT05TCi0jZW5kaWYKKyAgICBTdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICByZXF1aXJlZCBBcHBsZVBheVBheW1lbnRUb2tl
biB0b2tlbjsKICAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IGJpbGxpbmdDb250YWN0OwogICAg
IEFwcGxlUGF5UGF5bWVudENvbnRhY3Qgc2hpcHBpbmdDb250YWN0OworICAgIFtDb25kaXRpb25h
bD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSBET01TdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiBbCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmgJKHJldmlzaW9uIDI1OTkyMikK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50UGFzcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50
TWV0aG9kQWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVt
IGNsYXNzIEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGU7CkBAIC00NiwxMSArNDIsNyBAQCBzdHJ1
Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kIHsgICAgCiAgICAgT3B0aW9uYWw8VHlwZT4gdHlwZTsK
ICAgICBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRQYXNzPiBwYXltZW50UGFzczsKICAgICBPcHRp
b25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKLQotI2lmIGRlZmlu
ZWQoQVBQTEVQQVlQQVlNRU5UTUVUSE9EX0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVE1FVEhP
RF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBBWU1FTlRNRVRIT0RfQURESVRJT05TCi0jZW5k
aWYKKyAgICBTdHJpbmcgYmluZFRva2VuOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlk
bAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRNZXRob2QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0ICszMyw1IEBA
CiAgICAgQXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZSB0eXBlOwogICAgIEFwcGxlUGF5UGF5bWVu
dFBhc3MgcGF5bWVudFBhc3M7CiAgICAgQXBwbGVQYXlQYXltZW50Q29udGFjdCBiaWxsaW5nQ29u
dGFjdDsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gRE9NU3RyaW5n
IGJpbmRUb2tlbjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSwxMiBAQAogCiAj
aW5jbHVkZSAiQXBwbGVQYXlMaW5lSXRlbS5oIgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRl
QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICBBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFs
OwogICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXM7Ci0KLSNpZiBkZWZp
bmVkKEFQUExFUEFZUEFZTUVOVE1FVEhPRFVQREFURV9BRERJVElPTlMpCi1BUFBMRVBBWVBBWU1F
TlRNRVRIT0RVUERBVEVfQURESVRJT05TCi0jdW5kZWYgQVBQTEVQQVlQQVlNRU5UTUVUSE9EVVBE
QVRFX0FERElUSU9OUwotI2VuZGlmCisgICAgU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlm
aWVyOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbAkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw0ICsyOCw1IEBACiBd
IGRpY3Rpb25hcnkgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICByZXF1aXJlZCBB
cHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsOwogICAgIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+
IG5ld0xpbmVJdGVtczsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10g
RE9NU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlmaWVyOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNl
LmNwcAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVJlcXVlc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI5
IEBACiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVJlcXVlc3RCYXNlQWRkaXRpb25z
LmNwcD4KLSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgdm9pZCBmaW5pc2hDb252
ZXJ0aW5nKEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQXBwbGVQYXlSZXF1ZXN0QmFz
ZSYpIHsgfQotc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1bnNpZ25lZCwg
Y29uc3QgQXBwbGVQYXlSZXF1ZXN0QmFzZSYpIHsgcmV0dXJuIHRydWU7IH0KLX0KKworc3RhdGlj
IHZvaWQgZmluaXNoQ29udmVydGluZyhBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVz
dWx0LCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9Q
QVlfSU5TVEFMTE1FTlRTKQorICAgIGlmIChyZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlv
bikKKyAgICAgICAgcmVzdWx0LnNldEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihXVEZNb3ZlKCpy
ZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAjZW5kaWYKK30KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1
bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIHJldHVybiB2ZXJzaW9uIDwg
OCB8fCAhcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTSh2ZXJzaW9uKTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CisgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKK30KIAogc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiBj
b252ZXJ0QW5kVmFsaWRhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCB2ZXJzaW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkTmV0d29ya3MsIGNvbnN0IFBheW1lbnRDb29y
ZGluYXRvciYgcGF5bWVudENvb3JkaW5hdG9yKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1
ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMTAgQEAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiQXBwbGVQYXlDb250YWN0RmllbGQuaCIKKyNpbmNsdWRl
ICJBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFwcGxlUGF5
TWVyY2hhbnRDYXBhYmlsaXR5LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50Q29udGFjdC5o
IgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlv
bnMvQXBwbGVQYXlSZXF1ZXN0QmFzZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC01NCw5ICs1MSw4IEBAIHN0cnVjdCBBcHBs
ZVBheVJlcXVlc3RCYXNlIHsKICAgICBTdHJpbmcgYXBwbGljYXRpb25EYXRhOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHN1cHBvcnRlZENvdW50cmllczsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlSRVFV
RVNUQkFTRV9BRERJVElPTlMpCi1BUFBMRVBBWVJFUVVFU1RCQVNFX0FERElUSU9OUwotI3VuZGVm
IEFQUExFUEFZUkVRVUVTVEJBU0VfQURESVRJT05TCisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNU
QUxMTUVOVFMpCisgICAgT3B0aW9uYWw8QXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNSArNjUsMTcgQEAKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBs
ZVBheVNlc3Npb25BZGRpdGlvbnMuY3BwPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0
YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUGF5bWVudE1ldGhvZFVwZGF0ZSYsIEFwcGxlUGF5
UGF5bWVudE1ldGhvZFVwZGF0ZSYmKSB7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBheW1lbnRNZXRob2RVcGRhdGUmIGNv
bnZlcnRlZFVwZGF0ZSwgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlJiYgdXBkYXRlKQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGNvbnZlcnRlZFVwZGF0ZS5z
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcih1cGRhdGUuaW5zdGFsbG1lbnRHcm91cElkZW50
aWZpZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udmVydGVkVXBkYXRlKTsKKyAgICBV
TlVTRURfUEFSQU0odXBkYXRlKTsKKyNlbmRpZgorfQogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXBwbGVQYXlTZXNzaW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
NCArMjgsMTEgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiUGF5bWVudENv
bnRhY3QuaCIKKyNpbmNsdWRlICJQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
LSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3RB
ZGRpdGlvbnMuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CkBAIC0xNDEsOSArMTM4LDkgQEAgcHVibGljOgog
ICAgIFJlcXVlc3RlciByZXF1ZXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQog
ICAgIHZvaWQgc2V0UmVxdWVzdGVyKFJlcXVlc3RlciByZXF1ZXN0ZXIpIHsgbV9yZXF1ZXN0ZXIg
PSByZXF1ZXN0ZXI7IH0KIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNTSU9OUEFZTUVOVFJFUVVF
U1RfUFVCTElDX0FERElUSU9OUykKLUFQUExFUEFZU0VTU0lPTlBBWU1FTlRSRVFVRVNUX1BVQkxJ
Q19BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVNFU1NJT05QQVlNRU5UUkVRVUVTVF9QVUJMSUNf
QURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICBjb25zdCBQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uJiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2luc3RhbGxtZW50Q29uZmlndXJhdGlvbjsgfQorICAgIHZvaWQgc2V0
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24m
JiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pIHsgbV9pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24g
PSBXVEZNb3ZlKGluc3RhbGxtZW50Q29uZmlndXJhdGlvbik7IH0KICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtMTcyLDkgKzE2OSw4IEBAIHByaXZhdGU6CiAKICAgICBSZXF1ZXN0ZXIgbV9yZXF1ZXN0
ZXIgeyBSZXF1ZXN0ZXI6OkFwcGxlUGF5SlMgfTsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNT
SU9OUEFZTUVOVFJFUVVFU1RfUFJJVkFURV9BRERJVElPTlMpCi1BUFBMRVBBWVNFU1NJT05QQVlN
RU5UUkVRVUVTVF9QUklWQVRFX0FERElUSU9OUwotI3VuZGVmIEFQUExFUEFZU0VTU0lPTlBBWU1F
TlRSRVFVRVNUX1BSSVZBVEVfQURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5U
UykKKyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIG1faW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBcHBsZVBheVNldHVwLmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQor
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiUGF5bWVudFNlc3Npb24uaCIKKyNpbmNsdWRlICJQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgYm9vbCBzaG91bGREaXNjbG9zZUZlYXR1cmVzKERvY3VtZW50JiBkb2N1bWVudCkKK3sK
KyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpOworICAgIGlmICghcGFnZSB8fCBwYWdl
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gZG9jdW1lbnQuc2V0dGluZ3MoKS5hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxs
b3dlZCgpOworfQorCit2b2lkIEFwcGxlUGF5U2V0dXA6OmdldFNldHVwRmVhdHVyZXMoRG9jdW1l
bnQmIGRvY3VtZW50LCBTZXR1cEZlYXR1cmVzUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgYXV0
byBjYW5DYWxsID0gUGF5bWVudFNlc3Npb246OmNhbkNyZWF0ZVNlc3Npb24oZG9jdW1lbnQpOwor
ICAgIGlmIChjYW5DYWxsLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2Uuc2V0dGxl
KGNhbkNhbGwucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkgewor
ICAgICAgICBwcm9taXNlLnNldHRsZShFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJlc29sdmUgd2l0aCBhbiBlbXB0eSBz
ZXF1ZW5jZSBvZiBmZWF0dXJlcyBpZiBBcHBsZSBQYXkgY2FwYWJpbGl0eSBkaXNjbG9zdXJlIGlz
IG5vdCBhbGxvd2VkLgorICAgIGlmICghc2hvdWxkRGlzY2xvc2VGZWF0dXJlcyhkb2N1bWVudCkp
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX3NldHVwRmVhdHVyZXNQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKworICAg
IHBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLmNsaWVudCgpLmdldFNldHVwRmVhdHVyZXMobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShWZWN0b3I8UmVmPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4mJiBzZXR1cEZlYXR1cmVzKSB7CisgICAgICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3NldHVwRmVhdHVyZXNQcm9taXNlLCBXVEY6
Om51bGxvcHQpLT5zZXR0bGUoV1RGTW92ZShzZXR1cEZlYXR1cmVzKSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgQXBwbGVQYXlTZXR1cDo6YmVnaW4oRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0b3I8UmVm
UHRyPEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcywgQmVnaW5Qcm9taXNlJiYgcHJv
bWlzZSkKK3sKKyAgICBhdXRvIGNhbkNhbGwgPSBQYXltZW50U2Vzc2lvbjo6Y2FuQ3JlYXRlU2Vz
c2lvbihkb2N1bWVudCk7CisgICAgaWYgKGNhbkNhbGwuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoY2FuQ2FsbC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yLCAiTXVzdCBjYWxsIEFwcGxlUGF5U2V0dXAuYmVnaW4gZnJvbSBhIHVz
ZXIgZ2VzdHVyZSBoYW5kbGVyLiIgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIHBy
b21pc2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fYmVnaW5Qcm9taXNlKSB7CisgICAgICAgIHByb21p
c2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9iZWdpblByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAg
IG1fcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7CisKKyAgICBw
YWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5iZWdpbkFwcGxlUGF5U2V0dXAobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgV1RGTW92ZShmZWF0dXJlcyksIFt0aGlzXShi
b29sIHJlc3VsdCkgeworICAgICAgICBpZiAobV9iZWdpblByb21pc2UpCisgICAgICAgICAgICBz
dGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUocmVzdWx0
KTsKKyAgICB9KTsKK30KKworQXBwbGVQYXlTZXR1cDo6QXBwbGVQYXlTZXR1cChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQoreworICAgIHN1c3BlbmRJZk5lZWRlZCgpOworfQorCit2b2lk
IEFwcGxlUGF5U2V0dXA6OnN0b3AoKQoreworICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UsIFdURjo6bnVs
bG9wdCktPnNldHRsZShFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworCisgICAgaWYgKG1fYmVn
aW5Qcm9taXNlKQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51
bGxvcHQpLT5zZXR0bGUoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKKworICAgIGlmIChhdXRv
IHBhZ2UgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucGFn
ZSgpKQorICAgICAgICBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5lbmRBcHBs
ZVBheVNldHVwKCk7CisKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgQXBwbGVQYXlTZXR1cDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIHN0
b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQ
UExFX1BBWV9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXR1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTZXR1cC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VU
VVApCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2ZURPTU9iamVjdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSlNET01Qcm9taXNlRGVmZXJyZWQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEFwcGxlUGF5U2V0dXBGZWF0dXJlOworY2xhc3MgRGVmZXJyZWRQcm9taXNlOworY2xhc3MgRG9j
dW1lbnQ7CisKK2NsYXNzIEFwcGxlUGF5U2V0dXAgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBw
dWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwPiB7CitwdWJsaWM6CisgICAgc3RydWN0IENv
bmZpZ3VyYXRpb24geworICAgICAgICBTdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgICAg
ICBTdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgc2lnbmF0dXJlOwor
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBzaWduZWRGaWVsZHM7CisgICAgfTsKKworICAgIHN0YXRp
YyBSZWY8QXBwbGVQYXlTZXR1cD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXBwbGVQYXlTZXR1cChjb250ZXh0LCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKSk7CisgICAgfQorCisgICAgdXNpbmcgU2V0dXBGZWF0dXJlc1Byb21pc2UgPSBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4+OworICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhEb2N1bWVudCYsIFNldHVwRmVhdHVyZXNQ
cm9taXNlJiYpOworCisgICAgdXNpbmcgQmVnaW5Qcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4+OworICAgIHZvaWQgYmVnaW4oRG9jdW1lbnQmLCBWZWN0b3I8UmVmUHRyPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4mJiwgQmVnaW5Qcm9taXNlJiYpOworCitwcml2YXRlOgorICAg
IEFwcGxlUGF5U2V0dXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENvbmZpZ3VyYXRpb24mJik7
CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkFwcGxlUGF5U2V0dXAiOyB9CisgICAgdm9p
ZCBzdG9wKCkgZmluYWw7CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZp
bmFsOworCisgICAgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgT3B0aW9uYWw8
U2V0dXBGZWF0dXJlc1Byb21pc2U+IG1fc2V0dXBGZWF0dXJlc1Byb21pc2U7CisgICAgT3B0aW9u
YWw8QmVnaW5Qcm9taXNlPiBtX2JlZ2luUHJvbWlzZTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2
aXR5PEFwcGxlUGF5U2V0dXA+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGwJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNldHVwLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKK10gZGljdGlvbmFyeSBBcHBsZVBh
eVNldHVwQ29uZmlndXJhdGlvbiB7CisgICAgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsK
KyAgICBET01TdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgIERPTVN0cmluZyBzaWduYXR1
cmU7CisgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBzaWduZWRGaWVsZHM7Cit9OworCitbCisgICAg
QWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKKyAgICBD
b25zdHJ1Y3RvcihBcHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSwKKyAg
ICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgRW5hYmxl
ZEJ5U2V0dGluZz1BcHBsZVBheSwKKyAgICBTZWN1cmVDb250ZXh0LAorXSBpbnRlcmZhY2UgQXBw
bGVQYXlTZXR1cCB7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNlPHNlcXVlbmNlPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4gZ2V0U2V0dXBGZWF0dXJlcygpOworICAgIFtDYWxsV2l0aD1E
b2N1bWVudF0gUHJvbWlzZTxib29sZWFuPiBiZWdpbihzZXF1ZW5jZTxBcHBsZVBheVNldHVwRmVh
dHVyZT4gc2V0dXBGZWF0dXJlcyk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1Mg
UEtQYXltZW50U2V0dXBGZWF0dXJlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xh
c3MgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIDogdWludDhfdDsKKworY2xhc3MgQXBwbGVQYXlT
ZXR1cEZlYXR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwRmVhdHVyZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+IGNyZWF0ZShQS1Bh
eW1lbnRTZXR1cEZlYXR1cmUgKmZlYXR1cmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBcHBsZVBheVNldHVwRmVhdHVyZShmZWF0dXJlKSk7CisgICAgfQorCisgICAgQXBw
bGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGUoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgU3Rh
dGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5zdXBwb3J0ZWQsCisgICAgICAgIFN1cHBvcnRlZCwK
KyAgICAgICAgU3VwcGxlbWVudGFyeVN1cHBvcnRlZCwKKyAgICAgICAgQ29tcGxldGVkLAorICAg
IH07CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKKworICAgIFBLUGF5bWVudFNldHVwRmVhdHVy
ZSAqcGxhdGZvcm1GZWF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlLmdldCgpOyB9CisK
KyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBib29sIHN1cHBvcnRzSW5z
dGFsbG1lbnRzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBBcHBsZVBheVNldHVwRmVhdHVyZShQS1BheW1lbnRTZXR1cEZlYXR1cmUgKik7
CisKKyAgICBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBGZWF0dXJlPiBtX2ZlYXR1cmU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1NF
VFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFs
PUFQUExFX1BBWV9TRVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVN0YXRlIHsKKyAg
ICAidW5zdXBwb3J0ZWQiLAorICAgICJzdXBwb3J0ZWQiLAorICAgICJzdXBwbGVtZW50YXJ5U3Vw
cG9ydGVkIiwKKyAgICAiY29tcGxldGVkIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPUFQUExF
X1BBWV9TRVRVUCwKKyAgICBFbmFibGVkQnlTZXR0aW5nPUFwcGxlUGF5LAorICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCisgICAgU2VjdXJlQ29udGV4dCwKK10gaW50ZXJmYWNlIEFwcGxl
UGF5U2V0dXBGZWF0dXJlIHsKKyAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1
dGUgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGU7CisgICAgW0NhY2hlZEF0dHJpYnV0ZV0g
cmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5U2V0dXBGZWF0dXJlU3RhdGUgc3RhdGU7CisgICAg
W0NhY2hlZEF0dHJpYnV0ZSwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNJbnN0YWxsbWVudHM7Cit9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXBGZWF0dXJlLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBcHBs
ZVBheVNldHVwRmVhdHVyZS5oIgorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworI2lt
cG9ydCAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW1wb3J0ICJQYXNzS2l0U1BJQWRk
aXRpb25zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlIEFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0eXBlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKFtt
X2ZlYXR1cmUgdHlwZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVR5cGVBcHBs
ZVBheToKKyAgICAgICAgcmV0dXJuIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZTo6QXBwbGVQYXk7
CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQYXlfWDoKKyAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIHJldHVybiBBcHBsZVBheVNldHVwRmVhdHVy
ZVR5cGU6OkFwcGxlQ2FyZDsKKyAgICB9Cit9CisKK0FwcGxlUGF5U2V0dXBGZWF0dXJlOjpTdGF0
ZSBBcHBsZVBheVNldHVwRmVhdHVyZTo6c3RhdGUoKSBjb25zdAoreworICAgIHN3aXRjaCAoW21f
ZmVhdHVyZSBzdGF0ZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlVW5z
dXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6VW5zdXBwb3J0ZWQ7CisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBvcnRlZDoKKyAgICAgICAgcmV0dXJuIFN0YXRl
OjpTdXBwb3J0ZWQ7CisgICAgY2FzZSBQS1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBsZW1l
bnRhcnlTdXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6U3VwcGxlbWVudGFyeVN1cHBv
cnRlZDsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlQ29tcGxldGVkOgorICAg
ICAgICByZXR1cm4gU3RhdGU6OkNvbXBsZXRlZDsKKyAgICB9Cit9CisKKyNpZiBFTkFCTEUoQVBQ
TEVfUEFZX0lOU1RBTExNRU5UUykKK2Jvb2wgQXBwbGVQYXlTZXR1cEZlYXR1cmU6OnN1cHBvcnRz
SW5zdGFsbG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fZmVhdHVyZSBzdXBwb3J0ZWRP
cHRpb25zXSAmIFBLUGF5bWVudFNldHVwRmVhdHVyZVN1cHBvcnRlZE9wdGlvbnNJbnN0YWxsbWVu
dHM7Cit9CisjZW5kaWYKKworQXBwbGVQYXlTZXR1cEZlYXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlKFBLUGF5bWVudFNldHVwRmVhdHVyZSAqZmVhdHVyZSkKKyAgICA6IG1fZmVhdHVyZSB7IGZl
YXR1cmUgfQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoQVBQTEVfUEFZX1NFVFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1
cmVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitlbnVtIGNsYXNzIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZSA6IHVpbnQ4X3Qg
eworICAgIEFwcGxlUGF5LAorICAgIEFwcGxlQ2FyZCwKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZVR5cGUuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9T
RVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgeworICAgICJhcHBsZVBheSIs
CisgICAgImFwcGxlQ2FyZCIKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oIgorI2luY2x1ZGUgIkFwcGxlUGF5U2V0dXAuaCIKKyNpbmNsdWRlICJBcHBsZVBheVNldHVw
RmVhdHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BheW1lbnRDb29yZGlu
YXRvckNsaWVudEFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRG9jdW1lbnQ7CkBAIC03MSwxMyArNzAsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorICAgIHZpcnR1YWwgdm9pZCBnZXRTZXR1
cEZlYXR1cmVzKGNvbnN0IEFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBBcHBsZVBheVNldHVwOjpD
b25maWd1cmF0aW9uJiwgY29uc3QgVVJMJiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheVNldHVwRmVh
dHVyZT4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIGVuZEFw
cGxlUGF5U2V0dXAoKSB7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwotCi0jaWYgZGVmaW5lZChQQVlNRU5U
Q09PUkRJTkFUT1JDTElFTlRfQURESVRJT05TKQotUEFZTUVOVENPT1JESU5BVE9SQ0xJRU5UX0FE
RElUSU9OUwotI3VuZGVmIFBBWU1FTlRDT09SRElOQVRPUkNMSUVOVF9BRERJVElPTlMKLSNlbmRp
ZgogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBQS1BheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb247CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEFw
cGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBQYXltZW50SW5z
dGFsbG1lbnRDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OworICAgIFBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24oY29uc3QgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24mKTsK
KyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24+JiYpOworCisgICAgUEtQYXltZW50SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBSZXRhaW5QdHI8UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBtX2NvbmZp
Z3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RB
TExNRU5UUykKKworI2ltcG9ydCAiQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCIK
KyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0b0RlY2ltYWxOdW1iZXIoKSBpbiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLgorc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNp
bWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQoreworICAgIGlmICghYW1vdW50KQorICAg
ICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciB6ZXJvXTsKKyAgICByZXR1cm4gW05TRGVjaW1h
bE51bWJlciBkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzphbW91bnQgbG9jYWxlOkB7IE5TTG9jYWxl
RGVjaW1hbFNlcGFyYXRvciA6IEAiLiIgfV07Cit9CisKK3N0YXRpYyBQS1BheW1lbnRTZXR1cEZl
YXR1cmVUeXBlIHBsYXRmb3JtRmVhdHVyZVR5cGUoY29uc3QgQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlJiBmZWF0dXJlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVUeXBlKSB7CisgICAgY2Fz
ZSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlUGF5OgorICAgICAgICByZXR1cm4gUEtQ
YXltZW50U2V0dXBGZWF0dXJlVHlwZUFwcGxlUGF5OworICAgIGNhc2UgQXBwbGVQYXlTZXR1cEZl
YXR1cmVUeXBlOjpBcHBsZUNhcmQ6CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCisgICAgICAgIHJldHVybiBQS1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQ
YXlfWDsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgfQor
fQorCitzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4g
Y3JlYXRlUGxhdGZvcm1Db25maWd1cmF0aW9uKGNvbnN0IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uJiBjb3JlQ29uZmlndXJhdGlvbikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uSW5z
dGFuY2UoKSBpbml0XSk7CisKKyAgICBbY29uZmlndXJhdGlvbiBzZXRGZWF0dXJlOnBsYXRmb3Jt
RmVhdHVyZVR5cGUoY29yZUNvbmZpZ3VyYXRpb24uZmVhdHVyZVR5cGUpXTsKKworICAgIFtjb25m
aWd1cmF0aW9uIHNldEJpbmRpbmdUb3RhbEFtb3VudDp0b0RlY2ltYWxOdW1iZXIoY29yZUNvbmZp
Z3VyYXRpb24uYmluZGluZ1RvdGFsQW1vdW50KV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0Q3Vy
cmVuY3lDb2RlOmNvcmVDb25maWd1cmF0aW9uLmN1cnJlbmN5Q29kZV07CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0SW5TdG9yZVB1cmNoYXNlOmNvcmVDb25maWd1cmF0aW9uLmlzSW5TdG9yZVB1cmNo
YXNlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRPcGVuVG9CdXlUaHJlc2hvbGRBbW91bnQ6dG9E
ZWNpbWFsTnVtYmVyKGNvcmVDb25maWd1cmF0aW9uLm9wZW5Ub0J1eVRocmVzaG9sZEFtb3VudCld
OworCisgICAgYXV0byBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmNvcmVDb25maWd1cmF0aW9uLm1lcmNo
YW5kaXNpbmdJbWFnZURhdGEgb3B0aW9uczowXSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVy
Y2hhbmRpc2luZ0ltYWdlRGF0YTptZXJjaGFuZGlzaW5nSW1hZ2VEYXRhLmdldCgpXTsKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVF9JREVOVElGSUVSUykKKyNpZiBQTEFURk9STShNQUMp
CisgICAgaWYgKCFbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dEluc3RhbGxtZW50TWVyY2hhbnRJZGVudGlmaWVyOildIHx8ICFbY29uZmlndXJhdGlvbiByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFJlZmVycmVySWRlbnRpZmllcjopXSkKKyAgICAg
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisjZW5kaWYKKyAgICBbY29uZmlndXJhdGlvbiBzZXRJ
bnN0YWxsbWVudE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElk
ZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldFJlZmVycmVySWRlbnRpZmllcjpjb3Jl
Q29uZmlndXJhdGlvbi5yZWZlcnJlcklkZW50aWZpZXJdOworI2VuZGlmCisKKyAgICByZXR1cm4g
Y29uZmlndXJhdGlvbjsKK30KKworUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjo6UGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihjb25zdCBBcHBsZVBheUluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IGNyZWF0
ZVBsYXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSB9Cit7Cit9CisKK1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb246OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24o
UmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0
aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShjb25maWd1cmF0aW9uKSB9Cit7
Cit9CisKK1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiAqUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbjo6cGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgJ
KHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudE1ldGhvZFVwZGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsNiBAQAogI2lu
Y2x1ZGUgIkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvUGF5bWVudE1ldGhvZFVwZGF0ZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIE9C
SkNfQ0xBU1MgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTUwLDExICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVG90YWxB
bmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKCkgY29uc3Q7CiAgICAgUEtQYXltZW50UmVx
dWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnBsYXRmb3JtVXBkYXRlKCkgY29uc3Q7CiAKLSNpZiBk
ZWZpbmVkKFBBWU1FTlRNRVRIT0RVUERBVEVfUFVCTElDX0FERElUSU9OUykKLVBBWU1FTlRNRVRI
T0RVUERBVEVfUFVCTElDX0FERElUSU9OUwotI3VuZGVmIFBBWU1FTlRNRVRIT0RVUERBVEVfUFVC
TElDX0FERElUSU9OUworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisgICAgdm9pZCBz
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKICNlbmRpZgotICAg
IAorCiBwcml2YXRlOgogICAgIE9wdGlvbmFsPFRvdGFsQW5kTGluZUl0ZW1zPiBtX3RvdGFsQW5k
TGluZUl0ZW1zOwogICAgIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZT4gbV9wbGF0Zm9ybVVwZGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDE4IEBACiAjaW1wb3J0ICJQYXltZW50TWV0
aG9kLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudENvY29h
QWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyB2b2lkIGZp
bmlzaENvbnZlcnRpbmcoUEtQYXltZW50ICosIEFwcGxlUGF5UGF5bWVudCYpIHsgfQotfQotI2Vu
ZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmco
UEtQYXltZW50ICpwYXltZW50LCBBcHBsZVBheVBheW1lbnQmIHJlc3VsdCkKK3sKKyNpZiBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGlmIChOU1N0cmluZyAqaW5zdGFsbG1lbnRBdXRo
b3JpemF0aW9uVG9rZW4gPSBwYXltZW50Lmluc3RhbGxtZW50QXV0aG9yaXphdGlvblRva2VuKQor
ICAgICAgICByZXN1bHQuaW5zdGFsbG1lbnRBdXRob3JpemF0aW9uVG9rZW4gPSBpbnN0YWxsbWVu
dEF1dGhvcml6YXRpb25Ub2tlbjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBheW1lbnQpOwor
ICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOworI2VuZGlmCit9CiAKIHN0YXRpYyBBcHBsZVBheVBh
eW1lbnQ6OlRva2VuIGNvbnZlcnQoUEtQYXltZW50VG9rZW4gKnBheW1lbnRUb2tlbikKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1ldGhvZENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDE4IEBACiAjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRNZXRo
b2RUeXBlLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudE1l
dGhvZENvY29hQWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRp
YyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICosIEFwcGxlUGF5UGF5bWVu
dE1ldGhvZCYpIHsgfQotfQotI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2
b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICpwYXltZW50TWV0aG9kLCBBcHBs
ZVBheVBheW1lbnRNZXRob2QmIHJlc3VsdCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1F
TlRTKQorICAgIGlmIChOU1N0cmluZyAqYmluZFRva2VuID0gcGF5bWVudE1ldGhvZC5iaW5kVG9r
ZW4pCisgICAgICAgIHJlc3VsdC5iaW5kVG9rZW4gPSBiaW5kVG9rZW47CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShwYXltZW50TWV0aG9kKTsKKyAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKKyNl
bmRpZgorfQogCiBzdGF0aWMgQXBwbGVQYXlQYXltZW50UGFzczo6QWN0aXZhdGlvblN0YXRlIGNv
bnZlcnQoUEtQYXltZW50UGFzc0FjdGl2YXRpb25TdGF0ZSBwYXltZW50UGFzc0FjdGl2YXRpb25T
dGF0ZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRNZXRob2RVcGRhdGVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksMTMgQEAg
UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKlBheQogICAgIHJldHVybiBtX3Bs
YXRmb3JtVXBkYXRlLmdldCgpOwogfQogCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K3ZvaWQgUGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcikKK3sKKyAgICBbbV9wbGF0
Zm9ybVVwZGF0ZSBzZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcjppbnN0YWxsbWVudEdyb3Vw
SWRlbnRpZmllcl07Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNv
Y29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTUgKzMxLDI3IEBACiAjaW1wb3J0ICJBcHBsZVBheVNlc3Npb25FcnJvci5oIgogI2ltcG9y
dCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2FB
ZGRpdGlvbnMubW0+Ci0jZWxzZQogbmFtZXNwYWNlIFdlYkNvcmUgewotc3RhdGljIE9wdGlvbmFs
PEFwcGxlUGF5U2Vzc2lvbkVycm9yPiBhZGRpdGlvbmFsRXJyb3IoTlNFcnJvciAqKSB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CitzdGF0
aWMgT3B0aW9uYWw8QXBwbGVQYXlTZXNzaW9uRXJyb3I+IGFkZGl0aW9uYWxFcnJvcihOU0Vycm9y
ICplcnJvcikKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIC8vIEZJWE1F
OiBSZXBsYWNlIHdpdGggUEtQYXltZW50RXJyb3JCaW5kVG9rZW5Vc2VySW5mb0tleSBhbmQKKyAg
ICAvLyBQS1BheW1lbnRBdXRob3JpemF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3Igd2hlbiB0
aGV5J3JlIGF2YWlsYWJsZSBpbiBhbiBTREsuCisgICAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
YmluZFRva2VuS2V5ID0gQCJQS1BheW1lbnRFcnJvckJpbmRUb2tlbiI7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBOU0ludGVnZXIgcGtQYXltZW50QXV0aG9yaXphdGlvbkZlYXR1cmVBcHBsaWNhdGlv
bkVycm9yID0gLTIwMTY7CisKKyAgICBpZiAoZXJyb3IuY29kZSAhPSBwa1BheW1lbnRBdXRob3Jp
emF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3IpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBpZCBiaW5kVG9rZW5WYWx1ZSA9IGVycm9yLnVzZXJJbmZvW2JpbmRUb2tlbktl
eV07CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighYmluZFRv
a2VuVmFsdWUgfHwgW2JpbmRUb2tlblZhbHVlIGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3Nd
KTsKKyAgICByZXR1cm4gQXBwbGVQYXlTZXNzaW9uRXJyb3IgeyAiZmVhdHVyZUFwcGxpY2F0aW9u
RXJyb3IiX3MsIHsgeyAiYmluZFRva2VuIl9zLCAoTlNTdHJpbmcgKiliaW5kVG9rZW5WYWx1ZSB9
IH0gfTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworI2VuZGlmCit9CiAKIFBheW1lbnRTZXNzaW9uRXJyb3I6OlBheW1lbnRTZXNzaW9u
RXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+JiYgZXJyb3IpCiAgICAgOiBtX3BsYXRmb3JtRXJyb3Ig
eyBXVEZNb3ZlKGVycm9yKSB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVJlcXVlc3Qu
aWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDQgKzI4LDUgQEAKIF0gZGljdGlvbmFyeSBBcHBsZVBheVJlcXVlc3QgOiBBcHBsZVBheVJlcXVl
c3RCYXNlIHsKICAgICByZXF1aXJlZCB1bnNpZ25lZCBsb25nIHZlcnNpb247CiAgICAgcmVxdWly
ZWQgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVf
UEFZX0lOU1RBTExNRU5UU10gQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gaW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyB0YXNrRGVs
YXlJbnRlcnZhbCB7IDEwMF9tcyB9OwogCi0jdW5kZWYgTE9HSURFTlRJRklFUgotI2RlZmluZSBM
T0dJREVOVElGSUVSIF9fZnVuY19fCi0KLSN1bmRlZiBBTFdBWVNfTE9HCi0jZGVmaW5lIEFMV0FZ
U19MT0cgbG9nZ2VyKCkubG9nQWx3YXlzCisjZGVmaW5lIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUiBsb2dnZXIoKS5sb2dBbHdheXMKIAogc3RydWN0IENsaWVudFN0YXRlIHsKICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjEsMTkgKzE1NywxOSBAQCB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpCiAgICAgaWYgKG1fbW9ja1BpY2tl
ckVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18pOwogICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOwogfQogCiB2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3Rh
dGUpCiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwogICAgIG1vY2tQaWNrZXIoKS5zZXRTdGF0ZShu
YW1lLCBzdGF0ZSk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQogewotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19f
KTsKICAgICBtb2NrUGlja2VyKCkuZGlzbWlzc1BvcHVwKCk7CiB9CiAKQEAgLTIwOCw3ICsyMDQs
NyBAQCB1aW50NjRfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5CiAgICAgaWYgKGlu
ZGV4ICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgY29udGV4dElkKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18sIGNvbnRleHRJZCk7CiAgICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQobWFrZVVu
aXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKIAogICAgIGlmIChtX2V4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJnZXQpCkBAIC0yMjQsNyAr
MjIwLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YgogICAgIGlm
IChpbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CisgICAgQUxXQVlTX0xP
R19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQo
KSk7CiAKICAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpbmRleCk7CiAgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRz
Q29uZmlndXJhdGlvblRhc2spOwpAQCAtMjM3LDcgKzIzMyw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGwKIAogICAgIGZvciAoc2l6ZV90IGkgPSBtX2NsaWVudFN0
YXRlLnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICBpZiAoJm1fY2xpZW50U3RhdGVbaSAt
IDFdLT5jbGllbnQgPT0gJmNsaWVudCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBtX2NsaWVudFN0YXRlW2kgLSAxXS5nZXQoKSk7CisgICAgICAgICAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaSAtIDFdLmdl
dCgpKTsKICAgICAgICAgICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGkgLSAxKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTI1Nyw3ICsyNTMsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNob3dQbGF5YmFjCiAgICAgICAgIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2VyID0g
c3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1BpY2tlcjsKICAgICB9CiAKLSAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsKKyAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdl
dCgpKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlUm91dGUgPSBmbGFnc0FyZVNldChtX2NsaWVudFN0
YXRlW2luZGV4XS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZp
Y2UpOwogICAgIHRhcmdldFBpY2tlcigpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihGbG9hdFJl
Y3QocmVjdCksIGhhc0FjdGl2ZVJvdXRlLCB1c2VEYXJrQXBwZWFyYW5jZSk7CkBAIC0yNzUsNyAr
MjcxLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjbGllbnRTdGF0ZQogICAgIGlm
IChuZXdGbGFncyA9PSBvbGRGbGFncykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSwgIm5ldyBmbGFncyA9
ICIsIG5ld0ZsYWdzKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3IGZsYWdzID0gIiwgbmV3RmxhZ3Mp
OwogCiAgICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFncyA9IG5ld0ZsYWdzOwogCkBAIC0yOTks
MjUgKzI5NSwyNSBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoZmxhZ3NBcmVTZXQoc3RhdGUtPmZs
YWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSAmJiBmbGFnc0Fy
ZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgewotICAg
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiByZXR1cm5p
bmcgZWFybHkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBEbyBub3QgYmVnaW4gcGxheWluZyB0
byB0aGUgZGV2aWNlIHVubGVzcyBwbGF5YmFjayBoYXMganVzdCBzdGFydGVkLgogICAgIGlmICgh
ZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSB8fCBm
bGFnc0FyZVNldChvbGRGbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7Ci0g
ICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBlYXJseSwgcGxheWJh
Y2sgZGlkbid0IGp1c3Qgc3RhcnQiKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCAicmV0dXJuaW5nIGVhcmx5LCBwbGF5YmFjayBkaWRuJ3QganVzdCBz
dGFydCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBzdGF0ZSA6
IG1fY2xpZW50U3RhdGUpIHsKICAgICAgICAgaWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
ZmFsc2UpIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
Xywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChm
YWxzZSkiKTsKICAgICAgICAgc3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNT
SU9OTUFOQUdFUihfX2Z1bmNfXywgY2hhbmdlZENsaWVudFN0YXRlLmdldCgpLCAiIGNhbGxpbmcg
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICBjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAKICAgICBpZiAoaW5kZXggJiYgbV9jbGllbnRTdGF0
ZS5zaXplKCkgPiAxKQpAQCAtMzI2LDcgKzMyMiw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6Y2xpZW50U3RhdGUKIAogdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFz
QWN0aXZlUm91dGUoKSk7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVu
Y19fLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFzQWN0aXZlUm91dGUoKSk7CiAg
ICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsKICAgICBtX3RhcmdldENoYW5n
ZWQgPSB0cnVlOwogICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0NvbmZpZ3Vy
YXRpb25UYXNrKTsKQEAgLTMzNCw3ICszMzAsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNldFBsYXliYWNrCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCBhdmFpbGFibGUpOworICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgYXZhaWxhYmxlKTsKICAgICBtX2V4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlID0gYXZhaWxhYmxlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2Ns
aWVudFN0YXRlKQogICAgICAgICBzdGF0ZS0+Y2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKHN0YXRlLT5jb250ZXh0SWQsIGF2YWlsYWJsZSk7CkBAIC0zNDIsNyAr
MzM4LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpleHRlcm5hbE91dAogCiB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2Vk
KCkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIEFMV0FZU19MT0dfTUVE
SUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbV9wbGF5YmFja1RhcmdldFBpY2tlckRp
c21pc3NlZCA9IHRydWU7CiAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhUYXJnZXRDbGllbnRzQ29u
ZmlndXJhdGlvblRhc2spOwogfQpAQCAtMzc1LDcgKzM3MSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2xp
ZW50U3RhdGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0
YXRlW2ldOwogCi0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0KCks
ICIsIHJlcXVlc3RlZFBpY2tlciA9ICIsIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIpOworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAi
LCByZXF1ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKTsKIAogICAgICAg
ICBpZiAoKG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2Vk
KSAmJiBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKQogICAgICAgICAgICAgaW5kZXhPZkNsaWVudFRo
YXRSZXF1ZXN0ZWRQaWNrZXIgPSBpOwpAQCAtNDAxLDEyICszOTcsMTIgQEAgdm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5z
ZXRQbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCAqbV9wbGF5YmFja1RhcmdldC5jb3B5
UmVmKCkpOwogCiAgICAgICAgIGlmIChpICE9IGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0
IHx8ICFoYXZlQWN0aXZlUm91dGUpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dChmYWxzZSkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChmYWxzZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgZmFsc2UpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgJiYgbV9wbGF5YmFja1RhcmdldFBpY2tl
ckRpc21pc3NlZCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkIik7Cisg
ICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRl
LmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKICAg
ICAgICAgICAgIHN0YXRlLT5jbGllbnQucGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQo
c3RhdGUtPmNvbnRleHRJZCk7CiAgICAgICAgIH0KIApAQCAtNDE4LDcgKzQxNCw3IEBAIHZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBpZiAoaGF2ZUFjdGl2ZVJv
dXRlICYmIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ICE9IG5vdEZvdW5kKSB7CiAgICAg
ICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1Rh
cmdldF07CiAgICAgICAgIGlmICghZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkgewotICAgICAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0KHRydWUpIik7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lP
Tk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC00MzMsNyArNDI5LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
Ojpjb25maWd1cmVQbAogICAgIGJvb2wgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSBmYWxzZTsK
ICAgICBib29sIGhhdmVDbGllbnRXaXRoTWVkaWEgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIHN0
YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
IHN0YXRlLmdldCgpKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBzdGF0ZS5nZXQoKSk7CiAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVBy
b2R1Y2VyOjpSZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykgewogICAgICAgICAgICAg
bW9uaXRvcmluZ1JlcXVpcmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQ1LDEw
ICs0NDEsMTAgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAg
IH0KIAogICAgIGlmIChtb25pdG9yaW5nUmVxdWlyZWQgfHwgKGhhc0F2YWlsYWJpbGl0eUxpc3Rl
bmVyICYmIGhhdmVDbGllbnRXaXRoTWVkaWEpKSB7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInN0YXJ0aW5nIG1vbml0b3JpbmciKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOwogICAgICAg
ICB0YXJnZXRQaWNrZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyBt
b25pdG9yaW5nIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXywgInN0b3BwaW5nIG1vbml0b3JpbmciKTsKICAgICAgICAgdGFyZ2V0UGlja2VyKCkuc3Rv
cE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAgICB9CiB9CkBAIC00OTAsNyArNDg2LDcg
QEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogCiAgICAgaWYgKCFt
X3BsYXliYWNrVGFyZ2V0IHx8ICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpKSB7
CiAgICAgICAgIGlmIChtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic3RvcHBpbmcgdGltZXIiKTsKKyAgICAgICAgICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVy
Iik7CiAgICAgICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9OwogICAgICAg
ICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKICAgICAgICAgfQpAQCAtNTAyLDcgKzQ5OCw3
IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2EKICAgICBib29sIGRp
ZFBsYXlUb0VuZCA9IGZhbHNlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRl
KSB7CiAKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBw
bGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcGxheWVkVG9FbmQg
PSAiLCBzdGF0ZS0+cGxheWVkVG9FbmQpOwogCiAgICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZs
YWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKQog
ICAgICAgICAgICAgc3RvcFRpbWVyID0gdHJ1ZTsKQEAgLTUxMiw3ICs1MDgsNyBAQCB2b2lkIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhCiAgICAgfQogCiAgICAgaWYgKHN0b3BU
aW1lcikgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyB0aW1l
ciIpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJz
dG9wcGluZyB0aW1lciIpOwogICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9
OwogICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwogICAgIH0gZWxzZSB7CkBAIC01MjAs
NyArNTE2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogICAg
ICAgICBpZiAoaW50ZXJ2YWwgIT0gbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCB8fCAhbV93YXRj
aGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFy
dE9uZVNob3QoaW50ZXJ2YWwpOwogICAgICAgICB9Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNv
bmRzIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywg
InRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNvbmRzIik7CiAg
ICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgPSBpbnRlcnZhbDsKICAgICB9CiB9CkBA
IC01MzAsNyArNTI2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bQogICAgIGlmICghbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOwogICAgIHRhcmdldFBpY2tlcigpLmludmFsaWRhdGVQbGF5YmFja1Rhcmdl
dHMoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAxMDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDQtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBNb3ZlIEFwcGxlUGF5IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMgdG8g
V2ViQ29yZSBhbmQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTA1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisg
ICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsubW06CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg6CisKIDIwMjAtMDQtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZG9wdCBpbnRlcmZhY2UgQVZBdWRpb1JvdXRpbmdBcmJpdGVyIGZvciBNYWMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTggQEAgU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQS1BheW1lbgogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRNZXRob2QpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5
bWVudE1lcmNoYW50U2Vzc2lvbikKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50UmVxdWVzdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBL
UGF5bWVudFNldHVwRmVhdHVyZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50U2V0dXBSZXF1ZXN0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRTdW1tYXJ5SXRlbSkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
UEtTaGlwcGluZ01ldGhvZCkKIAorI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbikKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIpCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRM
aW5rLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L1Bhc3NLaXRTb2Z0TGluay5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDMyIEBACiAK
ICNpZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCi0jZWxzZQorCitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0
dXBDb250cm9sbGVyLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BU
SU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cEZlYXR1cmUsIFBB
TF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9S
VChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwUmVxdWVzdCwgUEFMX0VYUE9SVCkKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9P
UFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKKyNlbmRpZgorCisjZWxzZSAvLyBQTEFURk9STShNQUMp
CisKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NL
aXQsIFBBTF9FWFBPUlQpCisKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQor
U09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwRmVhdHVyZSwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50U2V0dXBSZXF1ZXN0LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cFZpZXdD
b250cm9sbGVyLCBQQUxfRVhQT1JUKQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQogI2VuZGlmCiAKKyNl
bmRpZiAvLyBQTEFURk9STShNQUMpCisKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0LCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bhc3NMaWJyYXJ5LCBQ
QUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQS1BheW1lbnQsIFBBTF9FWFBPUlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDExICs0NywyOCBAQCBXVEZfRVhURVJOX0NfRU5ECiAjaW1wb3J0IDxQYXNzS2l0L1BL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxQ
YXNzS2l0L1BLUGF5bWVudE1ldGhvZC5oPgogI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRSZXF1
ZXN0X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uX1dlYktpdC5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRTZXR1cENvbnRyb2xsZXIu
aD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxQ
YXNzS2l0Q29yZS9QS1BheW1lbnRSZXF1ZXN0U3RhdHVzX1ByaXZhdGUuaD4KICNpbXBvcnQgPFBh
c3NLaXRDb3JlL1BLUGF5bWVudFJlcXVlc3RfV2ViS2l0Lmg+CiAKKyNpZiBIQVZFKFBBU1NLSVRf
SU5TVEFMTE1FTlRTKQorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50X1ByaXZhdGUuaD4K
KyNpbXBvcnQgPFBhc3NLaXRDb3JlL1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5o
PgorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50TWV0aG9kX1ByaXZhdGUuaD4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50
QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyLmg+CisjZW5kaWYKKworI2lmIEhBVkUoUEFTU0tJVF9J
TlNUQUxMTUVOVF9JREVOVElGSUVSUykgJiYgUExBVEZPUk0oTUFDKQorQGludGVyZmFjZSBQS1Bh
eW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKFdlYktpdFNQSSkKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNTdHJpbmcgKmluc3RhbGxtZW50TWVyY2hhbnRJZGVu
dGlmaWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU1N0cmluZyAq
cmVmZXJyZXJJZGVudGlmaWVyOworQGVuZAogI2VuZGlmCiAKICNlbHNlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5MDAsNiArMTkwMCw3IEBACiAJCTVDMkIxQUVDMjIz
OTdFQkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY3OEQwQjFDMjU0MjJDMDAyNDU0NDYg
LyogUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tICovOyB9OwogCQk1QzQzMDRCMTE5MUFDOTA4MDAw
RTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRl
clRleHR1cmVMT0QuaCAqLzsgfTsKIAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhU
U2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM0MzA0QjQxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxP
RC5oICovOyB9OworCQk1QzUzRENFMTI0NDY1REZDMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
NTNEQ0NGMjQ0NjQ0OTkwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNUQyMzg1MjI3QTA2
NTIwMDBCOUJEQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUQyMzgzMjI3QTA2M0EwMDBCOUJEQSAvKiBDdXN0
b21IZWFkZXJGaWVsZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4OEQ3MUQw
RjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDOUMyREI1MjI0MUE2N0IwMDk5NkIwQiAvKiBD
b250ZW50UnVsZUxpc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzlDMkRCMzIyNDFBNjczMDA5OTZCMEIgLyogQ29udGVudFJ1bGVMaXN0
UmVzdWx0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC05MDkxLDYgKzkwOTIsMTggQEAKIAkJNUM1MzgxQjExRDg3RDQ1NzAwRTJFQkU2IC8qIFVS
TFNlYXJjaFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxTZWFy
Y2hQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1MzgxQjMxRDg3RTA4
MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUM1MzgxQjQxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0M2MjQ0NjQ0OTcwMEE5MzEyNCAv
KiBBcHBsZVBheVNldHVwLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBsZVBheVNldHVw
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQzkyNDQ2NDQ5ODAwQTkz
MTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTVDNTNEQ0NBMjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVh
dHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQg
LyogQXBwbGVQYXlTZXR1cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBs
ZVBheVNldHVwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0NDMjQ0NjQ0
OTkwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQ0UyNDQ2NDQ5
OTAwQTkzMTI0IC8qIFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDRjI0NDY0NDk5MDBBOTMxMjQg
LyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUM1M0RDRDAyNDQ2NDQ5QTAwQTkzMTI0IC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5SW5zdGFsbG1l
bnRDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0Qy
MjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxlUGF5U2V0dXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1
cmVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5U2V0dXBG
ZWF0dXJlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENENTI0NDY0
NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDRDYyNDQ2NDQ5QzAwQTkzMTI0IC8q
IEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBw
bGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUM1RDIzODMyMjdBMDYzQTAwMEI5QkRBIC8qIEN1c3RvbUhlYWRlckZpZWxkcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21IZWFkZXJGaWVsZHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1RDIzODYyMjdBMDc3QzAwMEI5QkRBIC8qIEN1c3RvbUhl
YWRlckZpZWxkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0
b21IZWFkZXJGaWVsZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzY2OEU2
NDFFN0M2QzM1MDBEMzJCM0IgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjcxLDYgKzE3Mjg0LDggQEAKIAkJCQlB
MUJCODU5QjIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaWRsICovLAogCQkJ
CUExQkI4NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmgg
Ki8sCiAJCQkJQTFCQjg1QTIyMTU5QUY1NzAwNjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JDb250YWN0
RmllbGQuaWRsICovLAorCQkJCTVDNTNEQ0QwMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheUlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0Q1MjQ0NjQ0OUIwMEE5MzEy
NCAvKiBBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwgKi8sCiAJCQkJN0M2NTc5
RTIxRTAwODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAqLywKIAkJCQk3QzY1NzlF
NDFFMDA4MkM4MDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5pZGwgKi8sCiAJCQkJQTFERjVB
QTgxRjgwNzBENDAwNThBNDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmNwcCAqLywK
QEAgLTE3MzA4LDYgKzE3MzIzLDE0IEBACiAJCQkJQTE5NTZGMUYyMzMxQThDNzAwNTdFOUQyIC8q
IEFwcGxlUGF5U2Vzc2lvbkVycm9yLmlkbCAqLywKIAkJCQkxQTU4RTg2MzFEMTlENERGMDBDMEVB
NzMgLyogQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwICovLAogCQkJCTFBNThFODY0
MUQxOUQ0REYwMEMwRUE3MyAvKiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oICovLAor
CQkJCTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNwcCAqLywKKwkJ
CQk1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICovLAorCQkJCTVD
NTNEQ0M2MjQ0NjQ0OTcwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLywKKwkJCQk1QzUz
RENDRjI0NDY0NDk5MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAqLywKKwkJCQk1
QzUzRENDQTI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaWRsICovLAor
CQkJCTVDNTNEQ0M5MjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5tbSAq
LywKKwkJCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlLmggKi8sCisJCQkJNUM1M0RDRDYyNDQ2NDQ5QzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBG
ZWF0dXJlVHlwZS5pZGwgKi8sCiAJCQkJMUE4QTY0NDcxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxl
UGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAgKi8sCiAJCQkJMUE4QTY0NDgxRDE5
RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5oICov
LAogCQkJCTFBOEE2NDQ5MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nQ29udGFj
dFNlbGVjdGVkRXZlbnQuaWRsICovLApAQCAtMTczMzEsNiArMTczNTQsOCBAQAogCQkJCUExMDRF
QzUzMjIwQTAxNzQwMENCRjY3QSAvKiBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuY3BwICovLAog
CQkJCTFBNThFODYyMUQxOUQzQkYwMEMwRUE3MyAvKiBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQu
aCAqLywKIAkJCQk3Q0Y5MzBFNjFFMDFGOUFEMDBCQUZGQkUgLyogUGF5bWVudEhlYWRlcnMuaCAq
LywKKwkJCQk1QzUzRENDRTI0NDY0NDk5MDBBOTMxMjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0NDMjQ0NjQ0OTkwMEE5MzEyNCAvKiBQYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tICovLAogCQkJCTFBRTk2QTg3MUQxQTBDRUIwMEI4
Njc2OCAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uLmggKi8sCiAJCQkJMUE4QTY0MzkxRDE5RkM1
MzAwRDBFMDBGIC8qIFBheW1lbnRNZXRob2QuaCAqLywKIAkJCQlBMURGRDUyNDIzMzQ1OTNBMDA0
MkZDREIgLyogUGF5bWVudE1ldGhvZFVwZGF0ZS5oICovLApAQCAtMjkzOTcsNiArMjk0MjIsNyBA
QAogCQkJCTFBOEE2NDU5MUQxOUZDRkMwMEQwRTAwRiAvKiBBcHBsZVBheVNlc3Npb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExOTU2RjIwMjMzMUE4QzcwMDU3RTlEMiAvKiBBcHBsZVBheVNlc3Np
b25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1OEU4NjUxRDE5RDRFQjAwQzBFQTczIC8q
IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzUz
RENFMTI0NDY1REZDMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBOEE2NDVDMUQxOUZDRkMwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nQ29u
dGFjdFNlbGVjdGVkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMkM1OUYyMjAzNUZDRDYw
MDEyMjM2QiAvKiBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0M2NTc5RTgxRTAwODMxNjAwRTNBMjdBIC8qIEFwcGxlUGF5U2hpcHBpbmdNZXRob2Qu
aCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2Vi
Q29yZUFkZGl0aW9ucy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCwzIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBZGRpdGlv
bnMubW0+Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAwODEpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIwLTA0
LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgTW92ZSBBcHBsZVBheSBjb2RlIGZyb20gV2ViS2l0QWRkaXRpb25zIHRvIFdlYkNvcmUgYW5k
IFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEwNTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6
CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzOjpwbGF0Zm9y
bUZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXlt
ZW50U2V0dXBGZWF0dXJlcy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1
cEZlYXR1cmVzOjpQYXltZW50U2V0dXBGZWF0dXJlcyk6CisgICAgICAgIChXZWJLaXQ6OlBheW1l
bnRTZXR1cEZlYXR1cmVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQYXltZW50
U2V0dXBGZWF0dXJlczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwRmVh
dHVyZXM6Om9wZXJhdG9yIFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+
PiBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FwcGxl
UGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0
Ojp0b1BsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgICog
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpmaW5pc2hDb25zdHJ1Y3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6
OnRvUGxhdGZvcm1Db25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdEFkZGl0aW9uczo6UGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmZpbmlzaENyZWF0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmdldFNldHVw
RmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
YmVnaW5BcHBsZVBheVNldHVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OmVuZEFwcGxlUGF5U2V0dXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXApOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1FbmRBcHBsZVBheVNl
dHVwKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW06CisgICAgICAgIChJUEM6OmZpbmlzaERlY29kaW5nKToKKyAgICAgICAgKElQQzo6ZmluaXNo
RW5jb2RpbmcpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+OjpkZWNvZGUp
OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0
b3I6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRp
bmF0b3I6OmJlZ2luQXBwbGVQYXlTZXR1cCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvcjo6ZW5kQXBwbGVQYXlTZXR1cCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKwogMjAyMC0wNC0xNCAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmplY3RlZEJ1bmRsZSBwYXJhbWV0
ZXJzIG9mdGVuIG5lZWQgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gY2FsbGVkIGJlZm9yZSB1bmFy
Y2hpdmluZwpJbmRleDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjU5OTIy
KQorKysgU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTAsOCArMjUwLDYgQEAgU0NSSVBUUyA9IFwKIEZSQU1FV09SS19GTEFHUyA9ICQoc2hlbGwg
ZWNobyAkKEJVSUxUX1BST0RVQ1RTX0RJUikgJChGUkFNRVdPUktfU0VBUkNIX1BBVEhTKSAkKFNZ
U1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTKSB8IHBlcmwgLWUgJ3ByaW50ICItRiAiIC4gam9p
bigiIC1GICIsIHNwbGl0KCIgIiwgPD4pKTsnKQogSEVBREVSX0ZMQUdTID0gJChzaGVsbCBlY2hv
ICQoQlVJTFRfUFJPRFVDVFNfRElSKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpICQoU1lTVEVNX0hF
QURFUl9TRUFSQ0hfUEFUSFMpIHwgcGVybCAtZSAncHJpbnQgIi1JIiAuIGpvaW4oIiAtSSIsIHNw
bGl0KCIgIiwgPD4pKTsnKQogCi0taW5jbHVkZSBXZWJLaXREZXJpdmVkU291cmNlc0FkZGl0aW9u
cy5tYWtlCi0KIC5QSE9OWSA6IGFsbAogCiBhbGwgOiBcCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOCBAQCBTaGFyZWQvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0SGFuZGxlCiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Lm1tCiBT
aGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KIAorU2hhcmVkL0FwcGxlUGF5
L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0KK1NoYXJlZC9BcHBsZVBheS9QYXltZW50
U2V0dXBDb25maWd1cmF0aW9uLm1tCiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuY3BwCiBTaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5tbQogU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUlPUy5tbQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NDEsNiArNjQxLDcgQEAgZGVmIGhlYWRlcnNfZm9y
X3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCc6IFsn
IkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5n
TW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGFnZVN0
YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlBheW1lbnRTZXR1
cEZlYXR1cmVzJzogWyciQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oIiddLAogICAgICAg
ICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9yJzogWyciR2VzdHVyZVR5cGVzLmgiJ10s
CiAgICAgICAgICdXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAg
ICAgICAgICdXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLApJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0
dXJlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxl
UGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
SEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKK09CSkNfQ0xBU1MgUEtQYXltZW50U2V0dXBG
ZWF0dXJlOworCisjaW5jbHVkZSA8V2ViQ29yZS9BcHBsZVBheVNldHVwRmVhdHVyZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1l
c3BhY2UgSVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgUGF5bWVudFNldHVwRmVhdHVyZXMgeworcHVibGljOgorICAg
IFBheW1lbnRTZXR1cEZlYXR1cmVzKFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBwbGVQYXlTZXR1
cEZlYXR1cmU+PiYmKTsKKyAgICBQYXltZW50U2V0dXBGZWF0dXJlcyhSZXRhaW5QdHI8TlNBcnJh
eT4mJiA9IG51bGxwdHIpOworCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7
CisgICAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRTZXR1cEZlYXR1cmVzPiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJik7CisKKyAgICBOU0FycmF5ICpwbGF0Zm9ybUZlYXR1cmVzKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF0Zm9ybUZlYXR1cmVzLmdldCgpOyB9CisgICAgb3BlcmF0b3IgVmVjdG9yPFJlZjxX
ZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
UmV0YWluUHRyPE5TQXJyYXk+IG1fcGxhdGZvcm1GZWF0dXJlczsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1
cmVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxl
UGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgiCisKKyNpZiBIQVZFKFBB
U1NLSVRfUEFZTUVOVF9TRVRVUCkKKworI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDb2NvYS5oIgor
I2ltcG9ydCAiRGVjb2Rlci5oIgorI2ltcG9ydCAiRW5jb2Rlci5oIgorI2ltcG9ydCA8V2ViQ29y
ZS9BcHBsZVBheVNldHVwRmVhdHVyZS5oPgorCisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNv
ZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgTlNBcnJheTxQS1BheW1l
bnRTZXR1cEZlYXR1cmUgKj4gKnRvUGxhdGZvcm1GZWF0dXJlcyhWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcykKK3sKKyAgICBOU011dGFibGVB
cnJheSAqcGxhdGZvcm1GZWF0dXJlcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0
eTpmZWF0dXJlcy5zaXplKCldOworICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IGZlYXR1cmVzKSB7
CisgICAgICAgIGlmIChmZWF0dXJlKQorICAgICAgICAgICAgW3BsYXRmb3JtRmVhdHVyZXMgYWRk
T2JqZWN0OmZlYXR1cmUtPnBsYXRmb3JtRmVhdHVyZSgpXTsKKyAgICB9CisgICAgcmV0dXJuIHBs
YXRmb3JtRmVhdHVyZXM7Cit9CisKK1BheW1lbnRTZXR1cEZlYXR1cmVzOjpQYXltZW50U2V0dXBG
ZWF0dXJlcyhWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBm
ZWF0dXJlcykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IHRvUGxhdGZvcm1GZWF0dXJlcyhX
VEZNb3ZlKGZlYXR1cmVzKSkgfQoreworfQorCitQYXltZW50U2V0dXBGZWF0dXJlczo6UGF5bWVu
dFNldHVwRmVhdHVyZXMoUmV0YWluUHRyPE5TQXJyYXk+JiYgcGxhdGZvcm1GZWF0dXJlcykKKyAg
ICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IFdURk1vdmUocGxhdGZvcm1GZWF0dXJlcykgfQorewor
fQorCit2b2lkIFBheW1lbnRTZXR1cEZlYXR1cmVzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9wbGF0Zm9ybUZlYXR1cmVzOworfQorCitP
cHRpb25hbDxQYXltZW50U2V0dXBGZWF0dXJlcz4gUGF5bWVudFNldHVwRmVhdHVyZXM6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RhdGljIE5TQXJyYXkgKmFsbG93ZWRD
bGFzc2VzOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNh
bGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBhdXRvIGFsbG93ZWQgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Ml0pOworICAgICAgICBbYWxs
b3dlZCBhZGRPYmplY3Q6W05TQXJyYXkgY2xhc3NdXTsKKyAgICAgICAgaWYgKGF1dG8gcGtQYXlt
ZW50U2V0dXBGZWF0dXJlQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVudFNldHVwRmVhdHVyZUNsYXNz
KCkpCisgICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0dXBGZWF0dXJl
Q2xhc3NdOworICAgICAgICBhbGxvd2VkQ2xhc3NlcyA9IFthbGxvd2VkIGNvcHldOworICAgIH0p
OworCisgICAgYXV0byBwbGF0Zm9ybUZlYXR1cmVzID0gSVBDOjpkZWNvZGU8TlNBcnJheTxQS1Bh
eW1lbnRTZXR1cEZlYXR1cmUgKj4+KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsKKyAgICBpZiAo
IXBsYXRmb3JtRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gUGF5bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKCpwbGF0Zm9ybUZlYXR1cmVzKSB9
OworfQorCitQYXltZW50U2V0dXBGZWF0dXJlczo6b3BlcmF0b3IgVmVjdG9yPFJlZjxXZWJDb3Jl
OjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8UmVmPFdlYkNv
cmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4gZmVhdHVyZXM7CisgICAgZmVhdHVyZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShbbV9wbGF0Zm9ybUZlYXR1cmVzIGNvdW50XSk7CisgICAgZm9yIChQ
S1BheW1lbnRTZXR1cEZlYXR1cmUgKnBsYXRmb3JtRmVhdHVyZSBpbiBtX3BsYXRmb3JtRmVhdHVy
ZXMuZ2V0KCkpCisgICAgICAgIGZlYXR1cmVzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpBcHBs
ZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKHBsYXRmb3JtRmVhdHVyZSkpOworICAgIHJldHVybiBm
ZWF0dXJlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBIQVZFKFBB
U1NLSVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW5jbHVkZSAi
QXBwbGVQYXlTZXR1cC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjsK
KworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2RlcjsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gewor
cHVibGljOgorICAgIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oKSA9IGRlZmF1bHQ7CisgICAg
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpD
b25maWd1cmF0aW9uJiwgY29uc3QgVVJMJik7CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29k
ZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bj4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworCisgICAgUEtQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRp
b24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQYXltZW50U2V0dXBDb25maWd1
cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+JiYpOworCisgICAg
UmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfUEFZ
TUVOVF9TRVRVUCkKKwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24u
bW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaCIKKworI2lm
IEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0Nv
Y29hLmgiCisjaW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVyLmgiCisjaW1wb3J0
IDx3dGYvVVJMLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKwor
QGludGVyZmFjZSBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gKFdlYktpdCkKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpzaWduZWRGaWVsZHM7CitA
ZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbj4gdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29yZUNvbmZpZ3VyYXRpb24sIGNvbnN0IFVS
TCYgdXJsKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVBBTDo6Z2V0UEtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgor
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbkluc3RhbmNlKCkgaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNl
dE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElkZW50aWZpZXJd
OworICAgIFtjb25maWd1cmF0aW9uIHNldE9yaWdpbmF0aW5nVVJMOnVybF07CisgICAgW2NvbmZp
Z3VyYXRpb24gc2V0UmVmZXJyZXJJZGVudGlmaWVyOmNvcmVDb25maWd1cmF0aW9uLnJlZmVycmVy
SWRlbnRpZmllcl07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCisgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0U2lnbmF0dXJlOmNvcmVDb25maWd1cmF0aW9uLnNpZ25hdHVyZV07CitB
TExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorCisgICAgaWYgKFtjb25maWd1cmF0aW9u
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0U2lnbmVkRmllbGRzOildKSB7CisgICAg
ICAgIE5TTXV0YWJsZUFycmF5ICpzaWduZWRGaWVsZHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlX
aXRoQ2FwYWNpdHk6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmVkRmllbGRzLnNpemUoKV07CisgICAg
ICAgIGZvciAoYXV0byYgc2lnbmVkRmllbGQgOiBjb3JlQ29uZmlndXJhdGlvbi5zaWduZWRGaWVs
ZHMpCisgICAgICAgICAgICBbc2lnbmVkRmllbGRzIGFkZE9iamVjdDpzaWduZWRGaWVsZF07Cisg
ICAgICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25lZEZpZWxkczpzaWduZWRGaWVsZHNdOworICAg
IH0KKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCitQYXltZW50U2V0dXBDb25maWd1
cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYgdXJsKQorICAg
IDogbV9jb25maWd1cmF0aW9uIHsgdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlv
biwgdXJsKSB9Cit7Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24oUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4mJiBj
b25maWd1cmF0aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShjb25maWd1cmF0
aW9uKSB9Cit7Cit9CisKK3ZvaWQgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fY29uZmlndXJh
dGlvbjsKK30KKworT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBz
dGF0aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIGF1
dG8gYWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBh
Y2l0eToxXSk7CisgICAgICAgIGlmIChhdXRvIHBrUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkNs
YXNzID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcygpKQorICAgICAg
ICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkNsYXNz
XTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxsb3dlZCBjb3B5XTsKKyAgICB9KTsKKwor
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAgIGlmICghY29uZmlndXJhdGlv
bikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29uZmlndXJhdGlvbikgfTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0QWRkaXRpb25zCisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfUEFZTUVO
VF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAJKHJldmlzaW9uIDI1OTkyMikK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNiBAQCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6V2ViUGF5bWVudENvCiAgICAgLCBtX2Nhbk1ha2VQYXltZW50c1F1ZXVlIHsg
V29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FuTWFrZVBheW1lbnRzIikgfQog
ewogICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcigqdGhp
cywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksICp0aGlzKTsKLSAgICBmaW5pc2hDb25zdHJ1Y3Rpb24oKnRoaXMpOwogfQogCiBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6fldlYlBheW1lbnRDb29yZGluYXRvclByb3h5KCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsOCArMzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW5j
bHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5QWRkaXRpb25z
Lmg+CisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisjaW5jbHVkZSA8d3RmL1dlYWtP
YmpDUHRyLmg+CitPQkpDX0NMQVNTIFBLUGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXI7CitPQkpD
X0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiAjZW5kaWYKIAogbmFtZXNwYWNlIElQQyB7CkBAIC02
Miw2ICs2NCw4IEBAIE9CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK2NsYXNzIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb247CitjbGFzcyBQYXltZW50
U2V0dXBGZWF0dXJlczsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkKQEAgLTEyNCw2ICsxMjgsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFi
b3J0UGF5bWVudFNlc3Npb24oKTsKICAgICB2b2lkIGNhbmNlbFBheW1lbnRTZXNzaW9uKCk7CiAK
KyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKyAgICB2b2lkIGdldFNldHVwRmVhdHVy
ZXMoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMmKT4mJik7CisgICAgdm9pZCBiZWdpbkFwcGxl
UGF5U2V0dXAoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYsIGNvbnN0IFBheW1lbnRT
ZXR1cEZlYXR1cmVzJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9p
ZCBlbmRBcHBsZVBheVNldHVwKCk7CisgICAgdm9pZCBwbGF0Zm9ybUJlZ2luQXBwbGVQYXlTZXR1
cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiwgY29uc3QgUGF5bWVudFNldHVwRmVh
dHVyZXMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHBsYXRm
b3JtRW5kQXBwbGVQYXlTZXR1cCgpOworI2VuZGlmCisKICAgICBib29sIGNhbkJlZ2luKCkgY29u
c3Q7CiAgICAgYm9vbCBjYW5DYW5jZWwoKSBjb25zdDsKICAgICBib29sIGNhbkNvbXBsZXRlUGF5
bWVudCgpIGNvbnN0OwpAQCAtMTkxLDEyICsyMDMsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0
cjxOU1dpbmRvdz4gbV9zaGVldFdpbmRvdzsKICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1fc2hl
ZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZlcjsKICNlbmRpZgotICAgIAotI2lmIGRlZmluZWQoV0VC
UEFZTUVOVENPT1JESU5BVE9SUFJPWFlfQURESVRJT05TKQotV0VCUEFZTUVOVENPT1JESU5BVE9S
UFJPWFlfQURESVRJT05TCi0jdW5kZWYgV0VCUEFZTUVOVENPT1JESU5BVE9SUFJPWFlfQURESVRJ
T05TCi0jZWxzZQotICAgIHZvaWQgZmluaXNoQ29uc3RydWN0aW9uKFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JikgeyB9CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFdlYWtPYmpDUHRyPFBLUGF5
bWVudFNldHVwVmlld0NvbnRyb2xsZXI+IG1fcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXI7CiAj
ZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzgs
NiArMzgsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgTgogICAg
IENvbXBsZXRlUGF5bWVudFNlc3Npb24oT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6
YXRpb25SZXN1bHQ+IHJlc3VsdCkKICAgICBBYm9ydFBheW1lbnRTZXNzaW9uKCkKICAgICBDYW5j
ZWxQYXltZW50U2Vzc2lvbigpCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisgICAg
R2V0U2V0dXBGZWF0dXJlcyhXZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbikgLT4gKFdlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMgZmVhdHVyZXMpIEFzeW5j
CisgICAgQmVnaW5BcHBsZVBheVNldHVwKFdlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uLCBXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzIGZlYXR1cmVzKSAt
PiAoYm9vbCByZXN1bHQpIEFzeW5jCisgICAgRW5kQXBwbGVQYXlTZXR1cCgpCisjZW5kaWYKIH0K
IAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9QYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0JKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24u
aCIKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW1wb3J0ICJBcmd1bWVu
dENvZGVyc0NvY29hLmgiCisjaW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVyLmgi
CisjaW1wb3J0ICJQYXNzS2l0U29mdExpbmtBZGRpdGlvbnMuaCIKKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KKworQGludGVyZmFjZSBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gKFdlYktpdCkKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpzaWduZWRGaWVs
ZHM7CitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXRBZGRpdGlvbnMgeworCitzdGF0aWMgUmV0YWlu
UHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24o
Y29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29yZUNvbmZpZ3Vy
YXRpb24sIGNvbnN0IFVSTCYgdXJsKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVBB
TDo6Z2V0UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyNlbmRpZgorCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbUEFMOjph
bGxvY1BLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkluc3RhbmNlKCkgaW5pdF0pOworICAgIFtj
b25maWd1cmF0aW9uIHNldE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJj
aGFudElkZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldE9yaWdpbmF0aW5nVVJMOnVy
bF07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UmVmZXJyZXJJZGVudGlmaWVyOmNvcmVDb25maWd1
cmF0aW9uLnJlZmVycmVySWRlbnRpZmllcl07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRT
X0JFR0lOCisgICAgW2NvbmZpZ3VyYXRpb24gc2V0U2lnbmF0dXJlOmNvcmVDb25maWd1cmF0aW9u
LnNpZ25hdHVyZV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorCisgICAgaWYg
KFtjb25maWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0U2lnbmVkRmll
bGRzOildKSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5ICpzaWduZWRGaWVsZHMgPSBbTlNNdXRh
YmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmVkRmllbGRz
LnNpemUoKV07CisgICAgICAgIGZvciAoYXV0byYgc2lnbmVkRmllbGQgOiBjb3JlQ29uZmlndXJh
dGlvbi5zaWduZWRGaWVsZHMpCisgICAgICAgICAgICBbc2lnbmVkRmllbGRzIGFkZE9iamVjdDpz
aWduZWRGaWVsZF07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25lZEZpZWxkczpzaWdu
ZWRGaWVsZHNdOworICAgIH0KKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCitQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKGNvbnN0IFdl
YkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0
IFVSTCYgdXJsKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgdG9QbGF0Zm9ybUNvbmZpZ3VyYXRp
b24oY29uZmlndXJhdGlvbiwgdXJsKSB9Cit7Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b246OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RG
TW92ZShjb25maWd1cmF0aW9uKSB9Cit7Cit9CisKK3ZvaWQgUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IG1fY29uZmlndXJhdGlvbjsKK30KKworT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbj4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBzdGF0aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7CisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBb
XSB7CisgICAgICAgIGF1dG8gYWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eToxXSk7CisgICAgICAgIGlmIChhdXRvIHBrUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbkNsYXNzID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25D
bGFzcygpKQorICAgICAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbkNsYXNzXTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxsb3dlZCBjb3B5
XTsKKyAgICB9KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAgIGlm
ICghY29uZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJl
dHVybiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29uZmlndXJhdGlvbikg
fTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0QWRkaXRpb25zCisKKyNlbmRpZiAvLyBIQVZF
KFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzcsMTYgKzM3LDE3IEBACiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1w
b3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAotI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NL
aXRTb2Z0TGluay5oPgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdl
YktpdEFkZGl0aW9ucy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hQWRkaXRpb25zLm1t
PgotI2Vsc2UKLW5hbWVzcGFjZSBXZWJLaXQgewotc3RhdGljIHZvaWQgZmluaXNoQ3JlYXRpbmco
UEtQYXltZW50UmVxdWVzdCAqLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdCYpIHsgfQotfQorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorI2ltcG9y
dCAiQVBJVUlDbGllbnQuaCIKKyNpbXBvcnQgIkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMu
aCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIldlYlBh
Z2VQcm94eS5oIgorI2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5o
IgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjZW5kaWYKIAorI2ltcG9ydCA8cGFsL2Nv
Y29hL1Bhc3NLaXRTb2Z0TGluay5oPgorCiAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCBhbnkg
cGxhdGZvcm1zIHdpdGhvdXQgLXNldFRodW1ibmFpbFVSTHM6LCBzbyB0aGlzIGNhbiBiZSByZW1v
dmVkLgogQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0ICgpCiBAcHJvcGVydHkgKG5vbmF0b21p
Yywgc3Ryb25nKSBOU1VSTCAqdGh1bWJuYWlsVVJMOwpAQCAtNjEsNiArNjIsMTkgQEAgQGludGVy
ZmFjZSBQS1BheW1lbnRSZXF1ZXN0IChTdGFnaW5nKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
c3RhdGljIHZvaWQgZmluaXNoQ3JlYXRpbmcoUEtQYXltZW50UmVxdWVzdCAqcGxhdGZvcm1SZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVz
dCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGlmIChQS1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSByZXF1ZXN0Lmluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbigpLnBsYXRmb3JtQ29uZmlndXJhdGlvbigpKSB7CisgICAgICAgIHBs
YXRmb3JtUmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uOwor
ICAgICAgICBwbGF0Zm9ybVJlcXVlc3QucmVxdWVzdFR5cGUgPSBQS1BheW1lbnRSZXF1ZXN0VHlw
ZUluc3RhbGxtZW50OworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBsYXRmb3JtUmVx
dWVzdCk7CisgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOworI2VuZGlmCit9CisKIHZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2
ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9t
YWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTI3OSw2ICsyOTMsMTA5IEBAIHZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3IKICAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXIt
PmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbih1cGRhdGUpOwogfQogCisjaWYgSEFWRShQ
QVNTS0lUX1BBWU1FTlRfU0VUVVApCisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OmdldFNldHVwRmVhdHVyZXMoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbiwgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpHZXRTZXR1cEZl
YXR1cmVzOjpBc3luY1JlcGx5JiYgcmVwbHkpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlm
ICghUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbnRyb2xsZXJDbGFzcygpKSB7CisgICAgICAgIHJl
cGx5KHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGF1dG8gY29t
cGxldGlvbiA9IG1ha2VCbG9ja1B0cihbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oTlNBcnJheTxQ
S1BheW1lbnRTZXR1cEZlYXR1cmUgKj4gKmZlYXR1cmVzKSBtdXRhYmxlIHsKKyAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZXBseSA9IFdURk1vdmUocmVwbHkpLCBmZWF0dXJlcyA9
IHJldGFpblB0cihmZWF0dXJlcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXBseShQYXlt
ZW50U2V0dXBGZWF0dXJlcyB7IFdURk1vdmUoZmVhdHVyZXMpIH0pOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgorICAgIFtQQUw6Omdl
dFBLUGF5bWVudFNldHVwQ29udHJvbGxlckNsYXNzKCkgcGF5bWVudFNldHVwRmVhdHVyZXNGb3JD
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24ucGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29tcGxl
dGlvbjpjb21wbGV0aW9uLmdldCgpXTsKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5E
Cit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmJlZ2luQXBwbGVQYXlTZXR1
cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBQ
YXltZW50U2V0dXBGZWF0dXJlcyYgZmVhdHVyZXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6QmVnaW5BcHBsZVBheVNldHVwOjpBc3luY1JlcGx5JiYgcmVwbHkpCit7Cisg
ICAgcGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXAoY29uZmlndXJhdGlvbiwgZmVhdHVyZXMsIFdU
Rk1vdmUocmVwbHkpKTsKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZW5k
QXBwbGVQYXlTZXR1cCgpCit7CisgICAgcGxhdGZvcm1FbmRBcHBsZVBheVNldHVwKCk7Cit9CisK
KyNpZiBQTEFURk9STShNQUMpCisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBs
YXRmb3JtQmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24sIGNvbnN0IFBheW1lbnRTZXR1cEZlYXR1cmVzJiBmZWF0dXJlcywgTWVz
c2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpCZWdpbkFwcGxlUGF5U2V0dXA6OkFz
eW5jUmVwbHkmJiByZXBseSkKK3sKKyAgICBpZiAoIVBBTDo6Z2V0UEtQYXltZW50U2V0dXBSZXF1
ZXN0Q2xhc3MoKSkgeworICAgICAgICByZXBseShmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0
dXBSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CisgICAgW3JlcXVlc3Qgc2V0Q29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLnBsYXRmb3JtQ29uZmlndXJhdGlvbigpXTsKKyAgICBbcmVxdWVzdCBz
ZXRQYXltZW50U2V0dXBGZWF0dXJlczpmZWF0dXJlcy5wbGF0Zm9ybUZlYXR1cmVzKCldOworCisg
ICAgYXV0byBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKFtyZXBseSA9IFdURk1vdmUocmVwbHkp
XShCT09MIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3JlcGx5ID0gV1RGTW92ZShyZXBseSksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICByZXBseShzdWNjZXNzKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBhdXRvIHBh
eW1lbnRTZXR1cENvbnRyb2xsZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBD
b250cm9sbGVySW5zdGFuY2UoKSBpbml0XSk7CisKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFS
RFNfQkVHSU4KKyAgICBbcGF5bWVudFNldHVwQ29udHJvbGxlciBwcmVzZW50UGF5bWVudFNldHVw
UmVxdWVzdDpyZXF1ZXN0LmdldCgpIGNvbXBsZXRpb246Y29tcGxldGlvbi5nZXQoKV07CitBTExP
V19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorfQorCit2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUVuZEFwcGxlUGF5U2V0dXAoKQoreworfQorCisjZWxzZSAvLyBQ
TEFURk9STShNQUMpCisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3Jt
QmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24sIGNvbnN0IFBheW1lbnRTZXR1cEZlYXR1cmVzJiBmZWF0dXJlcywgTWVzc2FnZXM6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpCZWdpbkFwcGxlUGF5U2V0dXA6OkFzeW5jUmVw
bHkmJiByZXBseSkKK3sKKyAgICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIgPSBtX3BheW1lbnRDb29yZGluYXRvclByb3h5Lm1fY2xpZW50LnBheW1lbnRDb29yZGlu
YXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihtX3BheW1lbnRDb29yZGluYXRvclByb3h5KTsK
KyAgICBpZiAoIXByZXNlbnRpbmdWaWV3Q29udHJvbGxlcikgeworICAgICAgICByZXBseShmYWxz
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5T
KFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CisgICAg
W3JlcXVlc3Qgc2V0Q29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLnBsYXRmb3JtQ29uZmlndXJh
dGlvbigpXTsKKyAgICBbcmVxdWVzdCBzZXRQYXltZW50U2V0dXBGZWF0dXJlczpmZWF0dXJlcy5w
bGF0Zm9ybUZlYXR1cmVzKCldOworCisgICAgYXV0byBwYXltZW50U2V0dXBWaWV3Q29udHJvbGxl
ciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRTZXR1cFZpZXdDb250cm9sbGVySW5zdGFu
Y2UoKSBpbml0V2l0aFBheW1lbnRTZXR1cFJlcXVlc3Q6cmVxdWVzdC5nZXQoKV0pOworICAgIGlm
ICghcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIpIHsKKyAgICAgICAgcmVwbHkoZmFsc2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjb21wbGV0aW9uID0gbWFrZUJsb2Nr
UHRyKFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICByZXBseSh0cnVlKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBlbmRB
cHBsZVBheVNldHVwKCk7CisgICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50Vmll
d0NvbnRyb2xsZXI6cGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIuZ2V0KCkgYW5pbWF0ZWQ6WUVT
IGNvbXBsZXRpb246Y29tcGxldGlvbi5nZXQoKV07CisgICAgbV9wYXltZW50U2V0dXBWaWV3Q29u
dHJvbGxlciA9IHBheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyLmdldCgpOworfQorCit2b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUVuZEFwcGxlUGF5U2V0dXAoKQorewor
ICAgIFttX3BheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyIGRpc21pc3NWaWV3Q29udHJvbGxlckFu
aW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07CisgICAgbV9wYXltZW50U2V0dXBWaWV3Q29udHJv
bGxlciA9IG5pbDsKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworI2VuZGlmIC8vIEhB
VkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQkocmV2aXNpb24g
MjU5OTIyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDE5ICs0MSw1NSBAQAogI2ltcG9ydCA8
VUlLaXQvVUlGb250Lmg+CiAjZW5kaWYKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0j
aW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2FBZGRpdGlv
bnMubW0+Ci0jZWxpZiBFTkFCTEUoQVBQTEVfUEFZKQogbmFtZXNwYWNlIElQQyB7Ci1zdGF0aWMg
Ym9vbCBmaW5pc2hEZWNvZGluZyhEZWNvZGVyJiwgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3QmKSB7IHJldHVybiB0cnVlOyB9Ci1zdGF0aWMgdm9pZCBmaW5pc2hFbmNvZGlu
ZyhFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qm
KSB7IH0KK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisjaWYgRU5BQkxFKEFQUExFX1BBWSkK
Kworc3RhdGljIGJvb2wgZmluaXNoRGVjb2RpbmcoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QpCit7CisjaWYgRU5BQkxFKEFQ
UExFX1BBWV9JTlNUQUxMTUVOVFMpCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbj4gaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworICAgIGRlY29k
ZXIgPj4gaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworICAgIGlmICghaW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXF1ZXN0LnNldEluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbihXVEZNb3ZlKCppbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pKTsK
KyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAg
IFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogfQorCitz
dGF0aWMgdm9pZCBmaW5pc2hFbmNvZGluZyhFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCkKK3sKKyNpZiBFTkFCTEUo
QVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3QuaW5zdGFsbG1l
bnRDb25maWd1cmF0aW9uKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbmNvZGVyKTsKKyAg
ICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAjZW5kaWYKK30KIAotbmFtZXNwYWNlIElQQyB7Ci11
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQog
Ci0jaWYgRU5BQkxFKEFQUExFX1BBWSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCit7CisgICAgZW5jb2RlciA8PCBjb25maWd1cmF0aW9uLnBsYXRmb3JtQ29uZmlndXJhdGlv
bigpOworfQorCitPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBJUEM6OmRlY29kZTxQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+KGRlY29kZXIs
IFBBTDo6Z2V0UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uQ2xhc3MoKSk7CisgICAg
aWYgKCFjb25maWd1cmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
cmV0dXJuIHsgV1RGTW92ZSgqY29uZmlndXJhdGlvbikgfTsKK30KKworI2VuZGlmIC8vIEhBVkUo
UEFTU0tJVF9JTlNUQUxMTUVOVFMpCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXlt
ZW50Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmIHBh
eW1lbnQpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQwMDMsNiArNDAwMywx
MCBAQAogCQk1QzQ2QzBBRDIxQjcxOThDMDBCQzU5OTEgLyogV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0NkMw
QUUyMUI3MUFFMjAwQkM1OTkxIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uSW50
ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzRCOUQ4QTIxMEE4QzQ2MDA4RjE0RDEgLyogVW5kb09yUmVkby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvT3JSZWRvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDNTNEQ0REMjQ0NjVCRjkwMEE5MzEyNCAvKiBBcHBsZVBheVBheW1lbnRTZXR1cEZl
YXR1cmVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwbGVQ
YXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUM1M0RDREUyNDQ2NUJGOTAwQTkzMTI0IC8qIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENERjI0NDY1QkY5MDBBOTMx
MjQgLyogQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0UwMjQ0NjVCRjkwMEE5MzEyNCAvKiBQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUM1Q0VDMzgyMjA5NTgzMjAwRDZCQkIwIC8qIERhZW1vbkVudHJ5UG9pbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGFlbW9uRW50cnlQb2ludC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVDRUMzOTIyMDk1ODMyMDBENkJCQjAgLyogRGFlbW9u
RW50cnlQb2ludC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERh
ZW1vbkVudHJ5UG9pbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNUQyMzg3
MjI3QTE4OTEwMDBCOUJEQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIwOSw2ICs2MjEzLDEwIEBACiAJ
CQkJMUFCMUY3NzcxRDFCMzBBOTAwN0M5QkQxIC8qIGNvY29hICovLAogCQkJCTFBQjFGNzdBMUQx
QjMwQTkwMDdDOUJEMSAvKiBpb3MgKi8sCiAJCQkJMUFCMUY3N0MxRDFCMzBBOTAwN0M5QkQxIC8q
IG1hYyAqLywKKwkJCQk1QzUzRENERjI0NDY1QkY5MDBBOTMxMjQgLyogQXBwbGVQYXlQYXltZW50
U2V0dXBGZWF0dXJlcy5oICovLAorCQkJCTVDNTNEQ0REMjQ0NjVCRjkwMEE5MzEyNCAvKiBBcHBs
ZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tICovLAorCQkJCTVDNTNEQ0RFMjQ0NjVCRjkwMEE5
MzEyNCAvKiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmggKi8sCisJCQkJNUM1M0RDRTAyNDQ2
NUJGOTAwQTkzMTI0IC8qIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0gKi8sCiAJCQkJMUFC
MUY3ODgxRDFCMzM1NTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCAq
LywKIAkJCQkxQUIxRjc4OTFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkuaCAqLywKIAkJCQkxQUIxRjc4QTFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNw
cAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDkg
QEAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKKyNpbmNsdWRlICJBcHBsZVBheVBheW1lbnRT
ZXR1cEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGF5bWVudENvb3JkaW5h
dG9yTWVzc2FnZXMuaCIKQEAgLTIyMCw2ICsyMjIsMzYgQEAgYm9vbCBXZWJQYXltZW50Q29vcmRp
bmF0b3I6OnJlbW90ZVVJRW5hYgogfQogI2VuZGlmCiAKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yOjpnZXRTZXR1cEZlYXR1cmVzKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKyAg
ICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6R2V0U2V0dXBGZWF0dXJlcyhQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsg
Y29uZmlndXJhdGlvbiwgdXJsIH0pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShjb25maWd1cmF0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0odXJs
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yOjpiZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgV2ViQ29yZTo6QXBwbGVQ
YXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmIGZlYXR1cmVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lm
IEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorICAgIG1fd2ViUGFnZS5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpCZWdpbkFwcGxlUGF5
U2V0dXAoUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiB7IGNvbmZpZ3VyYXRpb24sIHVybCB9LCBQ
YXltZW50U2V0dXBGZWF0dXJlcyB7IFdURk1vdmUoZmVhdHVyZXMpIH0pLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjb25maWd1cmF0aW9uKTsK
KyAgICBVTlVTRURfUEFSQU0odXJsKTsKKyAgICBVTlVTRURfUEFSQU0oZmVhdHVyZXMpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvcjo6ZW5kQXBwbGVQYXlTZXR1cCgpCit7CisjaWYgSEFWRShQQVNTS0lUX1BBWU1F
TlRfU0VUVVApCisgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpFbmRBcHBsZVBheVNldHVwKCkpOworI2VuZGlmCit9CisKIH0KIAogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg1LDYgKzg1LDEwIEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgdXNlckFnZW50
U2NyaXB0c0Jsb2NrZWRFcnJvck1lc3NhZ2UoKSBjb25zdCBmaW5hbDsKIAorICAgIHZvaWQgZ2V0
U2V0dXBGZWF0dXJlcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1cmF0aW9u
JiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVmPFdlYkNvcmU6
OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgYmVnaW5BcHBs
ZVBheVNldHVwKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBj
b25zdCBVUkwmLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCBlbmRB
cHBsZVBheVNldHVwKCkgZmluYWw7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IG92ZXJyaWRlOwogCkBAIC0xMTIsMTAgKzExNiw2IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZSYg
bV93ZWJQYWdlOwogCiAgICAgT3B0aW9uYWw8QXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzU2V0PiBt
X2F2YWlsYWJsZVBheW1lbnROZXR3b3JrczsKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
Ci0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViUGF5bWVudENvb3JkaW5hdG9yQWRkaXRpb25z
Lmg+Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396480</attachid>
            <date>2020-04-14 17:21:13 -0700</date>
            <delta_ts>2020-04-14 17:42:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210521-20200414172113.patch</filename>
            <type>text/plain</type>
            <size>125200</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAyMC0wNC0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgQXBw
bGVQYXkgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0byBXZWJDb3JlIGFuZCBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDUyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgT25seSA0IG1pbm9yIG1v
ZGlmaWNhdGlvbnMgd2VyZSBuZWNlc3NhcnksIGFzIGZvbGxvd3M6CisKKyAgICAgICAgMS4gUGF5
bWVudFNldHVwRmVhdHVyZXMncyBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1
cmUgKj4+IHdhcyBjaGFuZ2VkIHRvIFJldGFpblB0cjxOU0FycmF5PiB0byB3b3JrIHdpdGggQysr
LgorICAgICAgICAyLiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucyBtZXNzYWdl
cyB3ZXJlIG1vdmVkIHRvIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LCByZW1vdmluZyB0aGUg
bmVlZCBmb3IKKyAgICAgICAgICAgdGhlIGV4dHJhIG1lc3NhZ2UgcmVjZWl2ZXIsIHRoZSBPcHRp
b25hbDxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucz4sIGFuZCB0aGUgZmluaXNo
Q29uc3RydWN0aW9uLgorICAgICAgICAzLiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCdzIG1h
Y3JvcyB0aGF0IGNvbGxpZGVkIHdpdGggb3RoZXIgbWFjcm9zIHdlcmUgcmVuYW1lZC4gIFRoaXMg
d2FzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIGRpZmZlcmVudCBzb3VyY2UgdW5pZmljYXRpb24uCisg
ICAgICAgIDQuIFBheW1lbnRTZXR1cEZlYXR1cmVzLmggd2FzIHJlbmFtZWQgdG8gQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5oIHRvIGJlIGFibGUgdG8gYnVpbGQgd2l0aCBQYXltZW50U2V0
dXBGZWF0dXJlcy5oIGluIHRoZSBTREsuCisKKyAgICAgICAgVGhlIHJlc3QgaXMganVzdCBjb3B5
IGFuZCBwYXN0ZS4KKworICAgICAgICBUaGVyZSBpc24ndCBhIGdvb2Qgd2F5IHRvIGxhbmQgdGhp
cyB3aXRob3V0IGJyZWFraW5nIHRoZSBidWlsZCB3aXRob3V0IHJlbW92aW5nIHRoZSBmaWxlcyBm
cm9tIFdlYktpdEFkZGl0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBzbyBJJ2xsIGRv
IHRoZSB0d28gYXQgdGhlIHNhbWUgdGltZSBsYXRlIGF0IG5pZ2h0IHRvIG5vdCBjYXVzZSBkaXNy
dXB0aW9uLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJl
c1N1cHBvcnRlZE5ldHdvcmtzKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5pc2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6aW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpzZXRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkRGlzY2xvc2VGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVw
OjpnZXRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OmJl
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsZVBheVNldHVwOjpzdXNwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2V0dXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGw6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpwbGF0Zm9ybUZlYXR1cmUg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0
dXJlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpzdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6c3VwcG9y
dHNJbnN0YWxsbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZl
YXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGw6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpiZWdpbkFwcGxlUGF5U2V0dXAp
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjplbmRBcHBsZVBh
eVNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
RGVjaW1hbE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUZlYXR1cmVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOjpQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmg6CisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5p
c2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRN
ZXRob2RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaENvbnZlcnRpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRH
cm91cElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVu
dFNlc3Npb25FcnJvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEVycm9y
KToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVx
dWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpyZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
dFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlz
bWlzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0Q2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2F0Y2hkb2dUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bWVyRmlyZWQpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dl
YkNvcmVBZGRpdGlvbnMubW06CisKIDIwMjAtMDQtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQZXJzaXN0ZW50Q29kZXJzIHNob3VsZCB1
c2UgbW9kZXJuIGRlY29kaW5nIHN5bnRheApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgSlNfQklORElOR19JRExTID0g
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb2RlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlMaW5lSXRlbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnQuaWRsIFwKQEAgLTExOCw2ICsxMTksOSBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVz
dEJhc2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bkVycm9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXAuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kLmlkbCBcCkBA
IC0xMjU1LDggKzEyNTksNiBAQCB2cGF0aCAlLmluICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9T
RUFSCiBBRERJVElPTkFMX0VWRU5UX05BTUVTID0KIEFERElUSU9OQUxfRVZFTlRfVEFSR0VUX0ZB
Q1RPUlkgPQogCi0taW5jbHVkZSBXZWJDb3JlRGVyaXZlZFNvdXJjZXNBZGRpdGlvbnMubWFrZQot
CiBKU19CSU5ESU5HX0lETFMgKz0gJChBRERJVElPTkFMX0JJTkRJTkdfSURMUykKIAogYWxsIDog
JChBRERJVElPTkFMX0JJTkRJTkdfSURMUzolLmlkbD1KUyUuaCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTkzLDYgKzU5Myw4IEBAIFdITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlS
ZXF1ZXN0QmFzZS5jcHAKKyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCisg
ICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQogICAgIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwCkBAIC02MDAsNiArNjAyLDcgQEAgV0hM
U0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmNwcAorICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbi5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0
b3IubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcAogCkBAIC02MTgs
NiArNjIxLDcgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5RXJyb3IuY3BwCiAgICAgSlNBcHBsZVBheUVycm9yQ29kZS5jcHAKICAgICBKU0FwcGxl
UGF5RXJyb3JDb250YWN0RmllbGQuY3BwCisgICAgSlNBcHBsZVBheUluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5jcHAKICAgICBKU0FwcGxlUGF5TGluZUl0ZW0uY3BwCiAgICAgSlNBcHBsZVBheU1l
cmNoYW50Q2FwYWJpbGl0eS5jcHAKICAgICBKU0FwcGxlUGF5TW9kaWZpZXIuY3BwCkBAIC02MzUs
NiArNjM5LDkgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5UmVxdWVzdEJhc2UuY3BwCiAgICAgSlNBcHBsZVBheVNlc3Npb24uY3BwCiAgICAgSlNB
cHBsZVBheVNlc3Npb25FcnJvci5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXAuY3BwCisgICAgSlNB
cHBsZVBheVNldHVwRmVhdHVyZS5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5j
cHAKICAgICBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAKICAgICBK
U0FwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLmNwcAogICAgIEpTQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFM
TE1FTlRTKQorCisjaW5jbHVkZSAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVh
dHVyZVR5cGUgZmVhdHVyZVR5cGUgeyBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlQ2Fy
ZCB9OworICAgIFN0cmluZyBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhOworICAgIFN0cmluZyBvcGVu
VG9CdXlUaHJlc2hvbGRBbW91bnQ7CisgICAgU3RyaW5nIGJpbmRpbmdUb3RhbEFtb3VudDsKKyAg
ICBTdHJpbmcgY3VycmVuY3lDb2RlOworICAgIFN0cmluZyBtZXJjaGFudElkZW50aWZpZXI7Cisg
ICAgU3RyaW5nIHJlZmVycmVySWRlbnRpZmllcjsKKyAgICBib29sIGlzSW5TdG9yZVB1cmNoYXNl
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50
Q29uZmlndXJhdGlvbi5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1B
UFBMRV9QQVlfSU5TVEFMTE1FTlRTLAorXSBkaWN0aW9uYXJ5IEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgZmVhdHVyZVR5cGUg
PSAiYXBwbGVDYXJkIjsKKyAgICBET01TdHJpbmcgbWVyY2hhbmRpc2luZ0ltYWdlRGF0YTsKKyAg
ICBET01TdHJpbmcgb3BlblRvQnV5VGhyZXNob2xkQW1vdW50OworICAgIERPTVN0cmluZyBiaW5k
aW5nVG90YWxBbW91bnQ7CisgICAgRE9NU3RyaW5nIGN1cnJlbmN5Q29kZTsKKyAgICBET01TdHJp
bmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgIERPTVN0cmluZyByZWZlcnJlcklkZW50aWZpZXI7
CisgICAgYm9vbGVhbiBpc0luU3RvcmVQdXJjaGFzZTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmgJKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50Q29udGFjdC5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudE1ldGhvZC5oIgogCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBw
bGVQYXlQYXltZW50QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50IHsKQEAgLTQ2LDExICs0Miw3IEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnQgewogICAgIFRva2VuIHRva2VuOwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5
bWVudENvbnRhY3Q+IGJpbGxpbmdDb250YWN0OwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVu
dENvbnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsKLQotI2lmIGRlZmluZWQoQVBQTEVQQVlQQVlNRU5U
X0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBB
WU1FTlRfQURESVRJT05TCi0jZW5kaWYKKyAgICBTdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICByZXF1aXJlZCBBcHBsZVBheVBheW1lbnRUb2tl
biB0b2tlbjsKICAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IGJpbGxpbmdDb250YWN0OwogICAg
IEFwcGxlUGF5UGF5bWVudENvbnRhY3Qgc2hpcHBpbmdDb250YWN0OworICAgIFtDb25kaXRpb25h
bD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSBET01TdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiBbCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmgJKHJldmlzaW9uIDI1OTkyMikK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50UGFzcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50
TWV0aG9kQWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVt
IGNsYXNzIEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGU7CkBAIC00NiwxMSArNDIsNyBAQCBzdHJ1
Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kIHsgICAgCiAgICAgT3B0aW9uYWw8VHlwZT4gdHlwZTsK
ICAgICBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRQYXNzPiBwYXltZW50UGFzczsKICAgICBPcHRp
b25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKLQotI2lmIGRlZmlu
ZWQoQVBQTEVQQVlQQVlNRU5UTUVUSE9EX0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVE1FVEhP
RF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBBWU1FTlRNRVRIT0RfQURESVRJT05TCi0jZW5k
aWYKKyAgICBTdHJpbmcgYmluZFRva2VuOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlk
bAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRNZXRob2QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0ICszMyw1IEBA
CiAgICAgQXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZSB0eXBlOwogICAgIEFwcGxlUGF5UGF5bWVu
dFBhc3MgcGF5bWVudFBhc3M7CiAgICAgQXBwbGVQYXlQYXltZW50Q29udGFjdCBiaWxsaW5nQ29u
dGFjdDsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gRE9NU3RyaW5n
IGJpbmRUb2tlbjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSwxMiBAQAogCiAj
aW5jbHVkZSAiQXBwbGVQYXlMaW5lSXRlbS5oIgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRl
QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICBBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFs
OwogICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXM7Ci0KLSNpZiBkZWZp
bmVkKEFQUExFUEFZUEFZTUVOVE1FVEhPRFVQREFURV9BRERJVElPTlMpCi1BUFBMRVBBWVBBWU1F
TlRNRVRIT0RVUERBVEVfQURESVRJT05TCi0jdW5kZWYgQVBQTEVQQVlQQVlNRU5UTUVUSE9EVVBE
QVRFX0FERElUSU9OUwotI2VuZGlmCisgICAgU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlm
aWVyOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbAkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw0ICsyOCw1IEBACiBd
IGRpY3Rpb25hcnkgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICByZXF1aXJlZCBB
cHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsOwogICAgIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+
IG5ld0xpbmVJdGVtczsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10g
RE9NU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlmaWVyOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNl
LmNwcAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVJlcXVlc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI5
IEBACiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVJlcXVlc3RCYXNlQWRkaXRpb25z
LmNwcD4KLSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgdm9pZCBmaW5pc2hDb252
ZXJ0aW5nKEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQXBwbGVQYXlSZXF1ZXN0QmFz
ZSYpIHsgfQotc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1bnNpZ25lZCwg
Y29uc3QgQXBwbGVQYXlSZXF1ZXN0QmFzZSYpIHsgcmV0dXJuIHRydWU7IH0KLX0KKworc3RhdGlj
IHZvaWQgZmluaXNoQ29udmVydGluZyhBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVz
dWx0LCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9Q
QVlfSU5TVEFMTE1FTlRTKQorICAgIGlmIChyZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlv
bikKKyAgICAgICAgcmVzdWx0LnNldEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihXVEZNb3ZlKCpy
ZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAjZW5kaWYKK30KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1
bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIHJldHVybiB2ZXJzaW9uIDwg
OCB8fCAhcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTSh2ZXJzaW9uKTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CisgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKK30KIAogc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiBj
b252ZXJ0QW5kVmFsaWRhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCB2ZXJzaW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkTmV0d29ya3MsIGNvbnN0IFBheW1lbnRDb29y
ZGluYXRvciYgcGF5bWVudENvb3JkaW5hdG9yKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1
ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMTAgQEAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiQXBwbGVQYXlDb250YWN0RmllbGQuaCIKKyNpbmNsdWRl
ICJBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFwcGxlUGF5
TWVyY2hhbnRDYXBhYmlsaXR5LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50Q29udGFjdC5o
IgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlv
bnMvQXBwbGVQYXlSZXF1ZXN0QmFzZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC01NCw5ICs1MSw4IEBAIHN0cnVjdCBBcHBs
ZVBheVJlcXVlc3RCYXNlIHsKICAgICBTdHJpbmcgYXBwbGljYXRpb25EYXRhOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHN1cHBvcnRlZENvdW50cmllczsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlSRVFV
RVNUQkFTRV9BRERJVElPTlMpCi1BUFBMRVBBWVJFUVVFU1RCQVNFX0FERElUSU9OUwotI3VuZGVm
IEFQUExFUEFZUkVRVUVTVEJBU0VfQURESVRJT05TCisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNU
QUxMTUVOVFMpCisgICAgT3B0aW9uYWw8QXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNSArNjUsMTcgQEAKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBs
ZVBheVNlc3Npb25BZGRpdGlvbnMuY3BwPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0
YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUGF5bWVudE1ldGhvZFVwZGF0ZSYsIEFwcGxlUGF5
UGF5bWVudE1ldGhvZFVwZGF0ZSYmKSB7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBheW1lbnRNZXRob2RVcGRhdGUmIGNv
bnZlcnRlZFVwZGF0ZSwgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlJiYgdXBkYXRlKQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGNvbnZlcnRlZFVwZGF0ZS5z
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcih1cGRhdGUuaW5zdGFsbG1lbnRHcm91cElkZW50
aWZpZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udmVydGVkVXBkYXRlKTsKKyAgICBV
TlVTRURfUEFSQU0odXBkYXRlKTsKKyNlbmRpZgorfQogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXBwbGVQYXlTZXNzaW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
NCArMjgsMTEgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiUGF5bWVudENv
bnRhY3QuaCIKKyNpbmNsdWRlICJQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
LSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3RB
ZGRpdGlvbnMuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CkBAIC0xNDEsOSArMTM4LDkgQEAgcHVibGljOgog
ICAgIFJlcXVlc3RlciByZXF1ZXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQog
ICAgIHZvaWQgc2V0UmVxdWVzdGVyKFJlcXVlc3RlciByZXF1ZXN0ZXIpIHsgbV9yZXF1ZXN0ZXIg
PSByZXF1ZXN0ZXI7IH0KIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNTSU9OUEFZTUVOVFJFUVVF
U1RfUFVCTElDX0FERElUSU9OUykKLUFQUExFUEFZU0VTU0lPTlBBWU1FTlRSRVFVRVNUX1BVQkxJ
Q19BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVNFU1NJT05QQVlNRU5UUkVRVUVTVF9QVUJMSUNf
QURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICBjb25zdCBQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uJiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2luc3RhbGxtZW50Q29uZmlndXJhdGlvbjsgfQorICAgIHZvaWQgc2V0
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24m
JiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pIHsgbV9pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24g
PSBXVEZNb3ZlKGluc3RhbGxtZW50Q29uZmlndXJhdGlvbik7IH0KICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtMTcyLDkgKzE2OSw4IEBAIHByaXZhdGU6CiAKICAgICBSZXF1ZXN0ZXIgbV9yZXF1ZXN0
ZXIgeyBSZXF1ZXN0ZXI6OkFwcGxlUGF5SlMgfTsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNT
SU9OUEFZTUVOVFJFUVVFU1RfUFJJVkFURV9BRERJVElPTlMpCi1BUFBMRVBBWVNFU1NJT05QQVlN
RU5UUkVRVUVTVF9QUklWQVRFX0FERElUSU9OUwotI3VuZGVmIEFQUExFUEFZU0VTU0lPTlBBWU1F
TlRSRVFVRVNUX1BSSVZBVEVfQURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5U
UykKKyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIG1faW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBcHBsZVBheVNldHVwLmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQor
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiUGF5bWVudFNlc3Npb24uaCIKKyNpbmNsdWRlICJQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgYm9vbCBzaG91bGREaXNjbG9zZUZlYXR1cmVzKERvY3VtZW50JiBkb2N1bWVudCkKK3sK
KyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpOworICAgIGlmICghcGFnZSB8fCBwYWdl
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gZG9jdW1lbnQuc2V0dGluZ3MoKS5hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxs
b3dlZCgpOworfQorCit2b2lkIEFwcGxlUGF5U2V0dXA6OmdldFNldHVwRmVhdHVyZXMoRG9jdW1l
bnQmIGRvY3VtZW50LCBTZXR1cEZlYXR1cmVzUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgYXV0
byBjYW5DYWxsID0gUGF5bWVudFNlc3Npb246OmNhbkNyZWF0ZVNlc3Npb24oZG9jdW1lbnQpOwor
ICAgIGlmIChjYW5DYWxsLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2Uuc2V0dGxl
KGNhbkNhbGwucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkgewor
ICAgICAgICBwcm9taXNlLnNldHRsZShFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJlc29sdmUgd2l0aCBhbiBlbXB0eSBz
ZXF1ZW5jZSBvZiBmZWF0dXJlcyBpZiBBcHBsZSBQYXkgY2FwYWJpbGl0eSBkaXNjbG9zdXJlIGlz
IG5vdCBhbGxvd2VkLgorICAgIGlmICghc2hvdWxkRGlzY2xvc2VGZWF0dXJlcyhkb2N1bWVudCkp
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX3NldHVwRmVhdHVyZXNQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKworICAg
IHBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLmNsaWVudCgpLmdldFNldHVwRmVhdHVyZXMobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShWZWN0b3I8UmVmPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4mJiBzZXR1cEZlYXR1cmVzKSB7CisgICAgICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3NldHVwRmVhdHVyZXNQcm9taXNlLCBXVEY6
Om51bGxvcHQpLT5zZXR0bGUoV1RGTW92ZShzZXR1cEZlYXR1cmVzKSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgQXBwbGVQYXlTZXR1cDo6YmVnaW4oRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0b3I8UmVm
UHRyPEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcywgQmVnaW5Qcm9taXNlJiYgcHJv
bWlzZSkKK3sKKyAgICBhdXRvIGNhbkNhbGwgPSBQYXltZW50U2Vzc2lvbjo6Y2FuQ3JlYXRlU2Vz
c2lvbihkb2N1bWVudCk7CisgICAgaWYgKGNhbkNhbGwuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoY2FuQ2FsbC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yLCAiTXVzdCBjYWxsIEFwcGxlUGF5U2V0dXAuYmVnaW4gZnJvbSBhIHVz
ZXIgZ2VzdHVyZSBoYW5kbGVyLiIgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIHBy
b21pc2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fYmVnaW5Qcm9taXNlKSB7CisgICAgICAgIHByb21p
c2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9iZWdpblByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAg
IG1fcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7CisKKyAgICBw
YWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5iZWdpbkFwcGxlUGF5U2V0dXAobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgV1RGTW92ZShmZWF0dXJlcyksIFt0aGlzXShi
b29sIHJlc3VsdCkgeworICAgICAgICBpZiAobV9iZWdpblByb21pc2UpCisgICAgICAgICAgICBz
dGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUocmVzdWx0
KTsKKyAgICB9KTsKK30KKworQXBwbGVQYXlTZXR1cDo6QXBwbGVQYXlTZXR1cChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQoreworICAgIHN1c3BlbmRJZk5lZWRlZCgpOworfQorCit2b2lk
IEFwcGxlUGF5U2V0dXA6OnN0b3AoKQoreworICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UsIFdURjo6bnVs
bG9wdCktPnNldHRsZShFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworCisgICAgaWYgKG1fYmVn
aW5Qcm9taXNlKQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51
bGxvcHQpLT5zZXR0bGUoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKKworICAgIGlmIChhdXRv
IHBhZ2UgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucGFn
ZSgpKQorICAgICAgICBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5lbmRBcHBs
ZVBheVNldHVwKCk7CisKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgQXBwbGVQYXlTZXR1cDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIHN0
b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQ
UExFX1BBWV9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXR1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTZXR1cC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VU
VVApCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2ZURPTU9iamVjdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSlNET01Qcm9taXNlRGVmZXJyZWQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEFwcGxlUGF5U2V0dXBGZWF0dXJlOworY2xhc3MgRGVmZXJyZWRQcm9taXNlOworY2xhc3MgRG9j
dW1lbnQ7CisKK2NsYXNzIEFwcGxlUGF5U2V0dXAgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBw
dWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwPiB7CitwdWJsaWM6CisgICAgc3RydWN0IENv
bmZpZ3VyYXRpb24geworICAgICAgICBTdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgICAg
ICBTdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgc2lnbmF0dXJlOwor
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBzaWduZWRGaWVsZHM7CisgICAgfTsKKworICAgIHN0YXRp
YyBSZWY8QXBwbGVQYXlTZXR1cD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXBwbGVQYXlTZXR1cChjb250ZXh0LCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKSk7CisgICAgfQorCisgICAgdXNpbmcgU2V0dXBGZWF0dXJlc1Byb21pc2UgPSBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4+OworICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhEb2N1bWVudCYsIFNldHVwRmVhdHVyZXNQ
cm9taXNlJiYpOworCisgICAgdXNpbmcgQmVnaW5Qcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4+OworICAgIHZvaWQgYmVnaW4oRG9jdW1lbnQmLCBWZWN0b3I8UmVmUHRyPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4mJiwgQmVnaW5Qcm9taXNlJiYpOworCitwcml2YXRlOgorICAg
IEFwcGxlUGF5U2V0dXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENvbmZpZ3VyYXRpb24mJik7
CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkFwcGxlUGF5U2V0dXAiOyB9CisgICAgdm9p
ZCBzdG9wKCkgZmluYWw7CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZp
bmFsOworCisgICAgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgT3B0aW9uYWw8
U2V0dXBGZWF0dXJlc1Byb21pc2U+IG1fc2V0dXBGZWF0dXJlc1Byb21pc2U7CisgICAgT3B0aW9u
YWw8QmVnaW5Qcm9taXNlPiBtX2JlZ2luUHJvbWlzZTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2
aXR5PEFwcGxlUGF5U2V0dXA+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGwJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNldHVwLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKK10gZGljdGlvbmFyeSBBcHBsZVBh
eVNldHVwQ29uZmlndXJhdGlvbiB7CisgICAgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsK
KyAgICBET01TdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgIERPTVN0cmluZyBzaWduYXR1
cmU7CisgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBzaWduZWRGaWVsZHM7Cit9OworCitbCisgICAg
QWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKKyAgICBD
b25zdHJ1Y3RvcihBcHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSwKKyAg
ICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgRW5hYmxl
ZEJ5U2V0dGluZz1BcHBsZVBheSwKKyAgICBTZWN1cmVDb250ZXh0LAorXSBpbnRlcmZhY2UgQXBw
bGVQYXlTZXR1cCB7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNlPHNlcXVlbmNlPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4gZ2V0U2V0dXBGZWF0dXJlcygpOworICAgIFtDYWxsV2l0aD1E
b2N1bWVudF0gUHJvbWlzZTxib29sZWFuPiBiZWdpbihzZXF1ZW5jZTxBcHBsZVBheVNldHVwRmVh
dHVyZT4gc2V0dXBGZWF0dXJlcyk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1Mg
UEtQYXltZW50U2V0dXBGZWF0dXJlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xh
c3MgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIDogdWludDhfdDsKKworY2xhc3MgQXBwbGVQYXlT
ZXR1cEZlYXR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwRmVhdHVyZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+IGNyZWF0ZShQS1Bh
eW1lbnRTZXR1cEZlYXR1cmUgKmZlYXR1cmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBcHBsZVBheVNldHVwRmVhdHVyZShmZWF0dXJlKSk7CisgICAgfQorCisgICAgQXBw
bGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGUoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgU3Rh
dGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5zdXBwb3J0ZWQsCisgICAgICAgIFN1cHBvcnRlZCwK
KyAgICAgICAgU3VwcGxlbWVudGFyeVN1cHBvcnRlZCwKKyAgICAgICAgQ29tcGxldGVkLAorICAg
IH07CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKKworICAgIFBLUGF5bWVudFNldHVwRmVhdHVy
ZSAqcGxhdGZvcm1GZWF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlLmdldCgpOyB9CisK
KyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBib29sIHN1cHBvcnRzSW5z
dGFsbG1lbnRzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBBcHBsZVBheVNldHVwRmVhdHVyZShQS1BheW1lbnRTZXR1cEZlYXR1cmUgKik7
CisKKyAgICBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBGZWF0dXJlPiBtX2ZlYXR1cmU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1NF
VFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFs
PUFQUExFX1BBWV9TRVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVN0YXRlIHsKKyAg
ICAidW5zdXBwb3J0ZWQiLAorICAgICJzdXBwb3J0ZWQiLAorICAgICJzdXBwbGVtZW50YXJ5U3Vw
cG9ydGVkIiwKKyAgICAiY29tcGxldGVkIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPUFQUExF
X1BBWV9TRVRVUCwKKyAgICBFbmFibGVkQnlTZXR0aW5nPUFwcGxlUGF5LAorICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCisgICAgU2VjdXJlQ29udGV4dCwKK10gaW50ZXJmYWNlIEFwcGxl
UGF5U2V0dXBGZWF0dXJlIHsKKyAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1
dGUgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGU7CisgICAgW0NhY2hlZEF0dHJpYnV0ZV0g
cmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5U2V0dXBGZWF0dXJlU3RhdGUgc3RhdGU7CisgICAg
W0NhY2hlZEF0dHJpYnV0ZSwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNJbnN0YWxsbWVudHM7Cit9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXBGZWF0dXJlLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBcHBs
ZVBheVNldHVwRmVhdHVyZS5oIgorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworI2lt
cG9ydCAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW1wb3J0ICJQYXNzS2l0U1BJQWRk
aXRpb25zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlIEFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0eXBlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKFtt
X2ZlYXR1cmUgdHlwZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVR5cGVBcHBs
ZVBheToKKyAgICAgICAgcmV0dXJuIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZTo6QXBwbGVQYXk7
CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQYXlfWDoKKyAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIHJldHVybiBBcHBsZVBheVNldHVwRmVhdHVy
ZVR5cGU6OkFwcGxlQ2FyZDsKKyAgICB9Cit9CisKK0FwcGxlUGF5U2V0dXBGZWF0dXJlOjpTdGF0
ZSBBcHBsZVBheVNldHVwRmVhdHVyZTo6c3RhdGUoKSBjb25zdAoreworICAgIHN3aXRjaCAoW21f
ZmVhdHVyZSBzdGF0ZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlVW5z
dXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6VW5zdXBwb3J0ZWQ7CisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBvcnRlZDoKKyAgICAgICAgcmV0dXJuIFN0YXRl
OjpTdXBwb3J0ZWQ7CisgICAgY2FzZSBQS1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBsZW1l
bnRhcnlTdXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6U3VwcGxlbWVudGFyeVN1cHBv
cnRlZDsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlQ29tcGxldGVkOgorICAg
ICAgICByZXR1cm4gU3RhdGU6OkNvbXBsZXRlZDsKKyAgICB9Cit9CisKKyNpZiBFTkFCTEUoQVBQ
TEVfUEFZX0lOU1RBTExNRU5UUykKK2Jvb2wgQXBwbGVQYXlTZXR1cEZlYXR1cmU6OnN1cHBvcnRz
SW5zdGFsbG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fZmVhdHVyZSBzdXBwb3J0ZWRP
cHRpb25zXSAmIFBLUGF5bWVudFNldHVwRmVhdHVyZVN1cHBvcnRlZE9wdGlvbnNJbnN0YWxsbWVu
dHM7Cit9CisjZW5kaWYKKworQXBwbGVQYXlTZXR1cEZlYXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlKFBLUGF5bWVudFNldHVwRmVhdHVyZSAqZmVhdHVyZSkKKyAgICA6IG1fZmVhdHVyZSB7IGZl
YXR1cmUgfQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoQVBQTEVfUEFZX1NFVFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1
cmVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitlbnVtIGNsYXNzIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZSA6IHVpbnQ4X3Qg
eworICAgIEFwcGxlUGF5LAorICAgIEFwcGxlQ2FyZCwKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZVR5cGUuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9T
RVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgeworICAgICJhcHBsZVBheSIs
CisgICAgImFwcGxlQ2FyZCIKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oIgorI2luY2x1ZGUgIkFwcGxlUGF5U2V0dXAuaCIKKyNpbmNsdWRlICJBcHBsZVBheVNldHVw
RmVhdHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BheW1lbnRDb29yZGlu
YXRvckNsaWVudEFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRG9jdW1lbnQ7CkBAIC03MSwxMyArNzAsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorICAgIHZpcnR1YWwgdm9pZCBnZXRTZXR1
cEZlYXR1cmVzKGNvbnN0IEFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBBcHBsZVBheVNldHVwOjpD
b25maWd1cmF0aW9uJiwgY29uc3QgVVJMJiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheVNldHVwRmVh
dHVyZT4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIGVuZEFw
cGxlUGF5U2V0dXAoKSB7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwotCi0jaWYgZGVmaW5lZChQQVlNRU5U
Q09PUkRJTkFUT1JDTElFTlRfQURESVRJT05TKQotUEFZTUVOVENPT1JESU5BVE9SQ0xJRU5UX0FE
RElUSU9OUwotI3VuZGVmIFBBWU1FTlRDT09SRElOQVRPUkNMSUVOVF9BRERJVElPTlMKLSNlbmRp
ZgogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBQS1BheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb247CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEFw
cGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBQYXltZW50SW5z
dGFsbG1lbnRDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OworICAgIFBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24oY29uc3QgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24mKTsK
KyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24+JiYpOworCisgICAgUEtQYXltZW50SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBSZXRhaW5QdHI8UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBtX2NvbmZp
Z3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RB
TExNRU5UUykKKworI2ltcG9ydCAiQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCIK
KyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0b0RlY2ltYWxOdW1iZXIoKSBpbiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLgorc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNp
bWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQoreworICAgIGlmICghYW1vdW50KQorICAg
ICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciB6ZXJvXTsKKyAgICByZXR1cm4gW05TRGVjaW1h
bE51bWJlciBkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzphbW91bnQgbG9jYWxlOkB7IE5TTG9jYWxl
RGVjaW1hbFNlcGFyYXRvciA6IEAiLiIgfV07Cit9CisKK3N0YXRpYyBQS1BheW1lbnRTZXR1cEZl
YXR1cmVUeXBlIHBsYXRmb3JtRmVhdHVyZVR5cGUoY29uc3QgQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlJiBmZWF0dXJlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVUeXBlKSB7CisgICAgY2Fz
ZSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlUGF5OgorICAgICAgICByZXR1cm4gUEtQ
YXltZW50U2V0dXBGZWF0dXJlVHlwZUFwcGxlUGF5OworICAgIGNhc2UgQXBwbGVQYXlTZXR1cEZl
YXR1cmVUeXBlOjpBcHBsZUNhcmQ6CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCisgICAgICAgIHJldHVybiBQS1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQ
YXlfWDsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgfQor
fQorCitzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4g
Y3JlYXRlUGxhdGZvcm1Db25maWd1cmF0aW9uKGNvbnN0IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uJiBjb3JlQ29uZmlndXJhdGlvbikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uSW5z
dGFuY2UoKSBpbml0XSk7CisKKyAgICBbY29uZmlndXJhdGlvbiBzZXRGZWF0dXJlOnBsYXRmb3Jt
RmVhdHVyZVR5cGUoY29yZUNvbmZpZ3VyYXRpb24uZmVhdHVyZVR5cGUpXTsKKworICAgIFtjb25m
aWd1cmF0aW9uIHNldEJpbmRpbmdUb3RhbEFtb3VudDp0b0RlY2ltYWxOdW1iZXIoY29yZUNvbmZp
Z3VyYXRpb24uYmluZGluZ1RvdGFsQW1vdW50KV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0Q3Vy
cmVuY3lDb2RlOmNvcmVDb25maWd1cmF0aW9uLmN1cnJlbmN5Q29kZV07CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0SW5TdG9yZVB1cmNoYXNlOmNvcmVDb25maWd1cmF0aW9uLmlzSW5TdG9yZVB1cmNo
YXNlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRPcGVuVG9CdXlUaHJlc2hvbGRBbW91bnQ6dG9E
ZWNpbWFsTnVtYmVyKGNvcmVDb25maWd1cmF0aW9uLm9wZW5Ub0J1eVRocmVzaG9sZEFtb3VudCld
OworCisgICAgYXV0byBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmNvcmVDb25maWd1cmF0aW9uLm1lcmNo
YW5kaXNpbmdJbWFnZURhdGEgb3B0aW9uczowXSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVy
Y2hhbmRpc2luZ0ltYWdlRGF0YTptZXJjaGFuZGlzaW5nSW1hZ2VEYXRhLmdldCgpXTsKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVF9JREVOVElGSUVSUykKKyNpZiBQTEFURk9STShNQUMp
CisgICAgaWYgKCFbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dEluc3RhbGxtZW50TWVyY2hhbnRJZGVudGlmaWVyOildIHx8ICFbY29uZmlndXJhdGlvbiByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFJlZmVycmVySWRlbnRpZmllcjopXSkKKyAgICAg
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisjZW5kaWYKKyAgICBbY29uZmlndXJhdGlvbiBzZXRJ
bnN0YWxsbWVudE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElk
ZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldFJlZmVycmVySWRlbnRpZmllcjpjb3Jl
Q29uZmlndXJhdGlvbi5yZWZlcnJlcklkZW50aWZpZXJdOworI2VuZGlmCisKKyAgICByZXR1cm4g
Y29uZmlndXJhdGlvbjsKK30KKworUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjo6UGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihjb25zdCBBcHBsZVBheUluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IGNyZWF0
ZVBsYXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSB9Cit7Cit9CisKK1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb246OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24o
UmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0
aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShjb25maWd1cmF0aW9uKSB9Cit7
Cit9CisKK1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiAqUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbjo6cGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgJ
KHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudE1ldGhvZFVwZGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsNiBAQAogI2lu
Y2x1ZGUgIkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvUGF5bWVudE1ldGhvZFVwZGF0ZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIE9C
SkNfQ0xBU1MgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTUwLDExICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVG90YWxB
bmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKCkgY29uc3Q7CiAgICAgUEtQYXltZW50UmVx
dWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnBsYXRmb3JtVXBkYXRlKCkgY29uc3Q7CiAKLSNpZiBk
ZWZpbmVkKFBBWU1FTlRNRVRIT0RVUERBVEVfUFVCTElDX0FERElUSU9OUykKLVBBWU1FTlRNRVRI
T0RVUERBVEVfUFVCTElDX0FERElUSU9OUwotI3VuZGVmIFBBWU1FTlRNRVRIT0RVUERBVEVfUFVC
TElDX0FERElUSU9OUworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisgICAgdm9pZCBz
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKICNlbmRpZgotICAg
IAorCiBwcml2YXRlOgogICAgIE9wdGlvbmFsPFRvdGFsQW5kTGluZUl0ZW1zPiBtX3RvdGFsQW5k
TGluZUl0ZW1zOwogICAgIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZT4gbV9wbGF0Zm9ybVVwZGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDE4IEBACiAjaW1wb3J0ICJQYXltZW50TWV0
aG9kLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudENvY29h
QWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyB2b2lkIGZp
bmlzaENvbnZlcnRpbmcoUEtQYXltZW50ICosIEFwcGxlUGF5UGF5bWVudCYpIHsgfQotfQotI2Vu
ZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmco
UEtQYXltZW50ICpwYXltZW50LCBBcHBsZVBheVBheW1lbnQmIHJlc3VsdCkKK3sKKyNpZiBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGlmIChOU1N0cmluZyAqaW5zdGFsbG1lbnRBdXRo
b3JpemF0aW9uVG9rZW4gPSBwYXltZW50Lmluc3RhbGxtZW50QXV0aG9yaXphdGlvblRva2VuKQor
ICAgICAgICByZXN1bHQuaW5zdGFsbG1lbnRBdXRob3JpemF0aW9uVG9rZW4gPSBpbnN0YWxsbWVu
dEF1dGhvcml6YXRpb25Ub2tlbjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBheW1lbnQpOwor
ICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOworI2VuZGlmCit9CiAKIHN0YXRpYyBBcHBsZVBheVBh
eW1lbnQ6OlRva2VuIGNvbnZlcnQoUEtQYXltZW50VG9rZW4gKnBheW1lbnRUb2tlbikKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1ldGhvZENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDE4IEBACiAjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRNZXRo
b2RUeXBlLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudE1l
dGhvZENvY29hQWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRp
YyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICosIEFwcGxlUGF5UGF5bWVu
dE1ldGhvZCYpIHsgfQotfQotI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2
b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICpwYXltZW50TWV0aG9kLCBBcHBs
ZVBheVBheW1lbnRNZXRob2QmIHJlc3VsdCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1F
TlRTKQorICAgIGlmIChOU1N0cmluZyAqYmluZFRva2VuID0gcGF5bWVudE1ldGhvZC5iaW5kVG9r
ZW4pCisgICAgICAgIHJlc3VsdC5iaW5kVG9rZW4gPSBiaW5kVG9rZW47CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShwYXltZW50TWV0aG9kKTsKKyAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKKyNl
bmRpZgorfQogCiBzdGF0aWMgQXBwbGVQYXlQYXltZW50UGFzczo6QWN0aXZhdGlvblN0YXRlIGNv
bnZlcnQoUEtQYXltZW50UGFzc0FjdGl2YXRpb25TdGF0ZSBwYXltZW50UGFzc0FjdGl2YXRpb25T
dGF0ZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRNZXRob2RVcGRhdGVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksMTMgQEAg
UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKlBheQogICAgIHJldHVybiBtX3Bs
YXRmb3JtVXBkYXRlLmdldCgpOwogfQogCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K3ZvaWQgUGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcikKK3sKKyAgICBbbV9wbGF0
Zm9ybVVwZGF0ZSBzZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcjppbnN0YWxsbWVudEdyb3Vw
SWRlbnRpZmllcl07Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNv
Y29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTUgKzMxLDI3IEBACiAjaW1wb3J0ICJBcHBsZVBheVNlc3Npb25FcnJvci5oIgogI2ltcG9y
dCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2FB
ZGRpdGlvbnMubW0+Ci0jZWxzZQogbmFtZXNwYWNlIFdlYkNvcmUgewotc3RhdGljIE9wdGlvbmFs
PEFwcGxlUGF5U2Vzc2lvbkVycm9yPiBhZGRpdGlvbmFsRXJyb3IoTlNFcnJvciAqKSB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CitzdGF0
aWMgT3B0aW9uYWw8QXBwbGVQYXlTZXNzaW9uRXJyb3I+IGFkZGl0aW9uYWxFcnJvcihOU0Vycm9y
ICplcnJvcikKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIC8vIEZJWE1F
OiBSZXBsYWNlIHdpdGggUEtQYXltZW50RXJyb3JCaW5kVG9rZW5Vc2VySW5mb0tleSBhbmQKKyAg
ICAvLyBQS1BheW1lbnRBdXRob3JpemF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3Igd2hlbiB0
aGV5J3JlIGF2YWlsYWJsZSBpbiBhbiBTREsuCisgICAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
YmluZFRva2VuS2V5ID0gQCJQS1BheW1lbnRFcnJvckJpbmRUb2tlbiI7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBOU0ludGVnZXIgcGtQYXltZW50QXV0aG9yaXphdGlvbkZlYXR1cmVBcHBsaWNhdGlv
bkVycm9yID0gLTIwMTY7CisKKyAgICBpZiAoZXJyb3IuY29kZSAhPSBwa1BheW1lbnRBdXRob3Jp
emF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3IpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBpZCBiaW5kVG9rZW5WYWx1ZSA9IGVycm9yLnVzZXJJbmZvW2JpbmRUb2tlbktl
eV07CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighYmluZFRv
a2VuVmFsdWUgfHwgW2JpbmRUb2tlblZhbHVlIGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3Nd
KTsKKyAgICByZXR1cm4gQXBwbGVQYXlTZXNzaW9uRXJyb3IgeyAiZmVhdHVyZUFwcGxpY2F0aW9u
RXJyb3IiX3MsIHsgeyAiYmluZFRva2VuIl9zLCAoTlNTdHJpbmcgKiliaW5kVG9rZW5WYWx1ZSB9
IH0gfTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworI2VuZGlmCit9CiAKIFBheW1lbnRTZXNzaW9uRXJyb3I6OlBheW1lbnRTZXNzaW9u
RXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+JiYgZXJyb3IpCiAgICAgOiBtX3BsYXRmb3JtRXJyb3Ig
eyBXVEZNb3ZlKGVycm9yKSB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVJlcXVlc3Qu
aWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDQgKzI4LDUgQEAKIF0gZGljdGlvbmFyeSBBcHBsZVBheVJlcXVlc3QgOiBBcHBsZVBheVJlcXVl
c3RCYXNlIHsKICAgICByZXF1aXJlZCB1bnNpZ25lZCBsb25nIHZlcnNpb247CiAgICAgcmVxdWly
ZWQgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVf
UEFZX0lOU1RBTExNRU5UU10gQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gaW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyB0YXNrRGVs
YXlJbnRlcnZhbCB7IDEwMF9tcyB9OwogCi0jdW5kZWYgTE9HSURFTlRJRklFUgotI2RlZmluZSBM
T0dJREVOVElGSUVSIF9fZnVuY19fCi0KLSN1bmRlZiBBTFdBWVNfTE9HCi0jZGVmaW5lIEFMV0FZ
U19MT0cgbG9nZ2VyKCkubG9nQWx3YXlzCisjZGVmaW5lIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUiBsb2dnZXIoKS5sb2dBbHdheXMKIAogc3RydWN0IENsaWVudFN0YXRlIHsKICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjEsMTkgKzE1NywxOSBAQCB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpCiAgICAgaWYgKG1fbW9ja1BpY2tl
ckVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18pOwogICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOwogfQogCiB2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3Rh
dGUpCiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwogICAgIG1vY2tQaWNrZXIoKS5zZXRTdGF0ZShu
YW1lLCBzdGF0ZSk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQogewotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19f
KTsKICAgICBtb2NrUGlja2VyKCkuZGlzbWlzc1BvcHVwKCk7CiB9CiAKQEAgLTIwOCw3ICsyMDQs
NyBAQCB1aW50NjRfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5CiAgICAgaWYgKGlu
ZGV4ICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgY29udGV4dElkKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18sIGNvbnRleHRJZCk7CiAgICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQobWFrZVVu
aXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKIAogICAgIGlmIChtX2V4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJnZXQpCkBAIC0yMjQsNyAr
MjIwLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YgogICAgIGlm
IChpbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CisgICAgQUxXQVlTX0xP
R19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQo
KSk7CiAKICAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpbmRleCk7CiAgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRz
Q29uZmlndXJhdGlvblRhc2spOwpAQCAtMjM3LDcgKzIzMyw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGwKIAogICAgIGZvciAoc2l6ZV90IGkgPSBtX2NsaWVudFN0
YXRlLnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICBpZiAoJm1fY2xpZW50U3RhdGVbaSAt
IDFdLT5jbGllbnQgPT0gJmNsaWVudCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBtX2NsaWVudFN0YXRlW2kgLSAxXS5nZXQoKSk7CisgICAgICAgICAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaSAtIDFdLmdl
dCgpKTsKICAgICAgICAgICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGkgLSAxKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTI1Nyw3ICsyNTMsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNob3dQbGF5YmFjCiAgICAgICAgIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2VyID0g
c3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1BpY2tlcjsKICAgICB9CiAKLSAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsKKyAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdl
dCgpKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlUm91dGUgPSBmbGFnc0FyZVNldChtX2NsaWVudFN0
YXRlW2luZGV4XS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZp
Y2UpOwogICAgIHRhcmdldFBpY2tlcigpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihGbG9hdFJl
Y3QocmVjdCksIGhhc0FjdGl2ZVJvdXRlLCB1c2VEYXJrQXBwZWFyYW5jZSk7CkBAIC0yNzUsNyAr
MjcxLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjbGllbnRTdGF0ZQogICAgIGlm
IChuZXdGbGFncyA9PSBvbGRGbGFncykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSwgIm5ldyBmbGFncyA9
ICIsIG5ld0ZsYWdzKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3IGZsYWdzID0gIiwgbmV3RmxhZ3Mp
OwogCiAgICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFncyA9IG5ld0ZsYWdzOwogCkBAIC0yOTks
MjUgKzI5NSwyNSBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoZmxhZ3NBcmVTZXQoc3RhdGUtPmZs
YWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSAmJiBmbGFnc0Fy
ZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgewotICAg
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiByZXR1cm5p
bmcgZWFybHkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBEbyBub3QgYmVnaW4gcGxheWluZyB0
byB0aGUgZGV2aWNlIHVubGVzcyBwbGF5YmFjayBoYXMganVzdCBzdGFydGVkLgogICAgIGlmICgh
ZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSB8fCBm
bGFnc0FyZVNldChvbGRGbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7Ci0g
ICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBlYXJseSwgcGxheWJh
Y2sgZGlkbid0IGp1c3Qgc3RhcnQiKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCAicmV0dXJuaW5nIGVhcmx5LCBwbGF5YmFjayBkaWRuJ3QganVzdCBz
dGFydCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBzdGF0ZSA6
IG1fY2xpZW50U3RhdGUpIHsKICAgICAgICAgaWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
ZmFsc2UpIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
Xywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChm
YWxzZSkiKTsKICAgICAgICAgc3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNT
SU9OTUFOQUdFUihfX2Z1bmNfXywgY2hhbmdlZENsaWVudFN0YXRlLmdldCgpLCAiIGNhbGxpbmcg
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICBjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAKICAgICBpZiAoaW5kZXggJiYgbV9jbGllbnRTdGF0
ZS5zaXplKCkgPiAxKQpAQCAtMzI2LDcgKzMyMiw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6Y2xpZW50U3RhdGUKIAogdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFz
QWN0aXZlUm91dGUoKSk7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVu
Y19fLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFzQWN0aXZlUm91dGUoKSk7CiAg
ICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsKICAgICBtX3RhcmdldENoYW5n
ZWQgPSB0cnVlOwogICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0NvbmZpZ3Vy
YXRpb25UYXNrKTsKQEAgLTMzNCw3ICszMzAsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNldFBsYXliYWNrCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCBhdmFpbGFibGUpOworICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgYXZhaWxhYmxlKTsKICAgICBtX2V4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlID0gYXZhaWxhYmxlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2Ns
aWVudFN0YXRlKQogICAgICAgICBzdGF0ZS0+Y2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKHN0YXRlLT5jb250ZXh0SWQsIGF2YWlsYWJsZSk7CkBAIC0zNDIsNyAr
MzM4LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpleHRlcm5hbE91dAogCiB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2Vk
KCkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIEFMV0FZU19MT0dfTUVE
SUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbV9wbGF5YmFja1RhcmdldFBpY2tlckRp
c21pc3NlZCA9IHRydWU7CiAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhUYXJnZXRDbGllbnRzQ29u
ZmlndXJhdGlvblRhc2spOwogfQpAQCAtMzc1LDcgKzM3MSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2xp
ZW50U3RhdGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0
YXRlW2ldOwogCi0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0KCks
ICIsIHJlcXVlc3RlZFBpY2tlciA9ICIsIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIpOworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAi
LCByZXF1ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKTsKIAogICAgICAg
ICBpZiAoKG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2Vk
KSAmJiBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKQogICAgICAgICAgICAgaW5kZXhPZkNsaWVudFRo
YXRSZXF1ZXN0ZWRQaWNrZXIgPSBpOwpAQCAtNDAxLDEyICszOTcsMTIgQEAgdm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5z
ZXRQbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCAqbV9wbGF5YmFja1RhcmdldC5jb3B5
UmVmKCkpOwogCiAgICAgICAgIGlmIChpICE9IGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0
IHx8ICFoYXZlQWN0aXZlUm91dGUpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dChmYWxzZSkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChmYWxzZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgZmFsc2UpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgJiYgbV9wbGF5YmFja1RhcmdldFBpY2tl
ckRpc21pc3NlZCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkIik7Cisg
ICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRl
LmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKICAg
ICAgICAgICAgIHN0YXRlLT5jbGllbnQucGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQo
c3RhdGUtPmNvbnRleHRJZCk7CiAgICAgICAgIH0KIApAQCAtNDE4LDcgKzQxNCw3IEBAIHZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBpZiAoaGF2ZUFjdGl2ZVJv
dXRlICYmIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ICE9IG5vdEZvdW5kKSB7CiAgICAg
ICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1Rh
cmdldF07CiAgICAgICAgIGlmICghZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkgewotICAgICAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0KHRydWUpIik7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lP
Tk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC00MzMsNyArNDI5LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
Ojpjb25maWd1cmVQbAogICAgIGJvb2wgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSBmYWxzZTsK
ICAgICBib29sIGhhdmVDbGllbnRXaXRoTWVkaWEgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIHN0
YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
IHN0YXRlLmdldCgpKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBzdGF0ZS5nZXQoKSk7CiAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVBy
b2R1Y2VyOjpSZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykgewogICAgICAgICAgICAg
bW9uaXRvcmluZ1JlcXVpcmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQ1LDEw
ICs0NDEsMTAgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAg
IH0KIAogICAgIGlmIChtb25pdG9yaW5nUmVxdWlyZWQgfHwgKGhhc0F2YWlsYWJpbGl0eUxpc3Rl
bmVyICYmIGhhdmVDbGllbnRXaXRoTWVkaWEpKSB7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInN0YXJ0aW5nIG1vbml0b3JpbmciKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOwogICAgICAg
ICB0YXJnZXRQaWNrZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyBt
b25pdG9yaW5nIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXywgInN0b3BwaW5nIG1vbml0b3JpbmciKTsKICAgICAgICAgdGFyZ2V0UGlja2VyKCkuc3Rv
cE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAgICB9CiB9CkBAIC00OTAsNyArNDg2LDcg
QEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogCiAgICAgaWYgKCFt
X3BsYXliYWNrVGFyZ2V0IHx8ICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpKSB7
CiAgICAgICAgIGlmIChtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic3RvcHBpbmcgdGltZXIiKTsKKyAgICAgICAgICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVy
Iik7CiAgICAgICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9OwogICAgICAg
ICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKICAgICAgICAgfQpAQCAtNTAyLDcgKzQ5OCw3
IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2EKICAgICBib29sIGRp
ZFBsYXlUb0VuZCA9IGZhbHNlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRl
KSB7CiAKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBw
bGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcGxheWVkVG9FbmQg
PSAiLCBzdGF0ZS0+cGxheWVkVG9FbmQpOwogCiAgICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZs
YWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKQog
ICAgICAgICAgICAgc3RvcFRpbWVyID0gdHJ1ZTsKQEAgLTUxMiw3ICs1MDgsNyBAQCB2b2lkIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhCiAgICAgfQogCiAgICAgaWYgKHN0b3BU
aW1lcikgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyB0aW1l
ciIpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJz
dG9wcGluZyB0aW1lciIpOwogICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9
OwogICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwogICAgIH0gZWxzZSB7CkBAIC01MjAs
NyArNTE2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogICAg
ICAgICBpZiAoaW50ZXJ2YWwgIT0gbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCB8fCAhbV93YXRj
aGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFy
dE9uZVNob3QoaW50ZXJ2YWwpOwogICAgICAgICB9Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNv
bmRzIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywg
InRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNvbmRzIik7CiAg
ICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgPSBpbnRlcnZhbDsKICAgICB9CiB9CkBA
IC01MzAsNyArNTI2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bQogICAgIGlmICghbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOwogICAgIHRhcmdldFBpY2tlcigpLmludmFsaWRhdGVQbGF5YmFja1Rhcmdl
dHMoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAxMDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDQtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBNb3ZlIEFwcGxlUGF5IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMgdG8g
V2ViQ29yZSBhbmQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTA1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisg
ICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsubW06CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg6CisKIDIwMjAtMDQtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZG9wdCBpbnRlcmZhY2UgQVZBdWRpb1JvdXRpbmdBcmJpdGVyIGZvciBNYWMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTggQEAgU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQS1BheW1lbgogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRNZXRob2QpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5
bWVudE1lcmNoYW50U2Vzc2lvbikKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50UmVxdWVzdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBL
UGF5bWVudFNldHVwRmVhdHVyZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50U2V0dXBSZXF1ZXN0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRTdW1tYXJ5SXRlbSkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
UEtTaGlwcGluZ01ldGhvZCkKIAorI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbikKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIpCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRM
aW5rLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L1Bhc3NLaXRTb2Z0TGluay5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDMyIEBACiAK
ICNpZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCi0jZWxzZQorCitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0
dXBDb250cm9sbGVyLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BU
SU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cEZlYXR1cmUsIFBB
TF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9S
VChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwUmVxdWVzdCwgUEFMX0VYUE9SVCkKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9P
UFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKKyNlbmRpZgorCisjZWxzZSAvLyBQTEFURk9STShNQUMp
CisKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NL
aXQsIFBBTF9FWFBPUlQpCisKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQor
U09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwRmVhdHVyZSwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50U2V0dXBSZXF1ZXN0LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cFZpZXdD
b250cm9sbGVyLCBQQUxfRVhQT1JUKQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQogI2VuZGlmCiAKKyNl
bmRpZiAvLyBQTEFURk9STShNQUMpCisKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0LCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bhc3NMaWJyYXJ5LCBQ
QUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQS1BheW1lbnQsIFBBTF9FWFBPUlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDExICs0NywyOCBAQCBXVEZfRVhURVJOX0NfRU5ECiAjaW1wb3J0IDxQYXNzS2l0L1BL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxQ
YXNzS2l0L1BLUGF5bWVudE1ldGhvZC5oPgogI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRSZXF1
ZXN0X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uX1dlYktpdC5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRTZXR1cENvbnRyb2xsZXIu
aD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxQ
YXNzS2l0Q29yZS9QS1BheW1lbnRSZXF1ZXN0U3RhdHVzX1ByaXZhdGUuaD4KICNpbXBvcnQgPFBh
c3NLaXRDb3JlL1BLUGF5bWVudFJlcXVlc3RfV2ViS2l0Lmg+CiAKKyNpZiBIQVZFKFBBU1NLSVRf
SU5TVEFMTE1FTlRTKQorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50X1ByaXZhdGUuaD4K
KyNpbXBvcnQgPFBhc3NLaXRDb3JlL1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5o
PgorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50TWV0aG9kX1ByaXZhdGUuaD4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50
QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyLmg+CisjZW5kaWYKKworI2lmIEhBVkUoUEFTU0tJVF9J
TlNUQUxMTUVOVF9JREVOVElGSUVSUykgJiYgUExBVEZPUk0oTUFDKQorQGludGVyZmFjZSBQS1Bh
eW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKFdlYktpdFNQSSkKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNTdHJpbmcgKmluc3RhbGxtZW50TWVyY2hhbnRJZGVu
dGlmaWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU1N0cmluZyAq
cmVmZXJyZXJJZGVudGlmaWVyOworQGVuZAogI2VuZGlmCiAKICNlbHNlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5MDAsNiArMTkwMCw4IEBACiAJCTVDMkIxQUVDMjIz
OTdFQkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY3OEQwQjFDMjU0MjJDMDAyNDU0NDYg
LyogUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tICovOyB9OwogCQk1QzQzMDRCMTE5MUFDOTA4MDAw
RTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRl
clRleHR1cmVMT0QuaCAqLzsgfTsKIAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhU
U2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM0MzA0QjQxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxP
RC5oICovOyB9OworCQk1QzUzRENFMTI0NDY1REZDMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
NTNEQ0NGMjQ0NjQ0OTkwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNTNEQ0U3MjQ0NjhB
RDIwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzUzRENDRTI0NDY0NDk5MDBB
OTMxMjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNUQyMzg1MjI3QTA2NTIwMDBC
OUJEQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUQyMzgzMjI3QTA2M0EwMDBCOUJEQSAvKiBDdXN0b21IZWFk
ZXJGaWVsZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4OEQ3MUQwRjFGMkIw
MDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTVDOUMyREI1MjI0MUE2N0IwMDk5NkIwQiAvKiBDb250ZW50
UnVsZUxpc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzlDMkRCMzIyNDFBNjczMDA5OTZCMEIgLyogQ29udGVudFJ1bGVMaXN0UmVzdWx0
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05
MDkxLDYgKzkwOTMsMTggQEAKIAkJNUM1MzgxQjExRDg3RDQ1NzAwRTJFQkU2IC8qIFVSTFNlYXJj
aFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxTZWFyY2hQYXJh
bXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1MzgxQjMxRDg3RTA4MTAwRTJF
QkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUM1MzgxQjQxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0M2MjQ0NjQ0OTcwMEE5MzEyNCAvKiBBcHBs
ZVBheVNldHVwLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBsZVBheVNldHVwLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQzkyNDQ2NDQ5ODAwQTkzMTI0IC8q
IEFwcGxlUGF5U2V0dXBGZWF0dXJlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDNTNEQ0NBMjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBw
bGVQYXlTZXR1cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsZVBheVNl
dHVwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0NDMjQ0NjQ0OTkwMEE5
MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQ0UyNDQ2NDQ5OTAwQTkz
MTI0IC8qIFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDRjI0NDY0NDk5MDBBOTMxMjQgLyogQXBw
bGVQYXlTZXR1cEZlYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBw
bGVQYXlTZXR1cEZlYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RD
RDAyNDQ2NDQ5QTAwQTkzMTI0IC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0QyMjQ0NjQ0
OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFwcGxlUGF5U2V0dXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5U2V0dXBGZWF0dXJl
VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENENTI0NDY0NDlCMDBB
OTMxMjQgLyogQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDRDYyNDQ2NDQ5QzAwQTkzMTI0IC8qIEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlT
ZXR1cEZlYXR1cmVUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1RDIz
ODMyMjdBMDYzQTAwMEI5QkRBIC8qIEN1c3RvbUhlYWRlckZpZWxkcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21IZWFkZXJGaWVsZHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUM1RDIzODYyMjdBMDc3QzAwMEI5QkRBIC8qIEN1c3RvbUhlYWRlckZp
ZWxkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21IZWFk
ZXJGaWVsZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzY2OEU2NDFFN0M2
QzM1MDBEMzJCM0IgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjcxLDYgKzE3Mjg1LDggQEAKIAkJCQlBMUJCODU5
QjIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaWRsICovLAogCQkJCUExQkI4
NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggKi8sCiAJ
CQkJQTFCQjg1QTIyMTU5QUY1NzAwNjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQu
aWRsICovLAorCQkJCTVDNTNEQ0QwMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheUluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0Q1MjQ0NjQ0OUIwMEE5MzEyNCAvKiBB
cHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwgKi8sCiAJCQkJN0M2NTc5RTIxRTAw
ODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAqLywKIAkJCQk3QzY1NzlFNDFFMDA4
MkM4MDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5pZGwgKi8sCiAJCQkJQTFERjVBQTgxRjgw
NzBENDAwNThBNDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmNwcCAqLywKQEAgLTE3
MzA4LDYgKzE3MzI0LDE0IEBACiAJCQkJQTE5NTZGMUYyMzMxQThDNzAwNTdFOUQyIC8qIEFwcGxl
UGF5U2Vzc2lvbkVycm9yLmlkbCAqLywKIAkJCQkxQTU4RTg2MzFEMTlENERGMDBDMEVBNzMgLyog
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwICovLAogCQkJCTFBNThFODY0MUQxOUQ0
REYwMEMwRUE3MyAvKiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oICovLAorCQkJCTVD
NTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNwcCAqLywKKwkJCQk1QzUz
RENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICovLAorCQkJCTVDNTNEQ0M2
MjQ0NjQ0OTcwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLywKKwkJCQk1QzUzRENDRjI0
NDY0NDk5MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAqLywKKwkJCQk1QzUzREND
QTI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaWRsICovLAorCQkJCTVD
NTNEQ0M5MjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5tbSAqLywKKwkJ
CQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgg
Ki8sCisJCQkJNUM1M0RDRDYyNDQ2NDQ5QzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJl
VHlwZS5pZGwgKi8sCiAJCQkJMUE4QTY0NDcxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2hp
cHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAgKi8sCiAJCQkJMUE4QTY0NDgxRDE5RkNGQjAw
RDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5oICovLAogCQkJ
CTFBOEE2NDQ5MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVj
dGVkRXZlbnQuaWRsICovLApAQCAtMTczMzEsNiArMTczNTUsOCBAQAogCQkJCUExMDRFQzUzMjIw
QTAxNzQwMENCRjY3QSAvKiBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuY3BwICovLAogCQkJCTFB
NThFODYyMUQxOUQzQkYwMEMwRUE3MyAvKiBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCAqLywK
IAkJCQk3Q0Y5MzBFNjFFMDFGOUFEMDBCQUZGQkUgLyogUGF5bWVudEhlYWRlcnMuaCAqLywKKwkJ
CQk1QzUzRENDRTI0NDY0NDk5MDBBOTMxMjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbi5oICovLAorCQkJCTVDNTNEQ0NDMjQ0NjQ0OTkwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uLm1tICovLAogCQkJCTFBRTk2QTg3MUQxQTBDRUIwMEI4Njc2OCAv
KiBQYXltZW50TWVyY2hhbnRTZXNzaW9uLmggKi8sCiAJCQkJMUE4QTY0MzkxRDE5RkM1MzAwRDBF
MDBGIC8qIFBheW1lbnRNZXRob2QuaCAqLywKIAkJCQlBMURGRDUyNDIzMzQ1OTNBMDA0MkZDREIg
LyogUGF5bWVudE1ldGhvZFVwZGF0ZS5oICovLApAQCAtMjkzOTcsNiArMjk0MjMsNyBAQAogCQkJ
CTFBOEE2NDU5MUQxOUZDRkMwMEQwRTAwRiAvKiBBcHBsZVBheVNlc3Npb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExOTU2RjIwMjMzMUE4QzcwMDU3RTlEMiAvKiBBcHBsZVBheVNlc3Npb25FcnJv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1OEU4NjUxRDE5RDRFQjAwQzBFQTczIC8qIEFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzUzRENFMTI0
NDY1REZDMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBOEE2NDVDMUQxOUZDRkMwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNl
bGVjdGVkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMkM1OUYyMjAzNUZDRDYwMDEyMjM2
QiAvKiBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0M2NTc5RTgxRTAwODMxNjAwRTNBMjdBIC8qIEFwcGxlUGF5U2hpcHBpbmdNZXRob2QuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzIxMjIsNiArMzIxNDksNyBAQAogCQkJCUExRjYwMDQ5MUY0NzU5NEUw
MDc3RTgzRiAvKiBQYXltZW50RGV0YWlsc1VwZGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFE
RjVBQTYxRjdGNjRCQjAwNThBNDc3IC8qIFBheW1lbnRIYW5kbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0Y5MzBFNzFFMDFGOUI0MDBCQUZGQkUgLyogUGF5bWVudEhlYWRlcnMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTVDNTNEQ0U3MjQ0NjhBRDIwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1l
bnRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUY3NkIzMTFGNDRDNTVBMDAx
NEMzMTggLyogUGF5bWVudEl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTk2QTg5MUQxQTBD
RUIwMEI4Njc2OCAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQThBNjQzQzFEMTlGQzUzMDBEMEUwMEYgLyogUGF5bWVudE1ldGhvZC5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25z
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYkNvcmVB
ZGRpdGlvbnMubW0JKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1dlYkNvcmVBZGRpdGlvbnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDMg
QEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFkZGl0aW9ucy5tbT4KLSNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDA4MSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDQtMTQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIEFwcGxl
UGF5IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMgdG8gV2ViQ29yZSBhbmQgV2ViS2l0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA1MjEKKworICAg
ICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMu
bWFrZToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBT
aGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXM6OnBsYXRmb3JtRmVhdHVyZXMgY29u
c3QpOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1
cmVzLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXM6OlBh
eW1lbnRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwRmVhdHVy
ZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVz
OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJlczo6b3BlcmF0
b3IgVmVjdG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+IGNvbnN0KToKKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6cGxhdGZvcm1D
b25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnRvUGxhdGZvcm1D
b25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OmZpbmlzaENvbnN0cnVjdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgICogU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9jb2NvYS9QYXltZW50U2V0dXBDb25maWd1
cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdEFkZGl0aW9uczo6dG9QbGF0Zm9ybUNv
bmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0QWRkaXRpb25zOjpQYXltZW50U2V0dXBDb25m
aWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdEFk
ZGl0aW9uczo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdEFkZGl0aW9uczo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6ZmluaXNoQ3JlYXRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Z2V0U2V0dXBGZWF0dXJlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpiZWdpbkFwcGxlUGF5
U2V0dXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZW5k
QXBwbGVQYXlTZXR1cCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwbGF0Zm9ybUJlZ2luQXBwbGVQYXlTZXR1cCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUVuZEFwcGxlUGF5U2V0dXApOgorICAgICAg
ICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAg
KElQQzo6ZmluaXNoRGVjb2RpbmcpOgorICAgICAgICAoSVBDOjpmaW5pc2hFbmNvZGluZyk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj46OmRlY29kZSk6CisgICAgICAgICog
U291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvcjo6Z2V0U2V0dXBG
ZWF0dXJlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvcjo6YmVnaW5B
cHBsZVBheVNldHVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpl
bmRBcHBsZVBheVNldHVwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvci5oOgorCiAyMDIwLTA0LTE0ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIEluamVjdGVkQnVuZGxlIHBhcmFtZXRlcnMgb2Z0ZW4gbmVl
ZCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBjYWxsZWQgYmVmb3JlIHVuYXJjaGl2aW5nCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTI1MCw4ICsyNTAs
NiBAQCBTQ1JJUFRTID0gXAogRlJBTUVXT1JLX0ZMQUdTID0gJChzaGVsbCBlY2hvICQoQlVJTFRf
UFJPRFVDVFNfRElSKSAkKEZSQU1FV09SS19TRUFSQ0hfUEFUSFMpICQoU1lTVEVNX0ZSQU1FV09S
S19TRUFSQ0hfUEFUSFMpIHwgcGVybCAtZSAncHJpbnQgIi1GICIgLiBqb2luKCIgLUYgIiwgc3Bs
aXQoIiAiLCA8PikpOycpCiBIRUFERVJfRkxBR1MgPSAkKHNoZWxsIGVjaG8gJChCVUlMVF9QUk9E
VUNUU19ESVIpICQoSEVBREVSX1NFQVJDSF9QQVRIUykgJChTWVNURU1fSEVBREVSX1NFQVJDSF9Q
QVRIUykgfCBwZXJsIC1lICdwcmludCAiLUkiIC4gam9pbigiIC1JIiwgc3BsaXQoIiAiLCA8Pikp
OycpCiAKLS1pbmNsdWRlIFdlYktpdERlcml2ZWRTb3VyY2VzQWRkaXRpb25zLm1ha2UKLQogLlBI
T05ZIDogYWxsCiAKIGFsbCA6IFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTIyLDYgKzEyMiw4IEBAIFNoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRI
YW5kbGUKIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3QubW0KIFNoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQogCitTaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXlt
ZW50U2V0dXBGZWF0dXJlcy5tbQorU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24ubW0KIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAK
IFNoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1t
CiBTaGFyZWQvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtp
bmcgY29weSkKQEAgLTY0MSw2ICs2NDEsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToK
ICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzogWyciTGF5ZXJIb3N0aW5n
Q29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlJzogWyciTGF5
ZXJUcmVlQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpQYWdlU3RhdGUnOiBbJyJTZXNz
aW9uU3RhdGUuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMnOiBb
JyJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlJl
c3BlY3RTZWxlY3Rpb25BbmNob3InOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dl
YktpdDo6V2ViR2VzdHVyZUV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6V2ViS2V5Ym9hcmRFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0
dXBGZWF0dXJlcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBIQVZFKFBBU1NLSVRf
UEFZTUVOVF9TRVRVUCkKKworT0JKQ19DTEFTUyBQS1BheW1lbnRTZXR1cEZlYXR1cmU7CisKKyNp
bmNsdWRlIDxXZWJDb3JlL0FwcGxlUGF5U2V0dXBGZWF0dXJlLmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBJUEMgewor
Y2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVuY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBQYXltZW50U2V0dXBGZWF0dXJlcyB7CitwdWJsaWM6CisgICAgUGF5bWVudFNldHVw
RmVhdHVyZXMoVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYp
OworICAgIFBheW1lbnRTZXR1cEZlYXR1cmVzKFJldGFpblB0cjxOU0FycmF5PiYmID0gbnVsbHB0
cik7CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMg
T3B0aW9uYWw8UGF5bWVudFNldHVwRmVhdHVyZXM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKwor
ICAgIE5TQXJyYXkgKnBsYXRmb3JtRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3Jt
RmVhdHVyZXMuZ2V0KCk7IH0KKyAgICBvcGVyYXRvciBWZWN0b3I8UmVmPFdlYkNvcmU6OkFwcGxl
UGF5U2V0dXBGZWF0dXJlPj4oKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8TlNB
cnJheT4gbV9wbGF0Zm9ybUZlYXR1cmVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0
dXBGZWF0dXJlcy5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFw
cGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaCIKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5U
X1NFVFVQKQorCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCisjaW1wb3J0ICJEZWNv
ZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVyLmgiCisjaW1wb3J0IDxXZWJDb3JlL0FwcGxlUGF5U2V0
dXBGZWF0dXJlLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBOU0FycmF5PFBLUGF5bWVudFNldHVwRmVhdHVy
ZSAqPiAqdG9QbGF0Zm9ybUZlYXR1cmVzKFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBwbGVQYXlT
ZXR1cEZlYXR1cmU+PiYmIGZlYXR1cmVzKQoreworICAgIE5TTXV0YWJsZUFycmF5ICpwbGF0Zm9y
bUZlYXR1cmVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmZlYXR1cmVzLnNp
emUoKV07CisgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogZmVhdHVyZXMpIHsKKyAgICAgICAgaWYg
KGZlYXR1cmUpCisgICAgICAgICAgICBbcGxhdGZvcm1GZWF0dXJlcyBhZGRPYmplY3Q6ZmVhdHVy
ZS0+cGxhdGZvcm1GZWF0dXJlKCldOworICAgIH0KKyAgICByZXR1cm4gcGxhdGZvcm1GZWF0dXJl
czsKK30KKworUGF5bWVudFNldHVwRmVhdHVyZXM6OlBheW1lbnRTZXR1cEZlYXR1cmVzKFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmIGZlYXR1cmVzKQorICAg
IDogbV9wbGF0Zm9ybUZlYXR1cmVzIHsgdG9QbGF0Zm9ybUZlYXR1cmVzKFdURk1vdmUoZmVhdHVy
ZXMpKSB9Cit7Cit9CisKK1BheW1lbnRTZXR1cEZlYXR1cmVzOjpQYXltZW50U2V0dXBGZWF0dXJl
cyhSZXRhaW5QdHI8TlNBcnJheT4mJiBwbGF0Zm9ybUZlYXR1cmVzKQorICAgIDogbV9wbGF0Zm9y
bUZlYXR1cmVzIHsgV1RGTW92ZShwbGF0Zm9ybUZlYXR1cmVzKSB9Cit7Cit9CisKK3ZvaWQgUGF5
bWVudFNldHVwRmVhdHVyZXM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCBtX3BsYXRmb3JtRmVhdHVyZXM7Cit9CisKK09wdGlvbmFsPFBheW1l
bnRTZXR1cEZlYXR1cmVzPiBQYXltZW50U2V0dXBGZWF0dXJlczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBzdGF0aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7CisgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7CisgICAgICAgIGF1dG8gYWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eToyXSk7CisgICAgICAgIFthbGxvd2VkIGFkZE9iamVj
dDpbTlNBcnJheSBjbGFzc11dOworICAgICAgICBpZiAoYXV0byBwa1BheW1lbnRTZXR1cEZlYXR1
cmVDbGFzcyA9IFBBTDo6Z2V0UEtQYXltZW50U2V0dXBGZWF0dXJlQ2xhc3MoKSkKKyAgICAgICAg
ICAgIFthbGxvd2VkIGFkZE9iamVjdDpwa1BheW1lbnRTZXR1cEZlYXR1cmVDbGFzc107CisgICAg
ICAgIGFsbG93ZWRDbGFzc2VzID0gW2FsbG93ZWQgY29weV07CisgICAgfSk7CisKKyAgICBhdXRv
IHBsYXRmb3JtRmVhdHVyZXMgPSBJUEM6OmRlY29kZTxOU0FycmF5PFBLUGF5bWVudFNldHVwRmVh
dHVyZSAqPj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAgIGlmICghcGxhdGZvcm1GZWF0
dXJlcykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBQYXltZW50
U2V0dXBGZWF0dXJlcyB7IFdURk1vdmUoKnBsYXRmb3JtRmVhdHVyZXMpIH07Cit9CisKK1BheW1l
bnRTZXR1cEZlYXR1cmVzOjpvcGVyYXRvciBWZWN0b3I8UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0
dXBGZWF0dXJlPj4oKSBjb25zdAoreworICAgIFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlT
ZXR1cEZlYXR1cmU+PiBmZWF0dXJlczsKKyAgICBmZWF0dXJlcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KFttX3BsYXRmb3JtRmVhdHVyZXMgY291bnRdKTsKKyAgICBmb3IgKFBLUGF5bWVudFNldHVw
RmVhdHVyZSAqcGxhdGZvcm1GZWF0dXJlIGluIG1fcGxhdGZvcm1GZWF0dXJlcy5nZXQoKSkKKyAg
ICAgICAgZmVhdHVyZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlOjpjcmVhdGUocGxhdGZvcm1GZWF0dXJlKSk7CisgICAgcmV0dXJuIGZlYXR1cmVzOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9QQVlNRU5U
X1NFVFVQKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKKyNpbmNsdWRlICJBcHBsZVBheVNldHVw
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKK09CSkNfQ0xBU1MgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOworCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiB7CitwdWJsaWM6CisgICAg
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsKKyAgICBQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24m
LCBjb25zdCBVUkwmKTsKKworICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0Owor
ICAgIHN0YXRpYyBPcHRpb25hbDxQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiBkZWNvZGUoSVBD
OjpEZWNvZGVyJik7CisKKyAgICBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gKnBsYXRmb3Jt
Q29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oUmV0YWlu
UHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4mJik7CisKKyAgICBSZXRhaW5QdHI8UEtQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQor
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1
cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1Bh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNTS0lU
X1BBWU1FTlRfU0VUVVApCisKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKKyNpbXBv
cnQgIkRlY29kZXIuaCIKKyNpbXBvcnQgIkVuY29kZXIuaCIKKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
KworI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgorCitAaW50ZXJmYWNlIFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiAoV2ViS2l0KQorQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnNpZ25lZEZpZWxkczsKK0BlbmQKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3N0YXRpYyBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uPiB0b1BsYXRmb3JtQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVw
OjpDb25maWd1cmF0aW9uJiBjb3JlQ29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwpCit7Cisj
aWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb25DbGFzcygpKQorICAgICAgICByZXR1cm4gbmlsOworI2VuZGlmCisKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uSW5zdGFuY2UoKSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVyY2hhbnRJZGVu
dGlmaWVyOmNvcmVDb25maWd1cmF0aW9uLm1lcmNoYW50SWRlbnRpZmllcl07CisgICAgW2NvbmZp
Z3VyYXRpb24gc2V0T3JpZ2luYXRpbmdVUkw6dXJsXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRS
ZWZlcnJlcklkZW50aWZpZXI6Y29yZUNvbmZpZ3VyYXRpb24ucmVmZXJyZXJJZGVudGlmaWVyXTsK
K0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KKyAgICBbY29uZmlndXJhdGlvbiBz
ZXRTaWduYXR1cmU6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmF0dXJlXTsKK0FMTE9XX05FV19BUElf
V0lUSE9VVF9HVUFSRFNfRU5ECisKKyAgICBpZiAoW2NvbmZpZ3VyYXRpb24gcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzZXRTaWduZWRGaWVsZHM6KV0pIHsKKyAgICAgICAgTlNNdXRhYmxl
QXJyYXkgKnNpZ25lZEZpZWxkcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpj
b3JlQ29uZmlndXJhdGlvbi5zaWduZWRGaWVsZHMuc2l6ZSgpXTsKKyAgICAgICAgZm9yIChhdXRv
JiBzaWduZWRGaWVsZCA6IGNvcmVDb25maWd1cmF0aW9uLnNpZ25lZEZpZWxkcykKKyAgICAgICAg
ICAgIFtzaWduZWRGaWVsZHMgYWRkT2JqZWN0OnNpZ25lZEZpZWxkXTsKKyAgICAgICAgW2NvbmZp
Z3VyYXRpb24gc2V0U2lnbmVkRmllbGRzOnNpZ25lZEZpZWxkc107CisgICAgfQorCisgICAgcmV0
dXJuIGNvbmZpZ3VyYXRpb247Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwpCisgICAgOiBtX2NvbmZpZ3Vy
YXRpb24geyB0b1BsYXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCB1cmwpIH0KK3sK
K30KKworUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bihSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24p
CisgICAgOiBtX2NvbmZpZ3VyYXRpb24geyBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pIH0KK3sKK30K
Kwordm9pZCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9jb25maWd1cmF0aW9uOworfQorCitP
cHRpb25hbDxQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiBQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0YXRpYyBOU0FycmF5
ICphbGxvd2VkQ2xhc3NlczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Cisg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgYXV0byBhbGxvd2VkID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjFdKTsKKyAg
ICAgICAgaWYgKGF1dG8gcGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MgPSBQQUw6Omdl
dFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkNsYXNzKCkpCisgICAgICAgICAgICBbYWxsb3dl
ZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3NdOworICAgICAgICBh
bGxvd2VkQ2xhc3NlcyA9IFthbGxvd2VkIGNvcHldOworICAgIH0pOworCisgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gSVBDOjpkZWNvZGU8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPihkZWNv
ZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CisgICAgaWYgKCFjb25maWd1cmF0aW9uKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24geyBXVEZNb3ZlKCpjb25maWd1cmF0aW9uKSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXRBZGRpdGlvbnMKKworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LmNwcAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBAIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpX
ZWJQYXltZW50Q28KICAgICAsIG1fY2FuTWFrZVBheW1lbnRzUXVldWUgeyBXb3JrUXVldWU6OmNy
ZWF0ZSgiY29tLmFwcGxlLldlYktpdC5DYW5NYWtlUGF5bWVudHMiKSB9CiB7CiAgICAgbV9jbGll
bnQucGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKCp0aGlzLCBNZXNzYWdlczo6
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMp
OwotICAgIGZpbmlzaENvbnN0cnVjdGlvbigqdGhpcyk7CiB9CiAKIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Ojp+V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkoKQpJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4
ICszNywxMCBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtR
dWV1ZS5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRB
ZGRpdGlvbnMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlBZGRpdGlvbnMuaD4KKyNpZiBIQVZF
KFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKyNpbmNsdWRlIDx3dGYvV2Vha09iakNQdHIuaD4KK09C
SkNfQ0xBU1MgUEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcjsKK09CSkNfQ0xBU1MgVUlWaWV3
Q29udHJvbGxlcjsKICNlbmRpZgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTYyLDYgKzY0LDggQEAg
T0JKQ19DTEFTUyBVSVZpZXdDb250cm9sbGVyOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xh
c3MgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjsKK2NsYXNzIFBheW1lbnRTZXR1cEZlYXR1cmVz
OwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eQpAQCAtMTI0LDYgKzEyOCwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWJvcnRQYXltZW50U2Vz
c2lvbigpOwogICAgIHZvaWQgY2FuY2VsUGF5bWVudFNlc3Npb24oKTsKIAorI2lmIEhBVkUoUEFT
U0tJVF9QQVlNRU5UX1NFVFVQKQorICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhjb25zdCBQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBQYXlt
ZW50U2V0dXBGZWF0dXJlcyYpPiYmKTsKKyAgICB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25z
dCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiwgY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGVuZEFwcGxlUGF5
U2V0dXAoKTsKKyAgICB2b2lkIHBsYXRmb3JtQmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24mLCBjb25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcGxhdGZvcm1FbmRBcHBsZVBh
eVNldHVwKCk7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuQmVnaW4oKSBjb25zdDsKICAgICBib29s
IGNhbkNhbmNlbCgpIGNvbnN0OwogICAgIGJvb2wgY2FuQ29tcGxldGVQYXltZW50KCkgY29uc3Q7
CkBAIC0xOTEsMTIgKzIwMyw4IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TV2luZG93PiBt
X3NoZWV0V2luZG93OwogICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9zaGVldFdpbmRvd1dpbGxD
bG9zZU9ic2VydmVyOwogI2VuZGlmCi0gICAgCi0jaWYgZGVmaW5lZChXRUJQQVlNRU5UQ09PUkRJ
TkFUT1JQUk9YWV9BRERJVElPTlMpCi1XRUJQQVlNRU5UQ09PUkRJTkFUT1JQUk9YWV9BRERJVElP
TlMKLSN1bmRlZiBXRUJQQVlNRU5UQ09PUkRJTkFUT1JQUk9YWV9BRERJVElPTlMKLSNlbHNlCi0g
ICAgdm9pZCBmaW5pc2hDb25zdHJ1Y3Rpb24oV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSB7
IH0KKyNpZiBQTEFURk9STShJT1MpCisgICAgV2Vha09iakNQdHI8UEtQYXltZW50U2V0dXBWaWV3
Q29udHJvbGxlcj4gbV9wYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcjsKICNlbmRpZgogfTsKIApJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxMSBAQCBt
ZXNzYWdlcyAtPiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSBOCiAgICAgQ29tcGxldGVQYXlt
ZW50U2Vzc2lvbihPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4g
cmVzdWx0KQogICAgIEFib3J0UGF5bWVudFNlc3Npb24oKQogICAgIENhbmNlbFBheW1lbnRTZXNz
aW9uKCkKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKyAgICBHZXRTZXR1cEZlYXR1
cmVzKFdlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSAtPiAo
V2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJlcyBmZWF0dXJlcykgQXN5bmMKKyAgICBCZWdpbkFw
cGxlUGF5U2V0dXAoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRp
b24sIFdlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMgZmVhdHVyZXMpIC0+IChib29sIHJlc3Vs
dCkgQXN5bmMKKyAgICBFbmRBcHBsZVBheVNldHVwKCkKKyNlbmRpZgogfQogCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
Y29jb2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9u
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFW
RShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2Eu
aCIKKyNpbXBvcnQgIkRlY29kZXIuaCIKKyNpbXBvcnQgIkVuY29kZXIuaCIKKyNpbXBvcnQgIlBh
c3NLaXRTb2Z0TGlua0FkZGl0aW9ucy5oIgorI2ltcG9ydCA8d3RmL1VSTC5oPgorCitAaW50ZXJm
YWNlIFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiAoV2ViS2l0KQorQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnNpZ25lZEZpZWxkczsKK0BlbmQKKwor
bmFtZXNwYWNlIFdlYktpdEFkZGl0aW9ucyB7CisKK3N0YXRpYyBSZXRhaW5QdHI8UEtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uPiB0b1BsYXRmb3JtQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNldHVwOjpDb25maWd1cmF0aW9uJiBjb3JlQ29uZmlndXJhdGlvbiwgY29uc3Qg
VVJMJiB1cmwpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghUEFMOjpnZXRQS1BheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcygpKQorICAgICAgICByZXR1cm4gbmlsOworI2VuZGlm
CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uSW5zdGFuY2UoKSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24g
c2V0TWVyY2hhbnRJZGVudGlmaWVyOmNvcmVDb25maWd1cmF0aW9uLm1lcmNoYW50SWRlbnRpZmll
cl07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0T3JpZ2luYXRpbmdVUkw6dXJsXTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRSZWZlcnJlcklkZW50aWZpZXI6Y29yZUNvbmZpZ3VyYXRpb24ucmVmZXJy
ZXJJZGVudGlmaWVyXTsKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KKyAgICBb
Y29uZmlndXJhdGlvbiBzZXRTaWduYXR1cmU6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmF0dXJlXTsK
K0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECisKKyAgICBpZiAoW2NvbmZpZ3VyYXRp
b24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRTaWduZWRGaWVsZHM6KV0pIHsKKyAg
ICAgICAgTlNNdXRhYmxlQXJyYXkgKnNpZ25lZEZpZWxkcyA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTpjb3JlQ29uZmlndXJhdGlvbi5zaWduZWRGaWVsZHMuc2l6ZSgpXTsKKyAg
ICAgICAgZm9yIChhdXRvJiBzaWduZWRGaWVsZCA6IGNvcmVDb25maWd1cmF0aW9uLnNpZ25lZEZp
ZWxkcykKKyAgICAgICAgICAgIFtzaWduZWRGaWVsZHMgYWRkT2JqZWN0OnNpZ25lZEZpZWxkXTsK
KyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0U2lnbmVkRmllbGRzOnNpZ25lZEZpZWxkc107Cisg
ICAgfQorCisgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Cit9CisKK1BheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb246OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6QXBwbGVQ
YXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwpCisg
ICAgOiBtX2NvbmZpZ3VyYXRpb24geyB0b1BsYXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0
aW9uLCB1cmwpIH0KK3sKK30KKworUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbihSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiYm
IGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2NvbmZpZ3VyYXRpb24geyBXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pIH0KK3sKK30KKwordm9pZCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9jb25maWd1
cmF0aW9uOworfQorCitPcHRpb25hbDxQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiBQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IHN0YXRpYyBOU0FycmF5ICphbGxvd2VkQ2xhc3NlczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAg
YXV0byBhbGxvd2VkID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENh
cGFjaXR5OjFdKTsKKyAgICAgICAgaWYgKGF1dG8gcGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
Q2xhc3MgPSBQQUw6OmdldFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkNsYXNzKCkpCisgICAg
ICAgICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xh
c3NdOworICAgICAgICBhbGxvd2VkQ2xhc3NlcyA9IFthbGxvd2VkIGNvcHldOworICAgIH0pOwor
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gSVBDOjpkZWNvZGU8UEtQYXltZW50U2V0dXBDb25m
aWd1cmF0aW9uPihkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CisgICAgaWYgKCFjb25maWd1cmF0
aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFBheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb24geyBXVEZNb3ZlKCpjb25maWd1cmF0aW9uKSB9OworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXRBZGRpdGlvbnMKKworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9QQVlN
RU5UX1NFVFVQKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
Lm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9j
b2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNywxNiArMzcsMTcgQEAKICNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9jb2Nv
YS9WZWN0b3JDb2NvYS5oPgogCi0jaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+
Ci0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25z
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2FBZGRpdGlvbnMubW0+Ci0jZWxzZQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci1zdGF0aWMgdm9pZCBmaW5pc2hDcmVhdGluZyhQS1BheW1lbnRSZXF1
ZXN0ICosIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikgeyB9
Ci19CisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisjaW1wb3J0ICJBUElVSUNsaWVu
dC5oIgorI2ltcG9ydCAiQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oIgorI2ltcG9ydCAi
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisj
aW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJX
ZWJQcm9jZXNzUHJveHkuaCIKICNlbmRpZgogCisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNv
ZnRMaW5rLmg+CisKIC8vIEZJWE1FOiBXZSBkb24ndCBzdXBwb3J0IGFueSBwbGF0Zm9ybXMgd2l0
aG91dCAtc2V0VGh1bWJuYWlsVVJMczosIHNvIHRoaXMgY2FuIGJlIHJlbW92ZWQuCiBAaW50ZXJm
YWNlIFBLUGF5bWVudFJlcXVlc3QgKCkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5T
VVJMICp0aHVtYm5haWxVUkw7CkBAIC02MSw2ICs2MiwxOSBAQCBAaW50ZXJmYWNlIFBLUGF5bWVu
dFJlcXVlc3QgKFN0YWdpbmcpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgdm9pZCBm
aW5pc2hDcmVhdGluZyhQS1BheW1lbnRSZXF1ZXN0ICpwbGF0Zm9ybVJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0KQoreworI2lmIEhB
VkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisgICAgaWYgKFBLUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IHJlcXVlc3QuaW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uKCkucGxhdGZvcm1Db25maWd1cmF0aW9uKCkpIHsKKyAgICAgICAgcGxhdGZvcm1SZXF1ZXN0
Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247CisgICAgICAgIHBsYXRm
b3JtUmVxdWVzdC5yZXF1ZXN0VHlwZSA9IFBLUGF5bWVudFJlcXVlc3RUeXBlSW5zdGFsbG1lbnQ7
CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGxhdGZvcm1SZXF1ZXN0KTsKKyAgICBV
TlVTRURfUEFSQU0ocmVxdWVzdCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBT
dHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgUExBVEZP
Uk0oTUFDKQpAQCAtMjc5LDYgKzI5MywxMDkgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6cGxhdGZvcgogICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+Y29tcGxldGVQYXlt
ZW50TWV0aG9kU2VsZWN0aW9uKHVwZGF0ZSk7CiB9CiAKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVO
VF9TRVRVUCkKKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Z2V0U2V0dXBGZWF0
dXJlcyhjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBNZXNz
YWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkdldFNldHVwRmVhdHVyZXM6OkFzeW5j
UmVwbHkmJiByZXBseSkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFQQUw6OmdldFBL
UGF5bWVudFNldHVwQ29udHJvbGxlckNsYXNzKCkpIHsKKyAgICAgICAgcmVwbHkoeyB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgYXV0byBjb21wbGV0aW9uID0gbWFr
ZUJsb2NrUHRyKFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShOU0FycmF5PFBLUGF5bWVudFNldHVw
RmVhdHVyZSAqPiAqZmVhdHVyZXMpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3JlcGx5ID0gV1RGTW92ZShyZXBseSksIGZlYXR1cmVzID0gcmV0YWluUHRyKGZl
YXR1cmVzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlcGx5KFBheW1lbnRTZXR1cEZlYXR1
cmVzIHsgV1RGTW92ZShmZWF0dXJlcykgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCitBTExP
V19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCisgICAgW1BBTDo6Z2V0UEtQYXltZW50U2V0
dXBDb250cm9sbGVyQ2xhc3MoKSBwYXltZW50U2V0dXBGZWF0dXJlc0ZvckNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5wbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb21wbGV0aW9uOmNvbXBsZXRp
b24uZ2V0KCldOworQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKK30KKwordm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6YmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFBheW1lbnRTZXR1cEZl
YXR1cmVzJiBmZWF0dXJlcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpC
ZWdpbkFwcGxlUGF5U2V0dXA6OkFzeW5jUmVwbHkmJiByZXBseSkKK3sKKyAgICBwbGF0Zm9ybUJl
Z2luQXBwbGVQYXlTZXR1cChjb25maWd1cmF0aW9uLCBmZWF0dXJlcywgV1RGTW92ZShyZXBseSkp
OworfQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjplbmRBcHBsZVBheVNldHVw
KCkKK3sKKyAgICBwbGF0Zm9ybUVuZEFwcGxlUGF5U2V0dXAoKTsKK30KKworI2lmIFBMQVRGT1JN
KE1BQykKKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFw
cGxlUGF5U2V0dXAoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
biwgY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMmIGZlYXR1cmVzLCBNZXNzYWdlczo6V2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OkJlZ2luQXBwbGVQYXlTZXR1cDo6QXN5bmNSZXBseSYmIHJl
cGx5KQoreworICAgIGlmICghUEFMOjpnZXRQS1BheW1lbnRTZXR1cFJlcXVlc3RDbGFzcygpKSB7
CisgICAgICAgIHJlcGx5KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRTZXR1cFJlcXVlc3RJbnN0
YW5jZSgpIGluaXRdKTsKKyAgICBbcmVxdWVzdCBzZXRDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24ucGxhdGZvcm1Db25maWd1cmF0aW9uKCldOworICAgIFtyZXF1ZXN0IHNldFBheW1lbnRTZXR1
cEZlYXR1cmVzOmZlYXR1cmVzLnBsYXRmb3JtRmVhdHVyZXMoKV07CisKKyAgICBhdXRvIGNvbXBs
ZXRpb24gPSBtYWtlQmxvY2tQdHIoW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKEJPT0wgc3VjY2Vz
cykgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVwbHkgPSBX
VEZNb3ZlKHJlcGx5KSwgc3VjY2Vzc10oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlcGx5KHN1
Y2Nlc3MpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGF1dG8gcGF5bWVudFNldHVwQ29u
dHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRTZXR1cENvbnRyb2xsZXJJbnN0
YW5jZSgpIGluaXRdKTsKKworQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgorICAg
IFtwYXltZW50U2V0dXBDb250cm9sbGVyIHByZXNlbnRQYXltZW50U2V0dXBSZXF1ZXN0OnJlcXVl
c3QuZ2V0KCkgY29tcGxldGlvbjpjb21wbGV0aW9uLmdldCgpXTsKK0FMTE9XX05FV19BUElfV0lU
SE9VVF9HVUFSRFNfRU5ECit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBs
YXRmb3JtRW5kQXBwbGVQYXlTZXR1cCgpCit7Cit9CisKKyNlbHNlIC8vIFBMQVRGT1JNKE1BQykK
Kwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFwcGxlUGF5
U2V0dXAoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29u
c3QgUGF5bWVudFNldHVwRmVhdHVyZXMmIGZlYXR1cmVzLCBNZXNzYWdlczo6V2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OkJlZ2luQXBwbGVQYXlTZXR1cDo6QXN5bmNSZXBseSYmIHJlcGx5KQor
eworICAgIFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IG1fcGF5
bWVudENvb3JkaW5hdG9yUHJveHkubV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGlu
Z1ZpZXdDb250cm9sbGVyKG1fcGF5bWVudENvb3JkaW5hdG9yUHJveHkpOworICAgIGlmICghcHJl
c2VudGluZ1ZpZXdDb250cm9sbGVyKSB7CisgICAgICAgIHJlcGx5KGZhbHNlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQ
S1BheW1lbnRTZXR1cFJlcXVlc3RJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBbcmVxdWVzdCBzZXRD
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24ucGxhdGZvcm1Db25maWd1cmF0aW9uKCldOworICAg
IFtyZXF1ZXN0IHNldFBheW1lbnRTZXR1cEZlYXR1cmVzOmZlYXR1cmVzLnBsYXRmb3JtRmVhdHVy
ZXMoKV07CisKKyAgICBhdXRvIHBheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyID0gYWRvcHROUyhb
UEFMOjphbGxvY1BLUGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRo
UGF5bWVudFNldHVwUmVxdWVzdDpyZXF1ZXN0LmdldCgpXSk7CisgICAgaWYgKCFwYXltZW50U2V0
dXBWaWV3Q29udHJvbGxlcikgeworICAgICAgICByZXBseShmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoW3JlcGx5ID0g
V1RGTW92ZShyZXBseSldKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJl
cGx5KHRydWUpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGVuZEFwcGxlUGF5U2V0dXAo
KTsKKyAgICBbcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjpw
YXltZW50U2V0dXBWaWV3Q29udHJvbGxlci5nZXQoKSBhbmltYXRlZDpZRVMgY29tcGxldGlvbjpj
b21wbGV0aW9uLmdldCgpXTsKKyAgICBtX3BheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyID0gcGF5
bWVudFNldHVwVmlld0NvbnRyb2xsZXIuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnBsYXRmb3JtRW5kQXBwbGVQYXlTZXR1cCgpCit7CisgICAgW21fcGF5bWVu
dFNldHVwVmlld0NvbnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6WUVTIGNv
bXBsZXRpb246bmlsXTsKKyAgICBtX3BheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyID0gbmlsOwor
fQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BB
WU1FTlRfU0VUVVApCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KEFQUExFX1BBWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNDEsMTkgKzQxLDU1IEBACiAjaW1wb3J0IDxVSUtpdC9VSUZvbnQu
aD4KICNlbmRpZgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktp
dEFkZGl0aW9ucy9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYUFkZGl0aW9ucy5tbT4KLSNlbGlm
IEVOQUJMRShBUFBMRV9QQVkpCiBuYW1lc3BhY2UgSVBDIHsKLXN0YXRpYyBib29sIGZpbmlzaERl
Y29kaW5nKERlY29kZXImLCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYp
IHsgcmV0dXJuIHRydWU7IH0KLXN0YXRpYyB2b2lkIGZpbmlzaEVuY29kaW5nKEVuY29kZXImLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIHsgfQordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCitzdGF0aWMgYm9v
bCBmaW5pc2hEZWNvZGluZyhEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCkKK3sKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RB
TExNRU5UUykKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1
cmF0aW9uPiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisgICAgZGVjb2RlciA+PiBpbnN0YWxs
bWVudENvbmZpZ3VyYXRpb247CisgICAgaWYgKCFpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlcXVlc3Quc2V0SW5zdGFsbG1lbnRDb25maWd1
cmF0aW9uKFdURk1vdmUoKmluc3RhbGxtZW50Q29uZmlndXJhdGlvbikpOworICAgIHJldHVybiB0
cnVlOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFN
KHJlcXVlc3QpOworICAgIHJldHVybiB0cnVlOworI2VuZGlmCiB9CisKK3N0YXRpYyB2b2lkIGZp
bmlzaEVuY29kaW5nKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5T
VEFMTE1FTlRTKQorICAgIGVuY29kZXIgPDwgcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRp
b24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVuY29kZXIpOworICAgIFVOVVNFRF9QQVJB
TShyZXF1ZXN0KTsKICNlbmRpZgorfQogCi1uYW1lc3BhY2UgSVBDIHsKLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCiAKLSNpZiBFTkFCTEUo
QVBQTEVfUEFZKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6
UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBl
bmNvZGVyIDw8IGNvbmZpZ3VyYXRpb24ucGxhdGZvcm1Db25maWd1cmF0aW9uKCk7Cit9CisKK09w
dGlvbmFsPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2Rl
PFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4oZGVjb2RlciwgUEFMOjpnZXRQS1Bh
eW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb25DbGFzcygpKTsKKyAgICBpZiAoIWNvbmZpZ3Vy
YXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyBXVEZN
b3ZlKCpjb25maWd1cmF0aW9uKSB9OworfQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX0lOU1RB
TExNRU5UUykKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYgcGF5bWVudCkKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDAwMyw2ICs0MDAzLDEwIEBACiAJCTVDNDZD
MEFEMjFCNzE5OEMwMEJDNTk5MSAvKiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzQ2QzBBRTIxQjcxQUUyMDBC
QzU5OTEgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNEI5RDhBMjEw
QThDNDYwMDhGMTREMSAvKiBVbmRvT3JSZWRvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVuZG9PclJlZG8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RD
REQyNDQ2NUJGOTAwQTkzMTI0IC8qIEFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcHBsZVBheVBheW1lbnRTZXR1
cEZlYXR1cmVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENERTI0NDY1
QkY5MDBBOTMxMjQgLyogUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0RGMjQ0NjVCRjkwMEE5MzEyNCAvKiBBcHBsZVBh
eVBheW1lbnRTZXR1cEZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUM1M0RDRTAyNDQ2NUJGOTAwQTkzMTI0IC8qIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVDRUMz
ODIyMDk1ODMyMDBENkJCQjAgLyogRGFlbW9uRW50cnlQb2ludC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEYWVtb25FbnRyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDNUNFQzM5MjIwOTU4MzIwMEQ2QkJCMCAvKiBEYWVtb25FbnRyeVBvaW50Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGFlbW9uRW50cnlQb2lu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1RDIzODcyMjdBMTg5MTAwMEI5
QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IF9XS0N1c3RvbUhlYWRlckZpZWxkc0ludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjA5LDYgKzYyMTMsMTAgQEAKIAkJCQkxQUIxRjc3NzFE
MUIzMEE5MDA3QzlCRDEgLyogY29jb2EgKi8sCiAJCQkJMUFCMUY3N0ExRDFCMzBBOTAwN0M5QkQx
IC8qIGlvcyAqLywKIAkJCQkxQUIxRjc3QzFEMUIzMEE5MDA3QzlCRDEgLyogbWFjICovLAorCQkJ
CTVDNTNEQ0RGMjQ0NjVCRjkwMEE5MzEyNCAvKiBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVz
LmggKi8sCisJCQkJNUM1M0RDREQyNDQ2NUJGOTAwQTkzMTI0IC8qIEFwcGxlUGF5UGF5bWVudFNl
dHVwRmVhdHVyZXMubW0gKi8sCisJCQkJNUM1M0RDREUyNDQ2NUJGOTAwQTkzMTI0IC8qIFBheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk1QzUzRENFMDI0NDY1QkY5MDBBOTMxMjQg
LyogUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbSAqLywKIAkJCQkxQUIxRjc4ODFEMUIzMzU1
MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwICovLAogCQkJCTFBQjFG
Nzg5MUQxQjMzNTUwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oICovLAog
CQkJCTFBQjFGNzhBMUQxQjMzNTUwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbiAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCShyZXZpc2lvbiAy
NTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWSkKIAorI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMu
aCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5o
IgpAQCAtMjIwLDYgKzIyMiwzNiBAQCBib29sIFdlYlBheW1lbnRDb29yZGluYXRvcjo6cmVtb3Rl
VUlFbmFiCiB9CiAjZW5kaWYKIAordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmdldFNldHVw
RmVhdHVyZXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorICAgIG1fd2ViUGFnZS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpH
ZXRTZXR1cEZlYXR1cmVzKFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24geyBjb25maWd1cmF0aW9u
LCB1cmwgfSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKGNvbmZpZ3VyYXRpb24pOworICAgIFVOVVNFRF9QQVJBTSh1cmwpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3I6OmJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYgZmVhdHVyZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgSEFWRShQQVNTS0lU
X1BBWU1FTlRfU0VUVVApCisgICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkJlZ2luQXBwbGVQYXlTZXR1cChQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uIHsgY29uZmlndXJhdGlvbiwgdXJsIH0sIFBheW1lbnRTZXR1cEZl
YXR1cmVzIHsgV1RGTW92ZShmZWF0dXJlcykgfSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbmZpZ3VyYXRpb24pOworICAgIFVOVVNFRF9Q
QVJBTSh1cmwpOworICAgIFVOVVNFRF9QQVJBTShmZWF0dXJlcyk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpl
bmRBcHBsZVBheVNldHVwKCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKyAg
ICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkVu
ZEFwcGxlUGF5U2V0dXAoKSk7CisjZW5kaWYKK30KKwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmgJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODUs
NiArODUsMTAgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyB1c2VyQWdlbnRTY3JpcHRzQmxvY2tl
ZEVycm9yTWVzc2FnZSgpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBnZXRTZXR1cEZlYXR1cmVz
KGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1
cEZlYXR1cmU+PiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBiZWdpbkFwcGxlUGF5U2V0dXAoY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGVuZEFwcGxlUGF5U2V0dXAo
KSBmaW5hbDsKKwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAK
QEAgLTExMiwxMCArMTE2LDYgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CiAK
ICAgICBPcHRpb25hbDxBdmFpbGFibGVQYXltZW50TmV0d29ya3NTZXQ+IG1fYXZhaWxhYmxlUGF5
bWVudE5ldHdvcmtzOwotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdl
YktpdEFkZGl0aW9ucy9XZWJQYXltZW50Q29vcmRpbmF0b3JBZGRpdGlvbnMuaD4KLSNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396483</attachid>
            <date>2020-04-14 17:42:05 -0700</date>
            <delta_ts>2020-04-14 18:30:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210521-20200414174204.patch</filename>
            <type>text/plain</type>
            <size>125450</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAyMC0wNC0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgQXBw
bGVQYXkgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0byBXZWJDb3JlIGFuZCBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDUyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgT25seSA0IG1pbm9yIG1v
ZGlmaWNhdGlvbnMgd2VyZSBuZWNlc3NhcnksIGFzIGZvbGxvd3M6CisKKyAgICAgICAgMS4gUGF5
bWVudFNldHVwRmVhdHVyZXMncyBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1
cmUgKj4+IHdhcyBjaGFuZ2VkIHRvIFJldGFpblB0cjxOU0FycmF5PiB0byB3b3JrIHdpdGggQysr
LgorICAgICAgICAyLiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucyBtZXNzYWdl
cyB3ZXJlIG1vdmVkIHRvIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LCByZW1vdmluZyB0aGUg
bmVlZCBmb3IKKyAgICAgICAgICAgdGhlIGV4dHJhIG1lc3NhZ2UgcmVjZWl2ZXIsIHRoZSBPcHRp
b25hbDxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucz4sIGFuZCB0aGUgZmluaXNo
Q29uc3RydWN0aW9uLgorICAgICAgICAzLiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCdzIG1h
Y3JvcyB0aGF0IGNvbGxpZGVkIHdpdGggb3RoZXIgbWFjcm9zIHdlcmUgcmVuYW1lZC4gIFRoaXMg
d2FzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIGRpZmZlcmVudCBzb3VyY2UgdW5pZmljYXRpb24uCisg
ICAgICAgIDQuIFBheW1lbnRTZXR1cEZlYXR1cmVzLmggd2FzIHJlbmFtZWQgdG8gQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5oIHRvIGJlIGFibGUgdG8gYnVpbGQgd2l0aCBQYXltZW50U2V0
dXBGZWF0dXJlcy5oIGluIHRoZSBTREsuCisKKyAgICAgICAgVGhlIHJlc3QgaXMganVzdCBjb3B5
IGFuZCBwYXN0ZS4KKworICAgICAgICBUaGVyZSBpc24ndCBhIGdvb2Qgd2F5IHRvIGxhbmQgdGhp
cyB3aXRob3V0IGJyZWFraW5nIHRoZSBidWlsZCB3aXRob3V0IHJlbW92aW5nIHRoZSBmaWxlcyBm
cm9tIFdlYktpdEFkZGl0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBzbyBJJ2xsIGRv
IHRoZSB0d28gYXQgdGhlIHNhbWUgdGltZSBsYXRlIGF0IG5pZ2h0IHRvIG5vdCBjYXVzZSBkaXNy
dXB0aW9uLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJl
c1N1cHBvcnRlZE5ldHdvcmtzKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5pc2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6aW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpzZXRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkRGlzY2xvc2VGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVw
OjpnZXRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OmJl
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsZVBheVNldHVwOjpzdXNwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2V0dXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGw6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpwbGF0Zm9ybUZlYXR1cmUg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0
dXJlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpzdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6c3VwcG9y
dHNJbnN0YWxsbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZl
YXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGw6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpiZWdpbkFwcGxlUGF5U2V0dXAp
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjplbmRBcHBsZVBh
eVNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
RGVjaW1hbE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUZlYXR1cmVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOjpQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmg6CisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5p
c2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRN
ZXRob2RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaENvbnZlcnRpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRH
cm91cElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVu
dFNlc3Npb25FcnJvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEVycm9y
KToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVx
dWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpyZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
dFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlz
bWlzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0Q2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2F0Y2hkb2dUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bWVyRmlyZWQpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dl
YkNvcmVBZGRpdGlvbnMubW06CisKIDIwMjAtMDQtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQZXJzaXN0ZW50Q29kZXJzIHNob3VsZCB1
c2UgbW9kZXJuIGRlY29kaW5nIHN5bnRheApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgSlNfQklORElOR19JRExTID0g
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb2RlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlMaW5lSXRlbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnQuaWRsIFwKQEAgLTExOCw2ICsxMTksOSBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVz
dEJhc2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bkVycm9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXAuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kLmlkbCBcCkBA
IC0xMjU1LDggKzEyNTksNiBAQCB2cGF0aCAlLmluICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9T
RUFSCiBBRERJVElPTkFMX0VWRU5UX05BTUVTID0KIEFERElUSU9OQUxfRVZFTlRfVEFSR0VUX0ZB
Q1RPUlkgPQogCi0taW5jbHVkZSBXZWJDb3JlRGVyaXZlZFNvdXJjZXNBZGRpdGlvbnMubWFrZQot
CiBKU19CSU5ESU5HX0lETFMgKz0gJChBRERJVElPTkFMX0JJTkRJTkdfSURMUykKIAogYWxsIDog
JChBRERJVElPTkFMX0JJTkRJTkdfSURMUzolLmlkbD1KUyUuaCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTkzLDYgKzU5Myw4IEBAIFdITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlS
ZXF1ZXN0QmFzZS5jcHAKKyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCisg
ICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQogICAgIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwCkBAIC02MDAsNiArNjAyLDcgQEAgV0hM
U0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmNwcAorICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbi5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0
b3IubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcAogCkBAIC02MTgs
NiArNjIxLDcgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5RXJyb3IuY3BwCiAgICAgSlNBcHBsZVBheUVycm9yQ29kZS5jcHAKICAgICBKU0FwcGxl
UGF5RXJyb3JDb250YWN0RmllbGQuY3BwCisgICAgSlNBcHBsZVBheUluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5jcHAKICAgICBKU0FwcGxlUGF5TGluZUl0ZW0uY3BwCiAgICAgSlNBcHBsZVBheU1l
cmNoYW50Q2FwYWJpbGl0eS5jcHAKICAgICBKU0FwcGxlUGF5TW9kaWZpZXIuY3BwCkBAIC02MzUs
NiArNjM5LDkgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5UmVxdWVzdEJhc2UuY3BwCiAgICAgSlNBcHBsZVBheVNlc3Npb24uY3BwCiAgICAgSlNB
cHBsZVBheVNlc3Npb25FcnJvci5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXAuY3BwCisgICAgSlNB
cHBsZVBheVNldHVwRmVhdHVyZS5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5j
cHAKICAgICBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAKICAgICBK
U0FwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLmNwcAogICAgIEpTQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFM
TE1FTlRTKQorCisjaW5jbHVkZSAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVh
dHVyZVR5cGUgZmVhdHVyZVR5cGUgeyBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlQ2Fy
ZCB9OworICAgIFN0cmluZyBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhOworICAgIFN0cmluZyBvcGVu
VG9CdXlUaHJlc2hvbGRBbW91bnQ7CisgICAgU3RyaW5nIGJpbmRpbmdUb3RhbEFtb3VudDsKKyAg
ICBTdHJpbmcgY3VycmVuY3lDb2RlOworICAgIFN0cmluZyBtZXJjaGFudElkZW50aWZpZXI7Cisg
ICAgU3RyaW5nIHJlZmVycmVySWRlbnRpZmllcjsKKyAgICBib29sIGlzSW5TdG9yZVB1cmNoYXNl
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50
Q29uZmlndXJhdGlvbi5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1B
UFBMRV9QQVlfSU5TVEFMTE1FTlRTLAorXSBkaWN0aW9uYXJ5IEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgZmVhdHVyZVR5cGUg
PSAiYXBwbGVDYXJkIjsKKyAgICBET01TdHJpbmcgbWVyY2hhbmRpc2luZ0ltYWdlRGF0YTsKKyAg
ICBET01TdHJpbmcgb3BlblRvQnV5VGhyZXNob2xkQW1vdW50OworICAgIERPTVN0cmluZyBiaW5k
aW5nVG90YWxBbW91bnQ7CisgICAgRE9NU3RyaW5nIGN1cnJlbmN5Q29kZTsKKyAgICBET01TdHJp
bmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgIERPTVN0cmluZyByZWZlcnJlcklkZW50aWZpZXI7
CisgICAgYm9vbGVhbiBpc0luU3RvcmVQdXJjaGFzZTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmgJKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50Q29udGFjdC5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudE1ldGhvZC5oIgogCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBw
bGVQYXlQYXltZW50QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50IHsKQEAgLTQ2LDExICs0Miw3IEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnQgewogICAgIFRva2VuIHRva2VuOwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5
bWVudENvbnRhY3Q+IGJpbGxpbmdDb250YWN0OwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVu
dENvbnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsKLQotI2lmIGRlZmluZWQoQVBQTEVQQVlQQVlNRU5U
X0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBB
WU1FTlRfQURESVRJT05TCi0jZW5kaWYKKyAgICBTdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICByZXF1aXJlZCBBcHBsZVBheVBheW1lbnRUb2tl
biB0b2tlbjsKICAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IGJpbGxpbmdDb250YWN0OwogICAg
IEFwcGxlUGF5UGF5bWVudENvbnRhY3Qgc2hpcHBpbmdDb250YWN0OworICAgIFtDb25kaXRpb25h
bD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSBET01TdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiBbCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmgJKHJldmlzaW9uIDI1OTkyMikK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50UGFzcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50
TWV0aG9kQWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVt
IGNsYXNzIEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGU7CkBAIC00NiwxMSArNDIsNyBAQCBzdHJ1
Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kIHsgICAgCiAgICAgT3B0aW9uYWw8VHlwZT4gdHlwZTsK
ICAgICBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRQYXNzPiBwYXltZW50UGFzczsKICAgICBPcHRp
b25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKLQotI2lmIGRlZmlu
ZWQoQVBQTEVQQVlQQVlNRU5UTUVUSE9EX0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVE1FVEhP
RF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBBWU1FTlRNRVRIT0RfQURESVRJT05TCi0jZW5k
aWYKKyAgICBTdHJpbmcgYmluZFRva2VuOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlk
bAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRNZXRob2QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0ICszMyw1IEBA
CiAgICAgQXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZSB0eXBlOwogICAgIEFwcGxlUGF5UGF5bWVu
dFBhc3MgcGF5bWVudFBhc3M7CiAgICAgQXBwbGVQYXlQYXltZW50Q29udGFjdCBiaWxsaW5nQ29u
dGFjdDsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gRE9NU3RyaW5n
IGJpbmRUb2tlbjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSwxMiBAQAogCiAj
aW5jbHVkZSAiQXBwbGVQYXlMaW5lSXRlbS5oIgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRl
QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICBBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFs
OwogICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXM7Ci0KLSNpZiBkZWZp
bmVkKEFQUExFUEFZUEFZTUVOVE1FVEhPRFVQREFURV9BRERJVElPTlMpCi1BUFBMRVBBWVBBWU1F
TlRNRVRIT0RVUERBVEVfQURESVRJT05TCi0jdW5kZWYgQVBQTEVQQVlQQVlNRU5UTUVUSE9EVVBE
QVRFX0FERElUSU9OUwotI2VuZGlmCisgICAgU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlm
aWVyOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbAkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw0ICsyOCw1IEBACiBd
IGRpY3Rpb25hcnkgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICByZXF1aXJlZCBB
cHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsOwogICAgIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+
IG5ld0xpbmVJdGVtczsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10g
RE9NU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlmaWVyOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNl
LmNwcAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVJlcXVlc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI5
IEBACiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVJlcXVlc3RCYXNlQWRkaXRpb25z
LmNwcD4KLSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgdm9pZCBmaW5pc2hDb252
ZXJ0aW5nKEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQXBwbGVQYXlSZXF1ZXN0QmFz
ZSYpIHsgfQotc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1bnNpZ25lZCwg
Y29uc3QgQXBwbGVQYXlSZXF1ZXN0QmFzZSYpIHsgcmV0dXJuIHRydWU7IH0KLX0KKworc3RhdGlj
IHZvaWQgZmluaXNoQ29udmVydGluZyhBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVz
dWx0LCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9Q
QVlfSU5TVEFMTE1FTlRTKQorICAgIGlmIChyZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlv
bikKKyAgICAgICAgcmVzdWx0LnNldEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihXVEZNb3ZlKCpy
ZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAjZW5kaWYKK30KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1
bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIHJldHVybiB2ZXJzaW9uIDwg
OCB8fCAhcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTSh2ZXJzaW9uKTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CisgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKK30KIAogc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiBj
b252ZXJ0QW5kVmFsaWRhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCB2ZXJzaW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkTmV0d29ya3MsIGNvbnN0IFBheW1lbnRDb29y
ZGluYXRvciYgcGF5bWVudENvb3JkaW5hdG9yKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1
ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMTAgQEAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiQXBwbGVQYXlDb250YWN0RmllbGQuaCIKKyNpbmNsdWRl
ICJBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFwcGxlUGF5
TWVyY2hhbnRDYXBhYmlsaXR5LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50Q29udGFjdC5o
IgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlv
bnMvQXBwbGVQYXlSZXF1ZXN0QmFzZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC01NCw5ICs1MSw4IEBAIHN0cnVjdCBBcHBs
ZVBheVJlcXVlc3RCYXNlIHsKICAgICBTdHJpbmcgYXBwbGljYXRpb25EYXRhOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHN1cHBvcnRlZENvdW50cmllczsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlSRVFV
RVNUQkFTRV9BRERJVElPTlMpCi1BUFBMRVBBWVJFUVVFU1RCQVNFX0FERElUSU9OUwotI3VuZGVm
IEFQUExFUEFZUkVRVUVTVEJBU0VfQURESVRJT05TCisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNU
QUxMTUVOVFMpCisgICAgT3B0aW9uYWw8QXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNSArNjUsMTcgQEAKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBs
ZVBheVNlc3Npb25BZGRpdGlvbnMuY3BwPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0
YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUGF5bWVudE1ldGhvZFVwZGF0ZSYsIEFwcGxlUGF5
UGF5bWVudE1ldGhvZFVwZGF0ZSYmKSB7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBheW1lbnRNZXRob2RVcGRhdGUmIGNv
bnZlcnRlZFVwZGF0ZSwgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlJiYgdXBkYXRlKQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGNvbnZlcnRlZFVwZGF0ZS5z
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcih1cGRhdGUuaW5zdGFsbG1lbnRHcm91cElkZW50
aWZpZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udmVydGVkVXBkYXRlKTsKKyAgICBV
TlVTRURfUEFSQU0odXBkYXRlKTsKKyNlbmRpZgorfQogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXBwbGVQYXlTZXNzaW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
NCArMjgsMTEgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiUGF5bWVudENv
bnRhY3QuaCIKKyNpbmNsdWRlICJQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
LSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3RB
ZGRpdGlvbnMuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CkBAIC0xNDEsOSArMTM4LDkgQEAgcHVibGljOgog
ICAgIFJlcXVlc3RlciByZXF1ZXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQog
ICAgIHZvaWQgc2V0UmVxdWVzdGVyKFJlcXVlc3RlciByZXF1ZXN0ZXIpIHsgbV9yZXF1ZXN0ZXIg
PSByZXF1ZXN0ZXI7IH0KIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNTSU9OUEFZTUVOVFJFUVVF
U1RfUFVCTElDX0FERElUSU9OUykKLUFQUExFUEFZU0VTU0lPTlBBWU1FTlRSRVFVRVNUX1BVQkxJ
Q19BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVNFU1NJT05QQVlNRU5UUkVRVUVTVF9QVUJMSUNf
QURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICBjb25zdCBQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uJiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2luc3RhbGxtZW50Q29uZmlndXJhdGlvbjsgfQorICAgIHZvaWQgc2V0
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24m
JiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pIHsgbV9pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24g
PSBXVEZNb3ZlKGluc3RhbGxtZW50Q29uZmlndXJhdGlvbik7IH0KICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtMTcyLDkgKzE2OSw4IEBAIHByaXZhdGU6CiAKICAgICBSZXF1ZXN0ZXIgbV9yZXF1ZXN0
ZXIgeyBSZXF1ZXN0ZXI6OkFwcGxlUGF5SlMgfTsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNT
SU9OUEFZTUVOVFJFUVVFU1RfUFJJVkFURV9BRERJVElPTlMpCi1BUFBMRVBBWVNFU1NJT05QQVlN
RU5UUkVRVUVTVF9QUklWQVRFX0FERElUSU9OUwotI3VuZGVmIEFQUExFUEFZU0VTU0lPTlBBWU1F
TlRSRVFVRVNUX1BSSVZBVEVfQURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5U
UykKKyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIG1faW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBcHBsZVBheVNldHVwLmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQor
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiUGF5bWVudFNlc3Npb24uaCIKKyNpbmNsdWRlICJQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgYm9vbCBzaG91bGREaXNjbG9zZUZlYXR1cmVzKERvY3VtZW50JiBkb2N1bWVudCkKK3sK
KyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpOworICAgIGlmICghcGFnZSB8fCBwYWdl
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gZG9jdW1lbnQuc2V0dGluZ3MoKS5hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxs
b3dlZCgpOworfQorCit2b2lkIEFwcGxlUGF5U2V0dXA6OmdldFNldHVwRmVhdHVyZXMoRG9jdW1l
bnQmIGRvY3VtZW50LCBTZXR1cEZlYXR1cmVzUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgYXV0
byBjYW5DYWxsID0gUGF5bWVudFNlc3Npb246OmNhbkNyZWF0ZVNlc3Npb24oZG9jdW1lbnQpOwor
ICAgIGlmIChjYW5DYWxsLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2Uuc2V0dGxl
KGNhbkNhbGwucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkgewor
ICAgICAgICBwcm9taXNlLnNldHRsZShFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJlc29sdmUgd2l0aCBhbiBlbXB0eSBz
ZXF1ZW5jZSBvZiBmZWF0dXJlcyBpZiBBcHBsZSBQYXkgY2FwYWJpbGl0eSBkaXNjbG9zdXJlIGlz
IG5vdCBhbGxvd2VkLgorICAgIGlmICghc2hvdWxkRGlzY2xvc2VGZWF0dXJlcyhkb2N1bWVudCkp
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX3NldHVwRmVhdHVyZXNQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKworICAg
IHBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLmNsaWVudCgpLmdldFNldHVwRmVhdHVyZXMobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShWZWN0b3I8UmVmPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4mJiBzZXR1cEZlYXR1cmVzKSB7CisgICAgICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3NldHVwRmVhdHVyZXNQcm9taXNlLCBXVEY6
Om51bGxvcHQpLT5zZXR0bGUoV1RGTW92ZShzZXR1cEZlYXR1cmVzKSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgQXBwbGVQYXlTZXR1cDo6YmVnaW4oRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0b3I8UmVm
UHRyPEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcywgQmVnaW5Qcm9taXNlJiYgcHJv
bWlzZSkKK3sKKyAgICBhdXRvIGNhbkNhbGwgPSBQYXltZW50U2Vzc2lvbjo6Y2FuQ3JlYXRlU2Vz
c2lvbihkb2N1bWVudCk7CisgICAgaWYgKGNhbkNhbGwuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoY2FuQ2FsbC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yLCAiTXVzdCBjYWxsIEFwcGxlUGF5U2V0dXAuYmVnaW4gZnJvbSBhIHVz
ZXIgZ2VzdHVyZSBoYW5kbGVyLiIgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIHBy
b21pc2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fYmVnaW5Qcm9taXNlKSB7CisgICAgICAgIHByb21p
c2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9iZWdpblByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAg
IG1fcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7CisKKyAgICBw
YWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5iZWdpbkFwcGxlUGF5U2V0dXAobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgV1RGTW92ZShmZWF0dXJlcyksIFt0aGlzXShi
b29sIHJlc3VsdCkgeworICAgICAgICBpZiAobV9iZWdpblByb21pc2UpCisgICAgICAgICAgICBz
dGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUocmVzdWx0
KTsKKyAgICB9KTsKK30KKworQXBwbGVQYXlTZXR1cDo6QXBwbGVQYXlTZXR1cChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQoreworICAgIHN1c3BlbmRJZk5lZWRlZCgpOworfQorCit2b2lk
IEFwcGxlUGF5U2V0dXA6OnN0b3AoKQoreworICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UsIFdURjo6bnVs
bG9wdCktPnNldHRsZShFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworCisgICAgaWYgKG1fYmVn
aW5Qcm9taXNlKQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51
bGxvcHQpLT5zZXR0bGUoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKKworICAgIGlmIChhdXRv
IHBhZ2UgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucGFn
ZSgpKQorICAgICAgICBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5lbmRBcHBs
ZVBheVNldHVwKCk7CisKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgQXBwbGVQYXlTZXR1cDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIHN0
b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQ
UExFX1BBWV9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXR1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTZXR1cC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VU
VVApCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2ZURPTU9iamVjdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSlNET01Qcm9taXNlRGVmZXJyZWQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEFwcGxlUGF5U2V0dXBGZWF0dXJlOworY2xhc3MgRGVmZXJyZWRQcm9taXNlOworY2xhc3MgRG9j
dW1lbnQ7CisKK2NsYXNzIEFwcGxlUGF5U2V0dXAgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBw
dWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwPiB7CitwdWJsaWM6CisgICAgc3RydWN0IENv
bmZpZ3VyYXRpb24geworICAgICAgICBTdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgICAg
ICBTdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgc2lnbmF0dXJlOwor
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBzaWduZWRGaWVsZHM7CisgICAgfTsKKworICAgIHN0YXRp
YyBSZWY8QXBwbGVQYXlTZXR1cD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXBwbGVQYXlTZXR1cChjb250ZXh0LCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKSk7CisgICAgfQorCisgICAgdXNpbmcgU2V0dXBGZWF0dXJlc1Byb21pc2UgPSBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4+OworICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhEb2N1bWVudCYsIFNldHVwRmVhdHVyZXNQ
cm9taXNlJiYpOworCisgICAgdXNpbmcgQmVnaW5Qcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4+OworICAgIHZvaWQgYmVnaW4oRG9jdW1lbnQmLCBWZWN0b3I8UmVmUHRyPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4mJiwgQmVnaW5Qcm9taXNlJiYpOworCitwcml2YXRlOgorICAg
IEFwcGxlUGF5U2V0dXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENvbmZpZ3VyYXRpb24mJik7
CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkFwcGxlUGF5U2V0dXAiOyB9CisgICAgdm9p
ZCBzdG9wKCkgZmluYWw7CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZp
bmFsOworCisgICAgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgT3B0aW9uYWw8
U2V0dXBGZWF0dXJlc1Byb21pc2U+IG1fc2V0dXBGZWF0dXJlc1Byb21pc2U7CisgICAgT3B0aW9u
YWw8QmVnaW5Qcm9taXNlPiBtX2JlZ2luUHJvbWlzZTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2
aXR5PEFwcGxlUGF5U2V0dXA+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGwJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNldHVwLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKK10gZGljdGlvbmFyeSBBcHBsZVBh
eVNldHVwQ29uZmlndXJhdGlvbiB7CisgICAgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsK
KyAgICBET01TdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgIERPTVN0cmluZyBzaWduYXR1
cmU7CisgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBzaWduZWRGaWVsZHM7Cit9OworCitbCisgICAg
QWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKKyAgICBD
b25zdHJ1Y3RvcihBcHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSwKKyAg
ICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgRW5hYmxl
ZEJ5U2V0dGluZz1BcHBsZVBheSwKKyAgICBTZWN1cmVDb250ZXh0LAorXSBpbnRlcmZhY2UgQXBw
bGVQYXlTZXR1cCB7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNlPHNlcXVlbmNlPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4gZ2V0U2V0dXBGZWF0dXJlcygpOworICAgIFtDYWxsV2l0aD1E
b2N1bWVudF0gUHJvbWlzZTxib29sZWFuPiBiZWdpbihzZXF1ZW5jZTxBcHBsZVBheVNldHVwRmVh
dHVyZT4gc2V0dXBGZWF0dXJlcyk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1Mg
UEtQYXltZW50U2V0dXBGZWF0dXJlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xh
c3MgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIDogdWludDhfdDsKKworY2xhc3MgQXBwbGVQYXlT
ZXR1cEZlYXR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwRmVhdHVyZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+IGNyZWF0ZShQS1Bh
eW1lbnRTZXR1cEZlYXR1cmUgKmZlYXR1cmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBcHBsZVBheVNldHVwRmVhdHVyZShmZWF0dXJlKSk7CisgICAgfQorCisgICAgQXBw
bGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGUoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgU3Rh
dGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5zdXBwb3J0ZWQsCisgICAgICAgIFN1cHBvcnRlZCwK
KyAgICAgICAgU3VwcGxlbWVudGFyeVN1cHBvcnRlZCwKKyAgICAgICAgQ29tcGxldGVkLAorICAg
IH07CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKKworICAgIFBLUGF5bWVudFNldHVwRmVhdHVy
ZSAqcGxhdGZvcm1GZWF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlLmdldCgpOyB9CisK
KyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBib29sIHN1cHBvcnRzSW5z
dGFsbG1lbnRzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBBcHBsZVBheVNldHVwRmVhdHVyZShQS1BheW1lbnRTZXR1cEZlYXR1cmUgKik7
CisKKyAgICBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBGZWF0dXJlPiBtX2ZlYXR1cmU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1NF
VFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFs
PUFQUExFX1BBWV9TRVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVN0YXRlIHsKKyAg
ICAidW5zdXBwb3J0ZWQiLAorICAgICJzdXBwb3J0ZWQiLAorICAgICJzdXBwbGVtZW50YXJ5U3Vw
cG9ydGVkIiwKKyAgICAiY29tcGxldGVkIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPUFQUExF
X1BBWV9TRVRVUCwKKyAgICBFbmFibGVkQnlTZXR0aW5nPUFwcGxlUGF5LAorICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCisgICAgU2VjdXJlQ29udGV4dCwKK10gaW50ZXJmYWNlIEFwcGxl
UGF5U2V0dXBGZWF0dXJlIHsKKyAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1
dGUgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGU7CisgICAgW0NhY2hlZEF0dHJpYnV0ZV0g
cmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5U2V0dXBGZWF0dXJlU3RhdGUgc3RhdGU7CisgICAg
W0NhY2hlZEF0dHJpYnV0ZSwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNJbnN0YWxsbWVudHM7Cit9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXBGZWF0dXJlLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBcHBs
ZVBheVNldHVwRmVhdHVyZS5oIgorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworI2lt
cG9ydCAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW1wb3J0ICJQYXNzS2l0U1BJQWRk
aXRpb25zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlIEFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0eXBlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKFtt
X2ZlYXR1cmUgdHlwZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVR5cGVBcHBs
ZVBheToKKyAgICAgICAgcmV0dXJuIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZTo6QXBwbGVQYXk7
CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQYXlfWDoKKyAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIHJldHVybiBBcHBsZVBheVNldHVwRmVhdHVy
ZVR5cGU6OkFwcGxlQ2FyZDsKKyAgICB9Cit9CisKK0FwcGxlUGF5U2V0dXBGZWF0dXJlOjpTdGF0
ZSBBcHBsZVBheVNldHVwRmVhdHVyZTo6c3RhdGUoKSBjb25zdAoreworICAgIHN3aXRjaCAoW21f
ZmVhdHVyZSBzdGF0ZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlVW5z
dXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6VW5zdXBwb3J0ZWQ7CisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBvcnRlZDoKKyAgICAgICAgcmV0dXJuIFN0YXRl
OjpTdXBwb3J0ZWQ7CisgICAgY2FzZSBQS1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBsZW1l
bnRhcnlTdXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6U3VwcGxlbWVudGFyeVN1cHBv
cnRlZDsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlQ29tcGxldGVkOgorICAg
ICAgICByZXR1cm4gU3RhdGU6OkNvbXBsZXRlZDsKKyAgICB9Cit9CisKKyNpZiBFTkFCTEUoQVBQ
TEVfUEFZX0lOU1RBTExNRU5UUykKK2Jvb2wgQXBwbGVQYXlTZXR1cEZlYXR1cmU6OnN1cHBvcnRz
SW5zdGFsbG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fZmVhdHVyZSBzdXBwb3J0ZWRP
cHRpb25zXSAmIFBLUGF5bWVudFNldHVwRmVhdHVyZVN1cHBvcnRlZE9wdGlvbnNJbnN0YWxsbWVu
dHM7Cit9CisjZW5kaWYKKworQXBwbGVQYXlTZXR1cEZlYXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlKFBLUGF5bWVudFNldHVwRmVhdHVyZSAqZmVhdHVyZSkKKyAgICA6IG1fZmVhdHVyZSB7IGZl
YXR1cmUgfQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoQVBQTEVfUEFZX1NFVFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1
cmVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitlbnVtIGNsYXNzIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZSA6IHVpbnQ4X3Qg
eworICAgIEFwcGxlUGF5LAorICAgIEFwcGxlQ2FyZCwKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZVR5cGUuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9T
RVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgeworICAgICJhcHBsZVBheSIs
CisgICAgImFwcGxlQ2FyZCIKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oIgorI2luY2x1ZGUgIkFwcGxlUGF5U2V0dXAuaCIKKyNpbmNsdWRlICJBcHBsZVBheVNldHVw
RmVhdHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BheW1lbnRDb29yZGlu
YXRvckNsaWVudEFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRG9jdW1lbnQ7CkBAIC03MSwxMyArNzAsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorICAgIHZpcnR1YWwgdm9pZCBnZXRTZXR1
cEZlYXR1cmVzKGNvbnN0IEFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBBcHBsZVBheVNldHVwOjpD
b25maWd1cmF0aW9uJiwgY29uc3QgVVJMJiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheVNldHVwRmVh
dHVyZT4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIGVuZEFw
cGxlUGF5U2V0dXAoKSB7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwotCi0jaWYgZGVmaW5lZChQQVlNRU5U
Q09PUkRJTkFUT1JDTElFTlRfQURESVRJT05TKQotUEFZTUVOVENPT1JESU5BVE9SQ0xJRU5UX0FE
RElUSU9OUwotI3VuZGVmIFBBWU1FTlRDT09SRElOQVRPUkNMSUVOVF9BRERJVElPTlMKLSNlbmRp
ZgogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBQS1BheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb247CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEFw
cGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBQYXltZW50SW5z
dGFsbG1lbnRDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OworICAgIFBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24oY29uc3QgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24mKTsK
KyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24+JiYpOworCisgICAgUEtQYXltZW50SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBSZXRhaW5QdHI8UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBtX2NvbmZp
Z3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RB
TExNRU5UUykKKworI2ltcG9ydCAiQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCIK
KyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0b0RlY2ltYWxOdW1iZXIoKSBpbiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLgorc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNp
bWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQoreworICAgIGlmICghYW1vdW50KQorICAg
ICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciB6ZXJvXTsKKyAgICByZXR1cm4gW05TRGVjaW1h
bE51bWJlciBkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzphbW91bnQgbG9jYWxlOkB7IE5TTG9jYWxl
RGVjaW1hbFNlcGFyYXRvciA6IEAiLiIgfV07Cit9CisKK3N0YXRpYyBQS1BheW1lbnRTZXR1cEZl
YXR1cmVUeXBlIHBsYXRmb3JtRmVhdHVyZVR5cGUoY29uc3QgQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlJiBmZWF0dXJlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVUeXBlKSB7CisgICAgY2Fz
ZSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlUGF5OgorICAgICAgICByZXR1cm4gUEtQ
YXltZW50U2V0dXBGZWF0dXJlVHlwZUFwcGxlUGF5OworICAgIGNhc2UgQXBwbGVQYXlTZXR1cEZl
YXR1cmVUeXBlOjpBcHBsZUNhcmQ6CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCisgICAgICAgIHJldHVybiBQS1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQ
YXlfWDsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgfQor
fQorCitzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4g
Y3JlYXRlUGxhdGZvcm1Db25maWd1cmF0aW9uKGNvbnN0IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uJiBjb3JlQ29uZmlndXJhdGlvbikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uSW5z
dGFuY2UoKSBpbml0XSk7CisKKyAgICBbY29uZmlndXJhdGlvbiBzZXRGZWF0dXJlOnBsYXRmb3Jt
RmVhdHVyZVR5cGUoY29yZUNvbmZpZ3VyYXRpb24uZmVhdHVyZVR5cGUpXTsKKworICAgIFtjb25m
aWd1cmF0aW9uIHNldEJpbmRpbmdUb3RhbEFtb3VudDp0b0RlY2ltYWxOdW1iZXIoY29yZUNvbmZp
Z3VyYXRpb24uYmluZGluZ1RvdGFsQW1vdW50KV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0Q3Vy
cmVuY3lDb2RlOmNvcmVDb25maWd1cmF0aW9uLmN1cnJlbmN5Q29kZV07CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0SW5TdG9yZVB1cmNoYXNlOmNvcmVDb25maWd1cmF0aW9uLmlzSW5TdG9yZVB1cmNo
YXNlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRPcGVuVG9CdXlUaHJlc2hvbGRBbW91bnQ6dG9E
ZWNpbWFsTnVtYmVyKGNvcmVDb25maWd1cmF0aW9uLm9wZW5Ub0J1eVRocmVzaG9sZEFtb3VudCld
OworCisgICAgYXV0byBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmNvcmVDb25maWd1cmF0aW9uLm1lcmNo
YW5kaXNpbmdJbWFnZURhdGEgb3B0aW9uczowXSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVy
Y2hhbmRpc2luZ0ltYWdlRGF0YTptZXJjaGFuZGlzaW5nSW1hZ2VEYXRhLmdldCgpXTsKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVF9JREVOVElGSUVSUykKKyNpZiBQTEFURk9STShNQUMp
CisgICAgaWYgKCFbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dEluc3RhbGxtZW50TWVyY2hhbnRJZGVudGlmaWVyOildIHx8ICFbY29uZmlndXJhdGlvbiByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFJlZmVycmVySWRlbnRpZmllcjopXSkKKyAgICAg
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisjZW5kaWYKKyAgICBbY29uZmlndXJhdGlvbiBzZXRJ
bnN0YWxsbWVudE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElk
ZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldFJlZmVycmVySWRlbnRpZmllcjpjb3Jl
Q29uZmlndXJhdGlvbi5yZWZlcnJlcklkZW50aWZpZXJdOworI2VuZGlmCisKKyAgICByZXR1cm4g
Y29uZmlndXJhdGlvbjsKK30KKworUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjo6UGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihjb25zdCBBcHBsZVBheUluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IGNyZWF0
ZVBsYXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSB9Cit7Cit9CisKK1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb246OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24o
UmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0
aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShjb25maWd1cmF0aW9uKSB9Cit7
Cit9CisKK1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiAqUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbjo6cGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgJ
KHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudE1ldGhvZFVwZGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsNiBAQAogI2lu
Y2x1ZGUgIkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvUGF5bWVudE1ldGhvZFVwZGF0ZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIE9C
SkNfQ0xBU1MgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTUwLDExICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVG90YWxB
bmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKCkgY29uc3Q7CiAgICAgUEtQYXltZW50UmVx
dWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnBsYXRmb3JtVXBkYXRlKCkgY29uc3Q7CiAKLSNpZiBk
ZWZpbmVkKFBBWU1FTlRNRVRIT0RVUERBVEVfUFVCTElDX0FERElUSU9OUykKLVBBWU1FTlRNRVRI
T0RVUERBVEVfUFVCTElDX0FERElUSU9OUwotI3VuZGVmIFBBWU1FTlRNRVRIT0RVUERBVEVfUFVC
TElDX0FERElUSU9OUworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisgICAgdm9pZCBz
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKICNlbmRpZgotICAg
IAorCiBwcml2YXRlOgogICAgIE9wdGlvbmFsPFRvdGFsQW5kTGluZUl0ZW1zPiBtX3RvdGFsQW5k
TGluZUl0ZW1zOwogICAgIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZT4gbV9wbGF0Zm9ybVVwZGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDE4IEBACiAjaW1wb3J0ICJQYXltZW50TWV0
aG9kLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudENvY29h
QWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyB2b2lkIGZp
bmlzaENvbnZlcnRpbmcoUEtQYXltZW50ICosIEFwcGxlUGF5UGF5bWVudCYpIHsgfQotfQotI2Vu
ZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmco
UEtQYXltZW50ICpwYXltZW50LCBBcHBsZVBheVBheW1lbnQmIHJlc3VsdCkKK3sKKyNpZiBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGlmIChOU1N0cmluZyAqaW5zdGFsbG1lbnRBdXRo
b3JpemF0aW9uVG9rZW4gPSBwYXltZW50Lmluc3RhbGxtZW50QXV0aG9yaXphdGlvblRva2VuKQor
ICAgICAgICByZXN1bHQuaW5zdGFsbG1lbnRBdXRob3JpemF0aW9uVG9rZW4gPSBpbnN0YWxsbWVu
dEF1dGhvcml6YXRpb25Ub2tlbjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBheW1lbnQpOwor
ICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOworI2VuZGlmCit9CiAKIHN0YXRpYyBBcHBsZVBheVBh
eW1lbnQ6OlRva2VuIGNvbnZlcnQoUEtQYXltZW50VG9rZW4gKnBheW1lbnRUb2tlbikKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1ldGhvZENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDE4IEBACiAjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRNZXRo
b2RUeXBlLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudE1l
dGhvZENvY29hQWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRp
YyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICosIEFwcGxlUGF5UGF5bWVu
dE1ldGhvZCYpIHsgfQotfQotI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2
b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICpwYXltZW50TWV0aG9kLCBBcHBs
ZVBheVBheW1lbnRNZXRob2QmIHJlc3VsdCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1F
TlRTKQorICAgIGlmIChOU1N0cmluZyAqYmluZFRva2VuID0gcGF5bWVudE1ldGhvZC5iaW5kVG9r
ZW4pCisgICAgICAgIHJlc3VsdC5iaW5kVG9rZW4gPSBiaW5kVG9rZW47CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShwYXltZW50TWV0aG9kKTsKKyAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKKyNl
bmRpZgorfQogCiBzdGF0aWMgQXBwbGVQYXlQYXltZW50UGFzczo6QWN0aXZhdGlvblN0YXRlIGNv
bnZlcnQoUEtQYXltZW50UGFzc0FjdGl2YXRpb25TdGF0ZSBwYXltZW50UGFzc0FjdGl2YXRpb25T
dGF0ZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRNZXRob2RVcGRhdGVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksMTMgQEAg
UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKlBheQogICAgIHJldHVybiBtX3Bs
YXRmb3JtVXBkYXRlLmdldCgpOwogfQogCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K3ZvaWQgUGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcikKK3sKKyAgICBbbV9wbGF0
Zm9ybVVwZGF0ZSBzZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcjppbnN0YWxsbWVudEdyb3Vw
SWRlbnRpZmllcl07Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNv
Y29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTUgKzMxLDI3IEBACiAjaW1wb3J0ICJBcHBsZVBheVNlc3Npb25FcnJvci5oIgogI2ltcG9y
dCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2FB
ZGRpdGlvbnMubW0+Ci0jZWxzZQogbmFtZXNwYWNlIFdlYkNvcmUgewotc3RhdGljIE9wdGlvbmFs
PEFwcGxlUGF5U2Vzc2lvbkVycm9yPiBhZGRpdGlvbmFsRXJyb3IoTlNFcnJvciAqKSB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CitzdGF0
aWMgT3B0aW9uYWw8QXBwbGVQYXlTZXNzaW9uRXJyb3I+IGFkZGl0aW9uYWxFcnJvcihOU0Vycm9y
ICplcnJvcikKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIC8vIEZJWE1F
OiBSZXBsYWNlIHdpdGggUEtQYXltZW50RXJyb3JCaW5kVG9rZW5Vc2VySW5mb0tleSBhbmQKKyAg
ICAvLyBQS1BheW1lbnRBdXRob3JpemF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3Igd2hlbiB0
aGV5J3JlIGF2YWlsYWJsZSBpbiBhbiBTREsuCisgICAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
YmluZFRva2VuS2V5ID0gQCJQS1BheW1lbnRFcnJvckJpbmRUb2tlbiI7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBOU0ludGVnZXIgcGtQYXltZW50QXV0aG9yaXphdGlvbkZlYXR1cmVBcHBsaWNhdGlv
bkVycm9yID0gLTIwMTY7CisKKyAgICBpZiAoZXJyb3IuY29kZSAhPSBwa1BheW1lbnRBdXRob3Jp
emF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3IpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBpZCBiaW5kVG9rZW5WYWx1ZSA9IGVycm9yLnVzZXJJbmZvW2JpbmRUb2tlbktl
eV07CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighYmluZFRv
a2VuVmFsdWUgfHwgW2JpbmRUb2tlblZhbHVlIGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3Nd
KTsKKyAgICByZXR1cm4gQXBwbGVQYXlTZXNzaW9uRXJyb3IgeyAiZmVhdHVyZUFwcGxpY2F0aW9u
RXJyb3IiX3MsIHsgeyAiYmluZFRva2VuIl9zLCAoTlNTdHJpbmcgKiliaW5kVG9rZW5WYWx1ZSB9
IH0gfTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworI2VuZGlmCit9CiAKIFBheW1lbnRTZXNzaW9uRXJyb3I6OlBheW1lbnRTZXNzaW9u
RXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+JiYgZXJyb3IpCiAgICAgOiBtX3BsYXRmb3JtRXJyb3Ig
eyBXVEZNb3ZlKGVycm9yKSB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVJlcXVlc3Qu
aWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDQgKzI4LDUgQEAKIF0gZGljdGlvbmFyeSBBcHBsZVBheVJlcXVlc3QgOiBBcHBsZVBheVJlcXVl
c3RCYXNlIHsKICAgICByZXF1aXJlZCB1bnNpZ25lZCBsb25nIHZlcnNpb247CiAgICAgcmVxdWly
ZWQgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVf
UEFZX0lOU1RBTExNRU5UU10gQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gaW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyB0YXNrRGVs
YXlJbnRlcnZhbCB7IDEwMF9tcyB9OwogCi0jdW5kZWYgTE9HSURFTlRJRklFUgotI2RlZmluZSBM
T0dJREVOVElGSUVSIF9fZnVuY19fCi0KLSN1bmRlZiBBTFdBWVNfTE9HCi0jZGVmaW5lIEFMV0FZ
U19MT0cgbG9nZ2VyKCkubG9nQWx3YXlzCisjZGVmaW5lIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUiBsb2dnZXIoKS5sb2dBbHdheXMKIAogc3RydWN0IENsaWVudFN0YXRlIHsKICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjEsMTkgKzE1NywxOSBAQCB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpCiAgICAgaWYgKG1fbW9ja1BpY2tl
ckVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18pOwogICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOwogfQogCiB2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3Rh
dGUpCiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwogICAgIG1vY2tQaWNrZXIoKS5zZXRTdGF0ZShu
YW1lLCBzdGF0ZSk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQogewotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19f
KTsKICAgICBtb2NrUGlja2VyKCkuZGlzbWlzc1BvcHVwKCk7CiB9CiAKQEAgLTIwOCw3ICsyMDQs
NyBAQCB1aW50NjRfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5CiAgICAgaWYgKGlu
ZGV4ICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgY29udGV4dElkKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18sIGNvbnRleHRJZCk7CiAgICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQobWFrZVVu
aXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKIAogICAgIGlmIChtX2V4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJnZXQpCkBAIC0yMjQsNyAr
MjIwLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YgogICAgIGlm
IChpbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CisgICAgQUxXQVlTX0xP
R19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQo
KSk7CiAKICAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpbmRleCk7CiAgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRz
Q29uZmlndXJhdGlvblRhc2spOwpAQCAtMjM3LDcgKzIzMyw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGwKIAogICAgIGZvciAoc2l6ZV90IGkgPSBtX2NsaWVudFN0
YXRlLnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICBpZiAoJm1fY2xpZW50U3RhdGVbaSAt
IDFdLT5jbGllbnQgPT0gJmNsaWVudCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBtX2NsaWVudFN0YXRlW2kgLSAxXS5nZXQoKSk7CisgICAgICAgICAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaSAtIDFdLmdl
dCgpKTsKICAgICAgICAgICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGkgLSAxKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTI1Nyw3ICsyNTMsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNob3dQbGF5YmFjCiAgICAgICAgIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2VyID0g
c3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1BpY2tlcjsKICAgICB9CiAKLSAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsKKyAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdl
dCgpKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlUm91dGUgPSBmbGFnc0FyZVNldChtX2NsaWVudFN0
YXRlW2luZGV4XS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZp
Y2UpOwogICAgIHRhcmdldFBpY2tlcigpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihGbG9hdFJl
Y3QocmVjdCksIGhhc0FjdGl2ZVJvdXRlLCB1c2VEYXJrQXBwZWFyYW5jZSk7CkBAIC0yNzUsNyAr
MjcxLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjbGllbnRTdGF0ZQogICAgIGlm
IChuZXdGbGFncyA9PSBvbGRGbGFncykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSwgIm5ldyBmbGFncyA9
ICIsIG5ld0ZsYWdzKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3IGZsYWdzID0gIiwgbmV3RmxhZ3Mp
OwogCiAgICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFncyA9IG5ld0ZsYWdzOwogCkBAIC0yOTks
MjUgKzI5NSwyNSBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoZmxhZ3NBcmVTZXQoc3RhdGUtPmZs
YWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSAmJiBmbGFnc0Fy
ZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgewotICAg
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiByZXR1cm5p
bmcgZWFybHkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBEbyBub3QgYmVnaW4gcGxheWluZyB0
byB0aGUgZGV2aWNlIHVubGVzcyBwbGF5YmFjayBoYXMganVzdCBzdGFydGVkLgogICAgIGlmICgh
ZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSB8fCBm
bGFnc0FyZVNldChvbGRGbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7Ci0g
ICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBlYXJseSwgcGxheWJh
Y2sgZGlkbid0IGp1c3Qgc3RhcnQiKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCAicmV0dXJuaW5nIGVhcmx5LCBwbGF5YmFjayBkaWRuJ3QganVzdCBz
dGFydCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBzdGF0ZSA6
IG1fY2xpZW50U3RhdGUpIHsKICAgICAgICAgaWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
ZmFsc2UpIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
Xywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChm
YWxzZSkiKTsKICAgICAgICAgc3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNT
SU9OTUFOQUdFUihfX2Z1bmNfXywgY2hhbmdlZENsaWVudFN0YXRlLmdldCgpLCAiIGNhbGxpbmcg
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICBjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAKICAgICBpZiAoaW5kZXggJiYgbV9jbGllbnRTdGF0
ZS5zaXplKCkgPiAxKQpAQCAtMzI2LDcgKzMyMiw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6Y2xpZW50U3RhdGUKIAogdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFz
QWN0aXZlUm91dGUoKSk7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVu
Y19fLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFzQWN0aXZlUm91dGUoKSk7CiAg
ICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsKICAgICBtX3RhcmdldENoYW5n
ZWQgPSB0cnVlOwogICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0NvbmZpZ3Vy
YXRpb25UYXNrKTsKQEAgLTMzNCw3ICszMzAsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNldFBsYXliYWNrCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCBhdmFpbGFibGUpOworICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgYXZhaWxhYmxlKTsKICAgICBtX2V4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlID0gYXZhaWxhYmxlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2Ns
aWVudFN0YXRlKQogICAgICAgICBzdGF0ZS0+Y2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKHN0YXRlLT5jb250ZXh0SWQsIGF2YWlsYWJsZSk7CkBAIC0zNDIsNyAr
MzM4LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpleHRlcm5hbE91dAogCiB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2Vk
KCkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIEFMV0FZU19MT0dfTUVE
SUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbV9wbGF5YmFja1RhcmdldFBpY2tlckRp
c21pc3NlZCA9IHRydWU7CiAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhUYXJnZXRDbGllbnRzQ29u
ZmlndXJhdGlvblRhc2spOwogfQpAQCAtMzc1LDcgKzM3MSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2xp
ZW50U3RhdGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0
YXRlW2ldOwogCi0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0KCks
ICIsIHJlcXVlc3RlZFBpY2tlciA9ICIsIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIpOworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAi
LCByZXF1ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKTsKIAogICAgICAg
ICBpZiAoKG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2Vk
KSAmJiBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKQogICAgICAgICAgICAgaW5kZXhPZkNsaWVudFRo
YXRSZXF1ZXN0ZWRQaWNrZXIgPSBpOwpAQCAtNDAxLDEyICszOTcsMTIgQEAgdm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5z
ZXRQbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCAqbV9wbGF5YmFja1RhcmdldC5jb3B5
UmVmKCkpOwogCiAgICAgICAgIGlmIChpICE9IGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0
IHx8ICFoYXZlQWN0aXZlUm91dGUpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dChmYWxzZSkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChmYWxzZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgZmFsc2UpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgJiYgbV9wbGF5YmFja1RhcmdldFBpY2tl
ckRpc21pc3NlZCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkIik7Cisg
ICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRl
LmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKICAg
ICAgICAgICAgIHN0YXRlLT5jbGllbnQucGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQo
c3RhdGUtPmNvbnRleHRJZCk7CiAgICAgICAgIH0KIApAQCAtNDE4LDcgKzQxNCw3IEBAIHZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBpZiAoaGF2ZUFjdGl2ZVJv
dXRlICYmIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ICE9IG5vdEZvdW5kKSB7CiAgICAg
ICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1Rh
cmdldF07CiAgICAgICAgIGlmICghZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkgewotICAgICAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0KHRydWUpIik7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lP
Tk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC00MzMsNyArNDI5LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
Ojpjb25maWd1cmVQbAogICAgIGJvb2wgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSBmYWxzZTsK
ICAgICBib29sIGhhdmVDbGllbnRXaXRoTWVkaWEgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIHN0
YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
IHN0YXRlLmdldCgpKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBzdGF0ZS5nZXQoKSk7CiAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVBy
b2R1Y2VyOjpSZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykgewogICAgICAgICAgICAg
bW9uaXRvcmluZ1JlcXVpcmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQ1LDEw
ICs0NDEsMTAgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAg
IH0KIAogICAgIGlmIChtb25pdG9yaW5nUmVxdWlyZWQgfHwgKGhhc0F2YWlsYWJpbGl0eUxpc3Rl
bmVyICYmIGhhdmVDbGllbnRXaXRoTWVkaWEpKSB7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInN0YXJ0aW5nIG1vbml0b3JpbmciKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOwogICAgICAg
ICB0YXJnZXRQaWNrZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyBt
b25pdG9yaW5nIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXywgInN0b3BwaW5nIG1vbml0b3JpbmciKTsKICAgICAgICAgdGFyZ2V0UGlja2VyKCkuc3Rv
cE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAgICB9CiB9CkBAIC00OTAsNyArNDg2LDcg
QEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogCiAgICAgaWYgKCFt
X3BsYXliYWNrVGFyZ2V0IHx8ICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpKSB7
CiAgICAgICAgIGlmIChtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic3RvcHBpbmcgdGltZXIiKTsKKyAgICAgICAgICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVy
Iik7CiAgICAgICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9OwogICAgICAg
ICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKICAgICAgICAgfQpAQCAtNTAyLDcgKzQ5OCw3
IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2EKICAgICBib29sIGRp
ZFBsYXlUb0VuZCA9IGZhbHNlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRl
KSB7CiAKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBw
bGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcGxheWVkVG9FbmQg
PSAiLCBzdGF0ZS0+cGxheWVkVG9FbmQpOwogCiAgICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZs
YWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKQog
ICAgICAgICAgICAgc3RvcFRpbWVyID0gdHJ1ZTsKQEAgLTUxMiw3ICs1MDgsNyBAQCB2b2lkIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhCiAgICAgfQogCiAgICAgaWYgKHN0b3BU
aW1lcikgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyB0aW1l
ciIpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJz
dG9wcGluZyB0aW1lciIpOwogICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9
OwogICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwogICAgIH0gZWxzZSB7CkBAIC01MjAs
NyArNTE2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogICAg
ICAgICBpZiAoaW50ZXJ2YWwgIT0gbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCB8fCAhbV93YXRj
aGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFy
dE9uZVNob3QoaW50ZXJ2YWwpOwogICAgICAgICB9Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNv
bmRzIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywg
InRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNvbmRzIik7CiAg
ICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgPSBpbnRlcnZhbDsKICAgICB9CiB9CkBA
IC01MzAsNyArNTI2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bQogICAgIGlmICghbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOwogICAgIHRhcmdldFBpY2tlcigpLmludmFsaWRhdGVQbGF5YmFja1Rhcmdl
dHMoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAxMDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDQtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBNb3ZlIEFwcGxlUGF5IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMgdG8g
V2ViQ29yZSBhbmQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTA1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisg
ICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsubW06CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg6CisKIDIwMjAtMDQtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZG9wdCBpbnRlcmZhY2UgQVZBdWRpb1JvdXRpbmdBcmJpdGVyIGZvciBNYWMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTggQEAgU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQS1BheW1lbgogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRNZXRob2QpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5
bWVudE1lcmNoYW50U2Vzc2lvbikKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50UmVxdWVzdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBL
UGF5bWVudFNldHVwRmVhdHVyZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50U2V0dXBSZXF1ZXN0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRTdW1tYXJ5SXRlbSkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
UEtTaGlwcGluZ01ldGhvZCkKIAorI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbikKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIpCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRM
aW5rLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L1Bhc3NLaXRTb2Z0TGluay5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDMyIEBACiAK
ICNpZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCi0jZWxzZQorCitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0
dXBDb250cm9sbGVyLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BU
SU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cEZlYXR1cmUsIFBB
TF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9S
VChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwUmVxdWVzdCwgUEFMX0VYUE9SVCkKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9P
UFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKKyNlbmRpZgorCisjZWxzZSAvLyBQTEFURk9STShNQUMp
CisKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NL
aXQsIFBBTF9FWFBPUlQpCisKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQor
U09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwRmVhdHVyZSwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50U2V0dXBSZXF1ZXN0LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cFZpZXdD
b250cm9sbGVyLCBQQUxfRVhQT1JUKQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQogI2VuZGlmCiAKKyNl
bmRpZiAvLyBQTEFURk9STShNQUMpCisKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0LCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bhc3NMaWJyYXJ5LCBQ
QUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQS1BheW1lbnQsIFBBTF9FWFBPUlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDExICs0NywyOCBAQCBXVEZfRVhURVJOX0NfRU5ECiAjaW1wb3J0IDxQYXNzS2l0L1BL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxQ
YXNzS2l0L1BLUGF5bWVudE1ldGhvZC5oPgogI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRSZXF1
ZXN0X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uX1dlYktpdC5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRTZXR1cENvbnRyb2xsZXIu
aD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxQ
YXNzS2l0Q29yZS9QS1BheW1lbnRSZXF1ZXN0U3RhdHVzX1ByaXZhdGUuaD4KICNpbXBvcnQgPFBh
c3NLaXRDb3JlL1BLUGF5bWVudFJlcXVlc3RfV2ViS2l0Lmg+CiAKKyNpZiBIQVZFKFBBU1NLSVRf
SU5TVEFMTE1FTlRTKQorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50X1ByaXZhdGUuaD4K
KyNpbXBvcnQgPFBhc3NLaXRDb3JlL1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5o
PgorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50TWV0aG9kX1ByaXZhdGUuaD4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50
QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyLmg+CisjZW5kaWYKKworI2lmIEhBVkUoUEFTU0tJVF9J
TlNUQUxMTUVOVF9JREVOVElGSUVSUykgJiYgUExBVEZPUk0oTUFDKQorQGludGVyZmFjZSBQS1Bh
eW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKFdlYktpdFNQSSkKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNTdHJpbmcgKmluc3RhbGxtZW50TWVyY2hhbnRJZGVu
dGlmaWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU1N0cmluZyAq
cmVmZXJyZXJJZGVudGlmaWVyOworQGVuZAogI2VuZGlmCiAKICNlbHNlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5MDAsNiArMTkwMCw5IEBACiAJCTVDMkIxQUVDMjIz
OTdFQkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY3OEQwQjFDMjU0MjJDMDAyNDU0NDYg
LyogUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tICovOyB9OwogCQk1QzQzMDRCMTE5MUFDOTA4MDAw
RTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRl
clRleHR1cmVMT0QuaCAqLzsgfTsKIAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhU
U2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM0MzA0QjQxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxP
RC5oICovOyB9OworCQk1QzUzRENFMTI0NDY1REZDMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
NTNEQ0NGMjQ0NjQ0OTkwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNTNEQ0U3MjQ0NjhB
RDIwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzUzRENDRTI0NDY0NDk5MDBB
OTMxMjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNTNEQ0VBMjQ0NjhGQjQwMEE5
MzEyNCAvKiBBcHBsZVBheVNldHVwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNUQy
Mzg1MjI3QTA2NTIwMDBCOUJEQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUQyMzgzMjI3QTA2M0EwMDBCOUJE
QSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
N0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDOUMyREI1MjI0MUE2N0IwMDk5
NkIwQiAvKiBDb250ZW50UnVsZUxpc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlDMkRCMzIyNDFBNjczMDA5OTZCMEIgLyogQ29udGVu
dFJ1bGVMaXN0UmVzdWx0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05MDkxLDYgKzkwOTQsMTggQEAKIAkJNUM1MzgxQjExRDg3RDQ1NzAwRTJF
QkU2IC8qIFVSTFNlYXJjaFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVUkxTZWFyY2hQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1Mzgx
QjMxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1MzgxQjQxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2Vh
cmNoUGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVVJMU2VhcmNo
UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0M2MjQ0NjQ0OTcw
MEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBs
ZVBheVNldHVwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQzkyNDQ2
NDQ5ODAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0NBMjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBh
eVNldHVwRmVhdHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDQjI0NDY0NDk4
MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcHBsZVBheVNldHVwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNE
Q0NDMjQ0NjQ0OTkwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RD
Q0UyNDQ2NDQ5OTAwQTkzMTI0IC8qIFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDRjI0NDY0NDk5
MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUM1M0RDRDAyNDQ2NDQ5QTAwQTkzMTI0IC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxlUGF5U2V0dXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlT
ZXR1cEZlYXR1cmVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUz
RENENTI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24u
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDRDYyNDQ2NDQ5QzAw
QTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM1RDIzODMyMjdBMDYzQTAwMEI5QkRBIC8qIEN1c3RvbUhlYWRlckZpZWxkcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21IZWFkZXJGaWVsZHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1RDIzODYyMjdBMDc3QzAwMEI5QkRBIC8q
IEN1c3RvbUhlYWRlckZpZWxkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDdXN0b21IZWFkZXJGaWVsZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjcxLDYgKzE3Mjg2LDgg
QEAKIAkJCQlBMUJCODU5QjIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaWRs
ICovLAogCQkJCUExQkI4NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFj
dEZpZWxkLmggKi8sCiAJCQkJQTFCQjg1QTIyMTU5QUY1NzAwNjdFMDdEIC8qIEFwcGxlUGF5RXJy
b3JDb250YWN0RmllbGQuaWRsICovLAorCQkJCTVDNTNEQ0QwMjQ0NjQ0OUEwMEE5MzEyNCAvKiBB
cHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0Q1MjQ0NjQ0
OUIwMEE5MzEyNCAvKiBBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwgKi8sCiAJ
CQkJN0M2NTc5RTIxRTAwODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAqLywKIAkJ
CQk3QzY1NzlFNDFFMDA4MkM4MDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5pZGwgKi8sCiAJ
CQkJQTFERjVBQTgxRjgwNzBENDAwNThBNDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5
LmNwcCAqLywKQEAgLTE3MzA4LDYgKzE3MzI1LDE0IEBACiAJCQkJQTE5NTZGMUYyMzMxQThDNzAw
NTdFOUQyIC8qIEFwcGxlUGF5U2Vzc2lvbkVycm9yLmlkbCAqLywKIAkJCQkxQTU4RTg2MzFEMTlE
NERGMDBDMEVBNzMgLyogQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwICovLAogCQkJ
CTFBNThFODY0MUQxOUQ0REYwMEMwRUE3MyAvKiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oICovLAorCQkJCTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNw
cCAqLywKKwkJCQk1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICov
LAorCQkJCTVDNTNEQ0M2MjQ0NjQ0OTcwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLywK
KwkJCQk1QzUzRENDRjI0NDY0NDk5MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAq
LywKKwkJCQk1QzUzRENDQTI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsICovLAorCQkJCTVDNTNEQ0M5MjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVh
dHVyZS5tbSAqLywKKwkJCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmggKi8sCisJCQkJNUM1M0RDRDYyNDQ2NDQ5QzAwQTkzMTI0IC8qIEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8sCiAJCQkJMUE4QTY0NDcxRDE5RkNGQjAwRDBFMDBG
IC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAgKi8sCiAJCQkJMUE4
QTY0NDgxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRF
dmVudC5oICovLAogCQkJCTFBOEE2NDQ5MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBw
aW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuaWRsICovLApAQCAtMTczMzEsNiArMTczNTYsOCBAQAog
CQkJCUExMDRFQzUzMjIwQTAxNzQwMENCRjY3QSAvKiBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQu
Y3BwICovLAogCQkJCTFBNThFODYyMUQxOUQzQkYwMEMwRUE3MyAvKiBQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQuaCAqLywKIAkJCQk3Q0Y5MzBFNjFFMDFGOUFEMDBCQUZGQkUgLyogUGF5bWVudEhl
YWRlcnMuaCAqLywKKwkJCQk1QzUzRENDRTI0NDY0NDk5MDBBOTMxMjQgLyogUGF5bWVudEluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0NDMjQ0NjQ0OTkwMEE5MzEyNCAv
KiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tICovLAogCQkJCTFBRTk2QTg3MUQx
QTBDRUIwMEI4Njc2OCAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uLmggKi8sCiAJCQkJMUE4QTY0
MzkxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1lbnRNZXRob2QuaCAqLywKIAkJCQlBMURGRDUyNDIz
MzQ1OTNBMDA0MkZDREIgLyogUGF5bWVudE1ldGhvZFVwZGF0ZS5oICovLApAQCAtMjkzOTcsNiAr
Mjk0MjQsOCBAQAogCQkJCTFBOEE2NDU5MUQxOUZDRkMwMEQwRTAwRiAvKiBBcHBsZVBheVNlc3Np
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUExOTU2RjIwMjMzMUE4QzcwMDU3RTlEMiAvKiBBcHBs
ZVBheVNlc3Npb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1OEU4NjUxRDE5RDRFQjAw
QzBFQTczIC8qIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk1QzUzRENFQTI0NDY4RkI0MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNUM1M0RDRTEyNDQ2NURGQzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0
dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThBNjQ1QzFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBw
bGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MTJDNTlGMjIwMzVGQ0Q2MDAxMjIzNkIgLyogQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDNjU3OUU4MUUwMDgzMTYwMEUzQTI3QSAvKiBBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTIyLDYgKzMyMTUxLDcgQEAK
IAkJCQlBMUY2MDA0OTFGNDc1OTRFMDA3N0U4M0YgLyogUGF5bWVudERldGFpbHNVcGRhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUExREY1QUE2MUY3RjY0QkIwMDU4QTQ3NyAvKiBQYXltZW50SGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NGOTMwRTcxRTAxRjlCNDAwQkFGRkJFIC8qIFBh
eW1lbnRIZWFkZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzUzRENFNzI0NDY4QUQyMDBBOTMx
MjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTFGNzZCMzExRjQ0QzU1QTAwMTRDMzE4IC8qIFBheW1lbnRJdGVtLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUU5NkE4OTFEMUEwQ0VCMDBCODY3NjggLyogUGF5bWVudE1lcmNoYW50U2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4QTY0M0MxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1l
bnRNZXRob2QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViQ29yZUFkZGl0aW9ucy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCwzIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYkNv
cmVBZGRpdGlvbnMubW0+Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAwODEpCisr
KyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDIwLTA0LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTW92ZSBBcHBsZVBheSBjb2RlIGZyb20gV2ViS2l0QWRkaXRpb25zIHRvIFdl
YkNvcmUgYW5kIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEwNTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVw
RmVhdHVyZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVz
OjpwbGF0Zm9ybUZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvQXBw
bGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBh
eW1lbnRTZXR1cEZlYXR1cmVzOjpQYXltZW50U2V0dXBGZWF0dXJlcyk6CisgICAgICAgIChXZWJL
aXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpQYXltZW50U2V0dXBGZWF0dXJlczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVu
dFNldHVwRmVhdHVyZXM6Om9wZXJhdG9yIFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1
cEZlYXR1cmU+PiBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICogU2hh
cmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW06IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0Ojp0b1BsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpmaW5pc2hDb25zdHJ1
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvY29j
b2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXRB
ZGRpdGlvbnM6OnRvUGxhdGZvcm1Db25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdEFkZGl0
aW9uczo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bik6CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmZpbmlz
aENyZWF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6YmVnaW5BcHBsZVBheVNldHVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OmVuZEFwcGxlUGF5U2V0dXApOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1FbmRB
cHBsZVBheVNldHVwKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OmZpbmlzaERlY29kaW5nKToKKyAgICAgICAgKElQ
Qzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
OjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50
Q29vcmRpbmF0b3I6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OmJlZ2luQXBwbGVQYXlTZXR1cCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBheW1lbnRDb29yZGluYXRvcjo6ZW5kQXBwbGVQYXlTZXR1cCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKwogMjAyMC0wNC0xNCAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmplY3RlZEJ1bmRs
ZSBwYXJhbWV0ZXJzIG9mdGVuIG5lZWQgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gY2FsbGVkIGJl
Zm9yZSB1bmFyY2hpdmluZwpJbmRleDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTAsOCArMjUwLDYgQEAgU0NSSVBUUyA9IFwKIEZSQU1FV09SS19GTEFHUyA9
ICQoc2hlbGwgZWNobyAkKEJVSUxUX1BST0RVQ1RTX0RJUikgJChGUkFNRVdPUktfU0VBUkNIX1BB
VEhTKSAkKFNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTKSB8IHBlcmwgLWUgJ3ByaW50ICIt
RiAiIC4gam9pbigiIC1GICIsIHNwbGl0KCIgIiwgPD4pKTsnKQogSEVBREVSX0ZMQUdTID0gJChz
aGVsbCBlY2hvICQoQlVJTFRfUFJPRFVDVFNfRElSKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpICQo
U1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFMpIHwgcGVybCAtZSAncHJpbnQgIi1JIiAuIGpvaW4o
IiAtSSIsIHNwbGl0KCIgIiwgPD4pKTsnKQogCi0taW5jbHVkZSBXZWJLaXREZXJpdmVkU291cmNl
c0FkZGl0aW9ucy5tYWtlCi0KIC5QSE9OWSA6IGFsbAogCiBhbGwgOiBcCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOCBAQCBTaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlCiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Lm1tCiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KIAorU2hhcmVk
L0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0KK1NoYXJlZC9BcHBsZVBh
eS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuY3BwCiBTaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5tbQogU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUlPUy5tbQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NDEsNiArNjQxLDcgQEAgZGVmIGhl
YWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRl
eHRJRCc6IFsnIkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5
ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlBh
eW1lbnRTZXR1cEZlYXR1cmVzJzogWyciQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oIidd
LAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9yJzogWyciR2VzdHVyZVR5
cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCc6IFsnIldlYkV2ZW50
LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQnOiBbJyJXZWJFdmVudC5o
IiddLApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50
U2V0dXBGZWF0dXJlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKK09CSkNfQ0xBU1MgUEtQYXlt
ZW50U2V0dXBGZWF0dXJlOworCisjaW5jbHVkZSA8V2ViQ29yZS9BcHBsZVBheVNldHVwRmVhdHVy
ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGF5bWVudFNldHVwRmVhdHVyZXMgeworcHVi
bGljOgorICAgIFBheW1lbnRTZXR1cEZlYXR1cmVzKFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBw
bGVQYXlTZXR1cEZlYXR1cmU+PiYmKTsKKyAgICBQYXltZW50U2V0dXBGZWF0dXJlcyhSZXRhaW5Q
dHI8TlNBcnJheT4mJiA9IG51bGxwdHIpOworCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7CisgICAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRTZXR1cEZlYXR1cmVzPiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJik7CisKKyAgICBOU0FycmF5ICpwbGF0Zm9ybUZlYXR1cmVzKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybUZlYXR1cmVzLmdldCgpOyB9CisgICAgb3BlcmF0b3IgVmVj
dG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fcGxhdGZvcm1GZWF0dXJlczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VU
VVApCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRT
ZXR1cEZlYXR1cmVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0JKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgiCisKKyNp
ZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKworI2ltcG9ydCAiQXJndW1lbnRDb2RlcnND
b2NvYS5oIgorI2ltcG9ydCAiRGVjb2Rlci5oIgorI2ltcG9ydCAiRW5jb2Rlci5oIgorI2ltcG9y
dCA8V2ViQ29yZS9BcHBsZVBheVNldHVwRmVhdHVyZS5oPgorCisjaW1wb3J0IDxwYWwvY29jb2Ev
UGFzc0tpdFNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgTlNBcnJh
eTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4gKnRvUGxhdGZvcm1GZWF0dXJlcyhWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcykKK3sKKyAgICBO
U011dGFibGVBcnJheSAqcGxhdGZvcm1GZWF0dXJlcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdp
dGhDYXBhY2l0eTpmZWF0dXJlcy5zaXplKCldOworICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IGZl
YXR1cmVzKSB7CisgICAgICAgIGlmIChmZWF0dXJlKQorICAgICAgICAgICAgW3BsYXRmb3JtRmVh
dHVyZXMgYWRkT2JqZWN0OmZlYXR1cmUtPnBsYXRmb3JtRmVhdHVyZSgpXTsKKyAgICB9CisgICAg
cmV0dXJuIHBsYXRmb3JtRmVhdHVyZXM7Cit9CisKK1BheW1lbnRTZXR1cEZlYXR1cmVzOjpQYXlt
ZW50U2V0dXBGZWF0dXJlcyhWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlPj4mJiBmZWF0dXJlcykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IHRvUGxhdGZvcm1G
ZWF0dXJlcyhXVEZNb3ZlKGZlYXR1cmVzKSkgfQoreworfQorCitQYXltZW50U2V0dXBGZWF0dXJl
czo6UGF5bWVudFNldHVwRmVhdHVyZXMoUmV0YWluUHRyPE5TQXJyYXk+JiYgcGxhdGZvcm1GZWF0
dXJlcykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IFdURk1vdmUocGxhdGZvcm1GZWF0dXJl
cykgfQoreworfQorCit2b2lkIFBheW1lbnRTZXR1cEZlYXR1cmVzOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9wbGF0Zm9ybUZlYXR1cmVz
OworfQorCitPcHRpb25hbDxQYXltZW50U2V0dXBGZWF0dXJlcz4gUGF5bWVudFNldHVwRmVhdHVy
ZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RhdGljIE5TQXJyYXkg
KmFsbG93ZWRDbGFzc2VzOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBhdXRvIGFsbG93ZWQgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Ml0pOworICAg
ICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6W05TQXJyYXkgY2xhc3NdXTsKKyAgICAgICAgaWYgKGF1
dG8gcGtQYXltZW50U2V0dXBGZWF0dXJlQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVudFNldHVwRmVh
dHVyZUNsYXNzKCkpCisgICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0
dXBGZWF0dXJlQ2xhc3NdOworICAgICAgICBhbGxvd2VkQ2xhc3NlcyA9IFthbGxvd2VkIGNvcHld
OworICAgIH0pOworCisgICAgYXV0byBwbGF0Zm9ybUZlYXR1cmVzID0gSVBDOjpkZWNvZGU8TlNB
cnJheTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4+KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsK
KyAgICBpZiAoIXBsYXRmb3JtRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gUGF5bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKCpwbGF0Zm9ybUZl
YXR1cmVzKSB9OworfQorCitQYXltZW50U2V0dXBGZWF0dXJlczo6b3BlcmF0b3IgVmVjdG9yPFJl
ZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4gZmVhdHVyZXM7CisgICAgZmVhdHVy
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbbV9wbGF0Zm9ybUZlYXR1cmVzIGNvdW50XSk7Cisg
ICAgZm9yIChQS1BheW1lbnRTZXR1cEZlYXR1cmUgKnBsYXRmb3JtRmVhdHVyZSBpbiBtX3BsYXRm
b3JtRmVhdHVyZXMuZ2V0KCkpCisgICAgICAgIGZlYXR1cmVzLnVuY2hlY2tlZEFwcGVuZChXZWJD
b3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKHBsYXRmb3JtRmVhdHVyZSkpOworICAg
IHJldHVybiBmZWF0dXJlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisj
aW5jbHVkZSAiQXBwbGVQYXlTZXR1cC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIFBLUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbjsKKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2Rl
cjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24geworcHVibGljOgorICAgIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oKSA9IGRlZmF1
bHQ7CisgICAgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNldHVwOjpDb25maWd1cmF0aW9uJiwgY29uc3QgVVJMJik7CisKKyAgICB2b2lkIGVuY29kZShJ
UEM6OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbj4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworCisgICAgUEtQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
bmZpZ3VyYXRpb24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+JiYp
OworCisgICAgUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gbV9jb25maWd1
cmF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBIQVZFKFBB
U1NLSVRfUEFZTUVOVF9TRVRVUCkKKwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24u
aCIKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW1wb3J0ICJBcmd1bWVu
dENvZGVyc0NvY29hLmgiCisjaW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVyLmgi
CisjaW1wb3J0IDx3dGYvVVJMLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExp
bmsuaD4KKworQGludGVyZmFjZSBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gKFdlYktpdCkK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpzaWduZWRG
aWVsZHM7CitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgUmV0YWluUHRyPFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29yZUNvbmZpZ3VyYXRpb24s
IGNvbnN0IFVSTCYgdXJsKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVBBTDo6Z2V0
UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyNlbmRpZgorCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkluc3RhbmNlKCkgaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIHNldE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElk
ZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldE9yaWdpbmF0aW5nVVJMOnVybF07Cisg
ICAgW2NvbmZpZ3VyYXRpb24gc2V0UmVmZXJyZXJJZGVudGlmaWVyOmNvcmVDb25maWd1cmF0aW9u
LnJlZmVycmVySWRlbnRpZmllcl07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lO
CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0U2lnbmF0dXJlOmNvcmVDb25maWd1cmF0aW9uLnNpZ25h
dHVyZV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorCisgICAgaWYgKFtjb25m
aWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0U2lnbmVkRmllbGRzOild
KSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5ICpzaWduZWRGaWVsZHMgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmVkRmllbGRzLnNpemUo
KV07CisgICAgICAgIGZvciAoYXV0byYgc2lnbmVkRmllbGQgOiBjb3JlQ29uZmlndXJhdGlvbi5z
aWduZWRGaWVsZHMpCisgICAgICAgICAgICBbc2lnbmVkRmllbGRzIGFkZE9iamVjdDpzaWduZWRG
aWVsZF07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25lZEZpZWxkczpzaWduZWRGaWVs
ZHNdOworICAgIH0KKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCitQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYg
dXJsKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbiwgdXJsKSB9Cit7Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShj
b25maWd1cmF0aW9uKSB9Cit7Cit9CisKK3ZvaWQgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1f
Y29uZmlndXJhdGlvbjsKK30KKworT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4g
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBzdGF0aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Cisg
ICAgICAgIGF1dG8gYWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eToxXSk7CisgICAgICAgIGlmIChhdXRvIHBrUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbkNsYXNzID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcygp
KQorICAgICAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbkNsYXNzXTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxsb3dlZCBjb3B5XTsKKyAg
ICB9KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAgIGlmICghY29u
ZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29uZmlndXJhdGlvbikgfTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0QWRkaXRpb25zCisKKyNlbmRpZiAvLyBIQVZFKFBBU1NL
SVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNiBAQCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvCiAgICAgLCBtX2Nhbk1ha2VQYXltZW50
c1F1ZXVlIHsgV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FuTWFrZVBheW1l
bnRzIikgfQogewogICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNl
aXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKLSAgICBmaW5pc2hDb25zdHJ1Y3Rpb24oKnRoaXMpOwog
fQogCiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6fldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0jaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
QWRkaXRpb25zLmg+CisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisjaW5jbHVkZSA8
d3RmL1dlYWtPYmpDUHRyLmg+CitPQkpDX0NMQVNTIFBLUGF5bWVudFNldHVwVmlld0NvbnRyb2xs
ZXI7CitPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiAjZW5kaWYKIAogbmFtZXNwYWNlIElQ
QyB7CkBAIC02Miw2ICs2NCw4IEBAIE9CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb247CitjbGFz
cyBQYXltZW50U2V0dXBGZWF0dXJlczsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkKQEAgLTEyNCw2ICsxMjgsMTQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKTsKICAgICB2b2lkIGNhbmNlbFBheW1lbnRTZXNz
aW9uKCk7CiAKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKyAgICB2b2lkIGdldFNl
dHVwRmVhdHVyZXMoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMmKT4mJik7CisgICAgdm9pZCBi
ZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYsIGNvbnN0
IFBheW1lbnRTZXR1cEZlYXR1cmVzJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CisgICAgdm9pZCBlbmRBcHBsZVBheVNldHVwKCk7CisgICAgdm9pZCBwbGF0Zm9ybUJlZ2luQXBw
bGVQYXlTZXR1cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiwgY29uc3QgUGF5bWVu
dFNldHVwRmVhdHVyZXMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2
b2lkIHBsYXRmb3JtRW5kQXBwbGVQYXlTZXR1cCgpOworI2VuZGlmCisKICAgICBib29sIGNhbkJl
Z2luKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5DYW5jZWwoKSBjb25zdDsKICAgICBib29sIGNhbkNv
bXBsZXRlUGF5bWVudCgpIGNvbnN0OwpAQCAtMTkxLDEyICsyMDMsOCBAQCBwcml2YXRlOgogICAg
IFJldGFpblB0cjxOU1dpbmRvdz4gbV9zaGVldFdpbmRvdzsKICAgICBSZXRhaW5QdHI8TlNPYmpl
Y3Q+IG1fc2hlZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZlcjsKICNlbmRpZgotICAgIAotI2lmIGRl
ZmluZWQoV0VCUEFZTUVOVENPT1JESU5BVE9SUFJPWFlfQURESVRJT05TKQotV0VCUEFZTUVOVENP
T1JESU5BVE9SUFJPWFlfQURESVRJT05TCi0jdW5kZWYgV0VCUEFZTUVOVENPT1JESU5BVE9SUFJP
WFlfQURESVRJT05TCi0jZWxzZQotICAgIHZvaWQgZmluaXNoQ29uc3RydWN0aW9uKFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JikgeyB9CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFdlYWtPYmpD
UHRyPFBLUGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXI+IG1fcGF5bWVudFNldHVwVmlld0NvbnRy
b2xsZXI7CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1l
c3NhZ2VzLmluCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtMzgsNiArMzgsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkgTgogICAgIENvbXBsZXRlUGF5bWVudFNlc3Npb24oT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25SZXN1bHQ+IHJlc3VsdCkKICAgICBBYm9ydFBheW1lbnRTZXNzaW9uKCkK
ICAgICBDYW5jZWxQYXltZW50U2Vzc2lvbigpCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VU
VVApCisgICAgR2V0U2V0dXBGZWF0dXJlcyhXZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24gY29uZmlndXJhdGlvbikgLT4gKFdlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMgZmVhdHVy
ZXMpIEFzeW5jCisgICAgQmVnaW5BcHBsZVBheVNldHVwKFdlYktpdDo6UGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzIGZl
YXR1cmVzKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCisgICAgRW5kQXBwbGVQYXlTZXR1cCgpCisj
ZW5kaWYKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9j
b2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0J
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24uaCIKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW1wb3J0
ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCisjaW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJF
bmNvZGVyLmgiCisjaW1wb3J0ICJQYXNzS2l0U29mdExpbmtBZGRpdGlvbnMuaCIKKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KKworQGludGVyZmFjZSBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gKFdl
YktpdCkKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpz
aWduZWRGaWVsZHM7CitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXRBZGRpdGlvbnMgeworCitzdGF0
aWMgUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gdG9QbGF0Zm9ybUNvbmZp
Z3VyYXRpb24oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29y
ZUNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYgdXJsKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBpZiAoIVBBTDo6Z2V0UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbUEFMOjphbGxvY1BLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkluc3RhbmNlKCkgaW5pdF0p
OworICAgIFtjb25maWd1cmF0aW9uIHNldE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJh
dGlvbi5tZXJjaGFudElkZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldE9yaWdpbmF0
aW5nVVJMOnVybF07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UmVmZXJyZXJJZGVudGlmaWVyOmNv
cmVDb25maWd1cmF0aW9uLnJlZmVycmVySWRlbnRpZmllcl07CitBTExPV19ORVdfQVBJX1dJVEhP
VVRfR1VBUkRTX0JFR0lOCisgICAgW2NvbmZpZ3VyYXRpb24gc2V0U2lnbmF0dXJlOmNvcmVDb25m
aWd1cmF0aW9uLnNpZ25hdHVyZV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAor
CisgICAgaWYgKFtjb25maWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0
U2lnbmVkRmllbGRzOildKSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5ICpzaWduZWRGaWVsZHMg
PSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y29yZUNvbmZpZ3VyYXRpb24uc2ln
bmVkRmllbGRzLnNpemUoKV07CisgICAgICAgIGZvciAoYXV0byYgc2lnbmVkRmllbGQgOiBjb3Jl
Q29uZmlndXJhdGlvbi5zaWduZWRGaWVsZHMpCisgICAgICAgICAgICBbc2lnbmVkRmllbGRzIGFk
ZE9iamVjdDpzaWduZWRGaWVsZF07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25lZEZp
ZWxkczpzaWduZWRGaWVsZHNdOworICAgIH0KKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOwor
fQorCitQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
KGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24sIGNvbnN0IFVSTCYgdXJsKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgdG9QbGF0Zm9ybUNv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgdXJsKSB9Cit7Cit9CisKK1BheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oUmV0YWluUHRyPFBLUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9jb25maWd1cmF0
aW9uIHsgV1RGTW92ZShjb25maWd1cmF0aW9uKSB9Cit7Cit9CisKK3ZvaWQgUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IG1fY29uZmlndXJhdGlvbjsKK30KKworT3B0aW9uYWw8UGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbj4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGF0aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7Cisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VGbGFnLCBbXSB7CisgICAgICAgIGF1dG8gYWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eToxXSk7CisgICAgICAgIGlmIChhdXRvIHBrUGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbkNsYXNzID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb25DbGFzcygpKQorICAgICAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbkNsYXNzXTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxs
b3dlZCBjb3B5XTsKKyAgICB9KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVj
b2RlPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMp
OworICAgIGlmICghY29uZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIHJldHVybiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29uZmln
dXJhdGlvbikgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0QWRkaXRpb25zCisKKyNlbmRp
ZiAvLyBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsMTYgKzM3LDE3IEBACiAjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAotI2ltcG9ydCA8cGFsL2Nv
Y29hL1Bhc3NLaXRTb2Z0TGluay5oPgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNp
bXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hQWRk
aXRpb25zLm1tPgotI2Vsc2UKLW5hbWVzcGFjZSBXZWJLaXQgewotc3RhdGljIHZvaWQgZmluaXNo
Q3JlYXRpbmcoUEtQYXltZW50UmVxdWVzdCAqLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdCYpIHsgfQotfQorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQ
KQorI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKKyNpbXBvcnQgIkFwcGxlUGF5UGF5bWVudFNldHVw
RmVhdHVyZXMuaCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaCIKKyNpbXBv
cnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlN
ZXNzYWdlcy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjZW5kaWYKIAorI2ltcG9y
dCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgorCiAvLyBGSVhNRTogV2UgZG9uJ3Qgc3Vw
cG9ydCBhbnkgcGxhdGZvcm1zIHdpdGhvdXQgLXNldFRodW1ibmFpbFVSTHM6LCBzbyB0aGlzIGNh
biBiZSByZW1vdmVkLgogQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0ICgpCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgc3Ryb25nKSBOU1VSTCAqdGh1bWJuYWlsVVJMOwpAQCAtNjEsNiArNjIsMTkg
QEAgQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0IChTdGFnaW5nKQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAorc3RhdGljIHZvaWQgZmluaXNoQ3JlYXRpbmcoUEtQYXltZW50UmVxdWVzdCAqcGxh
dGZvcm1SZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dCYgcmVxdWVzdCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGlmIChQ
S1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSByZXF1ZXN0
Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbigpLnBsYXRmb3JtQ29uZmlndXJhdGlvbigpKSB7Cisg
ICAgICAgIHBsYXRmb3JtUmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gPSBjb25maWd1
cmF0aW9uOworICAgICAgICBwbGF0Zm9ybVJlcXVlc3QucmVxdWVzdFR5cGUgPSBQS1BheW1lbnRS
ZXF1ZXN0VHlwZUluc3RhbGxtZW50OworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBs
YXRmb3JtUmVxdWVzdCk7CisgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOworI2VuZGlmCit9CisK
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTI3OSw2ICsyOTMsMTA5IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3IKICAgICBtX2F1dGhvcml6YXRpb25Q
cmVzZW50ZXItPmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbih1cGRhdGUpOwogfQogCisj
aWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OmdldFNldHVwRmVhdHVyZXMoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
biYgY29uZmlndXJhdGlvbiwgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpH
ZXRTZXR1cEZlYXR1cmVzOjpBc3luY1JlcGx5JiYgcmVwbHkpCit7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIGlmICghUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbnRyb2xsZXJDbGFzcygpKSB7Cisg
ICAgICAgIHJlcGx5KHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAg
IGF1dG8gY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0o
TlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4gKmZlYXR1cmVzKSBtdXRhYmxlIHsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZXBseSA9IFdURk1vdmUocmVwbHkpLCBm
ZWF0dXJlcyA9IHJldGFpblB0cihmZWF0dXJlcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBy
ZXBseShQYXltZW50U2V0dXBGZWF0dXJlcyB7IFdURk1vdmUoZmVhdHVyZXMpIH0pOworICAgICAg
ICB9KTsKKyAgICB9KTsKKworQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgorICAg
IFtQQUw6OmdldFBLUGF5bWVudFNldHVwQ29udHJvbGxlckNsYXNzKCkgcGF5bWVudFNldHVwRmVh
dHVyZXNGb3JDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24ucGxhdGZvcm1Db25maWd1cmF0aW9u
KCkgY29tcGxldGlvbjpjb21wbGV0aW9uLmdldCgpXTsKK0FMTE9XX05FV19BUElfV0lUSE9VVF9H
VUFSRFNfRU5ECit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmJlZ2luQXBw
bGVQYXlTZXR1cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
LCBjb25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYgZmVhdHVyZXMsIE1lc3NhZ2VzOjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6QmVnaW5BcHBsZVBheVNldHVwOjpBc3luY1JlcGx5JiYgcmVw
bHkpCit7CisgICAgcGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXAoY29uZmlndXJhdGlvbiwgZmVh
dHVyZXMsIFdURk1vdmUocmVwbHkpKTsKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6ZW5kQXBwbGVQYXlTZXR1cCgpCit7CisgICAgcGxhdGZvcm1FbmRBcHBsZVBheVNldHVw
KCk7Cit9CisKKyNpZiBQTEFURk9STShNQUMpCisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtQmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFBheW1lbnRTZXR1cEZlYXR1cmVzJiBmZWF0
dXJlcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpCZWdpbkFwcGxlUGF5
U2V0dXA6OkFzeW5jUmVwbHkmJiByZXBseSkKK3sKKyAgICBpZiAoIVBBTDo6Z2V0UEtQYXltZW50
U2V0dXBSZXF1ZXN0Q2xhc3MoKSkgeworICAgICAgICByZXBseShmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQ
YXltZW50U2V0dXBSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CisgICAgW3JlcXVlc3Qgc2V0Q29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLnBsYXRmb3JtQ29uZmlndXJhdGlvbigpXTsKKyAgICBb
cmVxdWVzdCBzZXRQYXltZW50U2V0dXBGZWF0dXJlczpmZWF0dXJlcy5wbGF0Zm9ybUZlYXR1cmVz
KCldOworCisgICAgYXV0byBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKFtyZXBseSA9IFdURk1v
dmUocmVwbHkpXShCT09MIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3JlcGx5ID0gV1RGTW92ZShyZXBseSksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICByZXBseShzdWNjZXNzKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAg
ICBhdXRvIHBheW1lbnRTZXR1cENvbnRyb2xsZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXlt
ZW50U2V0dXBDb250cm9sbGVySW5zdGFuY2UoKSBpbml0XSk7CisKK0FMTE9XX05FV19BUElfV0lU
SE9VVF9HVUFSRFNfQkVHSU4KKyAgICBbcGF5bWVudFNldHVwQ29udHJvbGxlciBwcmVzZW50UGF5
bWVudFNldHVwUmVxdWVzdDpyZXF1ZXN0LmdldCgpIGNvbXBsZXRpb246Y29tcGxldGlvbi5nZXQo
KV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorfQorCit2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUVuZEFwcGxlUGF5U2V0dXAoKQoreworfQorCisj
ZWxzZSAvLyBQTEFURk9STShNQUMpCisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OnBsYXRmb3JtQmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFBheW1lbnRTZXR1cEZlYXR1cmVzJiBmZWF0dXJlcywg
TWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpCZWdpbkFwcGxlUGF5U2V0dXA6
OkFzeW5jUmVwbHkmJiByZXBseSkKK3sKKyAgICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5n
Vmlld0NvbnRyb2xsZXIgPSBtX3BheW1lbnRDb29yZGluYXRvclByb3h5Lm1fY2xpZW50LnBheW1l
bnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihtX3BheW1lbnRDb29yZGluYXRv
clByb3h5KTsKKyAgICBpZiAoIXByZXNlbnRpbmdWaWV3Q29udHJvbGxlcikgeworICAgICAgICBy
ZXBseShmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlcXVlc3Qg
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBSZXF1ZXN0SW5zdGFuY2UoKSBpbml0
XSk7CisgICAgW3JlcXVlc3Qgc2V0Q29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLnBsYXRmb3Jt
Q29uZmlndXJhdGlvbigpXTsKKyAgICBbcmVxdWVzdCBzZXRQYXltZW50U2V0dXBGZWF0dXJlczpm
ZWF0dXJlcy5wbGF0Zm9ybUZlYXR1cmVzKCldOworCisgICAgYXV0byBwYXltZW50U2V0dXBWaWV3
Q29udHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRTZXR1cFZpZXdDb250cm9s
bGVySW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTZXR1cFJlcXVlc3Q6cmVxdWVzdC5nZXQoKV0p
OworICAgIGlmICghcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIpIHsKKyAgICAgICAgcmVwbHko
ZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjb21wbGV0aW9uID0g
bWFrZUJsb2NrUHRyKFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSgpIG11dGFibGUgeworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICByZXBseSh0cnVlKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisK
KyAgICBlbmRBcHBsZVBheVNldHVwKCk7CisgICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBw
cmVzZW50Vmlld0NvbnRyb2xsZXI6cGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIuZ2V0KCkgYW5p
bWF0ZWQ6WUVTIGNvbXBsZXRpb246Y29tcGxldGlvbi5nZXQoKV07CisgICAgbV9wYXltZW50U2V0
dXBWaWV3Q29udHJvbGxlciA9IHBheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyLmdldCgpOworfQor
Cit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUVuZEFwcGxlUGF5U2V0
dXAoKQoreworICAgIFttX3BheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyIGRpc21pc3NWaWV3Q29u
dHJvbGxlckFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07CisgICAgbV9wYXltZW50U2V0dXBW
aWV3Q29udHJvbGxlciA9IG5pbDsKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworI2Vu
ZGlmIC8vIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQko
cmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDE5ICs0MSw1NSBAQAog
I2ltcG9ydCA8VUlLaXQvVUlGb250Lmg+CiAjZW5kaWYKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2FBZGRpdGlvbnMubW0+Ci0jZWxpZiBFTkFCTEUoQVBQTEVfUEFZKQogbmFtZXNwYWNlIElQQyB7
Ci1zdGF0aWMgYm9vbCBmaW5pc2hEZWNvZGluZyhEZWNvZGVyJiwgV2ViQ29yZTo6QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3QmKSB7IHJldHVybiB0cnVlOyB9Ci1zdGF0aWMgdm9pZCBmaW5p
c2hFbmNvZGluZyhFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3QmKSB7IH0KK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisjaWYgRU5BQkxFKEFQ
UExFX1BBWSkKKworc3RhdGljIGJvb2wgZmluaXNoRGVjb2RpbmcoRGVjb2RlciYgZGVjb2Rlciwg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QpCit7CisjaWYg
RU5BQkxFKEFQUExFX1BBWV9JTlNUQUxMTUVOVFMpCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOwor
ICAgIGRlY29kZXIgPj4gaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworICAgIGlmICghaW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXF1ZXN0
LnNldEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihXVEZNb3ZlKCppbnN0YWxsbWVudENvbmZpZ3Vy
YXRpb24pKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRlY29k
ZXIpOworICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRp
ZgogfQorCitzdGF0aWMgdm9pZCBmaW5pc2hFbmNvZGluZyhFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCkKK3sKKyNp
ZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3Qu
aW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbmNv
ZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAjZW5kaWYKK30KIAotbmFtZXNwYWNl
IElQQyB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFM
TE1FTlRTKQogCi0jaWYgRU5BQkxFKEFQUExFX1BBWSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCit7CisgICAgZW5jb2RlciA8PCBjb25maWd1cmF0aW9uLnBsYXRmb3JtQ29u
ZmlndXJhdGlvbigpOworfQorCitPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBJUEM6OmRlY29kZTxQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
KGRlY29kZXIsIFBBTDo6Z2V0UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uQ2xhc3Mo
KSk7CisgICAgaWYgKCFjb25maWd1cmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHsgV1RGTW92ZSgqY29uZmlndXJhdGlvbikgfTsKK30KKworI2VuZGlm
IC8vIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpQYXltZW50Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBh
eW1lbnQmIHBheW1lbnQpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQwMDMs
NiArNDAwMywxMCBAQAogCQk1QzQ2QzBBRDIxQjcxOThDMDBCQzU5OTEgLyogV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUM0NkMwQUUyMUI3MUFFMjAwQkM1OTkxIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzRCOUQ4QTIxMEE4QzQ2MDA4RjE0RDEgLyogVW5kb09yUmVkby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvT3JSZWRvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDNTNEQ0REMjQ0NjVCRjkwMEE5MzEyNCAvKiBBcHBsZVBheVBheW1l
bnRTZXR1cEZlYXR1cmVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUM1M0RDREUyNDQ2NUJGOTAwQTkzMTI0IC8qIFBheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENERjI0NDY1
QkY5MDBBOTMxMjQgLyogQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0UwMjQ0NjVCRjkwMEE5MzEyNCAvKiBQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUM1Q0VDMzgyMjA5NTgzMjAwRDZCQkIwIC8qIERhZW1vbkVudHJ5UG9p
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGFlbW9uRW50cnlQb2ludC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVDRUMzOTIyMDk1ODMyMDBENkJCQjAg
LyogRGFlbW9uRW50cnlQb2ludC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERhZW1vbkVudHJ5UG9pbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDNUQyMzg3MjI3QTE4OTEwMDBCOUJEQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tDdXN0b21IZWFkZXJGaWVs
ZHNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIwOSw2ICs2MjEz
LDEwIEBACiAJCQkJMUFCMUY3NzcxRDFCMzBBOTAwN0M5QkQxIC8qIGNvY29hICovLAogCQkJCTFB
QjFGNzdBMUQxQjMwQTkwMDdDOUJEMSAvKiBpb3MgKi8sCiAJCQkJMUFCMUY3N0MxRDFCMzBBOTAw
N0M5QkQxIC8qIG1hYyAqLywKKwkJCQk1QzUzRENERjI0NDY1QkY5MDBBOTMxMjQgLyogQXBwbGVQ
YXlQYXltZW50U2V0dXBGZWF0dXJlcy5oICovLAorCQkJCTVDNTNEQ0REMjQ0NjVCRjkwMEE5MzEy
NCAvKiBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tICovLAorCQkJCTVDNTNEQ0RFMjQ0
NjVCRjkwMEE5MzEyNCAvKiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmggKi8sCisJCQkJNUM1
M0RDRTAyNDQ2NUJGOTAwQTkzMTI0IC8qIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0gKi8s
CiAJCQkJMUFCMUY3ODgxRDFCMzM1NTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5LmNwcCAqLywKIAkJCQkxQUIxRjc4OTFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuaCAqLywKIAkJCQkxQUIxRjc4QTFEMUIzMzU1MDA3QzlCRDEgLyogV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gKi8sCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmNwcAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKKyNpbmNsdWRlICJBcHBsZVBh
eVBheW1lbnRTZXR1cEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2lu
Y2x1ZGUgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGF5bWVu
dENvb3JkaW5hdG9yTWVzc2FnZXMuaCIKQEAgLTIyMCw2ICsyMjIsMzYgQEAgYm9vbCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OnJlbW90ZVVJRW5hYgogfQogI2VuZGlmCiAKK3ZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yOjpnZXRTZXR1cEZlYXR1cmVzKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0
dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9T
RVRVUCkKKyAgICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6R2V0U2V0dXBGZWF0dXJlcyhQYXltZW50U2V0dXBDb25maWd1
cmF0aW9uIHsgY29uZmlndXJhdGlvbiwgdXJsIH0pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjb25maWd1cmF0aW9uKTsKKyAgICBVTlVTRURf
UEFSQU0odXJsKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworI2VuZGlmCit9CisKK3Zv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpiZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgV2ViQ29y
ZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgVVJM
JiB1cmwsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmIGZl
YXR1cmVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorICAgIG1fd2ViUGFnZS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpCZWdp
bkFwcGxlUGF5U2V0dXAoUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiB7IGNvbmZpZ3VyYXRpb24s
IHVybCB9LCBQYXltZW50U2V0dXBGZWF0dXJlcyB7IFdURk1vdmUoZmVhdHVyZXMpIH0pLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjb25maWd1
cmF0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0odXJsKTsKKyAgICBVTlVTRURfUEFSQU0oZmVhdHVy
ZXMpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyNlbmRpZgorfQorCit2b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvcjo6ZW5kQXBwbGVQYXlTZXR1cCgpCit7CisjaWYgSEFWRShQQVNT
S0lUX1BBWU1FTlRfU0VUVVApCisgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpFbmRBcHBsZVBheVNldHVwKCkpOworI2VuZGlmCit9CisKIH0K
IAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDEwIEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcg
dXNlckFnZW50U2NyaXB0c0Jsb2NrZWRFcnJvck1lc3NhZ2UoKSBjb25zdCBmaW5hbDsKIAorICAg
IHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25m
aWd1cmF0aW9uJiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVm
PFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQg
YmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3Vy
YXRpb24mLCBjb25zdCBVUkwmLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBG
ZWF0dXJlPj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAg
dm9pZCBlbmRBcHBsZVBheVNldHVwKCkgZmluYWw7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIG92ZXJyaWRlOwogCkBAIC0xMTIsMTAgKzExNiw2IEBAIHByaXZhdGU6CiAgICAg
V2ViUGFnZSYgbV93ZWJQYWdlOwogCiAgICAgT3B0aW9uYWw8QXZhaWxhYmxlUGF5bWVudE5ldHdv
cmtzU2V0PiBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3JrczsKLQotI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViUGF5bWVudENvb3JkaW5hdG9y
QWRkaXRpb25zLmg+Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396487</attachid>
            <date>2020-04-14 18:30:13 -0700</date>
            <delta_ts>2020-04-14 19:08:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210521-20200414183013.patch</filename>
            <type>text/plain</type>
            <size>125357</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAyMC0wNC0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgQXBw
bGVQYXkgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0byBXZWJDb3JlIGFuZCBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDUyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgT25seSA0IG1pbm9yIG1v
ZGlmaWNhdGlvbnMgd2VyZSBuZWNlc3NhcnksIGFzIGZvbGxvd3M6CisKKyAgICAgICAgMS4gUGF5
bWVudFNldHVwRmVhdHVyZXMncyBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1
cmUgKj4+IHdhcyBjaGFuZ2VkIHRvIFJldGFpblB0cjxOU0FycmF5PiB0byB3b3JrIHdpdGggQysr
LgorICAgICAgICAyLiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucyBtZXNzYWdl
cyB3ZXJlIG1vdmVkIHRvIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LCByZW1vdmluZyB0aGUg
bmVlZCBmb3IKKyAgICAgICAgICAgdGhlIGV4dHJhIG1lc3NhZ2UgcmVjZWl2ZXIsIHRoZSBPcHRp
b25hbDxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucz4sIGFuZCB0aGUgZmluaXNo
Q29uc3RydWN0aW9uLgorICAgICAgICAzLiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCdzIG1h
Y3JvcyB0aGF0IGNvbGxpZGVkIHdpdGggb3RoZXIgbWFjcm9zIHdlcmUgcmVuYW1lZC4gIFRoaXMg
d2FzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIGRpZmZlcmVudCBzb3VyY2UgdW5pZmljYXRpb24uCisg
ICAgICAgIDQuIFBheW1lbnRTZXR1cEZlYXR1cmVzLmggd2FzIHJlbmFtZWQgdG8gQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5oIHRvIGJlIGFibGUgdG8gYnVpbGQgd2l0aCBQYXltZW50U2V0
dXBGZWF0dXJlcy5oIGluIHRoZSBTREsuCisKKyAgICAgICAgVGhlIHJlc3QgaXMganVzdCBjb3B5
IGFuZCBwYXN0ZS4KKworICAgICAgICBUaGVyZSBpc24ndCBhIGdvb2Qgd2F5IHRvIGxhbmQgdGhp
cyB3aXRob3V0IGJyZWFraW5nIHRoZSBidWlsZCB3aXRob3V0IHJlbW92aW5nIHRoZSBmaWxlcyBm
cm9tIFdlYktpdEFkZGl0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBzbyBJJ2xsIGRv
IHRoZSB0d28gYXQgdGhlIHNhbWUgdGltZSBsYXRlIGF0IG5pZ2h0IHRvIG5vdCBjYXVzZSBkaXNy
dXB0aW9uLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJl
c1N1cHBvcnRlZE5ldHdvcmtzKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5pc2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6aW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpzZXRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkRGlzY2xvc2VGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVw
OjpnZXRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OmJl
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsZVBheVNldHVwOjpzdXNwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2V0dXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGw6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpwbGF0Zm9ybUZlYXR1cmUg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0
dXJlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpzdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6c3VwcG9y
dHNJbnN0YWxsbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZl
YXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGw6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpiZWdpbkFwcGxlUGF5U2V0dXAp
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjplbmRBcHBsZVBh
eVNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
RGVjaW1hbE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUZlYXR1cmVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOjpQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmg6CisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5p
c2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRN
ZXRob2RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaENvbnZlcnRpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRH
cm91cElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVu
dFNlc3Npb25FcnJvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEVycm9y
KToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVx
dWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpyZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
dFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlz
bWlzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0Q2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2F0Y2hkb2dUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bWVyRmlyZWQpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dl
YkNvcmVBZGRpdGlvbnMubW06CisKIDIwMjAtMDQtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQZXJzaXN0ZW50Q29kZXJzIHNob3VsZCB1
c2UgbW9kZXJuIGRlY29kaW5nIHN5bnRheApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgSlNfQklORElOR19JRExTID0g
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb2RlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlMaW5lSXRlbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnQuaWRsIFwKQEAgLTExOCw2ICsxMTksOSBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVz
dEJhc2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bkVycm9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXAuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kLmlkbCBcCkBA
IC0xMjU1LDggKzEyNTksNiBAQCB2cGF0aCAlLmluICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9T
RUFSCiBBRERJVElPTkFMX0VWRU5UX05BTUVTID0KIEFERElUSU9OQUxfRVZFTlRfVEFSR0VUX0ZB
Q1RPUlkgPQogCi0taW5jbHVkZSBXZWJDb3JlRGVyaXZlZFNvdXJjZXNBZGRpdGlvbnMubWFrZQot
CiBKU19CSU5ESU5HX0lETFMgKz0gJChBRERJVElPTkFMX0JJTkRJTkdfSURMUykKIAogYWxsIDog
JChBRERJVElPTkFMX0JJTkRJTkdfSURMUzolLmlkbD1KUyUuaCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTkzLDYgKzU5Myw4IEBAIFdITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlS
ZXF1ZXN0QmFzZS5jcHAKKyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCisg
ICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQogICAgIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwCkBAIC02MDAsNiArNjAyLDcgQEAgV0hM
U0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmNwcAorICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbi5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0
b3IubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcAogCkBAIC02MTgs
NiArNjIxLDcgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5RXJyb3IuY3BwCiAgICAgSlNBcHBsZVBheUVycm9yQ29kZS5jcHAKICAgICBKU0FwcGxl
UGF5RXJyb3JDb250YWN0RmllbGQuY3BwCisgICAgSlNBcHBsZVBheUluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5jcHAKICAgICBKU0FwcGxlUGF5TGluZUl0ZW0uY3BwCiAgICAgSlNBcHBsZVBheU1l
cmNoYW50Q2FwYWJpbGl0eS5jcHAKICAgICBKU0FwcGxlUGF5TW9kaWZpZXIuY3BwCkBAIC02MzUs
NiArNjM5LDkgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5UmVxdWVzdEJhc2UuY3BwCiAgICAgSlNBcHBsZVBheVNlc3Npb24uY3BwCiAgICAgSlNB
cHBsZVBheVNlc3Npb25FcnJvci5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXAuY3BwCisgICAgSlNB
cHBsZVBheVNldHVwRmVhdHVyZS5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5j
cHAKICAgICBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAKICAgICBK
U0FwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLmNwcAogICAgIEpTQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFM
TE1FTlRTKQorCisjaW5jbHVkZSAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVh
dHVyZVR5cGUgZmVhdHVyZVR5cGUgeyBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlQ2Fy
ZCB9OworICAgIFN0cmluZyBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhOworICAgIFN0cmluZyBvcGVu
VG9CdXlUaHJlc2hvbGRBbW91bnQ7CisgICAgU3RyaW5nIGJpbmRpbmdUb3RhbEFtb3VudDsKKyAg
ICBTdHJpbmcgY3VycmVuY3lDb2RlOworICAgIFN0cmluZyBtZXJjaGFudElkZW50aWZpZXI7Cisg
ICAgU3RyaW5nIHJlZmVycmVySWRlbnRpZmllcjsKKyAgICBib29sIGlzSW5TdG9yZVB1cmNoYXNl
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50
Q29uZmlndXJhdGlvbi5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1B
UFBMRV9QQVlfSU5TVEFMTE1FTlRTLAorXSBkaWN0aW9uYXJ5IEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgZmVhdHVyZVR5cGUg
PSAiYXBwbGVDYXJkIjsKKyAgICBET01TdHJpbmcgbWVyY2hhbmRpc2luZ0ltYWdlRGF0YTsKKyAg
ICBET01TdHJpbmcgb3BlblRvQnV5VGhyZXNob2xkQW1vdW50OworICAgIERPTVN0cmluZyBiaW5k
aW5nVG90YWxBbW91bnQ7CisgICAgRE9NU3RyaW5nIGN1cnJlbmN5Q29kZTsKKyAgICBET01TdHJp
bmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgIERPTVN0cmluZyByZWZlcnJlcklkZW50aWZpZXI7
CisgICAgYm9vbGVhbiBpc0luU3RvcmVQdXJjaGFzZTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmgJKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50Q29udGFjdC5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudE1ldGhvZC5oIgogCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBw
bGVQYXlQYXltZW50QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50IHsKQEAgLTQ2LDExICs0Miw3IEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnQgewogICAgIFRva2VuIHRva2VuOwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5
bWVudENvbnRhY3Q+IGJpbGxpbmdDb250YWN0OwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVu
dENvbnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsKLQotI2lmIGRlZmluZWQoQVBQTEVQQVlQQVlNRU5U
X0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBB
WU1FTlRfQURESVRJT05TCi0jZW5kaWYKKyAgICBTdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICByZXF1aXJlZCBBcHBsZVBheVBheW1lbnRUb2tl
biB0b2tlbjsKICAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IGJpbGxpbmdDb250YWN0OwogICAg
IEFwcGxlUGF5UGF5bWVudENvbnRhY3Qgc2hpcHBpbmdDb250YWN0OworICAgIFtDb25kaXRpb25h
bD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSBET01TdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiBbCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmgJKHJldmlzaW9uIDI1OTkyMikK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50UGFzcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50
TWV0aG9kQWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVt
IGNsYXNzIEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGU7CkBAIC00NiwxMSArNDIsNyBAQCBzdHJ1
Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kIHsgICAgCiAgICAgT3B0aW9uYWw8VHlwZT4gdHlwZTsK
ICAgICBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRQYXNzPiBwYXltZW50UGFzczsKICAgICBPcHRp
b25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKLQotI2lmIGRlZmlu
ZWQoQVBQTEVQQVlQQVlNRU5UTUVUSE9EX0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVE1FVEhP
RF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBBWU1FTlRNRVRIT0RfQURESVRJT05TCi0jZW5k
aWYKKyAgICBTdHJpbmcgYmluZFRva2VuOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlk
bAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRNZXRob2QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0ICszMyw1IEBA
CiAgICAgQXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZSB0eXBlOwogICAgIEFwcGxlUGF5UGF5bWVu
dFBhc3MgcGF5bWVudFBhc3M7CiAgICAgQXBwbGVQYXlQYXltZW50Q29udGFjdCBiaWxsaW5nQ29u
dGFjdDsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gRE9NU3RyaW5n
IGJpbmRUb2tlbjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSwxMiBAQAogCiAj
aW5jbHVkZSAiQXBwbGVQYXlMaW5lSXRlbS5oIgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRl
QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICBBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFs
OwogICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXM7Ci0KLSNpZiBkZWZp
bmVkKEFQUExFUEFZUEFZTUVOVE1FVEhPRFVQREFURV9BRERJVElPTlMpCi1BUFBMRVBBWVBBWU1F
TlRNRVRIT0RVUERBVEVfQURESVRJT05TCi0jdW5kZWYgQVBQTEVQQVlQQVlNRU5UTUVUSE9EVVBE
QVRFX0FERElUSU9OUwotI2VuZGlmCisgICAgU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlm
aWVyOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbAkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw0ICsyOCw1IEBACiBd
IGRpY3Rpb25hcnkgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICByZXF1aXJlZCBB
cHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsOwogICAgIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+
IG5ld0xpbmVJdGVtczsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10g
RE9NU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlmaWVyOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNl
LmNwcAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVJlcXVlc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI5
IEBACiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVJlcXVlc3RCYXNlQWRkaXRpb25z
LmNwcD4KLSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgdm9pZCBmaW5pc2hDb252
ZXJ0aW5nKEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQXBwbGVQYXlSZXF1ZXN0QmFz
ZSYpIHsgfQotc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1bnNpZ25lZCwg
Y29uc3QgQXBwbGVQYXlSZXF1ZXN0QmFzZSYpIHsgcmV0dXJuIHRydWU7IH0KLX0KKworc3RhdGlj
IHZvaWQgZmluaXNoQ29udmVydGluZyhBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVz
dWx0LCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9Q
QVlfSU5TVEFMTE1FTlRTKQorICAgIGlmIChyZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlv
bikKKyAgICAgICAgcmVzdWx0LnNldEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihXVEZNb3ZlKCpy
ZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAjZW5kaWYKK30KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1
bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIHJldHVybiB2ZXJzaW9uIDwg
OCB8fCAhcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTSh2ZXJzaW9uKTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CisgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKK30KIAogc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiBj
b252ZXJ0QW5kVmFsaWRhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCB2ZXJzaW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkTmV0d29ya3MsIGNvbnN0IFBheW1lbnRDb29y
ZGluYXRvciYgcGF5bWVudENvb3JkaW5hdG9yKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1
ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMTAgQEAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiQXBwbGVQYXlDb250YWN0RmllbGQuaCIKKyNpbmNsdWRl
ICJBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFwcGxlUGF5
TWVyY2hhbnRDYXBhYmlsaXR5LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50Q29udGFjdC5o
IgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlv
bnMvQXBwbGVQYXlSZXF1ZXN0QmFzZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC01NCw5ICs1MSw4IEBAIHN0cnVjdCBBcHBs
ZVBheVJlcXVlc3RCYXNlIHsKICAgICBTdHJpbmcgYXBwbGljYXRpb25EYXRhOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHN1cHBvcnRlZENvdW50cmllczsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlSRVFV
RVNUQkFTRV9BRERJVElPTlMpCi1BUFBMRVBBWVJFUVVFU1RCQVNFX0FERElUSU9OUwotI3VuZGVm
IEFQUExFUEFZUkVRVUVTVEJBU0VfQURESVRJT05TCisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNU
QUxMTUVOVFMpCisgICAgT3B0aW9uYWw8QXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNSArNjUsMTcgQEAKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBs
ZVBheVNlc3Npb25BZGRpdGlvbnMuY3BwPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0
YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUGF5bWVudE1ldGhvZFVwZGF0ZSYsIEFwcGxlUGF5
UGF5bWVudE1ldGhvZFVwZGF0ZSYmKSB7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBheW1lbnRNZXRob2RVcGRhdGUmIGNv
bnZlcnRlZFVwZGF0ZSwgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlJiYgdXBkYXRlKQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGNvbnZlcnRlZFVwZGF0ZS5z
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcih1cGRhdGUuaW5zdGFsbG1lbnRHcm91cElkZW50
aWZpZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udmVydGVkVXBkYXRlKTsKKyAgICBV
TlVTRURfUEFSQU0odXBkYXRlKTsKKyNlbmRpZgorfQogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXBwbGVQYXlTZXNzaW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
NCArMjgsMTEgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiUGF5bWVudENv
bnRhY3QuaCIKKyNpbmNsdWRlICJQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
LSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3RB
ZGRpdGlvbnMuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CkBAIC0xNDEsOSArMTM4LDkgQEAgcHVibGljOgog
ICAgIFJlcXVlc3RlciByZXF1ZXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQog
ICAgIHZvaWQgc2V0UmVxdWVzdGVyKFJlcXVlc3RlciByZXF1ZXN0ZXIpIHsgbV9yZXF1ZXN0ZXIg
PSByZXF1ZXN0ZXI7IH0KIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNTSU9OUEFZTUVOVFJFUVVF
U1RfUFVCTElDX0FERElUSU9OUykKLUFQUExFUEFZU0VTU0lPTlBBWU1FTlRSRVFVRVNUX1BVQkxJ
Q19BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVNFU1NJT05QQVlNRU5UUkVRVUVTVF9QVUJMSUNf
QURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICBjb25zdCBQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uJiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2luc3RhbGxtZW50Q29uZmlndXJhdGlvbjsgfQorICAgIHZvaWQgc2V0
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24m
JiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pIHsgbV9pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24g
PSBXVEZNb3ZlKGluc3RhbGxtZW50Q29uZmlndXJhdGlvbik7IH0KICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtMTcyLDkgKzE2OSw4IEBAIHByaXZhdGU6CiAKICAgICBSZXF1ZXN0ZXIgbV9yZXF1ZXN0
ZXIgeyBSZXF1ZXN0ZXI6OkFwcGxlUGF5SlMgfTsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNT
SU9OUEFZTUVOVFJFUVVFU1RfUFJJVkFURV9BRERJVElPTlMpCi1BUFBMRVBBWVNFU1NJT05QQVlN
RU5UUkVRVUVTVF9QUklWQVRFX0FERElUSU9OUwotI3VuZGVmIEFQUExFUEFZU0VTU0lPTlBBWU1F
TlRSRVFVRVNUX1BSSVZBVEVfQURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5U
UykKKyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIG1faW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBcHBsZVBheVNldHVwLmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQor
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiUGF5bWVudFNlc3Npb24uaCIKKyNpbmNsdWRlICJQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgYm9vbCBzaG91bGREaXNjbG9zZUZlYXR1cmVzKERvY3VtZW50JiBkb2N1bWVudCkKK3sK
KyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpOworICAgIGlmICghcGFnZSB8fCBwYWdl
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gZG9jdW1lbnQuc2V0dGluZ3MoKS5hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxs
b3dlZCgpOworfQorCit2b2lkIEFwcGxlUGF5U2V0dXA6OmdldFNldHVwRmVhdHVyZXMoRG9jdW1l
bnQmIGRvY3VtZW50LCBTZXR1cEZlYXR1cmVzUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgYXV0
byBjYW5DYWxsID0gUGF5bWVudFNlc3Npb246OmNhbkNyZWF0ZVNlc3Npb24oZG9jdW1lbnQpOwor
ICAgIGlmIChjYW5DYWxsLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2Uuc2V0dGxl
KGNhbkNhbGwucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkgewor
ICAgICAgICBwcm9taXNlLnNldHRsZShFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJlc29sdmUgd2l0aCBhbiBlbXB0eSBz
ZXF1ZW5jZSBvZiBmZWF0dXJlcyBpZiBBcHBsZSBQYXkgY2FwYWJpbGl0eSBkaXNjbG9zdXJlIGlz
IG5vdCBhbGxvd2VkLgorICAgIGlmICghc2hvdWxkRGlzY2xvc2VGZWF0dXJlcyhkb2N1bWVudCkp
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX3NldHVwRmVhdHVyZXNQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKworICAg
IHBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLmNsaWVudCgpLmdldFNldHVwRmVhdHVyZXMobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShWZWN0b3I8UmVmPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4mJiBzZXR1cEZlYXR1cmVzKSB7CisgICAgICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3NldHVwRmVhdHVyZXNQcm9taXNlLCBXVEY6
Om51bGxvcHQpLT5zZXR0bGUoV1RGTW92ZShzZXR1cEZlYXR1cmVzKSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgQXBwbGVQYXlTZXR1cDo6YmVnaW4oRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0b3I8UmVm
UHRyPEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcywgQmVnaW5Qcm9taXNlJiYgcHJv
bWlzZSkKK3sKKyAgICBhdXRvIGNhbkNhbGwgPSBQYXltZW50U2Vzc2lvbjo6Y2FuQ3JlYXRlU2Vz
c2lvbihkb2N1bWVudCk7CisgICAgaWYgKGNhbkNhbGwuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoY2FuQ2FsbC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yLCAiTXVzdCBjYWxsIEFwcGxlUGF5U2V0dXAuYmVnaW4gZnJvbSBhIHVz
ZXIgZ2VzdHVyZSBoYW5kbGVyLiIgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIHBy
b21pc2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fYmVnaW5Qcm9taXNlKSB7CisgICAgICAgIHByb21p
c2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9iZWdpblByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAg
IG1fcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7CisKKyAgICBw
YWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5iZWdpbkFwcGxlUGF5U2V0dXAobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgV1RGTW92ZShmZWF0dXJlcyksIFt0aGlzXShi
b29sIHJlc3VsdCkgeworICAgICAgICBpZiAobV9iZWdpblByb21pc2UpCisgICAgICAgICAgICBz
dGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUocmVzdWx0
KTsKKyAgICB9KTsKK30KKworQXBwbGVQYXlTZXR1cDo6QXBwbGVQYXlTZXR1cChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQoreworICAgIHN1c3BlbmRJZk5lZWRlZCgpOworfQorCit2b2lk
IEFwcGxlUGF5U2V0dXA6OnN0b3AoKQoreworICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UsIFdURjo6bnVs
bG9wdCktPnNldHRsZShFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworCisgICAgaWYgKG1fYmVn
aW5Qcm9taXNlKQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51
bGxvcHQpLT5zZXR0bGUoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKKworICAgIGlmIChhdXRv
IHBhZ2UgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucGFn
ZSgpKQorICAgICAgICBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5lbmRBcHBs
ZVBheVNldHVwKCk7CisKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgQXBwbGVQYXlTZXR1cDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIHN0
b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQ
UExFX1BBWV9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXR1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTZXR1cC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VU
VVApCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2ZURPTU9iamVjdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSlNET01Qcm9taXNlRGVmZXJyZWQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEFwcGxlUGF5U2V0dXBGZWF0dXJlOworY2xhc3MgRGVmZXJyZWRQcm9taXNlOworY2xhc3MgRG9j
dW1lbnQ7CisKK2NsYXNzIEFwcGxlUGF5U2V0dXAgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBw
dWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwPiB7CitwdWJsaWM6CisgICAgc3RydWN0IENv
bmZpZ3VyYXRpb24geworICAgICAgICBTdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgICAg
ICBTdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgc2lnbmF0dXJlOwor
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBzaWduZWRGaWVsZHM7CisgICAgfTsKKworICAgIHN0YXRp
YyBSZWY8QXBwbGVQYXlTZXR1cD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXBwbGVQYXlTZXR1cChjb250ZXh0LCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKSk7CisgICAgfQorCisgICAgdXNpbmcgU2V0dXBGZWF0dXJlc1Byb21pc2UgPSBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4+OworICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhEb2N1bWVudCYsIFNldHVwRmVhdHVyZXNQ
cm9taXNlJiYpOworCisgICAgdXNpbmcgQmVnaW5Qcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4+OworICAgIHZvaWQgYmVnaW4oRG9jdW1lbnQmLCBWZWN0b3I8UmVmUHRyPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4mJiwgQmVnaW5Qcm9taXNlJiYpOworCitwcml2YXRlOgorICAg
IEFwcGxlUGF5U2V0dXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENvbmZpZ3VyYXRpb24mJik7
CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkFwcGxlUGF5U2V0dXAiOyB9CisgICAgdm9p
ZCBzdG9wKCkgZmluYWw7CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZp
bmFsOworCisgICAgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgT3B0aW9uYWw8
U2V0dXBGZWF0dXJlc1Byb21pc2U+IG1fc2V0dXBGZWF0dXJlc1Byb21pc2U7CisgICAgT3B0aW9u
YWw8QmVnaW5Qcm9taXNlPiBtX2JlZ2luUHJvbWlzZTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2
aXR5PEFwcGxlUGF5U2V0dXA+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGwJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNldHVwLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKK10gZGljdGlvbmFyeSBBcHBsZVBh
eVNldHVwQ29uZmlndXJhdGlvbiB7CisgICAgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsK
KyAgICBET01TdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgIERPTVN0cmluZyBzaWduYXR1
cmU7CisgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBzaWduZWRGaWVsZHM7Cit9OworCitbCisgICAg
QWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKKyAgICBD
b25zdHJ1Y3RvcihBcHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSwKKyAg
ICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgRW5hYmxl
ZEJ5U2V0dGluZz1BcHBsZVBheSwKKyAgICBTZWN1cmVDb250ZXh0LAorXSBpbnRlcmZhY2UgQXBw
bGVQYXlTZXR1cCB7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNlPHNlcXVlbmNlPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4gZ2V0U2V0dXBGZWF0dXJlcygpOworICAgIFtDYWxsV2l0aD1E
b2N1bWVudF0gUHJvbWlzZTxib29sZWFuPiBiZWdpbihzZXF1ZW5jZTxBcHBsZVBheVNldHVwRmVh
dHVyZT4gc2V0dXBGZWF0dXJlcyk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1Mg
UEtQYXltZW50U2V0dXBGZWF0dXJlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xh
c3MgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIDogdWludDhfdDsKKworY2xhc3MgQXBwbGVQYXlT
ZXR1cEZlYXR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwRmVhdHVyZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+IGNyZWF0ZShQS1Bh
eW1lbnRTZXR1cEZlYXR1cmUgKmZlYXR1cmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBcHBsZVBheVNldHVwRmVhdHVyZShmZWF0dXJlKSk7CisgICAgfQorCisgICAgQXBw
bGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGUoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgU3Rh
dGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5zdXBwb3J0ZWQsCisgICAgICAgIFN1cHBvcnRlZCwK
KyAgICAgICAgU3VwcGxlbWVudGFyeVN1cHBvcnRlZCwKKyAgICAgICAgQ29tcGxldGVkLAorICAg
IH07CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKKworICAgIFBLUGF5bWVudFNldHVwRmVhdHVy
ZSAqcGxhdGZvcm1GZWF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlLmdldCgpOyB9CisK
KyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBib29sIHN1cHBvcnRzSW5z
dGFsbG1lbnRzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBBcHBsZVBheVNldHVwRmVhdHVyZShQS1BheW1lbnRTZXR1cEZlYXR1cmUgKik7
CisKKyAgICBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBGZWF0dXJlPiBtX2ZlYXR1cmU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1NF
VFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFs
PUFQUExFX1BBWV9TRVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVN0YXRlIHsKKyAg
ICAidW5zdXBwb3J0ZWQiLAorICAgICJzdXBwb3J0ZWQiLAorICAgICJzdXBwbGVtZW50YXJ5U3Vw
cG9ydGVkIiwKKyAgICAiY29tcGxldGVkIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPUFQUExF
X1BBWV9TRVRVUCwKKyAgICBFbmFibGVkQnlTZXR0aW5nPUFwcGxlUGF5LAorICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCisgICAgU2VjdXJlQ29udGV4dCwKK10gaW50ZXJmYWNlIEFwcGxl
UGF5U2V0dXBGZWF0dXJlIHsKKyAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1
dGUgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGU7CisgICAgW0NhY2hlZEF0dHJpYnV0ZV0g
cmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5U2V0dXBGZWF0dXJlU3RhdGUgc3RhdGU7CisgICAg
W0NhY2hlZEF0dHJpYnV0ZSwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNJbnN0YWxsbWVudHM7Cit9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXBGZWF0dXJlLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBcHBs
ZVBheVNldHVwRmVhdHVyZS5oIgorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworI2lt
cG9ydCAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW1wb3J0ICJQYXNzS2l0U1BJQWRk
aXRpb25zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlIEFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0eXBlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKFtt
X2ZlYXR1cmUgdHlwZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVR5cGVBcHBs
ZVBheToKKyAgICAgICAgcmV0dXJuIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZTo6QXBwbGVQYXk7
CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQYXlfWDoKKyAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIHJldHVybiBBcHBsZVBheVNldHVwRmVhdHVy
ZVR5cGU6OkFwcGxlQ2FyZDsKKyAgICB9Cit9CisKK0FwcGxlUGF5U2V0dXBGZWF0dXJlOjpTdGF0
ZSBBcHBsZVBheVNldHVwRmVhdHVyZTo6c3RhdGUoKSBjb25zdAoreworICAgIHN3aXRjaCAoW21f
ZmVhdHVyZSBzdGF0ZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlVW5z
dXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6VW5zdXBwb3J0ZWQ7CisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBvcnRlZDoKKyAgICAgICAgcmV0dXJuIFN0YXRl
OjpTdXBwb3J0ZWQ7CisgICAgY2FzZSBQS1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBsZW1l
bnRhcnlTdXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6U3VwcGxlbWVudGFyeVN1cHBv
cnRlZDsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlQ29tcGxldGVkOgorICAg
ICAgICByZXR1cm4gU3RhdGU6OkNvbXBsZXRlZDsKKyAgICB9Cit9CisKKyNpZiBFTkFCTEUoQVBQ
TEVfUEFZX0lOU1RBTExNRU5UUykKK2Jvb2wgQXBwbGVQYXlTZXR1cEZlYXR1cmU6OnN1cHBvcnRz
SW5zdGFsbG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fZmVhdHVyZSBzdXBwb3J0ZWRP
cHRpb25zXSAmIFBLUGF5bWVudFNldHVwRmVhdHVyZVN1cHBvcnRlZE9wdGlvbnNJbnN0YWxsbWVu
dHM7Cit9CisjZW5kaWYKKworQXBwbGVQYXlTZXR1cEZlYXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlKFBLUGF5bWVudFNldHVwRmVhdHVyZSAqZmVhdHVyZSkKKyAgICA6IG1fZmVhdHVyZSB7IGZl
YXR1cmUgfQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoQVBQTEVfUEFZX1NFVFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1
cmVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitlbnVtIGNsYXNzIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZSA6IHVpbnQ4X3Qg
eworICAgIEFwcGxlUGF5LAorICAgIEFwcGxlQ2FyZCwKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZVR5cGUuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9T
RVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgeworICAgICJhcHBsZVBheSIs
CisgICAgImFwcGxlQ2FyZCIKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oIgorI2luY2x1ZGUgIkFwcGxlUGF5U2V0dXAuaCIKKyNpbmNsdWRlICJBcHBsZVBheVNldHVw
RmVhdHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BheW1lbnRDb29yZGlu
YXRvckNsaWVudEFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRG9jdW1lbnQ7CkBAIC03MSwxMyArNzAsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorICAgIHZpcnR1YWwgdm9pZCBnZXRTZXR1
cEZlYXR1cmVzKGNvbnN0IEFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBBcHBsZVBheVNldHVwOjpD
b25maWd1cmF0aW9uJiwgY29uc3QgVVJMJiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheVNldHVwRmVh
dHVyZT4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIGVuZEFw
cGxlUGF5U2V0dXAoKSB7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwotCi0jaWYgZGVmaW5lZChQQVlNRU5U
Q09PUkRJTkFUT1JDTElFTlRfQURESVRJT05TKQotUEFZTUVOVENPT1JESU5BVE9SQ0xJRU5UX0FE
RElUSU9OUwotI3VuZGVmIFBBWU1FTlRDT09SRElOQVRPUkNMSUVOVF9BRERJVElPTlMKLSNlbmRp
ZgogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBQS1BheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb247CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEFw
cGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBQYXltZW50SW5z
dGFsbG1lbnRDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OworICAgIFBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24oY29uc3QgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24mKTsK
KyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24+JiYpOworCisgICAgUEtQYXltZW50SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBSZXRhaW5QdHI8UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBtX2NvbmZp
Z3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RB
TExNRU5UUykKKworI2ltcG9ydCAiQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCIK
KyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0b0RlY2ltYWxOdW1iZXIoKSBpbiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLgorc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNp
bWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQoreworICAgIGlmICghYW1vdW50KQorICAg
ICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciB6ZXJvXTsKKyAgICByZXR1cm4gW05TRGVjaW1h
bE51bWJlciBkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzphbW91bnQgbG9jYWxlOkB7IE5TTG9jYWxl
RGVjaW1hbFNlcGFyYXRvciA6IEAiLiIgfV07Cit9CisKK3N0YXRpYyBQS1BheW1lbnRTZXR1cEZl
YXR1cmVUeXBlIHBsYXRmb3JtRmVhdHVyZVR5cGUoY29uc3QgQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlJiBmZWF0dXJlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVUeXBlKSB7CisgICAgY2Fz
ZSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlUGF5OgorICAgICAgICByZXR1cm4gUEtQ
YXltZW50U2V0dXBGZWF0dXJlVHlwZUFwcGxlUGF5OworICAgIGNhc2UgQXBwbGVQYXlTZXR1cEZl
YXR1cmVUeXBlOjpBcHBsZUNhcmQ6CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCisgICAgICAgIHJldHVybiBQS1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQ
YXlfWDsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgfQor
fQorCitzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4g
Y3JlYXRlUGxhdGZvcm1Db25maWd1cmF0aW9uKGNvbnN0IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uJiBjb3JlQ29uZmlndXJhdGlvbikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uSW5z
dGFuY2UoKSBpbml0XSk7CisKKyAgICBbY29uZmlndXJhdGlvbiBzZXRGZWF0dXJlOnBsYXRmb3Jt
RmVhdHVyZVR5cGUoY29yZUNvbmZpZ3VyYXRpb24uZmVhdHVyZVR5cGUpXTsKKworICAgIFtjb25m
aWd1cmF0aW9uIHNldEJpbmRpbmdUb3RhbEFtb3VudDp0b0RlY2ltYWxOdW1iZXIoY29yZUNvbmZp
Z3VyYXRpb24uYmluZGluZ1RvdGFsQW1vdW50KV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0Q3Vy
cmVuY3lDb2RlOmNvcmVDb25maWd1cmF0aW9uLmN1cnJlbmN5Q29kZV07CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0SW5TdG9yZVB1cmNoYXNlOmNvcmVDb25maWd1cmF0aW9uLmlzSW5TdG9yZVB1cmNo
YXNlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRPcGVuVG9CdXlUaHJlc2hvbGRBbW91bnQ6dG9E
ZWNpbWFsTnVtYmVyKGNvcmVDb25maWd1cmF0aW9uLm9wZW5Ub0J1eVRocmVzaG9sZEFtb3VudCld
OworCisgICAgYXV0byBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmNvcmVDb25maWd1cmF0aW9uLm1lcmNo
YW5kaXNpbmdJbWFnZURhdGEgb3B0aW9uczowXSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVy
Y2hhbmRpc2luZ0ltYWdlRGF0YTptZXJjaGFuZGlzaW5nSW1hZ2VEYXRhLmdldCgpXTsKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVF9JREVOVElGSUVSUykKKyNpZiBQTEFURk9STShNQUMp
CisgICAgaWYgKCFbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dEluc3RhbGxtZW50TWVyY2hhbnRJZGVudGlmaWVyOildIHx8ICFbY29uZmlndXJhdGlvbiByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFJlZmVycmVySWRlbnRpZmllcjopXSkKKyAgICAg
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisjZW5kaWYKKyAgICBbY29uZmlndXJhdGlvbiBzZXRJ
bnN0YWxsbWVudE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElk
ZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldFJlZmVycmVySWRlbnRpZmllcjpjb3Jl
Q29uZmlndXJhdGlvbi5yZWZlcnJlcklkZW50aWZpZXJdOworI2VuZGlmCisKKyAgICByZXR1cm4g
Y29uZmlndXJhdGlvbjsKK30KKworUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjo6UGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihjb25zdCBBcHBsZVBheUluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IGNyZWF0
ZVBsYXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSB9Cit7Cit9CisKK1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb246OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24o
UmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0
aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShjb25maWd1cmF0aW9uKSB9Cit7
Cit9CisKK1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiAqUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbjo6cGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgJ
KHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudE1ldGhvZFVwZGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsNiBAQAogI2lu
Y2x1ZGUgIkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvUGF5bWVudE1ldGhvZFVwZGF0ZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIE9C
SkNfQ0xBU1MgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTUwLDExICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVG90YWxB
bmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKCkgY29uc3Q7CiAgICAgUEtQYXltZW50UmVx
dWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnBsYXRmb3JtVXBkYXRlKCkgY29uc3Q7CiAKLSNpZiBk
ZWZpbmVkKFBBWU1FTlRNRVRIT0RVUERBVEVfUFVCTElDX0FERElUSU9OUykKLVBBWU1FTlRNRVRI
T0RVUERBVEVfUFVCTElDX0FERElUSU9OUwotI3VuZGVmIFBBWU1FTlRNRVRIT0RVUERBVEVfUFVC
TElDX0FERElUSU9OUworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisgICAgdm9pZCBz
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKICNlbmRpZgotICAg
IAorCiBwcml2YXRlOgogICAgIE9wdGlvbmFsPFRvdGFsQW5kTGluZUl0ZW1zPiBtX3RvdGFsQW5k
TGluZUl0ZW1zOwogICAgIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZT4gbV9wbGF0Zm9ybVVwZGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDE4IEBACiAjaW1wb3J0ICJQYXltZW50TWV0
aG9kLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudENvY29h
QWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyB2b2lkIGZp
bmlzaENvbnZlcnRpbmcoUEtQYXltZW50ICosIEFwcGxlUGF5UGF5bWVudCYpIHsgfQotfQotI2Vu
ZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmco
UEtQYXltZW50ICpwYXltZW50LCBBcHBsZVBheVBheW1lbnQmIHJlc3VsdCkKK3sKKyNpZiBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGlmIChOU1N0cmluZyAqaW5zdGFsbG1lbnRBdXRo
b3JpemF0aW9uVG9rZW4gPSBwYXltZW50Lmluc3RhbGxtZW50QXV0aG9yaXphdGlvblRva2VuKQor
ICAgICAgICByZXN1bHQuaW5zdGFsbG1lbnRBdXRob3JpemF0aW9uVG9rZW4gPSBpbnN0YWxsbWVu
dEF1dGhvcml6YXRpb25Ub2tlbjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBheW1lbnQpOwor
ICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOworI2VuZGlmCit9CiAKIHN0YXRpYyBBcHBsZVBheVBh
eW1lbnQ6OlRva2VuIGNvbnZlcnQoUEtQYXltZW50VG9rZW4gKnBheW1lbnRUb2tlbikKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1ldGhvZENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDE4IEBACiAjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRNZXRo
b2RUeXBlLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudE1l
dGhvZENvY29hQWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRp
YyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICosIEFwcGxlUGF5UGF5bWVu
dE1ldGhvZCYpIHsgfQotfQotI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2
b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICpwYXltZW50TWV0aG9kLCBBcHBs
ZVBheVBheW1lbnRNZXRob2QmIHJlc3VsdCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1F
TlRTKQorICAgIGlmIChOU1N0cmluZyAqYmluZFRva2VuID0gcGF5bWVudE1ldGhvZC5iaW5kVG9r
ZW4pCisgICAgICAgIHJlc3VsdC5iaW5kVG9rZW4gPSBiaW5kVG9rZW47CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShwYXltZW50TWV0aG9kKTsKKyAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKKyNl
bmRpZgorfQogCiBzdGF0aWMgQXBwbGVQYXlQYXltZW50UGFzczo6QWN0aXZhdGlvblN0YXRlIGNv
bnZlcnQoUEtQYXltZW50UGFzc0FjdGl2YXRpb25TdGF0ZSBwYXltZW50UGFzc0FjdGl2YXRpb25T
dGF0ZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRNZXRob2RVcGRhdGVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksMTMgQEAg
UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKlBheQogICAgIHJldHVybiBtX3Bs
YXRmb3JtVXBkYXRlLmdldCgpOwogfQogCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K3ZvaWQgUGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcikKK3sKKyAgICBbbV9wbGF0
Zm9ybVVwZGF0ZSBzZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcjppbnN0YWxsbWVudEdyb3Vw
SWRlbnRpZmllcl07Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNv
Y29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTUgKzMxLDI3IEBACiAjaW1wb3J0ICJBcHBsZVBheVNlc3Npb25FcnJvci5oIgogI2ltcG9y
dCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2FB
ZGRpdGlvbnMubW0+Ci0jZWxzZQogbmFtZXNwYWNlIFdlYkNvcmUgewotc3RhdGljIE9wdGlvbmFs
PEFwcGxlUGF5U2Vzc2lvbkVycm9yPiBhZGRpdGlvbmFsRXJyb3IoTlNFcnJvciAqKSB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CitzdGF0
aWMgT3B0aW9uYWw8QXBwbGVQYXlTZXNzaW9uRXJyb3I+IGFkZGl0aW9uYWxFcnJvcihOU0Vycm9y
ICplcnJvcikKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIC8vIEZJWE1F
OiBSZXBsYWNlIHdpdGggUEtQYXltZW50RXJyb3JCaW5kVG9rZW5Vc2VySW5mb0tleSBhbmQKKyAg
ICAvLyBQS1BheW1lbnRBdXRob3JpemF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3Igd2hlbiB0
aGV5J3JlIGF2YWlsYWJsZSBpbiBhbiBTREsuCisgICAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
YmluZFRva2VuS2V5ID0gQCJQS1BheW1lbnRFcnJvckJpbmRUb2tlbiI7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBOU0ludGVnZXIgcGtQYXltZW50QXV0aG9yaXphdGlvbkZlYXR1cmVBcHBsaWNhdGlv
bkVycm9yID0gLTIwMTY7CisKKyAgICBpZiAoZXJyb3IuY29kZSAhPSBwa1BheW1lbnRBdXRob3Jp
emF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3IpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBpZCBiaW5kVG9rZW5WYWx1ZSA9IGVycm9yLnVzZXJJbmZvW2JpbmRUb2tlbktl
eV07CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighYmluZFRv
a2VuVmFsdWUgfHwgW2JpbmRUb2tlblZhbHVlIGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3Nd
KTsKKyAgICByZXR1cm4gQXBwbGVQYXlTZXNzaW9uRXJyb3IgeyAiZmVhdHVyZUFwcGxpY2F0aW9u
RXJyb3IiX3MsIHsgeyAiYmluZFRva2VuIl9zLCAoTlNTdHJpbmcgKiliaW5kVG9rZW5WYWx1ZSB9
IH0gfTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworI2VuZGlmCit9CiAKIFBheW1lbnRTZXNzaW9uRXJyb3I6OlBheW1lbnRTZXNzaW9u
RXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+JiYgZXJyb3IpCiAgICAgOiBtX3BsYXRmb3JtRXJyb3Ig
eyBXVEZNb3ZlKGVycm9yKSB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVJlcXVlc3Qu
aWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDQgKzI4LDUgQEAKIF0gZGljdGlvbmFyeSBBcHBsZVBheVJlcXVlc3QgOiBBcHBsZVBheVJlcXVl
c3RCYXNlIHsKICAgICByZXF1aXJlZCB1bnNpZ25lZCBsb25nIHZlcnNpb247CiAgICAgcmVxdWly
ZWQgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVf
UEFZX0lOU1RBTExNRU5UU10gQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gaW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyB0YXNrRGVs
YXlJbnRlcnZhbCB7IDEwMF9tcyB9OwogCi0jdW5kZWYgTE9HSURFTlRJRklFUgotI2RlZmluZSBM
T0dJREVOVElGSUVSIF9fZnVuY19fCi0KLSN1bmRlZiBBTFdBWVNfTE9HCi0jZGVmaW5lIEFMV0FZ
U19MT0cgbG9nZ2VyKCkubG9nQWx3YXlzCisjZGVmaW5lIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUiBsb2dnZXIoKS5sb2dBbHdheXMKIAogc3RydWN0IENsaWVudFN0YXRlIHsKICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjEsMTkgKzE1NywxOSBAQCB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpCiAgICAgaWYgKG1fbW9ja1BpY2tl
ckVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18pOwogICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOwogfQogCiB2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3Rh
dGUpCiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwogICAgIG1vY2tQaWNrZXIoKS5zZXRTdGF0ZShu
YW1lLCBzdGF0ZSk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQogewotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19f
KTsKICAgICBtb2NrUGlja2VyKCkuZGlzbWlzc1BvcHVwKCk7CiB9CiAKQEAgLTIwOCw3ICsyMDQs
NyBAQCB1aW50NjRfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5CiAgICAgaWYgKGlu
ZGV4ICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgY29udGV4dElkKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18sIGNvbnRleHRJZCk7CiAgICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQobWFrZVVu
aXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKIAogICAgIGlmIChtX2V4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJnZXQpCkBAIC0yMjQsNyAr
MjIwLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YgogICAgIGlm
IChpbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CisgICAgQUxXQVlTX0xP
R19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQo
KSk7CiAKICAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpbmRleCk7CiAgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRz
Q29uZmlndXJhdGlvblRhc2spOwpAQCAtMjM3LDcgKzIzMyw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGwKIAogICAgIGZvciAoc2l6ZV90IGkgPSBtX2NsaWVudFN0
YXRlLnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICBpZiAoJm1fY2xpZW50U3RhdGVbaSAt
IDFdLT5jbGllbnQgPT0gJmNsaWVudCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBtX2NsaWVudFN0YXRlW2kgLSAxXS5nZXQoKSk7CisgICAgICAgICAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaSAtIDFdLmdl
dCgpKTsKICAgICAgICAgICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGkgLSAxKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTI1Nyw3ICsyNTMsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNob3dQbGF5YmFjCiAgICAgICAgIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2VyID0g
c3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1BpY2tlcjsKICAgICB9CiAKLSAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsKKyAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdl
dCgpKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlUm91dGUgPSBmbGFnc0FyZVNldChtX2NsaWVudFN0
YXRlW2luZGV4XS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZp
Y2UpOwogICAgIHRhcmdldFBpY2tlcigpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihGbG9hdFJl
Y3QocmVjdCksIGhhc0FjdGl2ZVJvdXRlLCB1c2VEYXJrQXBwZWFyYW5jZSk7CkBAIC0yNzUsNyAr
MjcxLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjbGllbnRTdGF0ZQogICAgIGlm
IChuZXdGbGFncyA9PSBvbGRGbGFncykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSwgIm5ldyBmbGFncyA9
ICIsIG5ld0ZsYWdzKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3IGZsYWdzID0gIiwgbmV3RmxhZ3Mp
OwogCiAgICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFncyA9IG5ld0ZsYWdzOwogCkBAIC0yOTks
MjUgKzI5NSwyNSBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoZmxhZ3NBcmVTZXQoc3RhdGUtPmZs
YWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSAmJiBmbGFnc0Fy
ZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgewotICAg
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiByZXR1cm5p
bmcgZWFybHkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBEbyBub3QgYmVnaW4gcGxheWluZyB0
byB0aGUgZGV2aWNlIHVubGVzcyBwbGF5YmFjayBoYXMganVzdCBzdGFydGVkLgogICAgIGlmICgh
ZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSB8fCBm
bGFnc0FyZVNldChvbGRGbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7Ci0g
ICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBlYXJseSwgcGxheWJh
Y2sgZGlkbid0IGp1c3Qgc3RhcnQiKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCAicmV0dXJuaW5nIGVhcmx5LCBwbGF5YmFjayBkaWRuJ3QganVzdCBz
dGFydCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBzdGF0ZSA6
IG1fY2xpZW50U3RhdGUpIHsKICAgICAgICAgaWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
ZmFsc2UpIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
Xywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChm
YWxzZSkiKTsKICAgICAgICAgc3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNT
SU9OTUFOQUdFUihfX2Z1bmNfXywgY2hhbmdlZENsaWVudFN0YXRlLmdldCgpLCAiIGNhbGxpbmcg
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICBjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAKICAgICBpZiAoaW5kZXggJiYgbV9jbGllbnRTdGF0
ZS5zaXplKCkgPiAxKQpAQCAtMzI2LDcgKzMyMiw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6Y2xpZW50U3RhdGUKIAogdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFz
QWN0aXZlUm91dGUoKSk7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVu
Y19fLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFzQWN0aXZlUm91dGUoKSk7CiAg
ICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsKICAgICBtX3RhcmdldENoYW5n
ZWQgPSB0cnVlOwogICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0NvbmZpZ3Vy
YXRpb25UYXNrKTsKQEAgLTMzNCw3ICszMzAsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNldFBsYXliYWNrCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCBhdmFpbGFibGUpOworICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgYXZhaWxhYmxlKTsKICAgICBtX2V4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlID0gYXZhaWxhYmxlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2Ns
aWVudFN0YXRlKQogICAgICAgICBzdGF0ZS0+Y2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKHN0YXRlLT5jb250ZXh0SWQsIGF2YWlsYWJsZSk7CkBAIC0zNDIsNyAr
MzM4LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpleHRlcm5hbE91dAogCiB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2Vk
KCkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIEFMV0FZU19MT0dfTUVE
SUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbV9wbGF5YmFja1RhcmdldFBpY2tlckRp
c21pc3NlZCA9IHRydWU7CiAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhUYXJnZXRDbGllbnRzQ29u
ZmlndXJhdGlvblRhc2spOwogfQpAQCAtMzc1LDcgKzM3MSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2xp
ZW50U3RhdGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0
YXRlW2ldOwogCi0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0KCks
ICIsIHJlcXVlc3RlZFBpY2tlciA9ICIsIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIpOworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAi
LCByZXF1ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKTsKIAogICAgICAg
ICBpZiAoKG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2Vk
KSAmJiBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKQogICAgICAgICAgICAgaW5kZXhPZkNsaWVudFRo
YXRSZXF1ZXN0ZWRQaWNrZXIgPSBpOwpAQCAtNDAxLDEyICszOTcsMTIgQEAgdm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5z
ZXRQbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCAqbV9wbGF5YmFja1RhcmdldC5jb3B5
UmVmKCkpOwogCiAgICAgICAgIGlmIChpICE9IGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0
IHx8ICFoYXZlQWN0aXZlUm91dGUpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dChmYWxzZSkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChmYWxzZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgZmFsc2UpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgJiYgbV9wbGF5YmFja1RhcmdldFBpY2tl
ckRpc21pc3NlZCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkIik7Cisg
ICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRl
LmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKICAg
ICAgICAgICAgIHN0YXRlLT5jbGllbnQucGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQo
c3RhdGUtPmNvbnRleHRJZCk7CiAgICAgICAgIH0KIApAQCAtNDE4LDcgKzQxNCw3IEBAIHZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBpZiAoaGF2ZUFjdGl2ZVJv
dXRlICYmIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ICE9IG5vdEZvdW5kKSB7CiAgICAg
ICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1Rh
cmdldF07CiAgICAgICAgIGlmICghZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkgewotICAgICAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0KHRydWUpIik7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lP
Tk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC00MzMsNyArNDI5LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
Ojpjb25maWd1cmVQbAogICAgIGJvb2wgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSBmYWxzZTsK
ICAgICBib29sIGhhdmVDbGllbnRXaXRoTWVkaWEgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIHN0
YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
IHN0YXRlLmdldCgpKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBzdGF0ZS5nZXQoKSk7CiAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVBy
b2R1Y2VyOjpSZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykgewogICAgICAgICAgICAg
bW9uaXRvcmluZ1JlcXVpcmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQ1LDEw
ICs0NDEsMTAgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAg
IH0KIAogICAgIGlmIChtb25pdG9yaW5nUmVxdWlyZWQgfHwgKGhhc0F2YWlsYWJpbGl0eUxpc3Rl
bmVyICYmIGhhdmVDbGllbnRXaXRoTWVkaWEpKSB7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInN0YXJ0aW5nIG1vbml0b3JpbmciKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOwogICAgICAg
ICB0YXJnZXRQaWNrZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyBt
b25pdG9yaW5nIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXywgInN0b3BwaW5nIG1vbml0b3JpbmciKTsKICAgICAgICAgdGFyZ2V0UGlja2VyKCkuc3Rv
cE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAgICB9CiB9CkBAIC00OTAsNyArNDg2LDcg
QEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogCiAgICAgaWYgKCFt
X3BsYXliYWNrVGFyZ2V0IHx8ICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpKSB7
CiAgICAgICAgIGlmIChtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic3RvcHBpbmcgdGltZXIiKTsKKyAgICAgICAgICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVy
Iik7CiAgICAgICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9OwogICAgICAg
ICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKICAgICAgICAgfQpAQCAtNTAyLDcgKzQ5OCw3
IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2EKICAgICBib29sIGRp
ZFBsYXlUb0VuZCA9IGZhbHNlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRl
KSB7CiAKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBw
bGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcGxheWVkVG9FbmQg
PSAiLCBzdGF0ZS0+cGxheWVkVG9FbmQpOwogCiAgICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZs
YWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKQog
ICAgICAgICAgICAgc3RvcFRpbWVyID0gdHJ1ZTsKQEAgLTUxMiw3ICs1MDgsNyBAQCB2b2lkIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhCiAgICAgfQogCiAgICAgaWYgKHN0b3BU
aW1lcikgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyB0aW1l
ciIpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJz
dG9wcGluZyB0aW1lciIpOwogICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9
OwogICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwogICAgIH0gZWxzZSB7CkBAIC01MjAs
NyArNTE2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogICAg
ICAgICBpZiAoaW50ZXJ2YWwgIT0gbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCB8fCAhbV93YXRj
aGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFy
dE9uZVNob3QoaW50ZXJ2YWwpOwogICAgICAgICB9Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNv
bmRzIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywg
InRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNvbmRzIik7CiAg
ICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgPSBpbnRlcnZhbDsKICAgICB9CiB9CkBA
IC01MzAsNyArNTI2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bQogICAgIGlmICghbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOwogICAgIHRhcmdldFBpY2tlcigpLmludmFsaWRhdGVQbGF5YmFja1Rhcmdl
dHMoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAxMDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDQtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBNb3ZlIEFwcGxlUGF5IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMgdG8g
V2ViQ29yZSBhbmQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTA1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisg
ICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsubW06CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg6CisKIDIwMjAtMDQtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZG9wdCBpbnRlcmZhY2UgQVZBdWRpb1JvdXRpbmdBcmJpdGVyIGZvciBNYWMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTggQEAgU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQS1BheW1lbgogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRNZXRob2QpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5
bWVudE1lcmNoYW50U2Vzc2lvbikKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50UmVxdWVzdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBL
UGF5bWVudFNldHVwRmVhdHVyZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50U2V0dXBSZXF1ZXN0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRTdW1tYXJ5SXRlbSkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
UEtTaGlwcGluZ01ldGhvZCkKIAorI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbikKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIpCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRM
aW5rLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L1Bhc3NLaXRTb2Z0TGluay5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDMyIEBACiAK
ICNpZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCi0jZWxzZQorCitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0
dXBDb250cm9sbGVyLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BU
SU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cEZlYXR1cmUsIFBB
TF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9S
VChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwUmVxdWVzdCwgUEFMX0VYUE9SVCkKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9P
UFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKKyNlbmRpZgorCisjZWxzZSAvLyBQTEFURk9STShNQUMp
CisKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NL
aXQsIFBBTF9FWFBPUlQpCisKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQor
U09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwRmVhdHVyZSwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50U2V0dXBSZXF1ZXN0LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cFZpZXdD
b250cm9sbGVyLCBQQUxfRVhQT1JUKQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQogI2VuZGlmCiAKKyNl
bmRpZiAvLyBQTEFURk9STShNQUMpCisKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0LCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bhc3NMaWJyYXJ5LCBQ
QUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQS1BheW1lbnQsIFBBTF9FWFBPUlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDExICs0NywyOCBAQCBXVEZfRVhURVJOX0NfRU5ECiAjaW1wb3J0IDxQYXNzS2l0L1BL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxQ
YXNzS2l0L1BLUGF5bWVudE1ldGhvZC5oPgogI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRSZXF1
ZXN0X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uX1dlYktpdC5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRTZXR1cENvbnRyb2xsZXIu
aD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxQ
YXNzS2l0Q29yZS9QS1BheW1lbnRSZXF1ZXN0U3RhdHVzX1ByaXZhdGUuaD4KICNpbXBvcnQgPFBh
c3NLaXRDb3JlL1BLUGF5bWVudFJlcXVlc3RfV2ViS2l0Lmg+CiAKKyNpZiBIQVZFKFBBU1NLSVRf
SU5TVEFMTE1FTlRTKQorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50X1ByaXZhdGUuaD4K
KyNpbXBvcnQgPFBhc3NLaXRDb3JlL1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5o
PgorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50TWV0aG9kX1ByaXZhdGUuaD4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50
QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyLmg+CisjZW5kaWYKKworI2lmIEhBVkUoUEFTU0tJVF9J
TlNUQUxMTUVOVF9JREVOVElGSUVSUykgJiYgUExBVEZPUk0oTUFDKQorQGludGVyZmFjZSBQS1Bh
eW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKFdlYktpdFNQSSkKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNTdHJpbmcgKmluc3RhbGxtZW50TWVyY2hhbnRJZGVu
dGlmaWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU1N0cmluZyAq
cmVmZXJyZXJJZGVudGlmaWVyOworQGVuZAogI2VuZGlmCiAKICNlbHNlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5MDAsNiArMTkwMCw5IEBACiAJCTVDMkIxQUVDMjIz
OTdFQkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY3OEQwQjFDMjU0MjJDMDAyNDU0NDYg
LyogUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tICovOyB9OwogCQk1QzQzMDRCMTE5MUFDOTA4MDAw
RTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRl
clRleHR1cmVMT0QuaCAqLzsgfTsKIAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhU
U2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM0MzA0QjQxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxP
RC5oICovOyB9OworCQk1QzUzRENFMTI0NDY1REZDMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
NTNEQ0NGMjQ0NjQ0OTkwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNTNEQ0U3MjQ0NjhB
RDIwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzUzRENDRTI0NDY0NDk5MDBB
OTMxMjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNTNEQ0VBMjQ0NjhGQjQwMEE5
MzEyNCAvKiBBcHBsZVBheVNldHVwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNUQy
Mzg1MjI3QTA2NTIwMDBCOUJEQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUQyMzgzMjI3QTA2M0EwMDBCOUJE
QSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
N0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDOUMyREI1MjI0MUE2N0IwMDk5
NkIwQiAvKiBDb250ZW50UnVsZUxpc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlDMkRCMzIyNDFBNjczMDA5OTZCMEIgLyogQ29udGVu
dFJ1bGVMaXN0UmVzdWx0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05MDkxLDYgKzkwOTQsMTggQEAKIAkJNUM1MzgxQjExRDg3RDQ1NzAwRTJF
QkU2IC8qIFVSTFNlYXJjaFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVUkxTZWFyY2hQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1Mzgx
QjMxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1MzgxQjQxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2Vh
cmNoUGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVVJMU2VhcmNo
UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0M2MjQ0NjQ0OTcw
MEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBs
ZVBheVNldHVwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQzkyNDQ2
NDQ5ODAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0NBMjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBh
eVNldHVwRmVhdHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDQjI0NDY0NDk4
MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcHBsZVBheVNldHVwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNE
Q0NDMjQ0NjQ0OTkwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RD
Q0UyNDQ2NDQ5OTAwQTkzMTI0IC8qIFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDRjI0NDY0NDk5
MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUM1M0RDRDAyNDQ2NDQ5QTAwQTkzMTI0IC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxlUGF5U2V0dXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlT
ZXR1cEZlYXR1cmVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUz
RENENTI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24u
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDRDYyNDQ2NDQ5QzAw
QTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM1RDIzODMyMjdBMDYzQTAwMEI5QkRBIC8qIEN1c3RvbUhlYWRlckZpZWxkcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21IZWFkZXJGaWVsZHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1RDIzODYyMjdBMDc3QzAwMEI5QkRBIC8q
IEN1c3RvbUhlYWRlckZpZWxkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDdXN0b21IZWFkZXJGaWVsZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjcxLDYgKzE3Mjg2LDgg
QEAKIAkJCQlBMUJCODU5QjIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaWRs
ICovLAogCQkJCUExQkI4NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFj
dEZpZWxkLmggKi8sCiAJCQkJQTFCQjg1QTIyMTU5QUY1NzAwNjdFMDdEIC8qIEFwcGxlUGF5RXJy
b3JDb250YWN0RmllbGQuaWRsICovLAorCQkJCTVDNTNEQ0QwMjQ0NjQ0OUEwMEE5MzEyNCAvKiBB
cHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0Q1MjQ0NjQ0
OUIwMEE5MzEyNCAvKiBBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwgKi8sCiAJ
CQkJN0M2NTc5RTIxRTAwODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAqLywKIAkJ
CQk3QzY1NzlFNDFFMDA4MkM4MDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5pZGwgKi8sCiAJ
CQkJQTFERjVBQTgxRjgwNzBENDAwNThBNDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5
LmNwcCAqLywKQEAgLTE3MzA4LDYgKzE3MzI1LDE0IEBACiAJCQkJQTE5NTZGMUYyMzMxQThDNzAw
NTdFOUQyIC8qIEFwcGxlUGF5U2Vzc2lvbkVycm9yLmlkbCAqLywKIAkJCQkxQTU4RTg2MzFEMTlE
NERGMDBDMEVBNzMgLyogQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwICovLAogCQkJ
CTFBNThFODY0MUQxOUQ0REYwMEMwRUE3MyAvKiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oICovLAorCQkJCTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNw
cCAqLywKKwkJCQk1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICov
LAorCQkJCTVDNTNEQ0M2MjQ0NjQ0OTcwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLywK
KwkJCQk1QzUzRENDRjI0NDY0NDk5MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAq
LywKKwkJCQk1QzUzRENDQTI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsICovLAorCQkJCTVDNTNEQ0M5MjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVh
dHVyZS5tbSAqLywKKwkJCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmggKi8sCisJCQkJNUM1M0RDRDYyNDQ2NDQ5QzAwQTkzMTI0IC8qIEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8sCiAJCQkJMUE4QTY0NDcxRDE5RkNGQjAwRDBFMDBG
IC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAgKi8sCiAJCQkJMUE4
QTY0NDgxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRF
dmVudC5oICovLAogCQkJCTFBOEE2NDQ5MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBw
aW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuaWRsICovLApAQCAtMTczMzEsNiArMTczNTYsOCBAQAog
CQkJCUExMDRFQzUzMjIwQTAxNzQwMENCRjY3QSAvKiBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQu
Y3BwICovLAogCQkJCTFBNThFODYyMUQxOUQzQkYwMEMwRUE3MyAvKiBQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQuaCAqLywKIAkJCQk3Q0Y5MzBFNjFFMDFGOUFEMDBCQUZGQkUgLyogUGF5bWVudEhl
YWRlcnMuaCAqLywKKwkJCQk1QzUzRENDRTI0NDY0NDk5MDBBOTMxMjQgLyogUGF5bWVudEluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0NDMjQ0NjQ0OTkwMEE5MzEyNCAv
KiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tICovLAogCQkJCTFBRTk2QTg3MUQx
QTBDRUIwMEI4Njc2OCAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uLmggKi8sCiAJCQkJMUE4QTY0
MzkxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1lbnRNZXRob2QuaCAqLywKIAkJCQlBMURGRDUyNDIz
MzQ1OTNBMDA0MkZDREIgLyogUGF5bWVudE1ldGhvZFVwZGF0ZS5oICovLApAQCAtMjkzOTcsNiAr
Mjk0MjQsOCBAQAogCQkJCTFBOEE2NDU5MUQxOUZDRkMwMEQwRTAwRiAvKiBBcHBsZVBheVNlc3Np
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUExOTU2RjIwMjMzMUE4QzcwMDU3RTlEMiAvKiBBcHBs
ZVBheVNlc3Npb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1OEU4NjUxRDE5RDRFQjAw
QzBFQTczIC8qIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk1QzUzRENFQTI0NDY4RkI0MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNUM1M0RDRTEyNDQ2NURGQzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0
dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThBNjQ1QzFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBw
bGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MTJDNTlGMjIwMzVGQ0Q2MDAxMjIzNkIgLyogQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDNjU3OUU4MUUwMDgzMTYwMEUzQTI3QSAvKiBBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTIyLDYgKzMyMTUxLDcgQEAK
IAkJCQlBMUY2MDA0OTFGNDc1OTRFMDA3N0U4M0YgLyogUGF5bWVudERldGFpbHNVcGRhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUExREY1QUE2MUY3RjY0QkIwMDU4QTQ3NyAvKiBQYXltZW50SGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NGOTMwRTcxRTAxRjlCNDAwQkFGRkJFIC8qIFBh
eW1lbnRIZWFkZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzUzRENFNzI0NDY4QUQyMDBBOTMx
MjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTFGNzZCMzExRjQ0QzU1QTAwMTRDMzE4IC8qIFBheW1lbnRJdGVtLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUU5NkE4OTFEMUEwQ0VCMDBCODY3NjggLyogUGF5bWVudE1lcmNoYW50U2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4QTY0M0MxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1l
bnRNZXRob2QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViQ29yZUFkZGl0aW9ucy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCwzIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYkNv
cmVBZGRpdGlvbnMubW0+Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAwODEpCisr
KyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDIwLTA0LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTW92ZSBBcHBsZVBheSBjb2RlIGZyb20gV2ViS2l0QWRkaXRpb25zIHRvIFdl
YkNvcmUgYW5kIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEwNTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVw
RmVhdHVyZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVz
OjpwbGF0Zm9ybUZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvQXBw
bGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBh
eW1lbnRTZXR1cEZlYXR1cmVzOjpQYXltZW50U2V0dXBGZWF0dXJlcyk6CisgICAgICAgIChXZWJL
aXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpQYXltZW50U2V0dXBGZWF0dXJlczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVu
dFNldHVwRmVhdHVyZXM6Om9wZXJhdG9yIFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1
cEZlYXR1cmU+PiBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICogU2hh
cmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW06IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0Ojp0b1BsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpmaW5pc2hDb25zdHJ1
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvY29j
b2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXRB
ZGRpdGlvbnM6OnRvUGxhdGZvcm1Db25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdEFkZGl0
aW9uczo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bik6CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmZpbmlz
aENyZWF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6YmVnaW5BcHBsZVBheVNldHVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OmVuZEFwcGxlUGF5U2V0dXApOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1FbmRB
cHBsZVBheVNldHVwKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OmZpbmlzaERlY29kaW5nKToKKyAgICAgICAgKElQ
Qzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
OjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50
Q29vcmRpbmF0b3I6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OmJlZ2luQXBwbGVQYXlTZXR1cCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBheW1lbnRDb29yZGluYXRvcjo6ZW5kQXBwbGVQYXlTZXR1cCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKwogMjAyMC0wNC0xNCAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmplY3RlZEJ1bmRs
ZSBwYXJhbWV0ZXJzIG9mdGVuIG5lZWQgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gY2FsbGVkIGJl
Zm9yZSB1bmFyY2hpdmluZwpJbmRleDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTAsOCArMjUwLDYgQEAgU0NSSVBUUyA9IFwKIEZSQU1FV09SS19GTEFHUyA9
ICQoc2hlbGwgZWNobyAkKEJVSUxUX1BST0RVQ1RTX0RJUikgJChGUkFNRVdPUktfU0VBUkNIX1BB
VEhTKSAkKFNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTKSB8IHBlcmwgLWUgJ3ByaW50ICIt
RiAiIC4gam9pbigiIC1GICIsIHNwbGl0KCIgIiwgPD4pKTsnKQogSEVBREVSX0ZMQUdTID0gJChz
aGVsbCBlY2hvICQoQlVJTFRfUFJPRFVDVFNfRElSKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpICQo
U1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFMpIHwgcGVybCAtZSAncHJpbnQgIi1JIiAuIGpvaW4o
IiAtSSIsIHNwbGl0KCIgIiwgPD4pKTsnKQogCi0taW5jbHVkZSBXZWJLaXREZXJpdmVkU291cmNl
c0FkZGl0aW9ucy5tYWtlCi0KIC5QSE9OWSA6IGFsbAogCiBhbGwgOiBcCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOCBAQCBTaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlCiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Lm1tCiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KIAorU2hhcmVk
L0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0KK1NoYXJlZC9BcHBsZVBh
eS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuY3BwCiBTaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5tbQogU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUlPUy5tbQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NDEsNiArNjQxLDcgQEAgZGVmIGhl
YWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRl
eHRJRCc6IFsnIkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5
ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlBh
eW1lbnRTZXR1cEZlYXR1cmVzJzogWyciQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oIidd
LAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9yJzogWyciR2VzdHVyZVR5
cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCc6IFsnIldlYkV2ZW50
LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQnOiBbJyJXZWJFdmVudC5o
IiddLApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50
U2V0dXBGZWF0dXJlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKK09CSkNfQ0xBU1MgUEtQYXlt
ZW50U2V0dXBGZWF0dXJlOworCisjaW5jbHVkZSA8V2ViQ29yZS9BcHBsZVBheVNldHVwRmVhdHVy
ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGF5bWVudFNldHVwRmVhdHVyZXMgeworcHVi
bGljOgorICAgIFBheW1lbnRTZXR1cEZlYXR1cmVzKFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBw
bGVQYXlTZXR1cEZlYXR1cmU+PiYmKTsKKyAgICBQYXltZW50U2V0dXBGZWF0dXJlcyhSZXRhaW5Q
dHI8TlNBcnJheT4mJiA9IG51bGxwdHIpOworCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7CisgICAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRTZXR1cEZlYXR1cmVzPiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJik7CisKKyAgICBOU0FycmF5ICpwbGF0Zm9ybUZlYXR1cmVzKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybUZlYXR1cmVzLmdldCgpOyB9CisgICAgb3BlcmF0b3IgVmVj
dG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fcGxhdGZvcm1GZWF0dXJlczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VU
VVApCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRT
ZXR1cEZlYXR1cmVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0JKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgiCisKKyNp
ZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKworI2ltcG9ydCAiQXJndW1lbnRDb2RlcnND
b2NvYS5oIgorI2ltcG9ydCAiRGVjb2Rlci5oIgorI2ltcG9ydCAiRW5jb2Rlci5oIgorI2ltcG9y
dCA8V2ViQ29yZS9BcHBsZVBheVNldHVwRmVhdHVyZS5oPgorCisjaW1wb3J0IDxwYWwvY29jb2Ev
UGFzc0tpdFNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgTlNBcnJh
eTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4gKnRvUGxhdGZvcm1GZWF0dXJlcyhWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcykKK3sKKyAgICBO
U011dGFibGVBcnJheSAqcGxhdGZvcm1GZWF0dXJlcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdp
dGhDYXBhY2l0eTpmZWF0dXJlcy5zaXplKCldOworICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IGZl
YXR1cmVzKSB7CisgICAgICAgIGlmIChmZWF0dXJlKQorICAgICAgICAgICAgW3BsYXRmb3JtRmVh
dHVyZXMgYWRkT2JqZWN0OmZlYXR1cmUtPnBsYXRmb3JtRmVhdHVyZSgpXTsKKyAgICB9CisgICAg
cmV0dXJuIHBsYXRmb3JtRmVhdHVyZXM7Cit9CisKK1BheW1lbnRTZXR1cEZlYXR1cmVzOjpQYXlt
ZW50U2V0dXBGZWF0dXJlcyhWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlPj4mJiBmZWF0dXJlcykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IHRvUGxhdGZvcm1G
ZWF0dXJlcyhXVEZNb3ZlKGZlYXR1cmVzKSkgfQoreworfQorCitQYXltZW50U2V0dXBGZWF0dXJl
czo6UGF5bWVudFNldHVwRmVhdHVyZXMoUmV0YWluUHRyPE5TQXJyYXk+JiYgcGxhdGZvcm1GZWF0
dXJlcykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IFdURk1vdmUocGxhdGZvcm1GZWF0dXJl
cykgfQoreworfQorCit2b2lkIFBheW1lbnRTZXR1cEZlYXR1cmVzOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9wbGF0Zm9ybUZlYXR1cmVz
OworfQorCitPcHRpb25hbDxQYXltZW50U2V0dXBGZWF0dXJlcz4gUGF5bWVudFNldHVwRmVhdHVy
ZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RhdGljIE5TQXJyYXkg
KmFsbG93ZWRDbGFzc2VzOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBhdXRvIGFsbG93ZWQgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Ml0pOworICAg
ICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6W05TQXJyYXkgY2xhc3NdXTsKKyAgICAgICAgaWYgKGF1
dG8gcGtQYXltZW50U2V0dXBGZWF0dXJlQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVudFNldHVwRmVh
dHVyZUNsYXNzKCkpCisgICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0
dXBGZWF0dXJlQ2xhc3NdOworICAgICAgICBhbGxvd2VkQ2xhc3NlcyA9IFthbGxvd2VkIGNvcHld
OworICAgIH0pOworCisgICAgYXV0byBwbGF0Zm9ybUZlYXR1cmVzID0gSVBDOjpkZWNvZGU8TlNB
cnJheTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4+KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsK
KyAgICBpZiAoIXBsYXRmb3JtRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gUGF5bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKCpwbGF0Zm9ybUZl
YXR1cmVzKSB9OworfQorCitQYXltZW50U2V0dXBGZWF0dXJlczo6b3BlcmF0b3IgVmVjdG9yPFJl
ZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4gZmVhdHVyZXM7CisgICAgZmVhdHVy
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbbV9wbGF0Zm9ybUZlYXR1cmVzIGNvdW50XSk7Cisg
ICAgZm9yIChQS1BheW1lbnRTZXR1cEZlYXR1cmUgKnBsYXRmb3JtRmVhdHVyZSBpbiBtX3BsYXRm
b3JtRmVhdHVyZXMuZ2V0KCkpCisgICAgICAgIGZlYXR1cmVzLnVuY2hlY2tlZEFwcGVuZChXZWJD
b3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKHBsYXRmb3JtRmVhdHVyZSkpOworICAg
IHJldHVybiBmZWF0dXJlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisj
aW5jbHVkZSAiQXBwbGVQYXlTZXR1cC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIFBLUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbjsKKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2Rl
cjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24geworcHVibGljOgorICAgIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oKSA9IGRlZmF1
bHQ7CisgICAgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNldHVwOjpDb25maWd1cmF0aW9uJiwgY29uc3QgVVJMJik7CisKKyAgICB2b2lkIGVuY29kZShJ
UEM6OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbj4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworCisgICAgUEtQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
bmZpZ3VyYXRpb24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+JiYp
OworCisgICAgUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gbV9jb25maWd1
cmF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBIQVZFKFBB
U1NLSVRfUEFZTUVOVF9TRVRVUCkKKwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24u
aCIKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW1wb3J0ICJBcmd1bWVu
dENvZGVyc0NvY29hLmgiCisjaW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVyLmgi
CisjaW1wb3J0IDx3dGYvVVJMLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExp
bmsuaD4KKworQGludGVyZmFjZSBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gKFdlYktpdCkK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpzaWduZWRG
aWVsZHM7CitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgUmV0YWluUHRyPFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29yZUNvbmZpZ3VyYXRpb24s
IGNvbnN0IFVSTCYgdXJsKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVBBTDo6Z2V0
UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyNlbmRpZgorCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkluc3RhbmNlKCkgaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIHNldE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElk
ZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldE9yaWdpbmF0aW5nVVJMOnVybF07Cisg
ICAgW2NvbmZpZ3VyYXRpb24gc2V0UmVmZXJyZXJJZGVudGlmaWVyOmNvcmVDb25maWd1cmF0aW9u
LnJlZmVycmVySWRlbnRpZmllcl07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lO
CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0U2lnbmF0dXJlOmNvcmVDb25maWd1cmF0aW9uLnNpZ25h
dHVyZV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorCisgICAgaWYgKFtjb25m
aWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0U2lnbmVkRmllbGRzOild
KSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5ICpzaWduZWRGaWVsZHMgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmVkRmllbGRzLnNpemUo
KV07CisgICAgICAgIGZvciAoYXV0byYgc2lnbmVkRmllbGQgOiBjb3JlQ29uZmlndXJhdGlvbi5z
aWduZWRGaWVsZHMpCisgICAgICAgICAgICBbc2lnbmVkRmllbGRzIGFkZE9iamVjdDpzaWduZWRG
aWVsZF07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25lZEZpZWxkczpzaWduZWRGaWVs
ZHNdOworICAgIH0KKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCitQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYg
dXJsKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbiwgdXJsKSB9Cit7Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShj
b25maWd1cmF0aW9uKSB9Cit7Cit9CisKK3ZvaWQgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1f
Y29uZmlndXJhdGlvbjsKK30KKworT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4g
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBzdGF0aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Cisg
ICAgICAgIGF1dG8gYWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eToxXSk7CisgICAgICAgIGlmIChhdXRvIHBrUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbkNsYXNzID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcygp
KQorICAgICAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbkNsYXNzXTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxsb3dlZCBjb3B5XTsKKyAg
ICB9KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAgIGlmICghY29u
ZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29uZmlndXJhdGlvbikgfTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0QWRkaXRpb25zCisKKyNlbmRpZiAvLyBIQVZFKFBBU1NL
SVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNiBAQCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvCiAgICAgLCBtX2Nhbk1ha2VQYXltZW50
c1F1ZXVlIHsgV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FuTWFrZVBheW1l
bnRzIikgfQogewogICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNl
aXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKLSAgICBmaW5pc2hDb25zdHJ1Y3Rpb24oKnRoaXMpOwog
fQogCiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6fldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0jaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
QWRkaXRpb25zLmg+CisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisjaW5jbHVkZSA8
d3RmL1dlYWtPYmpDUHRyLmg+CitPQkpDX0NMQVNTIFBLUGF5bWVudFNldHVwVmlld0NvbnRyb2xs
ZXI7CitPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiAjZW5kaWYKIAogbmFtZXNwYWNlIElQ
QyB7CkBAIC02MCw4ICs2MiwxNCBAQCBPQkpDX0NMQVNTIFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29uCiBPQkpDX0NMQVNTIFBLUGF5bWVudFJlcXVlc3Q7CiBPQkpDX0NMQVNTIFVJVmlld0Nv
bnRyb2xsZXI7CiAKKyNpZiBQTEFURk9STShJT1MpCitPQkpDX0NMQVNTIFBLUGF5bWVudFNldHVw
Vmlld0NvbnRyb2xsZXI7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb247CitjbGFzcyBQYXltZW50U2V0dXBGZWF0dXJlczsKIGNs
YXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKQEAg
LTEyNCw2ICsxMzIsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24o
KTsKICAgICB2b2lkIGNhbmNlbFBheW1lbnRTZXNzaW9uKCk7CiAKKyNpZiBIQVZFKFBBU1NLSVRf
UEFZTUVOVF9TRVRVUCkKKyAgICB2b2lkIGdldFNldHVwRmVhdHVyZXMoY29uc3QgUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGF5bWVudFNl
dHVwRmVhdHVyZXMmKT4mJik7CisgICAgdm9pZCBiZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgUGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbiYsIGNvbnN0IFBheW1lbnRTZXR1cEZlYXR1cmVzJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBlbmRBcHBsZVBheVNldHVw
KCk7CisgICAgdm9pZCBwbGF0Zm9ybUJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uJiwgY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHBsYXRmb3JtRW5kQXBwbGVQYXlTZXR1
cCgpOworI2VuZGlmCisKICAgICBib29sIGNhbkJlZ2luKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5D
YW5jZWwoKSBjb25zdDsKICAgICBib29sIGNhbkNvbXBsZXRlUGF5bWVudCgpIGNvbnN0OwpAQCAt
MTkxLDEyICsyMDcsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1dpbmRvdz4gbV9zaGVl
dFdpbmRvdzsKICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1fc2hlZXRXaW5kb3dXaWxsQ2xvc2VP
YnNlcnZlcjsKICNlbmRpZgotICAgIAotI2lmIGRlZmluZWQoV0VCUEFZTUVOVENPT1JESU5BVE9S
UFJPWFlfQURESVRJT05TKQotV0VCUEFZTUVOVENPT1JESU5BVE9SUFJPWFlfQURESVRJT05TCi0j
dW5kZWYgV0VCUEFZTUVOVENPT1JESU5BVE9SUFJPWFlfQURESVRJT05TCi0jZWxzZQotICAgIHZv
aWQgZmluaXNoQ29uc3RydWN0aW9uKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgeyB9Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIFdlYWtPYmpDUHRyPFBLUGF5bWVudFNldHVwVmlld0NvbnRy
b2xsZXI+IG1fcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXI7CiAjZW5kaWYKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTk5MjIp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTEgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgTgogICAgIENvbXBsZXRlUGF5bWVudFNl
c3Npb24oT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+IHJlc3Vs
dCkKICAgICBBYm9ydFBheW1lbnRTZXNzaW9uKCkKICAgICBDYW5jZWxQYXltZW50U2Vzc2lvbigp
CisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisgICAgR2V0U2V0dXBGZWF0dXJlcyhX
ZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgLT4gKFdlYktp
dDo6UGF5bWVudFNldHVwRmVhdHVyZXMgZmVhdHVyZXMpIEFzeW5jCisgICAgQmVnaW5BcHBsZVBh
eVNldHVwKFdlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBX
ZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzIGZlYXR1cmVzKSAtPiAoYm9vbCByZXN1bHQpIEFz
eW5jCisgICAgRW5kQXBwbGVQYXlTZXR1cCgpCisjZW5kaWYKIH0KIAogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0
aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29h
L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaCIKKworI2lmIEhBVkUoUEFT
U0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCisj
aW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVyLmgiCisjaW1wb3J0ICJQYXNzS2l0
U29mdExpbmtBZGRpdGlvbnMuaCIKKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKworQGludGVyZmFjZSBQ
S1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gKFdlYktpdCkKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpzaWduZWRGaWVsZHM7CitAZW5kCisKK25hbWVz
cGFjZSBXZWJLaXRBZGRpdGlvbnMgeworCitzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbj4gdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6QXBw
bGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29yZUNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYg
dXJsKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVBBTDo6Z2V0UEtQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorCisg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbkluc3RhbmNlKCkgaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldE1l
cmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElkZW50aWZpZXJdOwor
ICAgIFtjb25maWd1cmF0aW9uIHNldE9yaWdpbmF0aW5nVVJMOnVybF07CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0UmVmZXJyZXJJZGVudGlmaWVyOmNvcmVDb25maWd1cmF0aW9uLnJlZmVycmVySWRl
bnRpZmllcl07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCisgICAgW2NvbmZp
Z3VyYXRpb24gc2V0U2lnbmF0dXJlOmNvcmVDb25maWd1cmF0aW9uLnNpZ25hdHVyZV07CitBTExP
V19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorCisgICAgaWYgKFtjb25maWd1cmF0aW9uIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0U2lnbmVkRmllbGRzOildKSB7CisgICAgICAg
IE5TTXV0YWJsZUFycmF5ICpzaWduZWRGaWVsZHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRo
Q2FwYWNpdHk6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmVkRmllbGRzLnNpemUoKV07CisgICAgICAg
IGZvciAoYXV0byYgc2lnbmVkRmllbGQgOiBjb3JlQ29uZmlndXJhdGlvbi5zaWduZWRGaWVsZHMp
CisgICAgICAgICAgICBbc2lnbmVkRmllbGRzIGFkZE9iamVjdDpzaWduZWRGaWVsZF07CisgICAg
ICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25lZEZpZWxkczpzaWduZWRGaWVsZHNdOworICAgIH0K
KworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCitQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0
dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYgdXJsKQorICAgIDog
bV9jb25maWd1cmF0aW9uIHsgdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwg
dXJsKSB9Cit7Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb24oUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4mJiBjb25m
aWd1cmF0aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShjb25maWd1cmF0aW9u
KSB9Cit7Cit9CisKK3ZvaWQgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fY29uZmlndXJhdGlv
bjsKK30KKworT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGF0
aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIGF1dG8g
YWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eToxXSk7CisgICAgICAgIGlmIChhdXRvIHBrUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkNsYXNz
ID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcygpKQorICAgICAgICAg
ICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkNsYXNzXTsK
KyAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxsb3dlZCBjb3B5XTsKKyAgICB9KTsKKworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAgIGlmICghY29uZmlndXJhdGlvbikK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29uZmlndXJhdGlvbikgfTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0QWRkaXRpb25zCisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfUEFZTUVOVF9T
RVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQko
cmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2Ev
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcs
MTYgKzM3LDE3IEBACiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVj
dG9yQ29jb2EuaD4KIAotI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgotCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hQWRkaXRpb25zLm1tPgotI2Vsc2UKLW5hbWVzcGFj
ZSBXZWJLaXQgewotc3RhdGljIHZvaWQgZmluaXNoQ3JlYXRpbmcoUEtQYXltZW50UmVxdWVzdCAq
LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIHsgfQotfQor
I2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIK
KyNpbXBvcnQgIkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaCIKKyNpbXBvcnQgIlBheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9y
dCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCiAjZW5kaWYKIAorI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGlu
ay5oPgorCiAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCBhbnkgcGxhdGZvcm1zIHdpdGhvdXQg
LXNldFRodW1ibmFpbFVSTHM6LCBzbyB0aGlzIGNhbiBiZSByZW1vdmVkLgogQGludGVyZmFjZSBQ
S1BheW1lbnRSZXF1ZXN0ICgpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1VSTCAq
dGh1bWJuYWlsVVJMOwpAQCAtNjEsNiArNjIsMTkgQEAgQGludGVyZmFjZSBQS1BheW1lbnRSZXF1
ZXN0IChTdGFnaW5nKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIHZvaWQgZmluaXNo
Q3JlYXRpbmcoUEtQYXltZW50UmVxdWVzdCAqcGxhdGZvcm1SZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCkKK3sKKyNpZiBIQVZFKFBB
U1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGlmIChQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3Vy
YXRpb24gKmNvbmZpZ3VyYXRpb24gPSByZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbigp
LnBsYXRmb3JtQ29uZmlndXJhdGlvbigpKSB7CisgICAgICAgIHBsYXRmb3JtUmVxdWVzdC5pbnN0
YWxsbWVudENvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uOworICAgICAgICBwbGF0Zm9ybVJl
cXVlc3QucmVxdWVzdFR5cGUgPSBQS1BheW1lbnRSZXF1ZXN0VHlwZUluc3RhbGxtZW50OworICAg
IH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBsYXRmb3JtUmVxdWVzdCk7CisgICAgVU5VU0VE
X1BBUkFNKHJlcXVlc3QpOworI2VuZGlmCit9CisKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5n
JiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTI3OSw2ICsyOTMsMTA5IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OnBsYXRmb3IKICAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlUGF5bWVudE1l
dGhvZFNlbGVjdGlvbih1cGRhdGUpOwogfQogCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VU
VVApCisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmdldFNldHVwRmVhdHVyZXMo
Y29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgTWVzc2FnZXM6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpHZXRTZXR1cEZlYXR1cmVzOjpBc3luY1JlcGx5
JiYgcmVwbHkpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghUEFMOjpnZXRQS1BheW1l
bnRTZXR1cENvbnRyb2xsZXJDbGFzcygpKSB7CisgICAgICAgIHJlcGx5KHsgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGF1dG8gY29tcGxldGlvbiA9IG1ha2VCbG9j
a1B0cihbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oTlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1
cmUgKj4gKmZlYXR1cmVzKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtyZXBseSA9IFdURk1vdmUocmVwbHkpLCBmZWF0dXJlcyA9IHJldGFpblB0cihmZWF0dXJl
cyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXBseShQYXltZW50U2V0dXBGZWF0dXJlcyB7
IFdURk1vdmUoZmVhdHVyZXMpIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKKworQUxMT1dfTkVX
X0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgorICAgIFtQQUw6OmdldFBLUGF5bWVudFNldHVwQ29u
dHJvbGxlckNsYXNzKCkgcGF5bWVudFNldHVwRmVhdHVyZXNGb3JDb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24ucGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29tcGxldGlvbjpjb21wbGV0aW9uLmdl
dCgpXTsKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECit9CisKK3ZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OmJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBQYXltZW50U2V0dXBGZWF0dXJl
cyYgZmVhdHVyZXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6QmVnaW5B
cHBsZVBheVNldHVwOjpBc3luY1JlcGx5JiYgcmVwbHkpCit7CisgICAgcGxhdGZvcm1CZWdpbkFw
cGxlUGF5U2V0dXAoY29uZmlndXJhdGlvbiwgZmVhdHVyZXMsIFdURk1vdmUocmVwbHkpKTsKK30K
Kwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZW5kQXBwbGVQYXlTZXR1cCgpCit7
CisgICAgcGxhdGZvcm1FbmRBcHBsZVBheVNldHVwKCk7Cit9CisKKyNpZiBQTEFURk9STShNQUMp
CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQmVnaW5BcHBsZVBh
eVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNv
bnN0IFBheW1lbnRTZXR1cEZlYXR1cmVzJiBmZWF0dXJlcywgTWVzc2FnZXM6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpCZWdpbkFwcGxlUGF5U2V0dXA6OkFzeW5jUmVwbHkmJiByZXBseSkK
K3sKKyAgICBpZiAoIVBBTDo6Z2V0UEtQYXltZW50U2V0dXBSZXF1ZXN0Q2xhc3MoKSkgeworICAg
ICAgICByZXBseShmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJl
cXVlc3QgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBSZXF1ZXN0SW5zdGFuY2Uo
KSBpbml0XSk7CisgICAgW3JlcXVlc3Qgc2V0Q29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLnBs
YXRmb3JtQ29uZmlndXJhdGlvbigpXTsKKyAgICBbcmVxdWVzdCBzZXRQYXltZW50U2V0dXBGZWF0
dXJlczpmZWF0dXJlcy5wbGF0Zm9ybUZlYXR1cmVzKCldOworCisgICAgYXV0byBjb21wbGV0aW9u
ID0gbWFrZUJsb2NrUHRyKFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShCT09MIHN1Y2Nlc3MpIG11
dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlcGx5ID0gV1RGTW92
ZShyZXBseSksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXBseShzdWNjZXNz
KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBhdXRvIHBheW1lbnRTZXR1cENvbnRyb2xs
ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBDb250cm9sbGVySW5zdGFuY2Uo
KSBpbml0XSk7CisKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KKyAgICBbcGF5
bWVudFNldHVwQ29udHJvbGxlciBwcmVzZW50UGF5bWVudFNldHVwUmVxdWVzdDpyZXF1ZXN0Lmdl
dCgpIGNvbXBsZXRpb246Y29tcGxldGlvbi5nZXQoKV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRf
R1VBUkRTX0VORAorfQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9y
bUVuZEFwcGxlUGF5U2V0dXAoKQoreworfQorCisjZWxzZSAvLyBQTEFURk9STShNQUMpCisKK3Zv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQmVnaW5BcHBsZVBheVNldHVw
KGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFBh
eW1lbnRTZXR1cEZlYXR1cmVzJiBmZWF0dXJlcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpCZWdpbkFwcGxlUGF5U2V0dXA6OkFzeW5jUmVwbHkmJiByZXBseSkKK3sKKyAg
ICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgPSBtX3BheW1lbnRD
b29yZGluYXRvclByb3h5Lm1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3
Q29udHJvbGxlcihtX3BheW1lbnRDb29yZGluYXRvclByb3h5KTsKKyAgICBpZiAoIXByZXNlbnRp
bmdWaWV3Q29udHJvbGxlcikgeworICAgICAgICByZXBseShmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXlt
ZW50U2V0dXBSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CisgICAgW3JlcXVlc3Qgc2V0Q29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLnBsYXRmb3JtQ29uZmlndXJhdGlvbigpXTsKKyAgICBbcmVx
dWVzdCBzZXRQYXltZW50U2V0dXBGZWF0dXJlczpmZWF0dXJlcy5wbGF0Zm9ybUZlYXR1cmVzKCld
OworCisgICAgYXV0byBwYXltZW50U2V0dXBWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NQS1BheW1lbnRTZXR1cFZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFBheW1l
bnRTZXR1cFJlcXVlc3Q6cmVxdWVzdC5nZXQoKV0pOworICAgIGlmICghcGF5bWVudFNldHVwVmll
d0NvbnRyb2xsZXIpIHsKKyAgICAgICAgcmVwbHkoZmFsc2UpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKFtyZXBseSA9IFdURk1v
dmUocmVwbHkpXSgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3JlcGx5ID0gV1RGTW92ZShyZXBseSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXBseSh0
cnVlKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBlbmRBcHBsZVBheVNldHVwKCk7Cisg
ICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xsZXI6cGF5bWVu
dFNldHVwVmlld0NvbnRyb2xsZXIuZ2V0KCkgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246Y29tcGxl
dGlvbi5nZXQoKV07CisgICAgbV9wYXltZW50U2V0dXBWaWV3Q29udHJvbGxlciA9IHBheW1lbnRT
ZXR1cFZpZXdDb250cm9sbGVyLmdldCgpOworfQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpwbGF0Zm9ybUVuZEFwcGxlUGF5U2V0dXAoKQoreworICAgIFttX3BheW1lbnRTZXR1
cFZpZXdDb250cm9sbGVyIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOllFUyBjb21wbGV0
aW9uOm5pbF07CisgICAgbV9wYXltZW50U2V0dXBWaWV3Q29udHJvbGxlciA9IG5pbDsKK30KKwor
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9QQVlNRU5U
X1NFVFVQKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShBUFBM
RV9QQVkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQxLDE5ICs0MSw1NSBAQAogI2ltcG9ydCA8VUlLaXQvVUlGb250Lmg+CiAj
ZW5kaWYKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRp
dGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2FBZGRpdGlvbnMubW0+Ci0jZWxpZiBFTkFC
TEUoQVBQTEVfUEFZKQogbmFtZXNwYWNlIElQQyB7Ci1zdGF0aWMgYm9vbCBmaW5pc2hEZWNvZGlu
ZyhEZWNvZGVyJiwgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKSB7IHJl
dHVybiB0cnVlOyB9Ci1zdGF0aWMgdm9pZCBmaW5pc2hFbmNvZGluZyhFbmNvZGVyJiwgY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKSB7IH0KK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworc3RhdGljIGJvb2wgZmlu
aXNoRGVjb2RpbmcoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3QmIHJlcXVlc3QpCit7CisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNUQUxMTUVO
VFMpCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlv
bj4gaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworICAgIGRlY29kZXIgPj4gaW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uOworICAgIGlmICghaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXF1ZXN0LnNldEluc3RhbGxtZW50Q29uZmlndXJhdGlv
bihXVEZNb3ZlKCppbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pKTsKKyAgICByZXR1cm4gdHJ1ZTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIFVOVVNFRF9QQVJBTShyZXF1
ZXN0KTsKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogfQorCitzdGF0aWMgdm9pZCBmaW5pc2hF
bmNvZGluZyhFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdCYgcmVxdWVzdCkKK3sKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExN
RU5UUykKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3QuaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKCk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbmNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVx
dWVzdCk7CiAjZW5kaWYKK30KIAotbmFtZXNwYWNlIElQQyB7Ci11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQogCi0jaWYgRU5BQkxFKEFQUExF
X1BBWSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1l
bnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCit7CisgICAgZW5jb2Rl
ciA8PCBjb25maWd1cmF0aW9uLnBsYXRmb3JtQ29uZmlndXJhdGlvbigpOworfQorCitPcHRpb25h
bDxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBJUEM6OmRlY29kZTxQS1Bh
eW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+KGRlY29kZXIsIFBBTDo6Z2V0UEtQYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uQ2xhc3MoKSk7CisgICAgaWYgKCFjb25maWd1cmF0aW9u
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgV1RGTW92ZSgq
Y29uZmlndXJhdGlvbikgfTsKK30KKworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVO
VFMpCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmIHBheW1lbnQpCiB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQwMDMsNiArNDAwMywxMCBAQAogCQk1QzQ2QzBBRDIx
QjcxOThDMDBCQzU5OTEgLyogV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0NkMwQUUyMUI3MUFFMjAwQkM1OTkx
IC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzRCOUQ4QTIxMEE4QzQ2
MDA4RjE0RDEgLyogVW5kb09yUmVkby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVbmRvT3JSZWRvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0REMjQ0
NjVCRjkwMEE5MzEyNCAvKiBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0
dXJlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDREUyNDQ2NUJGOTAw
QTkzMTI0IC8qIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QzUzRENERjI0NDY1QkY5MDBBOTMxMjQgLyogQXBwbGVQYXlQYXlt
ZW50U2V0dXBGZWF0dXJlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBs
ZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDNTNEQ0UwMjQ0NjVCRjkwMEE5MzEyNCAvKiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1Q0VDMzgyMjA5
NTgzMjAwRDZCQkIwIC8qIERhZW1vbkVudHJ5UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGFlbW9uRW50cnlQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzVDRUMzOTIyMDk1ODMyMDBENkJCQjAgLyogRGFlbW9uRW50cnlQb2ludC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhZW1vbkVudHJ5UG9pbnQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNUQyMzg3MjI3QTE4OTEwMDBCOUJEQSAv
KiBfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjIwOSw2ICs2MjEzLDEwIEBACiAJCQkJMUFCMUY3NzcxRDFCMzBB
OTAwN0M5QkQxIC8qIGNvY29hICovLAogCQkJCTFBQjFGNzdBMUQxQjMwQTkwMDdDOUJEMSAvKiBp
b3MgKi8sCiAJCQkJMUFCMUY3N0MxRDFCMzBBOTAwN0M5QkQxIC8qIG1hYyAqLywKKwkJCQk1QzUz
RENERjI0NDY1QkY5MDBBOTMxMjQgLyogQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oICov
LAorCQkJCTVDNTNEQ0REMjQ0NjVCRjkwMEE5MzEyNCAvKiBBcHBsZVBheVBheW1lbnRTZXR1cEZl
YXR1cmVzLm1tICovLAorCQkJCTVDNTNEQ0RFMjQ0NjVCRjkwMEE5MzEyNCAvKiBQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uLmggKi8sCisJCQkJNUM1M0RDRTAyNDQ2NUJGOTAwQTkzMTI0IC8qIFBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0gKi8sCiAJCQkJMUFCMUY3ODgxRDFCMzM1NTAwN0M5
QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCAqLywKIAkJCQkxQUIxRjc4OTFE
MUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCAqLywKIAkJCQkx
QUIxRjc4QTFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW4gKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAkocmV2aXNpb24gMjU5OTIy
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShB
UFBMRV9QQVkpCiAKKyNpbmNsdWRlICJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgiCiAj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlBheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJX
ZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXMuaCIKQEAg
LTIyMCw2ICsyMjIsMjUgQEAgYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnJlbW90ZVVJRW5h
YgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorCit2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvcjo6Z2V0U2V0dXBGZWF0dXJlcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNldHVwOjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV93ZWJQYWdlLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkdldFNldHVw
RmVhdHVyZXMoUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiB7IGNvbmZpZ3VyYXRpb24sIHVybCB9
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvcjo6YmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6
OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3dlYlBh
Z2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6QmVnaW5BcHBsZVBheVNldHVwKFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24geyBjb25maWd1
cmF0aW9uLCB1cmwgfSwgUGF5bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKGZlYXR1cmVzKSB9
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvcjo6ZW5kQXBwbGVQYXlTZXR1cCgpCit7CisgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2Fn
ZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpFbmRBcHBsZVBheVNldHVwKCkpOworfQor
CisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKwogfQogCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yLmgJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtODUsNiArODUsMTIgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyB1c2VyQWdlbnRTY3JpcHRz
QmxvY2tlZEVycm9yTWVzc2FnZSgpIGNvbnN0IGZpbmFsOwogCisjaWYgRU5BQkxFKEFQUExFX1BB
WV9TRVRVUCkKKyAgICB2b2lkIGdldFNldHVwRmVhdHVyZXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQ
YXlTZXR1cDo6Q29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNl
dHVwOjpDb25maWd1cmF0aW9uJiwgY29uc3QgVVJMJiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpB
cHBsZVBheVNldHVwRmVhdHVyZT4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
IGZpbmFsOworICAgIHZvaWQgZW5kQXBwbGVQYXlTZXR1cCgpIGZpbmFsOworI2VuZGlmCisKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCkBAIC0xMTIsMTAgKzEx
OCw2IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZSYgbV93ZWJQYWdlOwogCiAgICAgT3B0aW9uYWw8
QXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzU2V0PiBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3JrczsK
LQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMv
V2ViUGF5bWVudENvb3JkaW5hdG9yQWRkaXRpb25zLmg+Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396489</attachid>
            <date>2020-04-14 19:08:14 -0700</date>
            <delta_ts>2020-04-14 20:56:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210521-20200414190813.patch</filename>
            <type>text/plain</type>
            <size>125449</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAyMC0wNC0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgQXBw
bGVQYXkgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0byBXZWJDb3JlIGFuZCBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDUyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgT25seSA0IG1pbm9yIG1v
ZGlmaWNhdGlvbnMgd2VyZSBuZWNlc3NhcnksIGFzIGZvbGxvd3M6CisKKyAgICAgICAgMS4gUGF5
bWVudFNldHVwRmVhdHVyZXMncyBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1
cmUgKj4+IHdhcyBjaGFuZ2VkIHRvIFJldGFpblB0cjxOU0FycmF5PiB0byB3b3JrIHdpdGggQysr
LgorICAgICAgICAyLiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucyBtZXNzYWdl
cyB3ZXJlIG1vdmVkIHRvIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LCByZW1vdmluZyB0aGUg
bmVlZCBmb3IKKyAgICAgICAgICAgdGhlIGV4dHJhIG1lc3NhZ2UgcmVjZWl2ZXIsIHRoZSBPcHRp
b25hbDxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucz4sIGFuZCB0aGUgZmluaXNo
Q29uc3RydWN0aW9uLgorICAgICAgICAzLiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCdzIG1h
Y3JvcyB0aGF0IGNvbGxpZGVkIHdpdGggb3RoZXIgbWFjcm9zIHdlcmUgcmVuYW1lZC4gIFRoaXMg
d2FzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIGRpZmZlcmVudCBzb3VyY2UgdW5pZmljYXRpb24uCisg
ICAgICAgIDQuIFBheW1lbnRTZXR1cEZlYXR1cmVzLmggd2FzIHJlbmFtZWQgdG8gQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5oIHRvIGJlIGFibGUgdG8gYnVpbGQgd2l0aCBQYXltZW50U2V0
dXBGZWF0dXJlcy5oIGluIHRoZSBTREsuCisKKyAgICAgICAgVGhlIHJlc3QgaXMganVzdCBjb3B5
IGFuZCBwYXN0ZS4KKworICAgICAgICBUaGVyZSBpc24ndCBhIGdvb2Qgd2F5IHRvIGxhbmQgdGhp
cyB3aXRob3V0IGJyZWFraW5nIHRoZSBidWlsZCB3aXRob3V0IHJlbW92aW5nIHRoZSBmaWxlcyBm
cm9tIFdlYktpdEFkZGl0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBzbyBJJ2xsIGRv
IHRoZSB0d28gYXQgdGhlIHNhbWUgdGltZSBsYXRlIGF0IG5pZ2h0IHRvIG5vdCBjYXVzZSBkaXNy
dXB0aW9uLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJl
c1N1cHBvcnRlZE5ldHdvcmtzKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5pc2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6aW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpzZXRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkRGlzY2xvc2VGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVw
OjpnZXRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OmJl
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsZVBheVNldHVwOjpzdXNwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2V0dXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGw6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpwbGF0Zm9ybUZlYXR1cmUg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0
dXJlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpzdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6c3VwcG9y
dHNJbnN0YWxsbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZl
YXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGw6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpiZWdpbkFwcGxlUGF5U2V0dXAp
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjplbmRBcHBsZVBh
eVNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
RGVjaW1hbE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUZlYXR1cmVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOjpQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmg6CisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5p
c2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRN
ZXRob2RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaENvbnZlcnRpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRH
cm91cElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVu
dFNlc3Npb25FcnJvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEVycm9y
KToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVx
dWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpyZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
dFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlz
bWlzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0Q2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2F0Y2hkb2dUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bWVyRmlyZWQpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dl
YkNvcmVBZGRpdGlvbnMubW06CisKIDIwMjAtMDQtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQZXJzaXN0ZW50Q29kZXJzIHNob3VsZCB1
c2UgbW9kZXJuIGRlY29kaW5nIHN5bnRheApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgSlNfQklORElOR19JRExTID0g
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb2RlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlMaW5lSXRlbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnQuaWRsIFwKQEAgLTExOCw2ICsxMTksOSBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVz
dEJhc2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bkVycm9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXAuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kLmlkbCBcCkBA
IC0xMjU1LDggKzEyNTksNiBAQCB2cGF0aCAlLmluICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9T
RUFSCiBBRERJVElPTkFMX0VWRU5UX05BTUVTID0KIEFERElUSU9OQUxfRVZFTlRfVEFSR0VUX0ZB
Q1RPUlkgPQogCi0taW5jbHVkZSBXZWJDb3JlRGVyaXZlZFNvdXJjZXNBZGRpdGlvbnMubWFrZQot
CiBKU19CSU5ESU5HX0lETFMgKz0gJChBRERJVElPTkFMX0JJTkRJTkdfSURMUykKIAogYWxsIDog
JChBRERJVElPTkFMX0JJTkRJTkdfSURMUzolLmlkbD1KUyUuaCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTkzLDYgKzU5Myw4IEBAIFdITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlS
ZXF1ZXN0QmFzZS5jcHAKKyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCisg
ICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQogICAgIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwCkBAIC02MDAsNiArNjAyLDcgQEAgV0hM
U0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmNwcAorICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbi5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0
b3IubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcAogCkBAIC02MTgs
NiArNjIxLDcgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5RXJyb3IuY3BwCiAgICAgSlNBcHBsZVBheUVycm9yQ29kZS5jcHAKICAgICBKU0FwcGxl
UGF5RXJyb3JDb250YWN0RmllbGQuY3BwCisgICAgSlNBcHBsZVBheUluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5jcHAKICAgICBKU0FwcGxlUGF5TGluZUl0ZW0uY3BwCiAgICAgSlNBcHBsZVBheU1l
cmNoYW50Q2FwYWJpbGl0eS5jcHAKICAgICBKU0FwcGxlUGF5TW9kaWZpZXIuY3BwCkBAIC02MzUs
NiArNjM5LDkgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5UmVxdWVzdEJhc2UuY3BwCiAgICAgSlNBcHBsZVBheVNlc3Npb24uY3BwCiAgICAgSlNB
cHBsZVBheVNlc3Npb25FcnJvci5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXAuY3BwCisgICAgSlNB
cHBsZVBheVNldHVwRmVhdHVyZS5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5j
cHAKICAgICBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAKICAgICBK
U0FwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLmNwcAogICAgIEpTQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFM
TE1FTlRTKQorCisjaW5jbHVkZSAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVh
dHVyZVR5cGUgZmVhdHVyZVR5cGUgeyBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlQ2Fy
ZCB9OworICAgIFN0cmluZyBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhOworICAgIFN0cmluZyBvcGVu
VG9CdXlUaHJlc2hvbGRBbW91bnQ7CisgICAgU3RyaW5nIGJpbmRpbmdUb3RhbEFtb3VudDsKKyAg
ICBTdHJpbmcgY3VycmVuY3lDb2RlOworICAgIFN0cmluZyBtZXJjaGFudElkZW50aWZpZXI7Cisg
ICAgU3RyaW5nIHJlZmVycmVySWRlbnRpZmllcjsKKyAgICBib29sIGlzSW5TdG9yZVB1cmNoYXNl
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50
Q29uZmlndXJhdGlvbi5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1B
UFBMRV9QQVlfSU5TVEFMTE1FTlRTLAorXSBkaWN0aW9uYXJ5IEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgZmVhdHVyZVR5cGUg
PSAiYXBwbGVDYXJkIjsKKyAgICBET01TdHJpbmcgbWVyY2hhbmRpc2luZ0ltYWdlRGF0YTsKKyAg
ICBET01TdHJpbmcgb3BlblRvQnV5VGhyZXNob2xkQW1vdW50OworICAgIERPTVN0cmluZyBiaW5k
aW5nVG90YWxBbW91bnQ7CisgICAgRE9NU3RyaW5nIGN1cnJlbmN5Q29kZTsKKyAgICBET01TdHJp
bmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgIERPTVN0cmluZyByZWZlcnJlcklkZW50aWZpZXI7
CisgICAgYm9vbGVhbiBpc0luU3RvcmVQdXJjaGFzZTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmgJKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50Q29udGFjdC5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudE1ldGhvZC5oIgogCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBw
bGVQYXlQYXltZW50QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50IHsKQEAgLTQ2LDExICs0Miw3IEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnQgewogICAgIFRva2VuIHRva2VuOwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5
bWVudENvbnRhY3Q+IGJpbGxpbmdDb250YWN0OwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVu
dENvbnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsKLQotI2lmIGRlZmluZWQoQVBQTEVQQVlQQVlNRU5U
X0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBB
WU1FTlRfQURESVRJT05TCi0jZW5kaWYKKyAgICBTdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICByZXF1aXJlZCBBcHBsZVBheVBheW1lbnRUb2tl
biB0b2tlbjsKICAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IGJpbGxpbmdDb250YWN0OwogICAg
IEFwcGxlUGF5UGF5bWVudENvbnRhY3Qgc2hpcHBpbmdDb250YWN0OworICAgIFtDb25kaXRpb25h
bD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSBET01TdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiBbCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmgJKHJldmlzaW9uIDI1OTkyMikK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50UGFzcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50
TWV0aG9kQWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVt
IGNsYXNzIEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGU7CkBAIC00NiwxMSArNDIsNyBAQCBzdHJ1
Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kIHsgICAgCiAgICAgT3B0aW9uYWw8VHlwZT4gdHlwZTsK
ICAgICBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRQYXNzPiBwYXltZW50UGFzczsKICAgICBPcHRp
b25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKLQotI2lmIGRlZmlu
ZWQoQVBQTEVQQVlQQVlNRU5UTUVUSE9EX0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVE1FVEhP
RF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBBWU1FTlRNRVRIT0RfQURESVRJT05TCi0jZW5k
aWYKKyAgICBTdHJpbmcgYmluZFRva2VuOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlk
bAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRNZXRob2QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0ICszMyw1IEBA
CiAgICAgQXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZSB0eXBlOwogICAgIEFwcGxlUGF5UGF5bWVu
dFBhc3MgcGF5bWVudFBhc3M7CiAgICAgQXBwbGVQYXlQYXltZW50Q29udGFjdCBiaWxsaW5nQ29u
dGFjdDsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gRE9NU3RyaW5n
IGJpbmRUb2tlbjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSwxMiBAQAogCiAj
aW5jbHVkZSAiQXBwbGVQYXlMaW5lSXRlbS5oIgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRl
QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICBBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFs
OwogICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXM7Ci0KLSNpZiBkZWZp
bmVkKEFQUExFUEFZUEFZTUVOVE1FVEhPRFVQREFURV9BRERJVElPTlMpCi1BUFBMRVBBWVBBWU1F
TlRNRVRIT0RVUERBVEVfQURESVRJT05TCi0jdW5kZWYgQVBQTEVQQVlQQVlNRU5UTUVUSE9EVVBE
QVRFX0FERElUSU9OUwotI2VuZGlmCisgICAgU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlm
aWVyOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbAkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw0ICsyOCw1IEBACiBd
IGRpY3Rpb25hcnkgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICByZXF1aXJlZCBB
cHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsOwogICAgIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+
IG5ld0xpbmVJdGVtczsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10g
RE9NU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlmaWVyOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNl
LmNwcAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVJlcXVlc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI5
IEBACiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVJlcXVlc3RCYXNlQWRkaXRpb25z
LmNwcD4KLSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgdm9pZCBmaW5pc2hDb252
ZXJ0aW5nKEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQXBwbGVQYXlSZXF1ZXN0QmFz
ZSYpIHsgfQotc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1bnNpZ25lZCwg
Y29uc3QgQXBwbGVQYXlSZXF1ZXN0QmFzZSYpIHsgcmV0dXJuIHRydWU7IH0KLX0KKworc3RhdGlj
IHZvaWQgZmluaXNoQ29udmVydGluZyhBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVz
dWx0LCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9Q
QVlfSU5TVEFMTE1FTlRTKQorICAgIGlmIChyZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlv
bikKKyAgICAgICAgcmVzdWx0LnNldEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihXVEZNb3ZlKCpy
ZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAjZW5kaWYKK30KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1
bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIHJldHVybiB2ZXJzaW9uIDwg
OCB8fCAhcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTSh2ZXJzaW9uKTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CisgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKK30KIAogc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiBj
b252ZXJ0QW5kVmFsaWRhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCB2ZXJzaW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkTmV0d29ya3MsIGNvbnN0IFBheW1lbnRDb29y
ZGluYXRvciYgcGF5bWVudENvb3JkaW5hdG9yKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1
ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMTAgQEAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiQXBwbGVQYXlDb250YWN0RmllbGQuaCIKKyNpbmNsdWRl
ICJBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFwcGxlUGF5
TWVyY2hhbnRDYXBhYmlsaXR5LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50Q29udGFjdC5o
IgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlv
bnMvQXBwbGVQYXlSZXF1ZXN0QmFzZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC01NCw5ICs1MSw4IEBAIHN0cnVjdCBBcHBs
ZVBheVJlcXVlc3RCYXNlIHsKICAgICBTdHJpbmcgYXBwbGljYXRpb25EYXRhOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHN1cHBvcnRlZENvdW50cmllczsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlSRVFV
RVNUQkFTRV9BRERJVElPTlMpCi1BUFBMRVBBWVJFUVVFU1RCQVNFX0FERElUSU9OUwotI3VuZGVm
IEFQUExFUEFZUkVRVUVTVEJBU0VfQURESVRJT05TCisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNU
QUxMTUVOVFMpCisgICAgT3B0aW9uYWw8QXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNSArNjUsMTcgQEAKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBs
ZVBheVNlc3Npb25BZGRpdGlvbnMuY3BwPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0
YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUGF5bWVudE1ldGhvZFVwZGF0ZSYsIEFwcGxlUGF5
UGF5bWVudE1ldGhvZFVwZGF0ZSYmKSB7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBheW1lbnRNZXRob2RVcGRhdGUmIGNv
bnZlcnRlZFVwZGF0ZSwgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlJiYgdXBkYXRlKQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGNvbnZlcnRlZFVwZGF0ZS5z
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcih1cGRhdGUuaW5zdGFsbG1lbnRHcm91cElkZW50
aWZpZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udmVydGVkVXBkYXRlKTsKKyAgICBV
TlVTRURfUEFSQU0odXBkYXRlKTsKKyNlbmRpZgorfQogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXBwbGVQYXlTZXNzaW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
NCArMjgsMTEgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiUGF5bWVudENv
bnRhY3QuaCIKKyNpbmNsdWRlICJQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
LSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3RB
ZGRpdGlvbnMuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CkBAIC0xNDEsOSArMTM4LDkgQEAgcHVibGljOgog
ICAgIFJlcXVlc3RlciByZXF1ZXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQog
ICAgIHZvaWQgc2V0UmVxdWVzdGVyKFJlcXVlc3RlciByZXF1ZXN0ZXIpIHsgbV9yZXF1ZXN0ZXIg
PSByZXF1ZXN0ZXI7IH0KIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNTSU9OUEFZTUVOVFJFUVVF
U1RfUFVCTElDX0FERElUSU9OUykKLUFQUExFUEFZU0VTU0lPTlBBWU1FTlRSRVFVRVNUX1BVQkxJ
Q19BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVNFU1NJT05QQVlNRU5UUkVRVUVTVF9QVUJMSUNf
QURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICBjb25zdCBQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uJiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2luc3RhbGxtZW50Q29uZmlndXJhdGlvbjsgfQorICAgIHZvaWQgc2V0
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24m
JiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pIHsgbV9pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24g
PSBXVEZNb3ZlKGluc3RhbGxtZW50Q29uZmlndXJhdGlvbik7IH0KICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtMTcyLDkgKzE2OSw4IEBAIHByaXZhdGU6CiAKICAgICBSZXF1ZXN0ZXIgbV9yZXF1ZXN0
ZXIgeyBSZXF1ZXN0ZXI6OkFwcGxlUGF5SlMgfTsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNT
SU9OUEFZTUVOVFJFUVVFU1RfUFJJVkFURV9BRERJVElPTlMpCi1BUFBMRVBBWVNFU1NJT05QQVlN
RU5UUkVRVUVTVF9QUklWQVRFX0FERElUSU9OUwotI3VuZGVmIEFQUExFUEFZU0VTU0lPTlBBWU1F
TlRSRVFVRVNUX1BSSVZBVEVfQURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5U
UykKKyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIG1faW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBcHBsZVBheVNldHVwLmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQor
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiUGF5bWVudFNlc3Npb24uaCIKKyNpbmNsdWRlICJQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgYm9vbCBzaG91bGREaXNjbG9zZUZlYXR1cmVzKERvY3VtZW50JiBkb2N1bWVudCkKK3sK
KyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpOworICAgIGlmICghcGFnZSB8fCBwYWdl
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gZG9jdW1lbnQuc2V0dGluZ3MoKS5hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxs
b3dlZCgpOworfQorCit2b2lkIEFwcGxlUGF5U2V0dXA6OmdldFNldHVwRmVhdHVyZXMoRG9jdW1l
bnQmIGRvY3VtZW50LCBTZXR1cEZlYXR1cmVzUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgYXV0
byBjYW5DYWxsID0gUGF5bWVudFNlc3Npb246OmNhbkNyZWF0ZVNlc3Npb24oZG9jdW1lbnQpOwor
ICAgIGlmIChjYW5DYWxsLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2Uuc2V0dGxl
KGNhbkNhbGwucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkgewor
ICAgICAgICBwcm9taXNlLnNldHRsZShFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJlc29sdmUgd2l0aCBhbiBlbXB0eSBz
ZXF1ZW5jZSBvZiBmZWF0dXJlcyBpZiBBcHBsZSBQYXkgY2FwYWJpbGl0eSBkaXNjbG9zdXJlIGlz
IG5vdCBhbGxvd2VkLgorICAgIGlmICghc2hvdWxkRGlzY2xvc2VGZWF0dXJlcyhkb2N1bWVudCkp
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX3NldHVwRmVhdHVyZXNQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKworICAg
IHBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLmNsaWVudCgpLmdldFNldHVwRmVhdHVyZXMobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShWZWN0b3I8UmVmPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4mJiBzZXR1cEZlYXR1cmVzKSB7CisgICAgICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3NldHVwRmVhdHVyZXNQcm9taXNlLCBXVEY6
Om51bGxvcHQpLT5zZXR0bGUoV1RGTW92ZShzZXR1cEZlYXR1cmVzKSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgQXBwbGVQYXlTZXR1cDo6YmVnaW4oRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0b3I8UmVm
UHRyPEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcywgQmVnaW5Qcm9taXNlJiYgcHJv
bWlzZSkKK3sKKyAgICBhdXRvIGNhbkNhbGwgPSBQYXltZW50U2Vzc2lvbjo6Y2FuQ3JlYXRlU2Vz
c2lvbihkb2N1bWVudCk7CisgICAgaWYgKGNhbkNhbGwuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoY2FuQ2FsbC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yLCAiTXVzdCBjYWxsIEFwcGxlUGF5U2V0dXAuYmVnaW4gZnJvbSBhIHVz
ZXIgZ2VzdHVyZSBoYW5kbGVyLiIgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIHBy
b21pc2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fYmVnaW5Qcm9taXNlKSB7CisgICAgICAgIHByb21p
c2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9iZWdpblByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAg
IG1fcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7CisKKyAgICBw
YWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5iZWdpbkFwcGxlUGF5U2V0dXAobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgV1RGTW92ZShmZWF0dXJlcyksIFt0aGlzXShi
b29sIHJlc3VsdCkgeworICAgICAgICBpZiAobV9iZWdpblByb21pc2UpCisgICAgICAgICAgICBz
dGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUocmVzdWx0
KTsKKyAgICB9KTsKK30KKworQXBwbGVQYXlTZXR1cDo6QXBwbGVQYXlTZXR1cChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQoreworICAgIHN1c3BlbmRJZk5lZWRlZCgpOworfQorCit2b2lk
IEFwcGxlUGF5U2V0dXA6OnN0b3AoKQoreworICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UsIFdURjo6bnVs
bG9wdCktPnNldHRsZShFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworCisgICAgaWYgKG1fYmVn
aW5Qcm9taXNlKQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51
bGxvcHQpLT5zZXR0bGUoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKKworICAgIGlmIChhdXRv
IHBhZ2UgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucGFn
ZSgpKQorICAgICAgICBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5lbmRBcHBs
ZVBheVNldHVwKCk7CisKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgQXBwbGVQYXlTZXR1cDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIHN0
b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQ
UExFX1BBWV9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXR1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTZXR1cC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VU
VVApCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2ZURPTU9iamVjdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSlNET01Qcm9taXNlRGVmZXJyZWQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEFwcGxlUGF5U2V0dXBGZWF0dXJlOworY2xhc3MgRGVmZXJyZWRQcm9taXNlOworY2xhc3MgRG9j
dW1lbnQ7CisKK2NsYXNzIEFwcGxlUGF5U2V0dXAgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBw
dWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwPiB7CitwdWJsaWM6CisgICAgc3RydWN0IENv
bmZpZ3VyYXRpb24geworICAgICAgICBTdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgICAg
ICBTdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgc2lnbmF0dXJlOwor
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBzaWduZWRGaWVsZHM7CisgICAgfTsKKworICAgIHN0YXRp
YyBSZWY8QXBwbGVQYXlTZXR1cD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXBwbGVQYXlTZXR1cChjb250ZXh0LCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKSk7CisgICAgfQorCisgICAgdXNpbmcgU2V0dXBGZWF0dXJlc1Byb21pc2UgPSBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4+OworICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhEb2N1bWVudCYsIFNldHVwRmVhdHVyZXNQ
cm9taXNlJiYpOworCisgICAgdXNpbmcgQmVnaW5Qcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4+OworICAgIHZvaWQgYmVnaW4oRG9jdW1lbnQmLCBWZWN0b3I8UmVmUHRyPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4mJiwgQmVnaW5Qcm9taXNlJiYpOworCitwcml2YXRlOgorICAg
IEFwcGxlUGF5U2V0dXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENvbmZpZ3VyYXRpb24mJik7
CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkFwcGxlUGF5U2V0dXAiOyB9CisgICAgdm9p
ZCBzdG9wKCkgZmluYWw7CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZp
bmFsOworCisgICAgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgT3B0aW9uYWw8
U2V0dXBGZWF0dXJlc1Byb21pc2U+IG1fc2V0dXBGZWF0dXJlc1Byb21pc2U7CisgICAgT3B0aW9u
YWw8QmVnaW5Qcm9taXNlPiBtX2JlZ2luUHJvbWlzZTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2
aXR5PEFwcGxlUGF5U2V0dXA+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGwJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNldHVwLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKK10gZGljdGlvbmFyeSBBcHBsZVBh
eVNldHVwQ29uZmlndXJhdGlvbiB7CisgICAgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsK
KyAgICBET01TdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgIERPTVN0cmluZyBzaWduYXR1
cmU7CisgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBzaWduZWRGaWVsZHM7Cit9OworCitbCisgICAg
QWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKKyAgICBD
b25zdHJ1Y3RvcihBcHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSwKKyAg
ICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgRW5hYmxl
ZEJ5U2V0dGluZz1BcHBsZVBheSwKKyAgICBTZWN1cmVDb250ZXh0LAorXSBpbnRlcmZhY2UgQXBw
bGVQYXlTZXR1cCB7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNlPHNlcXVlbmNlPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4gZ2V0U2V0dXBGZWF0dXJlcygpOworICAgIFtDYWxsV2l0aD1E
b2N1bWVudF0gUHJvbWlzZTxib29sZWFuPiBiZWdpbihzZXF1ZW5jZTxBcHBsZVBheVNldHVwRmVh
dHVyZT4gc2V0dXBGZWF0dXJlcyk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1Mg
UEtQYXltZW50U2V0dXBGZWF0dXJlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xh
c3MgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIDogdWludDhfdDsKKworY2xhc3MgQXBwbGVQYXlT
ZXR1cEZlYXR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwRmVhdHVyZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+IGNyZWF0ZShQS1Bh
eW1lbnRTZXR1cEZlYXR1cmUgKmZlYXR1cmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBcHBsZVBheVNldHVwRmVhdHVyZShmZWF0dXJlKSk7CisgICAgfQorCisgICAgQXBw
bGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGUoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgU3Rh
dGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5zdXBwb3J0ZWQsCisgICAgICAgIFN1cHBvcnRlZCwK
KyAgICAgICAgU3VwcGxlbWVudGFyeVN1cHBvcnRlZCwKKyAgICAgICAgQ29tcGxldGVkLAorICAg
IH07CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKKworICAgIFBLUGF5bWVudFNldHVwRmVhdHVy
ZSAqcGxhdGZvcm1GZWF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlLmdldCgpOyB9CisK
KyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBib29sIHN1cHBvcnRzSW5z
dGFsbG1lbnRzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBBcHBsZVBheVNldHVwRmVhdHVyZShQS1BheW1lbnRTZXR1cEZlYXR1cmUgKik7
CisKKyAgICBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBGZWF0dXJlPiBtX2ZlYXR1cmU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1NF
VFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFs
PUFQUExFX1BBWV9TRVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVN0YXRlIHsKKyAg
ICAidW5zdXBwb3J0ZWQiLAorICAgICJzdXBwb3J0ZWQiLAorICAgICJzdXBwbGVtZW50YXJ5U3Vw
cG9ydGVkIiwKKyAgICAiY29tcGxldGVkIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPUFQUExF
X1BBWV9TRVRVUCwKKyAgICBFbmFibGVkQnlTZXR0aW5nPUFwcGxlUGF5LAorICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCisgICAgU2VjdXJlQ29udGV4dCwKK10gaW50ZXJmYWNlIEFwcGxl
UGF5U2V0dXBGZWF0dXJlIHsKKyAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1
dGUgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGU7CisgICAgW0NhY2hlZEF0dHJpYnV0ZV0g
cmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5U2V0dXBGZWF0dXJlU3RhdGUgc3RhdGU7CisgICAg
W0NhY2hlZEF0dHJpYnV0ZSwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNJbnN0YWxsbWVudHM7Cit9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXBGZWF0dXJlLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBcHBs
ZVBheVNldHVwRmVhdHVyZS5oIgorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworI2lt
cG9ydCAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW1wb3J0ICJQYXNzS2l0U1BJQWRk
aXRpb25zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlIEFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0eXBlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKFtt
X2ZlYXR1cmUgdHlwZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVR5cGVBcHBs
ZVBheToKKyAgICAgICAgcmV0dXJuIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZTo6QXBwbGVQYXk7
CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQYXlfWDoKKyAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIHJldHVybiBBcHBsZVBheVNldHVwRmVhdHVy
ZVR5cGU6OkFwcGxlQ2FyZDsKKyAgICB9Cit9CisKK0FwcGxlUGF5U2V0dXBGZWF0dXJlOjpTdGF0
ZSBBcHBsZVBheVNldHVwRmVhdHVyZTo6c3RhdGUoKSBjb25zdAoreworICAgIHN3aXRjaCAoW21f
ZmVhdHVyZSBzdGF0ZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlVW5z
dXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6VW5zdXBwb3J0ZWQ7CisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBvcnRlZDoKKyAgICAgICAgcmV0dXJuIFN0YXRl
OjpTdXBwb3J0ZWQ7CisgICAgY2FzZSBQS1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBsZW1l
bnRhcnlTdXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6U3VwcGxlbWVudGFyeVN1cHBv
cnRlZDsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlQ29tcGxldGVkOgorICAg
ICAgICByZXR1cm4gU3RhdGU6OkNvbXBsZXRlZDsKKyAgICB9Cit9CisKKyNpZiBFTkFCTEUoQVBQ
TEVfUEFZX0lOU1RBTExNRU5UUykKK2Jvb2wgQXBwbGVQYXlTZXR1cEZlYXR1cmU6OnN1cHBvcnRz
SW5zdGFsbG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fZmVhdHVyZSBzdXBwb3J0ZWRP
cHRpb25zXSAmIFBLUGF5bWVudFNldHVwRmVhdHVyZVN1cHBvcnRlZE9wdGlvbnNJbnN0YWxsbWVu
dHM7Cit9CisjZW5kaWYKKworQXBwbGVQYXlTZXR1cEZlYXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlKFBLUGF5bWVudFNldHVwRmVhdHVyZSAqZmVhdHVyZSkKKyAgICA6IG1fZmVhdHVyZSB7IGZl
YXR1cmUgfQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoQVBQTEVfUEFZX1NFVFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1
cmVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitlbnVtIGNsYXNzIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZSA6IHVpbnQ4X3Qg
eworICAgIEFwcGxlUGF5LAorICAgIEFwcGxlQ2FyZCwKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZVR5cGUuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9T
RVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgeworICAgICJhcHBsZVBheSIs
CisgICAgImFwcGxlQ2FyZCIKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oIgorI2luY2x1ZGUgIkFwcGxlUGF5U2V0dXAuaCIKKyNpbmNsdWRlICJBcHBsZVBheVNldHVw
RmVhdHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BheW1lbnRDb29yZGlu
YXRvckNsaWVudEFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRG9jdW1lbnQ7CkBAIC03MSwxMyArNzAsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorICAgIHZpcnR1YWwgdm9pZCBnZXRTZXR1
cEZlYXR1cmVzKGNvbnN0IEFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBBcHBsZVBheVNldHVwOjpD
b25maWd1cmF0aW9uJiwgY29uc3QgVVJMJiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheVNldHVwRmVh
dHVyZT4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIGVuZEFw
cGxlUGF5U2V0dXAoKSB7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwotCi0jaWYgZGVmaW5lZChQQVlNRU5U
Q09PUkRJTkFUT1JDTElFTlRfQURESVRJT05TKQotUEFZTUVOVENPT1JESU5BVE9SQ0xJRU5UX0FE
RElUSU9OUwotI3VuZGVmIFBBWU1FTlRDT09SRElOQVRPUkNMSUVOVF9BRERJVElPTlMKLSNlbmRp
ZgogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBQS1BheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb247CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEFw
cGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBQYXltZW50SW5z
dGFsbG1lbnRDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OworICAgIFBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24oY29uc3QgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24mKTsK
KyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24+JiYpOworCisgICAgUEtQYXltZW50SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBSZXRhaW5QdHI8UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBtX2NvbmZp
Z3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RB
TExNRU5UUykKKworI2ltcG9ydCAiQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCIK
KyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0b0RlY2ltYWxOdW1iZXIoKSBpbiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLgorc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNp
bWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQoreworICAgIGlmICghYW1vdW50KQorICAg
ICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciB6ZXJvXTsKKyAgICByZXR1cm4gW05TRGVjaW1h
bE51bWJlciBkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzphbW91bnQgbG9jYWxlOkB7IE5TTG9jYWxl
RGVjaW1hbFNlcGFyYXRvciA6IEAiLiIgfV07Cit9CisKK3N0YXRpYyBQS1BheW1lbnRTZXR1cEZl
YXR1cmVUeXBlIHBsYXRmb3JtRmVhdHVyZVR5cGUoY29uc3QgQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlJiBmZWF0dXJlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVUeXBlKSB7CisgICAgY2Fz
ZSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlUGF5OgorICAgICAgICByZXR1cm4gUEtQ
YXltZW50U2V0dXBGZWF0dXJlVHlwZUFwcGxlUGF5OworICAgIGNhc2UgQXBwbGVQYXlTZXR1cEZl
YXR1cmVUeXBlOjpBcHBsZUNhcmQ6CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCisgICAgICAgIHJldHVybiBQS1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQ
YXlfWDsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgfQor
fQorCitzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4g
Y3JlYXRlUGxhdGZvcm1Db25maWd1cmF0aW9uKGNvbnN0IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uJiBjb3JlQ29uZmlndXJhdGlvbikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uSW5z
dGFuY2UoKSBpbml0XSk7CisKKyAgICBbY29uZmlndXJhdGlvbiBzZXRGZWF0dXJlOnBsYXRmb3Jt
RmVhdHVyZVR5cGUoY29yZUNvbmZpZ3VyYXRpb24uZmVhdHVyZVR5cGUpXTsKKworICAgIFtjb25m
aWd1cmF0aW9uIHNldEJpbmRpbmdUb3RhbEFtb3VudDp0b0RlY2ltYWxOdW1iZXIoY29yZUNvbmZp
Z3VyYXRpb24uYmluZGluZ1RvdGFsQW1vdW50KV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0Q3Vy
cmVuY3lDb2RlOmNvcmVDb25maWd1cmF0aW9uLmN1cnJlbmN5Q29kZV07CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0SW5TdG9yZVB1cmNoYXNlOmNvcmVDb25maWd1cmF0aW9uLmlzSW5TdG9yZVB1cmNo
YXNlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRPcGVuVG9CdXlUaHJlc2hvbGRBbW91bnQ6dG9E
ZWNpbWFsTnVtYmVyKGNvcmVDb25maWd1cmF0aW9uLm9wZW5Ub0J1eVRocmVzaG9sZEFtb3VudCld
OworCisgICAgYXV0byBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmNvcmVDb25maWd1cmF0aW9uLm1lcmNo
YW5kaXNpbmdJbWFnZURhdGEgb3B0aW9uczowXSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVy
Y2hhbmRpc2luZ0ltYWdlRGF0YTptZXJjaGFuZGlzaW5nSW1hZ2VEYXRhLmdldCgpXTsKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVF9JREVOVElGSUVSUykKKyNpZiBQTEFURk9STShNQUMp
CisgICAgaWYgKCFbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dEluc3RhbGxtZW50TWVyY2hhbnRJZGVudGlmaWVyOildIHx8ICFbY29uZmlndXJhdGlvbiByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFJlZmVycmVySWRlbnRpZmllcjopXSkKKyAgICAg
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisjZW5kaWYKKyAgICBbY29uZmlndXJhdGlvbiBzZXRJ
bnN0YWxsbWVudE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElk
ZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldFJlZmVycmVySWRlbnRpZmllcjpjb3Jl
Q29uZmlndXJhdGlvbi5yZWZlcnJlcklkZW50aWZpZXJdOworI2VuZGlmCisKKyAgICByZXR1cm4g
Y29uZmlndXJhdGlvbjsKK30KKworUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjo6UGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihjb25zdCBBcHBsZVBheUluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IGNyZWF0
ZVBsYXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSB9Cit7Cit9CisKK1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb246OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24o
UmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0
aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShjb25maWd1cmF0aW9uKSB9Cit7
Cit9CisKK1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiAqUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbjo6cGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgJ
KHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudE1ldGhvZFVwZGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsNiBAQAogI2lu
Y2x1ZGUgIkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvUGF5bWVudE1ldGhvZFVwZGF0ZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIE9C
SkNfQ0xBU1MgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTUwLDExICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVG90YWxB
bmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKCkgY29uc3Q7CiAgICAgUEtQYXltZW50UmVx
dWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnBsYXRmb3JtVXBkYXRlKCkgY29uc3Q7CiAKLSNpZiBk
ZWZpbmVkKFBBWU1FTlRNRVRIT0RVUERBVEVfUFVCTElDX0FERElUSU9OUykKLVBBWU1FTlRNRVRI
T0RVUERBVEVfUFVCTElDX0FERElUSU9OUwotI3VuZGVmIFBBWU1FTlRNRVRIT0RVUERBVEVfUFVC
TElDX0FERElUSU9OUworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisgICAgdm9pZCBz
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKICNlbmRpZgotICAg
IAorCiBwcml2YXRlOgogICAgIE9wdGlvbmFsPFRvdGFsQW5kTGluZUl0ZW1zPiBtX3RvdGFsQW5k
TGluZUl0ZW1zOwogICAgIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZT4gbV9wbGF0Zm9ybVVwZGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDE4IEBACiAjaW1wb3J0ICJQYXltZW50TWV0
aG9kLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudENvY29h
QWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyB2b2lkIGZp
bmlzaENvbnZlcnRpbmcoUEtQYXltZW50ICosIEFwcGxlUGF5UGF5bWVudCYpIHsgfQotfQotI2Vu
ZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmco
UEtQYXltZW50ICpwYXltZW50LCBBcHBsZVBheVBheW1lbnQmIHJlc3VsdCkKK3sKKyNpZiBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGlmIChOU1N0cmluZyAqaW5zdGFsbG1lbnRBdXRo
b3JpemF0aW9uVG9rZW4gPSBwYXltZW50Lmluc3RhbGxtZW50QXV0aG9yaXphdGlvblRva2VuKQor
ICAgICAgICByZXN1bHQuaW5zdGFsbG1lbnRBdXRob3JpemF0aW9uVG9rZW4gPSBpbnN0YWxsbWVu
dEF1dGhvcml6YXRpb25Ub2tlbjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBheW1lbnQpOwor
ICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOworI2VuZGlmCit9CiAKIHN0YXRpYyBBcHBsZVBheVBh
eW1lbnQ6OlRva2VuIGNvbnZlcnQoUEtQYXltZW50VG9rZW4gKnBheW1lbnRUb2tlbikKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1ldGhvZENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDE4IEBACiAjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRNZXRo
b2RUeXBlLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudE1l
dGhvZENvY29hQWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRp
YyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICosIEFwcGxlUGF5UGF5bWVu
dE1ldGhvZCYpIHsgfQotfQotI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2
b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICpwYXltZW50TWV0aG9kLCBBcHBs
ZVBheVBheW1lbnRNZXRob2QmIHJlc3VsdCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1F
TlRTKQorICAgIGlmIChOU1N0cmluZyAqYmluZFRva2VuID0gcGF5bWVudE1ldGhvZC5iaW5kVG9r
ZW4pCisgICAgICAgIHJlc3VsdC5iaW5kVG9rZW4gPSBiaW5kVG9rZW47CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShwYXltZW50TWV0aG9kKTsKKyAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKKyNl
bmRpZgorfQogCiBzdGF0aWMgQXBwbGVQYXlQYXltZW50UGFzczo6QWN0aXZhdGlvblN0YXRlIGNv
bnZlcnQoUEtQYXltZW50UGFzc0FjdGl2YXRpb25TdGF0ZSBwYXltZW50UGFzc0FjdGl2YXRpb25T
dGF0ZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRNZXRob2RVcGRhdGVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksMTMgQEAg
UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKlBheQogICAgIHJldHVybiBtX3Bs
YXRmb3JtVXBkYXRlLmdldCgpOwogfQogCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K3ZvaWQgUGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcikKK3sKKyAgICBbbV9wbGF0
Zm9ybVVwZGF0ZSBzZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcjppbnN0YWxsbWVudEdyb3Vw
SWRlbnRpZmllcl07Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNv
Y29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTUgKzMxLDI3IEBACiAjaW1wb3J0ICJBcHBsZVBheVNlc3Npb25FcnJvci5oIgogI2ltcG9y
dCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2FB
ZGRpdGlvbnMubW0+Ci0jZWxzZQogbmFtZXNwYWNlIFdlYkNvcmUgewotc3RhdGljIE9wdGlvbmFs
PEFwcGxlUGF5U2Vzc2lvbkVycm9yPiBhZGRpdGlvbmFsRXJyb3IoTlNFcnJvciAqKSB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CitzdGF0
aWMgT3B0aW9uYWw8QXBwbGVQYXlTZXNzaW9uRXJyb3I+IGFkZGl0aW9uYWxFcnJvcihOU0Vycm9y
ICplcnJvcikKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIC8vIEZJWE1F
OiBSZXBsYWNlIHdpdGggUEtQYXltZW50RXJyb3JCaW5kVG9rZW5Vc2VySW5mb0tleSBhbmQKKyAg
ICAvLyBQS1BheW1lbnRBdXRob3JpemF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3Igd2hlbiB0
aGV5J3JlIGF2YWlsYWJsZSBpbiBhbiBTREsuCisgICAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
YmluZFRva2VuS2V5ID0gQCJQS1BheW1lbnRFcnJvckJpbmRUb2tlbiI7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBOU0ludGVnZXIgcGtQYXltZW50QXV0aG9yaXphdGlvbkZlYXR1cmVBcHBsaWNhdGlv
bkVycm9yID0gLTIwMTY7CisKKyAgICBpZiAoZXJyb3IuY29kZSAhPSBwa1BheW1lbnRBdXRob3Jp
emF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3IpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBpZCBiaW5kVG9rZW5WYWx1ZSA9IGVycm9yLnVzZXJJbmZvW2JpbmRUb2tlbktl
eV07CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighYmluZFRv
a2VuVmFsdWUgfHwgW2JpbmRUb2tlblZhbHVlIGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3Nd
KTsKKyAgICByZXR1cm4gQXBwbGVQYXlTZXNzaW9uRXJyb3IgeyAiZmVhdHVyZUFwcGxpY2F0aW9u
RXJyb3IiX3MsIHsgeyAiYmluZFRva2VuIl9zLCAoTlNTdHJpbmcgKiliaW5kVG9rZW5WYWx1ZSB9
IH0gfTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworI2VuZGlmCit9CiAKIFBheW1lbnRTZXNzaW9uRXJyb3I6OlBheW1lbnRTZXNzaW9u
RXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+JiYgZXJyb3IpCiAgICAgOiBtX3BsYXRmb3JtRXJyb3Ig
eyBXVEZNb3ZlKGVycm9yKSB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVJlcXVlc3Qu
aWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDQgKzI4LDUgQEAKIF0gZGljdGlvbmFyeSBBcHBsZVBheVJlcXVlc3QgOiBBcHBsZVBheVJlcXVl
c3RCYXNlIHsKICAgICByZXF1aXJlZCB1bnNpZ25lZCBsb25nIHZlcnNpb247CiAgICAgcmVxdWly
ZWQgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVf
UEFZX0lOU1RBTExNRU5UU10gQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gaW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyB0YXNrRGVs
YXlJbnRlcnZhbCB7IDEwMF9tcyB9OwogCi0jdW5kZWYgTE9HSURFTlRJRklFUgotI2RlZmluZSBM
T0dJREVOVElGSUVSIF9fZnVuY19fCi0KLSN1bmRlZiBBTFdBWVNfTE9HCi0jZGVmaW5lIEFMV0FZ
U19MT0cgbG9nZ2VyKCkubG9nQWx3YXlzCisjZGVmaW5lIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUiBsb2dnZXIoKS5sb2dBbHdheXMKIAogc3RydWN0IENsaWVudFN0YXRlIHsKICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjEsMTkgKzE1NywxOSBAQCB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpCiAgICAgaWYgKG1fbW9ja1BpY2tl
ckVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18pOwogICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOwogfQogCiB2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3Rh
dGUpCiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwogICAgIG1vY2tQaWNrZXIoKS5zZXRTdGF0ZShu
YW1lLCBzdGF0ZSk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQogewotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19f
KTsKICAgICBtb2NrUGlja2VyKCkuZGlzbWlzc1BvcHVwKCk7CiB9CiAKQEAgLTIwOCw3ICsyMDQs
NyBAQCB1aW50NjRfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5CiAgICAgaWYgKGlu
ZGV4ICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgY29udGV4dElkKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18sIGNvbnRleHRJZCk7CiAgICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQobWFrZVVu
aXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKIAogICAgIGlmIChtX2V4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJnZXQpCkBAIC0yMjQsNyAr
MjIwLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YgogICAgIGlm
IChpbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CisgICAgQUxXQVlTX0xP
R19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQo
KSk7CiAKICAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpbmRleCk7CiAgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRz
Q29uZmlndXJhdGlvblRhc2spOwpAQCAtMjM3LDcgKzIzMyw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGwKIAogICAgIGZvciAoc2l6ZV90IGkgPSBtX2NsaWVudFN0
YXRlLnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICBpZiAoJm1fY2xpZW50U3RhdGVbaSAt
IDFdLT5jbGllbnQgPT0gJmNsaWVudCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBtX2NsaWVudFN0YXRlW2kgLSAxXS5nZXQoKSk7CisgICAgICAgICAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaSAtIDFdLmdl
dCgpKTsKICAgICAgICAgICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGkgLSAxKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTI1Nyw3ICsyNTMsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNob3dQbGF5YmFjCiAgICAgICAgIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2VyID0g
c3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1BpY2tlcjsKICAgICB9CiAKLSAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsKKyAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdl
dCgpKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlUm91dGUgPSBmbGFnc0FyZVNldChtX2NsaWVudFN0
YXRlW2luZGV4XS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZp
Y2UpOwogICAgIHRhcmdldFBpY2tlcigpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihGbG9hdFJl
Y3QocmVjdCksIGhhc0FjdGl2ZVJvdXRlLCB1c2VEYXJrQXBwZWFyYW5jZSk7CkBAIC0yNzUsNyAr
MjcxLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjbGllbnRTdGF0ZQogICAgIGlm
IChuZXdGbGFncyA9PSBvbGRGbGFncykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSwgIm5ldyBmbGFncyA9
ICIsIG5ld0ZsYWdzKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3IGZsYWdzID0gIiwgbmV3RmxhZ3Mp
OwogCiAgICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFncyA9IG5ld0ZsYWdzOwogCkBAIC0yOTks
MjUgKzI5NSwyNSBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoZmxhZ3NBcmVTZXQoc3RhdGUtPmZs
YWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSAmJiBmbGFnc0Fy
ZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgewotICAg
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiByZXR1cm5p
bmcgZWFybHkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBEbyBub3QgYmVnaW4gcGxheWluZyB0
byB0aGUgZGV2aWNlIHVubGVzcyBwbGF5YmFjayBoYXMganVzdCBzdGFydGVkLgogICAgIGlmICgh
ZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSB8fCBm
bGFnc0FyZVNldChvbGRGbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7Ci0g
ICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBlYXJseSwgcGxheWJh
Y2sgZGlkbid0IGp1c3Qgc3RhcnQiKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCAicmV0dXJuaW5nIGVhcmx5LCBwbGF5YmFjayBkaWRuJ3QganVzdCBz
dGFydCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBzdGF0ZSA6
IG1fY2xpZW50U3RhdGUpIHsKICAgICAgICAgaWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
ZmFsc2UpIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
Xywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChm
YWxzZSkiKTsKICAgICAgICAgc3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNT
SU9OTUFOQUdFUihfX2Z1bmNfXywgY2hhbmdlZENsaWVudFN0YXRlLmdldCgpLCAiIGNhbGxpbmcg
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICBjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAKICAgICBpZiAoaW5kZXggJiYgbV9jbGllbnRTdGF0
ZS5zaXplKCkgPiAxKQpAQCAtMzI2LDcgKzMyMiw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6Y2xpZW50U3RhdGUKIAogdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFz
QWN0aXZlUm91dGUoKSk7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVu
Y19fLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFzQWN0aXZlUm91dGUoKSk7CiAg
ICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsKICAgICBtX3RhcmdldENoYW5n
ZWQgPSB0cnVlOwogICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0NvbmZpZ3Vy
YXRpb25UYXNrKTsKQEAgLTMzNCw3ICszMzAsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNldFBsYXliYWNrCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCBhdmFpbGFibGUpOworICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgYXZhaWxhYmxlKTsKICAgICBtX2V4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlID0gYXZhaWxhYmxlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2Ns
aWVudFN0YXRlKQogICAgICAgICBzdGF0ZS0+Y2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKHN0YXRlLT5jb250ZXh0SWQsIGF2YWlsYWJsZSk7CkBAIC0zNDIsNyAr
MzM4LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpleHRlcm5hbE91dAogCiB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2Vk
KCkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIEFMV0FZU19MT0dfTUVE
SUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbV9wbGF5YmFja1RhcmdldFBpY2tlckRp
c21pc3NlZCA9IHRydWU7CiAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhUYXJnZXRDbGllbnRzQ29u
ZmlndXJhdGlvblRhc2spOwogfQpAQCAtMzc1LDcgKzM3MSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2xp
ZW50U3RhdGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0
YXRlW2ldOwogCi0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0KCks
ICIsIHJlcXVlc3RlZFBpY2tlciA9ICIsIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIpOworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAi
LCByZXF1ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKTsKIAogICAgICAg
ICBpZiAoKG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2Vk
KSAmJiBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKQogICAgICAgICAgICAgaW5kZXhPZkNsaWVudFRo
YXRSZXF1ZXN0ZWRQaWNrZXIgPSBpOwpAQCAtNDAxLDEyICszOTcsMTIgQEAgdm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5z
ZXRQbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCAqbV9wbGF5YmFja1RhcmdldC5jb3B5
UmVmKCkpOwogCiAgICAgICAgIGlmIChpICE9IGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0
IHx8ICFoYXZlQWN0aXZlUm91dGUpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dChmYWxzZSkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChmYWxzZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgZmFsc2UpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgJiYgbV9wbGF5YmFja1RhcmdldFBpY2tl
ckRpc21pc3NlZCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkIik7Cisg
ICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRl
LmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKICAg
ICAgICAgICAgIHN0YXRlLT5jbGllbnQucGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQo
c3RhdGUtPmNvbnRleHRJZCk7CiAgICAgICAgIH0KIApAQCAtNDE4LDcgKzQxNCw3IEBAIHZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBpZiAoaGF2ZUFjdGl2ZVJv
dXRlICYmIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ICE9IG5vdEZvdW5kKSB7CiAgICAg
ICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1Rh
cmdldF07CiAgICAgICAgIGlmICghZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkgewotICAgICAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0KHRydWUpIik7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lP
Tk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC00MzMsNyArNDI5LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
Ojpjb25maWd1cmVQbAogICAgIGJvb2wgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSBmYWxzZTsK
ICAgICBib29sIGhhdmVDbGllbnRXaXRoTWVkaWEgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIHN0
YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
IHN0YXRlLmdldCgpKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBzdGF0ZS5nZXQoKSk7CiAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVBy
b2R1Y2VyOjpSZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykgewogICAgICAgICAgICAg
bW9uaXRvcmluZ1JlcXVpcmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQ1LDEw
ICs0NDEsMTAgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAg
IH0KIAogICAgIGlmIChtb25pdG9yaW5nUmVxdWlyZWQgfHwgKGhhc0F2YWlsYWJpbGl0eUxpc3Rl
bmVyICYmIGhhdmVDbGllbnRXaXRoTWVkaWEpKSB7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInN0YXJ0aW5nIG1vbml0b3JpbmciKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOwogICAgICAg
ICB0YXJnZXRQaWNrZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyBt
b25pdG9yaW5nIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXywgInN0b3BwaW5nIG1vbml0b3JpbmciKTsKICAgICAgICAgdGFyZ2V0UGlja2VyKCkuc3Rv
cE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAgICB9CiB9CkBAIC00OTAsNyArNDg2LDcg
QEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogCiAgICAgaWYgKCFt
X3BsYXliYWNrVGFyZ2V0IHx8ICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpKSB7
CiAgICAgICAgIGlmIChtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic3RvcHBpbmcgdGltZXIiKTsKKyAgICAgICAgICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVy
Iik7CiAgICAgICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9OwogICAgICAg
ICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKICAgICAgICAgfQpAQCAtNTAyLDcgKzQ5OCw3
IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2EKICAgICBib29sIGRp
ZFBsYXlUb0VuZCA9IGZhbHNlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRl
KSB7CiAKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBw
bGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcGxheWVkVG9FbmQg
PSAiLCBzdGF0ZS0+cGxheWVkVG9FbmQpOwogCiAgICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZs
YWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKQog
ICAgICAgICAgICAgc3RvcFRpbWVyID0gdHJ1ZTsKQEAgLTUxMiw3ICs1MDgsNyBAQCB2b2lkIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhCiAgICAgfQogCiAgICAgaWYgKHN0b3BU
aW1lcikgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyB0aW1l
ciIpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJz
dG9wcGluZyB0aW1lciIpOwogICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9
OwogICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwogICAgIH0gZWxzZSB7CkBAIC01MjAs
NyArNTE2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogICAg
ICAgICBpZiAoaW50ZXJ2YWwgIT0gbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCB8fCAhbV93YXRj
aGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFy
dE9uZVNob3QoaW50ZXJ2YWwpOwogICAgICAgICB9Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNv
bmRzIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywg
InRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNvbmRzIik7CiAg
ICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgPSBpbnRlcnZhbDsKICAgICB9CiB9CkBA
IC01MzAsNyArNTI2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bQogICAgIGlmICghbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOwogICAgIHRhcmdldFBpY2tlcigpLmludmFsaWRhdGVQbGF5YmFja1Rhcmdl
dHMoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAxMDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDQtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBNb3ZlIEFwcGxlUGF5IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMgdG8g
V2ViQ29yZSBhbmQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTA1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisg
ICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsubW06CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg6CisKIDIwMjAtMDQtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZG9wdCBpbnRlcmZhY2UgQVZBdWRpb1JvdXRpbmdBcmJpdGVyIGZvciBNYWMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTggQEAgU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQS1BheW1lbgogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRNZXRob2QpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5
bWVudE1lcmNoYW50U2Vzc2lvbikKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50UmVxdWVzdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBL
UGF5bWVudFNldHVwRmVhdHVyZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50U2V0dXBSZXF1ZXN0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRTdW1tYXJ5SXRlbSkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
UEtTaGlwcGluZ01ldGhvZCkKIAorI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbikKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIpCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRM
aW5rLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L1Bhc3NLaXRTb2Z0TGluay5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDMyIEBACiAK
ICNpZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCi0jZWxzZQorCitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0
dXBDb250cm9sbGVyLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BU
SU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cEZlYXR1cmUsIFBB
TF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9S
VChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwUmVxdWVzdCwgUEFMX0VYUE9SVCkKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9P
UFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKKyNlbmRpZgorCisjZWxzZSAvLyBQTEFURk9STShNQUMp
CisKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NL
aXQsIFBBTF9FWFBPUlQpCisKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQor
U09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwRmVhdHVyZSwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50U2V0dXBSZXF1ZXN0LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cFZpZXdD
b250cm9sbGVyLCBQQUxfRVhQT1JUKQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQogI2VuZGlmCiAKKyNl
bmRpZiAvLyBQTEFURk9STShNQUMpCisKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0LCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bhc3NMaWJyYXJ5LCBQ
QUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQS1BheW1lbnQsIFBBTF9FWFBPUlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDExICs0NywyOCBAQCBXVEZfRVhURVJOX0NfRU5ECiAjaW1wb3J0IDxQYXNzS2l0L1BL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxQ
YXNzS2l0L1BLUGF5bWVudE1ldGhvZC5oPgogI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRSZXF1
ZXN0X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uX1dlYktpdC5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRTZXR1cENvbnRyb2xsZXIu
aD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxQ
YXNzS2l0Q29yZS9QS1BheW1lbnRSZXF1ZXN0U3RhdHVzX1ByaXZhdGUuaD4KICNpbXBvcnQgPFBh
c3NLaXRDb3JlL1BLUGF5bWVudFJlcXVlc3RfV2ViS2l0Lmg+CiAKKyNpZiBIQVZFKFBBU1NLSVRf
SU5TVEFMTE1FTlRTKQorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50X1ByaXZhdGUuaD4K
KyNpbXBvcnQgPFBhc3NLaXRDb3JlL1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5o
PgorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50TWV0aG9kX1ByaXZhdGUuaD4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50
QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyLmg+CisjZW5kaWYKKworI2lmIEhBVkUoUEFTU0tJVF9J
TlNUQUxMTUVOVF9JREVOVElGSUVSUykgJiYgUExBVEZPUk0oTUFDKQorQGludGVyZmFjZSBQS1Bh
eW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKFdlYktpdFNQSSkKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNTdHJpbmcgKmluc3RhbGxtZW50TWVyY2hhbnRJZGVu
dGlmaWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU1N0cmluZyAq
cmVmZXJyZXJJZGVudGlmaWVyOworQGVuZAogI2VuZGlmCiAKICNlbHNlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5MDAsNiArMTkwMCw5IEBACiAJCTVDMkIxQUVDMjIz
OTdFQkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY3OEQwQjFDMjU0MjJDMDAyNDU0NDYg
LyogUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tICovOyB9OwogCQk1QzQzMDRCMTE5MUFDOTA4MDAw
RTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRl
clRleHR1cmVMT0QuaCAqLzsgfTsKIAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhU
U2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM0MzA0QjQxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxP
RC5oICovOyB9OworCQk1QzUzRENFMTI0NDY1REZDMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
NTNEQ0NGMjQ0NjQ0OTkwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNTNEQ0U3MjQ0NjhB
RDIwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzUzRENDRTI0NDY0NDk5MDBB
OTMxMjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNTNEQ0VBMjQ0NjhGQjQwMEE5
MzEyNCAvKiBBcHBsZVBheVNldHVwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNUQy
Mzg1MjI3QTA2NTIwMDBCOUJEQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUQyMzgzMjI3QTA2M0EwMDBCOUJE
QSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
N0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDOUMyREI1MjI0MUE2N0IwMDk5
NkIwQiAvKiBDb250ZW50UnVsZUxpc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlDMkRCMzIyNDFBNjczMDA5OTZCMEIgLyogQ29udGVu
dFJ1bGVMaXN0UmVzdWx0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05MDkxLDYgKzkwOTQsMTggQEAKIAkJNUM1MzgxQjExRDg3RDQ1NzAwRTJF
QkU2IC8qIFVSTFNlYXJjaFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVUkxTZWFyY2hQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1Mzgx
QjMxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1MzgxQjQxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2Vh
cmNoUGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVVJMU2VhcmNo
UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0M2MjQ0NjQ0OTcw
MEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBs
ZVBheVNldHVwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQzkyNDQ2
NDQ5ODAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0NBMjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBh
eVNldHVwRmVhdHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDQjI0NDY0NDk4
MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcHBsZVBheVNldHVwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNE
Q0NDMjQ0NjQ0OTkwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RD
Q0UyNDQ2NDQ5OTAwQTkzMTI0IC8qIFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDRjI0NDY0NDk5
MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUM1M0RDRDAyNDQ2NDQ5QTAwQTkzMTI0IC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxlUGF5U2V0dXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlT
ZXR1cEZlYXR1cmVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUz
RENENTI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24u
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDRDYyNDQ2NDQ5QzAw
QTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM1RDIzODMyMjdBMDYzQTAwMEI5QkRBIC8qIEN1c3RvbUhlYWRlckZpZWxkcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21IZWFkZXJGaWVsZHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1RDIzODYyMjdBMDc3QzAwMEI5QkRBIC8q
IEN1c3RvbUhlYWRlckZpZWxkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDdXN0b21IZWFkZXJGaWVsZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjcxLDYgKzE3Mjg2LDgg
QEAKIAkJCQlBMUJCODU5QjIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaWRs
ICovLAogCQkJCUExQkI4NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFj
dEZpZWxkLmggKi8sCiAJCQkJQTFCQjg1QTIyMTU5QUY1NzAwNjdFMDdEIC8qIEFwcGxlUGF5RXJy
b3JDb250YWN0RmllbGQuaWRsICovLAorCQkJCTVDNTNEQ0QwMjQ0NjQ0OUEwMEE5MzEyNCAvKiBB
cHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0Q1MjQ0NjQ0
OUIwMEE5MzEyNCAvKiBBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwgKi8sCiAJ
CQkJN0M2NTc5RTIxRTAwODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAqLywKIAkJ
CQk3QzY1NzlFNDFFMDA4MkM4MDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5pZGwgKi8sCiAJ
CQkJQTFERjVBQTgxRjgwNzBENDAwNThBNDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5
LmNwcCAqLywKQEAgLTE3MzA4LDYgKzE3MzI1LDE0IEBACiAJCQkJQTE5NTZGMUYyMzMxQThDNzAw
NTdFOUQyIC8qIEFwcGxlUGF5U2Vzc2lvbkVycm9yLmlkbCAqLywKIAkJCQkxQTU4RTg2MzFEMTlE
NERGMDBDMEVBNzMgLyogQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwICovLAogCQkJ
CTFBNThFODY0MUQxOUQ0REYwMEMwRUE3MyAvKiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oICovLAorCQkJCTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNw
cCAqLywKKwkJCQk1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICov
LAorCQkJCTVDNTNEQ0M2MjQ0NjQ0OTcwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLywK
KwkJCQk1QzUzRENDRjI0NDY0NDk5MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAq
LywKKwkJCQk1QzUzRENDQTI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsICovLAorCQkJCTVDNTNEQ0M5MjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVh
dHVyZS5tbSAqLywKKwkJCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmggKi8sCisJCQkJNUM1M0RDRDYyNDQ2NDQ5QzAwQTkzMTI0IC8qIEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8sCiAJCQkJMUE4QTY0NDcxRDE5RkNGQjAwRDBFMDBG
IC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAgKi8sCiAJCQkJMUE4
QTY0NDgxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRF
dmVudC5oICovLAogCQkJCTFBOEE2NDQ5MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBw
aW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuaWRsICovLApAQCAtMTczMzEsNiArMTczNTYsOCBAQAog
CQkJCUExMDRFQzUzMjIwQTAxNzQwMENCRjY3QSAvKiBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQu
Y3BwICovLAogCQkJCTFBNThFODYyMUQxOUQzQkYwMEMwRUE3MyAvKiBQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQuaCAqLywKIAkJCQk3Q0Y5MzBFNjFFMDFGOUFEMDBCQUZGQkUgLyogUGF5bWVudEhl
YWRlcnMuaCAqLywKKwkJCQk1QzUzRENDRTI0NDY0NDk5MDBBOTMxMjQgLyogUGF5bWVudEluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0NDMjQ0NjQ0OTkwMEE5MzEyNCAv
KiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tICovLAogCQkJCTFBRTk2QTg3MUQx
QTBDRUIwMEI4Njc2OCAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uLmggKi8sCiAJCQkJMUE4QTY0
MzkxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1lbnRNZXRob2QuaCAqLywKIAkJCQlBMURGRDUyNDIz
MzQ1OTNBMDA0MkZDREIgLyogUGF5bWVudE1ldGhvZFVwZGF0ZS5oICovLApAQCAtMjkzOTcsNiAr
Mjk0MjQsOCBAQAogCQkJCTFBOEE2NDU5MUQxOUZDRkMwMEQwRTAwRiAvKiBBcHBsZVBheVNlc3Np
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUExOTU2RjIwMjMzMUE4QzcwMDU3RTlEMiAvKiBBcHBs
ZVBheVNlc3Npb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1OEU4NjUxRDE5RDRFQjAw
QzBFQTczIC8qIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk1QzUzRENFQTI0NDY4RkI0MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNUM1M0RDRTEyNDQ2NURGQzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0
dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThBNjQ1QzFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBw
bGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MTJDNTlGMjIwMzVGQ0Q2MDAxMjIzNkIgLyogQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDNjU3OUU4MUUwMDgzMTYwMEUzQTI3QSAvKiBBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTIyLDYgKzMyMTUxLDcgQEAK
IAkJCQlBMUY2MDA0OTFGNDc1OTRFMDA3N0U4M0YgLyogUGF5bWVudERldGFpbHNVcGRhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUExREY1QUE2MUY3RjY0QkIwMDU4QTQ3NyAvKiBQYXltZW50SGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NGOTMwRTcxRTAxRjlCNDAwQkFGRkJFIC8qIFBh
eW1lbnRIZWFkZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzUzRENFNzI0NDY4QUQyMDBBOTMx
MjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTFGNzZCMzExRjQ0QzU1QTAwMTRDMzE4IC8qIFBheW1lbnRJdGVtLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUU5NkE4OTFEMUEwQ0VCMDBCODY3NjggLyogUGF5bWVudE1lcmNoYW50U2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4QTY0M0MxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1l
bnRNZXRob2QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViQ29yZUFkZGl0aW9ucy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCwzIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYkNv
cmVBZGRpdGlvbnMubW0+Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAwODEpCisr
KyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDIwLTA0LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTW92ZSBBcHBsZVBheSBjb2RlIGZyb20gV2ViS2l0QWRkaXRpb25zIHRvIFdl
YkNvcmUgYW5kIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEwNTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVw
RmVhdHVyZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVz
OjpwbGF0Zm9ybUZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvQXBw
bGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBh
eW1lbnRTZXR1cEZlYXR1cmVzOjpQYXltZW50U2V0dXBGZWF0dXJlcyk6CisgICAgICAgIChXZWJL
aXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpQYXltZW50U2V0dXBGZWF0dXJlczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVu
dFNldHVwRmVhdHVyZXM6Om9wZXJhdG9yIFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1
cEZlYXR1cmU+PiBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICogU2hh
cmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW06IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0Ojp0b1BsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpmaW5pc2hDb25zdHJ1
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvY29j
b2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXRB
ZGRpdGlvbnM6OnRvUGxhdGZvcm1Db25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdEFkZGl0
aW9uczo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bik6CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmZpbmlz
aENyZWF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6YmVnaW5BcHBsZVBheVNldHVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OmVuZEFwcGxlUGF5U2V0dXApOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1FbmRB
cHBsZVBheVNldHVwKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OmZpbmlzaERlY29kaW5nKToKKyAgICAgICAgKElQ
Qzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
OjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50
Q29vcmRpbmF0b3I6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OmJlZ2luQXBwbGVQYXlTZXR1cCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBheW1lbnRDb29yZGluYXRvcjo6ZW5kQXBwbGVQYXlTZXR1cCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKwogMjAyMC0wNC0xNCAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmplY3RlZEJ1bmRs
ZSBwYXJhbWV0ZXJzIG9mdGVuIG5lZWQgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gY2FsbGVkIGJl
Zm9yZSB1bmFyY2hpdmluZwpJbmRleDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTAsOCArMjUwLDYgQEAgU0NSSVBUUyA9IFwKIEZSQU1FV09SS19GTEFHUyA9
ICQoc2hlbGwgZWNobyAkKEJVSUxUX1BST0RVQ1RTX0RJUikgJChGUkFNRVdPUktfU0VBUkNIX1BB
VEhTKSAkKFNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTKSB8IHBlcmwgLWUgJ3ByaW50ICIt
RiAiIC4gam9pbigiIC1GICIsIHNwbGl0KCIgIiwgPD4pKTsnKQogSEVBREVSX0ZMQUdTID0gJChz
aGVsbCBlY2hvICQoQlVJTFRfUFJPRFVDVFNfRElSKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpICQo
U1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFMpIHwgcGVybCAtZSAncHJpbnQgIi1JIiAuIGpvaW4o
IiAtSSIsIHNwbGl0KCIgIiwgPD4pKTsnKQogCi0taW5jbHVkZSBXZWJLaXREZXJpdmVkU291cmNl
c0FkZGl0aW9ucy5tYWtlCi0KIC5QSE9OWSA6IGFsbAogCiBhbGwgOiBcCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOCBAQCBTaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlCiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Lm1tCiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KIAorU2hhcmVk
L0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0KK1NoYXJlZC9BcHBsZVBh
eS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuY3BwCiBTaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5tbQogU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUlPUy5tbQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NDEsNiArNjQxLDcgQEAgZGVmIGhl
YWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRl
eHRJRCc6IFsnIkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5
ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlBh
eW1lbnRTZXR1cEZlYXR1cmVzJzogWyciQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oIidd
LAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9yJzogWyciR2VzdHVyZVR5
cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCc6IFsnIldlYkV2ZW50
LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQnOiBbJyJXZWJFdmVudC5o
IiddLApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50
U2V0dXBGZWF0dXJlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKK09CSkNfQ0xBU1MgUEtQYXlt
ZW50U2V0dXBGZWF0dXJlOworCisjaW5jbHVkZSA8V2ViQ29yZS9BcHBsZVBheVNldHVwRmVhdHVy
ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGF5bWVudFNldHVwRmVhdHVyZXMgeworcHVi
bGljOgorICAgIFBheW1lbnRTZXR1cEZlYXR1cmVzKFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBw
bGVQYXlTZXR1cEZlYXR1cmU+PiYmKTsKKyAgICBQYXltZW50U2V0dXBGZWF0dXJlcyhSZXRhaW5Q
dHI8TlNBcnJheT4mJiA9IG51bGxwdHIpOworCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7CisgICAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRTZXR1cEZlYXR1cmVzPiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJik7CisKKyAgICBOU0FycmF5ICpwbGF0Zm9ybUZlYXR1cmVzKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybUZlYXR1cmVzLmdldCgpOyB9CisgICAgb3BlcmF0b3IgVmVj
dG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fcGxhdGZvcm1GZWF0dXJlczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VU
VVApCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRT
ZXR1cEZlYXR1cmVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0JKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgiCisKKyNp
ZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKworI2ltcG9ydCAiQXJndW1lbnRDb2RlcnND
b2NvYS5oIgorI2ltcG9ydCAiRGVjb2Rlci5oIgorI2ltcG9ydCAiRW5jb2Rlci5oIgorI2ltcG9y
dCA8V2ViQ29yZS9BcHBsZVBheVNldHVwRmVhdHVyZS5oPgorCisjaW1wb3J0IDxwYWwvY29jb2Ev
UGFzc0tpdFNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgTlNBcnJh
eTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4gKnRvUGxhdGZvcm1GZWF0dXJlcyhWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcykKK3sKKyAgICBO
U011dGFibGVBcnJheSAqcGxhdGZvcm1GZWF0dXJlcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdp
dGhDYXBhY2l0eTpmZWF0dXJlcy5zaXplKCldOworICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IGZl
YXR1cmVzKSB7CisgICAgICAgIGlmIChmZWF0dXJlKQorICAgICAgICAgICAgW3BsYXRmb3JtRmVh
dHVyZXMgYWRkT2JqZWN0OmZlYXR1cmUtPnBsYXRmb3JtRmVhdHVyZSgpXTsKKyAgICB9CisgICAg
cmV0dXJuIHBsYXRmb3JtRmVhdHVyZXM7Cit9CisKK1BheW1lbnRTZXR1cEZlYXR1cmVzOjpQYXlt
ZW50U2V0dXBGZWF0dXJlcyhWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlPj4mJiBmZWF0dXJlcykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IHRvUGxhdGZvcm1G
ZWF0dXJlcyhXVEZNb3ZlKGZlYXR1cmVzKSkgfQoreworfQorCitQYXltZW50U2V0dXBGZWF0dXJl
czo6UGF5bWVudFNldHVwRmVhdHVyZXMoUmV0YWluUHRyPE5TQXJyYXk+JiYgcGxhdGZvcm1GZWF0
dXJlcykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IFdURk1vdmUocGxhdGZvcm1GZWF0dXJl
cykgfQoreworfQorCit2b2lkIFBheW1lbnRTZXR1cEZlYXR1cmVzOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9wbGF0Zm9ybUZlYXR1cmVz
OworfQorCitPcHRpb25hbDxQYXltZW50U2V0dXBGZWF0dXJlcz4gUGF5bWVudFNldHVwRmVhdHVy
ZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RhdGljIE5TQXJyYXkg
KmFsbG93ZWRDbGFzc2VzOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBhdXRvIGFsbG93ZWQgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Ml0pOworICAg
ICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6W05TQXJyYXkgY2xhc3NdXTsKKyAgICAgICAgaWYgKGF1
dG8gcGtQYXltZW50U2V0dXBGZWF0dXJlQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVudFNldHVwRmVh
dHVyZUNsYXNzKCkpCisgICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0
dXBGZWF0dXJlQ2xhc3NdOworICAgICAgICBhbGxvd2VkQ2xhc3NlcyA9IFthbGxvd2VkIGNvcHld
OworICAgIH0pOworCisgICAgYXV0byBwbGF0Zm9ybUZlYXR1cmVzID0gSVBDOjpkZWNvZGU8TlNB
cnJheTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4+KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsK
KyAgICBpZiAoIXBsYXRmb3JtRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gUGF5bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKCpwbGF0Zm9ybUZl
YXR1cmVzKSB9OworfQorCitQYXltZW50U2V0dXBGZWF0dXJlczo6b3BlcmF0b3IgVmVjdG9yPFJl
ZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4gZmVhdHVyZXM7CisgICAgZmVhdHVy
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbbV9wbGF0Zm9ybUZlYXR1cmVzIGNvdW50XSk7Cisg
ICAgZm9yIChQS1BheW1lbnRTZXR1cEZlYXR1cmUgKnBsYXRmb3JtRmVhdHVyZSBpbiBtX3BsYXRm
b3JtRmVhdHVyZXMuZ2V0KCkpCisgICAgICAgIGZlYXR1cmVzLnVuY2hlY2tlZEFwcGVuZChXZWJD
b3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKHBsYXRmb3JtRmVhdHVyZSkpOworICAg
IHJldHVybiBmZWF0dXJlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisj
aW5jbHVkZSAiQXBwbGVQYXlTZXR1cC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIFBLUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbjsKKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2Rl
cjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24geworcHVibGljOgorICAgIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oKSA9IGRlZmF1
bHQ7CisgICAgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNldHVwOjpDb25maWd1cmF0aW9uJiwgY29uc3QgVVJMJik7CisKKyAgICB2b2lkIGVuY29kZShJ
UEM6OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbj4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworCisgICAgUEtQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
bmZpZ3VyYXRpb24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+JiYp
OworCisgICAgUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gbV9jb25maWd1
cmF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBIQVZFKFBB
U1NLSVRfUEFZTUVOVF9TRVRVUCkKKwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24u
aCIKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW1wb3J0ICJBcmd1bWVu
dENvZGVyc0NvY29hLmgiCisjaW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVyLmgi
CisjaW1wb3J0IDx3dGYvVVJMLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExp
bmsuaD4KKworQGludGVyZmFjZSBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gKFdlYktpdCkK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpzaWduZWRG
aWVsZHM7CitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgUmV0YWluUHRyPFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29yZUNvbmZpZ3VyYXRpb24s
IGNvbnN0IFVSTCYgdXJsKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVBBTDo6Z2V0
UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyNlbmRpZgorCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkluc3RhbmNlKCkgaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIHNldE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElk
ZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldE9yaWdpbmF0aW5nVVJMOnVybF07Cisg
ICAgW2NvbmZpZ3VyYXRpb24gc2V0UmVmZXJyZXJJZGVudGlmaWVyOmNvcmVDb25maWd1cmF0aW9u
LnJlZmVycmVySWRlbnRpZmllcl07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lO
CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0U2lnbmF0dXJlOmNvcmVDb25maWd1cmF0aW9uLnNpZ25h
dHVyZV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorCisgICAgaWYgKFtjb25m
aWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0U2lnbmVkRmllbGRzOild
KSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5ICpzaWduZWRGaWVsZHMgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmVkRmllbGRzLnNpemUo
KV07CisgICAgICAgIGZvciAoYXV0byYgc2lnbmVkRmllbGQgOiBjb3JlQ29uZmlndXJhdGlvbi5z
aWduZWRGaWVsZHMpCisgICAgICAgICAgICBbc2lnbmVkRmllbGRzIGFkZE9iamVjdDpzaWduZWRG
aWVsZF07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25lZEZpZWxkczpzaWduZWRGaWVs
ZHNdOworICAgIH0KKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCitQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYg
dXJsKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbiwgdXJsKSB9Cit7Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShj
b25maWd1cmF0aW9uKSB9Cit7Cit9CisKK3ZvaWQgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1f
Y29uZmlndXJhdGlvbjsKK30KKworT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4g
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBzdGF0aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Cisg
ICAgICAgIGF1dG8gYWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eToxXSk7CisgICAgICAgIGlmIChhdXRvIHBrUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbkNsYXNzID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcygp
KQorICAgICAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbkNsYXNzXTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxsb3dlZCBjb3B5XTsKKyAg
ICB9KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAgIGlmICghY29u
ZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29uZmlndXJhdGlvbikgfTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0QWRkaXRpb25zCisKKyNlbmRpZiAvLyBIQVZFKFBBU1NL
SVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNiBAQCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvCiAgICAgLCBtX2Nhbk1ha2VQYXltZW50
c1F1ZXVlIHsgV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FuTWFrZVBheW1l
bnRzIikgfQogewogICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNl
aXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKLSAgICBmaW5pc2hDb25zdHJ1Y3Rpb24oKnRoaXMpOwog
fQogCiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6fldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDEzIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYXlt
ZW50SGVhZGVycy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCi0jaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlBZGRpdGlvbnMuaD4KKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKK09C
SkNfQ0xBU1MgUEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcjsKK09CSkNfQ0xBU1MgVUlWaWV3
Q29udHJvbGxlcjsKICNlbmRpZgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTYwLDggKzYyLDE0IEBA
IE9CSkNfQ0xBU1MgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb24KIE9CSkNfQ0xBU1MgUEtQ
YXltZW50UmVxdWVzdDsKIE9CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKIAorI2lmIFBMQVRG
T1JNKElPUykKK09CSkNfQ0xBU1MgUEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcjsKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bjsKK2NsYXNzIFBheW1lbnRTZXR1cEZlYXR1cmVzOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBj
bGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQpAQCAtMTI0LDYgKzEzMiwxNCBAQCBwcml2
YXRlOgogICAgIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigpOwogICAgIHZvaWQgY2FuY2VsUGF5
bWVudFNlc3Npb24oKTsKIAorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorICAgIHZv
aWQgZ2V0U2V0dXBGZWF0dXJlcyhjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYpPiYmKTsKKyAg
ICB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
JiwgY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIGVuZEFwcGxlUGF5U2V0dXAoKTsKKyAgICB2b2lkIHBsYXRmb3Jt
QmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mLCBjb25z
dCBQYXltZW50U2V0dXBGZWF0dXJlcyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworICAgIHZvaWQgcGxhdGZvcm1FbmRBcHBsZVBheVNldHVwKCk7CisjZW5kaWYKKwogICAgIGJv
b2wgY2FuQmVnaW4oKSBjb25zdDsKICAgICBib29sIGNhbkNhbmNlbCgpIGNvbnN0OwogICAgIGJv
b2wgY2FuQ29tcGxldGVQYXltZW50KCkgY29uc3Q7CkBAIC0xOTEsMTIgKzIwNyw4IEBAIHByaXZh
dGU6CiAgICAgUmV0YWluUHRyPE5TV2luZG93PiBtX3NoZWV0V2luZG93OwogICAgIFJldGFpblB0
cjxOU09iamVjdD4gbV9zaGVldFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyOwogI2VuZGlmCi0gICAg
Ci0jaWYgZGVmaW5lZChXRUJQQVlNRU5UQ09PUkRJTkFUT1JQUk9YWV9BRERJVElPTlMpCi1XRUJQ
QVlNRU5UQ09PUkRJTkFUT1JQUk9YWV9BRERJVElPTlMKLSN1bmRlZiBXRUJQQVlNRU5UQ09PUkRJ
TkFUT1JQUk9YWV9BRERJVElPTlMKLSNlbHNlCi0gICAgdm9pZCBmaW5pc2hDb25zdHJ1Y3Rpb24o
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSB7IH0KKyNpZiBQTEFURk9STShJT1MpCisgICAg
V2Vha09iakNQdHI8UEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcj4gbV9wYXltZW50U2V0dXBW
aWV3Q29udHJvbGxlcjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSBOCiAgICAgQ29tcGxldGVQYXltZW50U2Vzc2lvbihPcHRpb25hbDxXZWJDb3Jl
OjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gcmVzdWx0KQogICAgIEFib3J0UGF5bWVudFNl
c3Npb24oKQogICAgIENhbmNlbFBheW1lbnRTZXNzaW9uKCkKKyNpZiBIQVZFKFBBU1NLSVRfUEFZ
TUVOVF9TRVRVUCkKKyAgICBHZXRTZXR1cEZlYXR1cmVzKFdlYktpdDo6UGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSAtPiAoV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJl
cyBmZWF0dXJlcykgQXN5bmMKKyAgICBCZWdpbkFwcGxlUGF5U2V0dXAoV2ViS2l0OjpQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFdlYktpdDo6UGF5bWVudFNldHVwRmVh
dHVyZXMgZmVhdHVyZXMpIC0+IChib29sIHJlc3VsdCkgQXN5bmMKKyAgICBFbmRBcHBsZVBheVNl
dHVwKCkKKyNlbmRpZgogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9j
b2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisK
KyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKKyNpbXBvcnQgIkRlY29kZXIuaCIKKyNp
bXBvcnQgIkVuY29kZXIuaCIKKyNpbXBvcnQgIlBhc3NLaXRTb2Z0TGlua0FkZGl0aW9ucy5oIgor
I2ltcG9ydCA8d3RmL1VSTC5oPgorCitAaW50ZXJmYWNlIFBLUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbiAoV2ViS2l0KQorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKnNpZ25lZEZpZWxkczsKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdEFkZGl0aW9ucyB7
CisKK3N0YXRpYyBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiB0b1BsYXRm
b3JtQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1cmF0
aW9uJiBjb3JlQ29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwpCit7CisjaWYgUExBVEZPUk0o
TUFDKQorICAgIGlmICghUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcygp
KQorICAgICAgICByZXR1cm4gbmlsOworI2VuZGlmCisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uSW5zdGFuY2Uo
KSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVyY2hhbnRJZGVudGlmaWVyOmNvcmVD
b25maWd1cmF0aW9uLm1lcmNoYW50SWRlbnRpZmllcl07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0
T3JpZ2luYXRpbmdVUkw6dXJsXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRSZWZlcnJlcklkZW50
aWZpZXI6Y29yZUNvbmZpZ3VyYXRpb24ucmVmZXJyZXJJZGVudGlmaWVyXTsKK0FMTE9XX05FV19B
UElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KKyAgICBbY29uZmlndXJhdGlvbiBzZXRTaWduYXR1cmU6
Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmF0dXJlXTsKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFS
RFNfRU5ECisKKyAgICBpZiAoW2NvbmZpZ3VyYXRpb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihzZXRTaWduZWRGaWVsZHM6KV0pIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkgKnNpZ25l
ZEZpZWxkcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjb3JlQ29uZmlndXJh
dGlvbi5zaWduZWRGaWVsZHMuc2l6ZSgpXTsKKyAgICAgICAgZm9yIChhdXRvJiBzaWduZWRGaWVs
ZCA6IGNvcmVDb25maWd1cmF0aW9uLnNpZ25lZEZpZWxkcykKKyAgICAgICAgICAgIFtzaWduZWRG
aWVsZHMgYWRkT2JqZWN0OnNpZ25lZEZpZWxkXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0
U2lnbmVkRmllbGRzOnNpZ25lZEZpZWxkc107CisgICAgfQorCisgICAgcmV0dXJuIGNvbmZpZ3Vy
YXRpb247Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwpCisgICAgOiBtX2NvbmZpZ3VyYXRpb24geyB0b1Bs
YXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCB1cmwpIH0KK3sKK30KKworUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihSZXRhaW5QdHI8
UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2Nv
bmZpZ3VyYXRpb24geyBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pIH0KK3sKK30KKwordm9pZCBQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgbV9jb25maWd1cmF0aW9uOworfQorCitPcHRpb25hbDxQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uPiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0YXRpYyBOU0FycmF5ICphbGxvd2VkQ2xh
c3NlczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgYXV0byBhbGxvd2VkID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjFdKTsKKyAgICAgICAgaWYgKGF1
dG8gcGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbkNsYXNzKCkpCisgICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6
cGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3NdOworICAgICAgICBhbGxvd2VkQ2xhc3Nl
cyA9IFthbGxvd2VkIGNvcHldOworICAgIH0pOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0g
SVBDOjpkZWNvZGU8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPihkZWNvZGVyLCBhbGxvd2Vk
Q2xhc3Nlcyk7CisgICAgaWYgKCFjb25maWd1cmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgcmV0dXJuIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24geyBXVEZNb3Zl
KCpjb25maWd1cmF0aW9uKSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXRBZGRpdGlvbnMK
KworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQpJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNiArMzcsMTcgQEAKICNpbXBvcnQg
PHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCi0jaW1wb3J0
IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+Ci0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2FBZGRpdGlvbnMubW0+Ci0jZWxzZQotbmFtZXNwYWNlIFdlYktpdCB7Ci1zdGF0aWMgdm9p
ZCBmaW5pc2hDcmVhdGluZyhQS1BheW1lbnRSZXF1ZXN0ICosIGNvbnN0IFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikgeyB9Ci19CisjaWYgSEFWRShQQVNTS0lUX1BBWU1F
TlRfU0VUVVApCisjaW1wb3J0ICJBUElVSUNsaWVudC5oIgorI2ltcG9ydCAiQXBwbGVQYXlQYXlt
ZW50U2V0dXBGZWF0dXJlcy5oIgorI2ltcG9ydCAiUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5o
IgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNlbmRpZgog
CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CisKIC8vIEZJWE1FOiBXZSBk
b24ndCBzdXBwb3J0IGFueSBwbGF0Zm9ybXMgd2l0aG91dCAtc2V0VGh1bWJuYWlsVVJMczosIHNv
IHRoaXMgY2FuIGJlIHJlbW92ZWQuCiBAaW50ZXJmYWNlIFBLUGF5bWVudFJlcXVlc3QgKCkKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5TVVJMICp0aHVtYm5haWxVUkw7CkBAIC02MSw2
ICs2MiwxOSBAQCBAaW50ZXJmYWNlIFBLUGF5bWVudFJlcXVlc3QgKFN0YWdpbmcpCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitzdGF0aWMgdm9pZCBmaW5pc2hDcmVhdGluZyhQS1BheW1lbnRSZXF1
ZXN0ICpwbGF0Zm9ybVJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0JiByZXF1ZXN0KQoreworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisg
ICAgaWYgKFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9
IHJlcXVlc3QuaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKCkucGxhdGZvcm1Db25maWd1cmF0aW9u
KCkpIHsKKyAgICAgICAgcGxhdGZvcm1SZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbiA9
IGNvbmZpZ3VyYXRpb247CisgICAgICAgIHBsYXRmb3JtUmVxdWVzdC5yZXF1ZXN0VHlwZSA9IFBL
UGF5bWVudFJlcXVlc3RUeXBlSW5zdGFsbG1lbnQ7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0ocGxhdGZvcm1SZXF1ZXN0KTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CisjZW5k
aWYKK30KKwogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtl
UGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMjc5LDYgKzI5MywxMDkg
QEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcgogICAgIG1fYXV0aG9y
aXphdGlvblByZXNlbnRlci0+Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHVwZGF0ZSk7
CiB9CiAKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKwordm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6Z2V0U2V0dXBGZWF0dXJlcyhjb25zdCBQYXltZW50U2V0dXBDb25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OkdldFNldHVwRmVhdHVyZXM6OkFzeW5jUmVwbHkmJiByZXBseSkKK3sKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgaWYgKCFQQUw6OmdldFBLUGF5bWVudFNldHVwQ29udHJvbGxlckNsYXNz
KCkpIHsKKyAgICAgICAgcmVwbHkoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgorCisgICAgYXV0byBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKFtyZXBseSA9IFdURk1vdmUo
cmVwbHkpXShOU0FycmF5PFBLUGF5bWVudFNldHVwRmVhdHVyZSAqPiAqZmVhdHVyZXMpIG11dGFi
bGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlcGx5ID0gV1RGTW92ZShy
ZXBseSksIGZlYXR1cmVzID0gcmV0YWluUHRyKGZlYXR1cmVzKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIHJlcGx5KFBheW1lbnRTZXR1cEZlYXR1cmVzIHsgV1RGTW92ZShmZWF0dXJlcykgfSk7
CisgICAgICAgIH0pOworICAgIH0pOworCitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JF
R0lOCisgICAgW1BBTDo6Z2V0UEtQYXltZW50U2V0dXBDb250cm9sbGVyQ2xhc3MoKSBwYXltZW50
U2V0dXBGZWF0dXJlc0ZvckNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5wbGF0Zm9ybUNvbmZp
Z3VyYXRpb24oKSBjb21wbGV0aW9uOmNvbXBsZXRpb24uZ2V0KCldOworQUxMT1dfTkVXX0FQSV9X
SVRIT1VUX0dVQVJEU19FTkQKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
YmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24sIGNvbnN0IFBheW1lbnRTZXR1cEZlYXR1cmVzJiBmZWF0dXJlcywgTWVzc2FnZXM6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpCZWdpbkFwcGxlUGF5U2V0dXA6OkFzeW5jUmVw
bHkmJiByZXBseSkKK3sKKyAgICBwbGF0Zm9ybUJlZ2luQXBwbGVQYXlTZXR1cChjb25maWd1cmF0
aW9uLCBmZWF0dXJlcywgV1RGTW92ZShyZXBseSkpOworfQorCit2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjplbmRBcHBsZVBheVNldHVwKCkKK3sKKyAgICBwbGF0Zm9ybUVuZEFwcGxl
UGF5U2V0dXAoKTsKK30KKworI2lmIFBMQVRGT1JNKE1BQykKKwordm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgUGF5bWVudFNldHVwRmVhdHVy
ZXMmIGZlYXR1cmVzLCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkJlZ2lu
QXBwbGVQYXlTZXR1cDo6QXN5bmNSZXBseSYmIHJlcGx5KQoreworICAgIGlmICghUEFMOjpnZXRQ
S1BheW1lbnRTZXR1cFJlcXVlc3RDbGFzcygpKSB7CisgICAgICAgIHJlcGx5KGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NQS1BheW1lbnRTZXR1cFJlcXVlc3RJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBbcmVxdWVz
dCBzZXRDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24ucGxhdGZvcm1Db25maWd1cmF0aW9uKCld
OworICAgIFtyZXF1ZXN0IHNldFBheW1lbnRTZXR1cEZlYXR1cmVzOmZlYXR1cmVzLnBsYXRmb3Jt
RmVhdHVyZXMoKV07CisKKyAgICBhdXRvIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoW3JlcGx5
ID0gV1RGTW92ZShyZXBseSldKEJPT0wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgc3VjY2Vzc10oKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIHJlcGx5KHN1Y2Nlc3MpOworICAgICAgICB9KTsKKyAgICB9
KTsKKworICAgIGF1dG8gcGF5bWVudFNldHVwQ29udHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NQS1BheW1lbnRTZXR1cENvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdKTsKKworQUxMT1dfTkVX
X0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgorICAgIFtwYXltZW50U2V0dXBDb250cm9sbGVyIHBy
ZXNlbnRQYXltZW50U2V0dXBSZXF1ZXN0OnJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbjpjb21wbGV0
aW9uLmdldCgpXTsKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECit9CisKK3ZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtRW5kQXBwbGVQYXlTZXR1cCgpCit7
Cit9CisKKyNlbHNlIC8vIFBMQVRGT1JNKE1BQykKKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMmIGZl
YXR1cmVzLCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkJlZ2luQXBwbGVQ
YXlTZXR1cDo6QXN5bmNSZXBseSYmIHJlcGx5KQoreworICAgIFVJVmlld0NvbnRyb2xsZXIgKnBy
ZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IG1fcGF5bWVudENvb3JkaW5hdG9yUHJveHkubV9jbGll
bnQucGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKG1fcGF5bWVudENv
b3JkaW5hdG9yUHJveHkpOworICAgIGlmICghcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKSB7Cisg
ICAgICAgIHJlcGx5KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
cmVxdWVzdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRTZXR1cFJlcXVlc3RJbnN0YW5j
ZSgpIGluaXRdKTsKKyAgICBbcmVxdWVzdCBzZXRDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
cGxhdGZvcm1Db25maWd1cmF0aW9uKCldOworICAgIFtyZXF1ZXN0IHNldFBheW1lbnRTZXR1cEZl
YXR1cmVzOmZlYXR1cmVzLnBsYXRmb3JtRmVhdHVyZXMoKV07CisKKyAgICBhdXRvIHBheW1lbnRT
ZXR1cFZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFNldHVwVmll
d0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFNldHVwUmVxdWVzdDpyZXF1ZXN0
LmdldCgpXSk7CisgICAgaWYgKCFwYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcikgeworICAgICAg
ICByZXBseShmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNvbXBs
ZXRpb24gPSBtYWtlQmxvY2tQdHIoW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKCkgbXV0YWJsZSB7
CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlcGx5KHRydWUpOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGVuZEFwcGxlUGF5U2V0dXAoKTsKKyAgICBbcHJlc2VudGluZ1ZpZXdDb250
cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjpwYXltZW50U2V0dXBWaWV3Q29udHJvbGxlci5n
ZXQoKSBhbmltYXRlZDpZRVMgY29tcGxldGlvbjpjb21wbGV0aW9uLmdldCgpXTsKKyAgICBtX3Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyID0gcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIuZ2V0
KCk7Cit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtRW5kQXBw
bGVQYXlTZXR1cCgpCit7CisgICAgW21fcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIgZGlzbWlz
c1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKKyAgICBtX3BheW1l
bnRTZXR1cFZpZXdDb250cm9sbGVyID0gbmlsOworfQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFD
KQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEsMTkgKzQx
LDU1IEBACiAjaW1wb3J0IDxVSUtpdC9VSUZvbnQuaD4KICNlbmRpZgogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYUFkZGl0aW9ucy5tbT4KLSNlbGlmIEVOQUJMRShBUFBMRV9QQVkpCiBuYW1lc3Bh
Y2UgSVBDIHsKLXN0YXRpYyBib29sIGZpbmlzaERlY29kaW5nKERlY29kZXImLCBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIHsgcmV0dXJuIHRydWU7IH0KLXN0YXRpYyB2
b2lkIGZpbmlzaEVuY29kaW5nKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdCYpIHsgfQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNpZiBF
TkFCTEUoQVBQTEVfUEFZKQorCitzdGF0aWMgYm9vbCBmaW5pc2hEZWNvZGluZyhEZWNvZGVyJiBk
ZWNvZGVyLCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCkK
K3sKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBPcHRpb25hbDxXZWJD
b3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBpbnN0YWxsbWVudENvbmZpZ3Vy
YXRpb247CisgICAgZGVjb2RlciA+PiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisgICAgaWYg
KCFpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJlcXVlc3Quc2V0SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFdURk1vdmUoKmluc3RhbGxtZW50
Q29uZmlndXJhdGlvbikpOworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOworICAgIHJldHVybiB0cnVl
OworI2VuZGlmCiB9CisKK3N0YXRpYyB2b2lkIGZpbmlzaEVuY29kaW5nKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0
KQoreworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGVuY29kZXIgPDwg
cmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGVuY29kZXIpOworICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKICNlbmRpZgorfQogCi1u
YW1lc3BhY2UgSVBDIHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworI2lmIEhBVkUoUEFTU0tJ
VF9JTlNUQUxMTUVOVFMpCiAKLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQordm9pZCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBlbmNvZGVyIDw8IGNvbmZpZ3VyYXRpb24ucGxh
dGZvcm1Db25maWd1cmF0aW9uKCk7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb24+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbj4oZGVjb2RlciwgUEFMOjpnZXRQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b25DbGFzcygpKTsKKyAgICBpZiAoIWNvbmZpZ3VyYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyBXVEZNb3ZlKCpjb25maWd1cmF0aW9uKSB9OworfQor
CisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKIAogdm9pZCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2Vi
Q29yZTo6UGF5bWVudCYgcGF5bWVudCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtNDAwMyw2ICs0MDAzLDEwIEBACiAJCTVDNDZDMEFEMjFCNzE5OEMwMEJDNTk5MSAvKiBXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzQ2QzBBRTIxQjcxQUUyMDBCQzU5OTEgLyogX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDNEI5RDhBMjEwQThDNDYwMDhGMTREMSAvKiBVbmRvT3JSZWRv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9PclJlZG8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDREQyNDQ2NUJGOTAwQTkzMTI0IC8qIEFwcGxl
UGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QzUzRENERTI0NDY1QkY5MDBBOTMxMjQgLyogUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNE
Q0RGMjQ0NjVCRjkwMEE5MzEyNCAvKiBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVy
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDRTAyNDQ2NUJGOTAwQTkz
MTI0IC8qIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVDRUMzODIyMDk1ODMyMDBENkJCQjAgLyogRGFlbW9u
RW50cnlQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYWVtb25FbnRy
eVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNUNFQzM5MjIwOTU4MzIw
MEQ2QkJCMCAvKiBEYWVtb25FbnRyeVBvaW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRGFlbW9uRW50cnlQb2ludC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM1RDIzODcyMjdBMTg5MTAwMEI5QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxk
c0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0N1c3RvbUhl
YWRlckZpZWxkc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjA5
LDYgKzYyMTMsMTAgQEAKIAkJCQkxQUIxRjc3NzFEMUIzMEE5MDA3QzlCRDEgLyogY29jb2EgKi8s
CiAJCQkJMUFCMUY3N0ExRDFCMzBBOTAwN0M5QkQxIC8qIGlvcyAqLywKIAkJCQkxQUIxRjc3QzFE
MUIzMEE5MDA3QzlCRDEgLyogbWFjICovLAorCQkJCTVDNTNEQ0RGMjQ0NjVCRjkwMEE5MzEyNCAv
KiBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmggKi8sCisJCQkJNUM1M0RDREQyNDQ2NUJG
OTAwQTkzMTI0IC8qIEFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0gKi8sCisJCQkJNUM1
M0RDREUyNDQ2NUJGOTAwQTkzMTI0IC8qIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaCAqLywK
KwkJCQk1QzUzRENFMDI0NDY1QkY5MDBBOTMxMjQgLyogUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bi5tbSAqLywKIAkJCQkxQUIxRjc4ODFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkuY3BwICovLAogCQkJCTFBQjFGNzg5MUQxQjMzNTUwMDdDOUJEMSAvKiBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5oICovLAogCQkJCTFBQjFGNzhBMUQxQjMzNTUwMDdDOUJE
MSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiAqLywKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3IuY3BwCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAorI2luY2x1ZGUg
IkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCisjaW5jbHVkZSAiUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJX
ZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oIgpAQCAtMjIwLDYgKzIyMiwyNSBAQCBib29s
IFdlYlBheW1lbnRDb29yZGluYXRvcjo6cmVtb3RlVUlFbmFiCiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShBUFBMRV9QQVlfU0VUVVApCisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpnZXRT
ZXR1cEZlYXR1cmVzKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6R2V0U2V0dXBGZWF0dXJlcyhQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uIHsgY29uZmlndXJhdGlvbiwgdXJsIH0pLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpiZWdpbkFwcGxlUGF5
U2V0dXAoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBwbGVQYXlT
ZXR1cEZlYXR1cmU+PiYmIGZlYXR1cmVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fd2ViUGFnZS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpCZWdpbkFwcGxlUGF5U2V0dXAo
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiB7IGNvbmZpZ3VyYXRpb24sIHVybCB9LCBQYXltZW50
U2V0dXBGZWF0dXJlcyB7IFdURk1vdmUoZmVhdHVyZXMpIH0pLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjplbmRBcHBsZVBheVNl
dHVwKCkKK3sKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OkVuZEFwcGxlUGF5U2V0dXAoKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQ
TEVfUEFZX1NFVFVQKQorCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSwxMiBAQCBwcml2
YXRlOgogCiAgICAgU3RyaW5nIHVzZXJBZ2VudFNjcmlwdHNCbG9ja2VkRXJyb3JNZXNzYWdlKCkg
Y29uc3QgZmluYWw7CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorICAgIHZvaWQgZ2V0
U2V0dXBGZWF0dXJlcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1cmF0aW9u
JiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVmPFdlYkNvcmU6
OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgYmVnaW5BcHBs
ZVBheVNldHVwKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBj
b25zdCBVUkwmLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCBlbmRB
cHBsZVBheVNldHVwKCkgZmluYWw7CisjZW5kaWYKKwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CiAKQEAgLTExMiwxMCArMTE4LDYgQEAgcHJpdmF0ZToKICAgICBX
ZWJQYWdlJiBtX3dlYlBhZ2U7CiAKICAgICBPcHRpb25hbDxBdmFpbGFibGVQYXltZW50TmV0d29y
a3NTZXQ+IG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzOwotCi0jaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQYXltZW50Q29vcmRpbmF0b3JB
ZGRpdGlvbnMuaD4KLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396495</attachid>
            <date>2020-04-14 20:56:36 -0700</date>
            <delta_ts>2020-04-14 21:42:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210521-20200414205635.patch</filename>
            <type>text/plain</type>
            <size>125971</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAyMC0wNC0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgQXBw
bGVQYXkgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0byBXZWJDb3JlIGFuZCBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDUyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgT25seSA0IG1pbm9yIG1v
ZGlmaWNhdGlvbnMgd2VyZSBuZWNlc3NhcnksIGFzIGZvbGxvd3M6CisKKyAgICAgICAgMS4gUGF5
bWVudFNldHVwRmVhdHVyZXMncyBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1
cmUgKj4+IHdhcyBjaGFuZ2VkIHRvIFJldGFpblB0cjxOU0FycmF5PiB0byB3b3JrIHdpdGggQysr
LgorICAgICAgICAyLiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucyBtZXNzYWdl
cyB3ZXJlIG1vdmVkIHRvIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LCByZW1vdmluZyB0aGUg
bmVlZCBmb3IKKyAgICAgICAgICAgdGhlIGV4dHJhIG1lc3NhZ2UgcmVjZWl2ZXIsIHRoZSBPcHRp
b25hbDxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucz4sIGFuZCB0aGUgZmluaXNo
Q29uc3RydWN0aW9uLgorICAgICAgICAzLiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCdzIG1h
Y3JvcyB0aGF0IGNvbGxpZGVkIHdpdGggb3RoZXIgbWFjcm9zIHdlcmUgcmVuYW1lZC4gIFRoaXMg
d2FzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIGRpZmZlcmVudCBzb3VyY2UgdW5pZmljYXRpb24uCisg
ICAgICAgIDQuIFBheW1lbnRTZXR1cEZlYXR1cmVzLmggd2FzIHJlbmFtZWQgdG8gQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5oIHRvIGJlIGFibGUgdG8gYnVpbGQgd2l0aCBQYXltZW50U2V0
dXBGZWF0dXJlcy5oIGluIHRoZSBTREsuCisKKyAgICAgICAgVGhlIHJlc3QgaXMganVzdCBjb3B5
IGFuZCBwYXN0ZS4KKworICAgICAgICBUaGVyZSBpc24ndCBhIGdvb2Qgd2F5IHRvIGxhbmQgdGhp
cyB3aXRob3V0IGJyZWFraW5nIHRoZSBidWlsZCB3aXRob3V0IHJlbW92aW5nIHRoZSBmaWxlcyBm
cm9tIFdlYktpdEFkZGl0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBzbyBJJ2xsIGRv
IHRoZSB0d28gYXQgdGhlIHNhbWUgdGltZSBsYXRlIGF0IG5pZ2h0IHRvIG5vdCBjYXVzZSBkaXNy
dXB0aW9uLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJl
c1N1cHBvcnRlZE5ldHdvcmtzKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5pc2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6aW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpzZXRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkRGlzY2xvc2VGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVw
OjpnZXRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OmJl
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsZVBheVNldHVwOjpzdXNwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2V0dXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGw6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpwbGF0Zm9ybUZlYXR1cmUg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0
dXJlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpzdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6c3VwcG9y
dHNJbnN0YWxsbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZl
YXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGw6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpiZWdpbkFwcGxlUGF5U2V0dXAp
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjplbmRBcHBsZVBh
eVNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
RGVjaW1hbE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUZlYXR1cmVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOjpQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmg6CisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5p
c2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRN
ZXRob2RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaENvbnZlcnRpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRH
cm91cElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVu
dFNlc3Npb25FcnJvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEVycm9y
KToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVx
dWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpyZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
dFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlz
bWlzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0Q2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2F0Y2hkb2dUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bWVyRmlyZWQpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dl
YkNvcmVBZGRpdGlvbnMubW06CisKIDIwMjAtMDQtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQZXJzaXN0ZW50Q29kZXJzIHNob3VsZCB1
c2UgbW9kZXJuIGRlY29kaW5nIHN5bnRheApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgSlNfQklORElOR19JRExTID0g
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb2RlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlMaW5lSXRlbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnQuaWRsIFwKQEAgLTExOCw2ICsxMTksOSBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVz
dEJhc2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bkVycm9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXAuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kLmlkbCBcCkBA
IC0xMjU1LDggKzEyNTksNiBAQCB2cGF0aCAlLmluICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9T
RUFSCiBBRERJVElPTkFMX0VWRU5UX05BTUVTID0KIEFERElUSU9OQUxfRVZFTlRfVEFSR0VUX0ZB
Q1RPUlkgPQogCi0taW5jbHVkZSBXZWJDb3JlRGVyaXZlZFNvdXJjZXNBZGRpdGlvbnMubWFrZQot
CiBKU19CSU5ESU5HX0lETFMgKz0gJChBRERJVElPTkFMX0JJTkRJTkdfSURMUykKIAogYWxsIDog
JChBRERJVElPTkFMX0JJTkRJTkdfSURMUzolLmlkbD1KUyUuaCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTkzLDYgKzU5Myw4IEBAIFdITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlS
ZXF1ZXN0QmFzZS5jcHAKKyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCisg
ICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQogICAgIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwCkBAIC02MDAsNiArNjAyLDcgQEAgV0hM
U0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmNwcAorICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbi5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0
b3IubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcAogCkBAIC02MTgs
NiArNjIxLDcgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5RXJyb3IuY3BwCiAgICAgSlNBcHBsZVBheUVycm9yQ29kZS5jcHAKICAgICBKU0FwcGxl
UGF5RXJyb3JDb250YWN0RmllbGQuY3BwCisgICAgSlNBcHBsZVBheUluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5jcHAKICAgICBKU0FwcGxlUGF5TGluZUl0ZW0uY3BwCiAgICAgSlNBcHBsZVBheU1l
cmNoYW50Q2FwYWJpbGl0eS5jcHAKICAgICBKU0FwcGxlUGF5TW9kaWZpZXIuY3BwCkBAIC02MzUs
NiArNjM5LDkgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5UmVxdWVzdEJhc2UuY3BwCiAgICAgSlNBcHBsZVBheVNlc3Npb24uY3BwCiAgICAgSlNB
cHBsZVBheVNlc3Npb25FcnJvci5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXAuY3BwCisgICAgSlNB
cHBsZVBheVNldHVwRmVhdHVyZS5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5j
cHAKICAgICBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAKICAgICBK
U0FwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLmNwcAogICAgIEpTQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFM
TE1FTlRTKQorCisjaW5jbHVkZSAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVh
dHVyZVR5cGUgZmVhdHVyZVR5cGUgeyBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlQ2Fy
ZCB9OworICAgIFN0cmluZyBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhOworICAgIFN0cmluZyBvcGVu
VG9CdXlUaHJlc2hvbGRBbW91bnQ7CisgICAgU3RyaW5nIGJpbmRpbmdUb3RhbEFtb3VudDsKKyAg
ICBTdHJpbmcgY3VycmVuY3lDb2RlOworICAgIFN0cmluZyBtZXJjaGFudElkZW50aWZpZXI7Cisg
ICAgU3RyaW5nIHJlZmVycmVySWRlbnRpZmllcjsKKyAgICBib29sIGlzSW5TdG9yZVB1cmNoYXNl
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50
Q29uZmlndXJhdGlvbi5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1B
UFBMRV9QQVlfSU5TVEFMTE1FTlRTLAorXSBkaWN0aW9uYXJ5IEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgZmVhdHVyZVR5cGUg
PSAiYXBwbGVDYXJkIjsKKyAgICBET01TdHJpbmcgbWVyY2hhbmRpc2luZ0ltYWdlRGF0YTsKKyAg
ICBET01TdHJpbmcgb3BlblRvQnV5VGhyZXNob2xkQW1vdW50OworICAgIERPTVN0cmluZyBiaW5k
aW5nVG90YWxBbW91bnQ7CisgICAgRE9NU3RyaW5nIGN1cnJlbmN5Q29kZTsKKyAgICBET01TdHJp
bmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgIERPTVN0cmluZyByZWZlcnJlcklkZW50aWZpZXI7
CisgICAgYm9vbGVhbiBpc0luU3RvcmVQdXJjaGFzZTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmgJKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50Q29udGFjdC5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudE1ldGhvZC5oIgogCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBw
bGVQYXlQYXltZW50QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50IHsKQEAgLTQ2LDExICs0Miw3IEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnQgewogICAgIFRva2VuIHRva2VuOwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5
bWVudENvbnRhY3Q+IGJpbGxpbmdDb250YWN0OwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVu
dENvbnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsKLQotI2lmIGRlZmluZWQoQVBQTEVQQVlQQVlNRU5U
X0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBB
WU1FTlRfQURESVRJT05TCi0jZW5kaWYKKyAgICBTdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICByZXF1aXJlZCBBcHBsZVBheVBheW1lbnRUb2tl
biB0b2tlbjsKICAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IGJpbGxpbmdDb250YWN0OwogICAg
IEFwcGxlUGF5UGF5bWVudENvbnRhY3Qgc2hpcHBpbmdDb250YWN0OworICAgIFtDb25kaXRpb25h
bD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSBET01TdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiBbCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmgJKHJldmlzaW9uIDI1OTkyMikK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50UGFzcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50
TWV0aG9kQWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVt
IGNsYXNzIEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGU7CkBAIC00NiwxMSArNDIsNyBAQCBzdHJ1
Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kIHsgICAgCiAgICAgT3B0aW9uYWw8VHlwZT4gdHlwZTsK
ICAgICBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRQYXNzPiBwYXltZW50UGFzczsKICAgICBPcHRp
b25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKLQotI2lmIGRlZmlu
ZWQoQVBQTEVQQVlQQVlNRU5UTUVUSE9EX0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVE1FVEhP
RF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBBWU1FTlRNRVRIT0RfQURESVRJT05TCi0jZW5k
aWYKKyAgICBTdHJpbmcgYmluZFRva2VuOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlk
bAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRNZXRob2QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0ICszMyw1IEBA
CiAgICAgQXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZSB0eXBlOwogICAgIEFwcGxlUGF5UGF5bWVu
dFBhc3MgcGF5bWVudFBhc3M7CiAgICAgQXBwbGVQYXlQYXltZW50Q29udGFjdCBiaWxsaW5nQ29u
dGFjdDsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gRE9NU3RyaW5n
IGJpbmRUb2tlbjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSwxMiBAQAogCiAj
aW5jbHVkZSAiQXBwbGVQYXlMaW5lSXRlbS5oIgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRl
QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICBBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFs
OwogICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXM7Ci0KLSNpZiBkZWZp
bmVkKEFQUExFUEFZUEFZTUVOVE1FVEhPRFVQREFURV9BRERJVElPTlMpCi1BUFBMRVBBWVBBWU1F
TlRNRVRIT0RVUERBVEVfQURESVRJT05TCi0jdW5kZWYgQVBQTEVQQVlQQVlNRU5UTUVUSE9EVVBE
QVRFX0FERElUSU9OUwotI2VuZGlmCisgICAgU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlm
aWVyOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbAkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw0ICsyOCw1IEBACiBd
IGRpY3Rpb25hcnkgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICByZXF1aXJlZCBB
cHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsOwogICAgIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+
IG5ld0xpbmVJdGVtczsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10g
RE9NU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlmaWVyOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNl
LmNwcAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVJlcXVlc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI5
IEBACiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVJlcXVlc3RCYXNlQWRkaXRpb25z
LmNwcD4KLSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgdm9pZCBmaW5pc2hDb252
ZXJ0aW5nKEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQXBwbGVQYXlSZXF1ZXN0QmFz
ZSYpIHsgfQotc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1bnNpZ25lZCwg
Y29uc3QgQXBwbGVQYXlSZXF1ZXN0QmFzZSYpIHsgcmV0dXJuIHRydWU7IH0KLX0KKworc3RhdGlj
IHZvaWQgZmluaXNoQ29udmVydGluZyhBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVz
dWx0LCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9Q
QVlfSU5TVEFMTE1FTlRTKQorICAgIGlmIChyZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlv
bikKKyAgICAgICAgcmVzdWx0LnNldEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihXVEZNb3ZlKCpy
ZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAjZW5kaWYKK30KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1
bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIHJldHVybiB2ZXJzaW9uIDwg
OCB8fCAhcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTSh2ZXJzaW9uKTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CisgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKK30KIAogc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiBj
b252ZXJ0QW5kVmFsaWRhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCB2ZXJzaW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkTmV0d29ya3MsIGNvbnN0IFBheW1lbnRDb29y
ZGluYXRvciYgcGF5bWVudENvb3JkaW5hdG9yKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1
ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMTAgQEAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiQXBwbGVQYXlDb250YWN0RmllbGQuaCIKKyNpbmNsdWRl
ICJBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFwcGxlUGF5
TWVyY2hhbnRDYXBhYmlsaXR5LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50Q29udGFjdC5o
IgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlv
bnMvQXBwbGVQYXlSZXF1ZXN0QmFzZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC01NCw5ICs1MSw4IEBAIHN0cnVjdCBBcHBs
ZVBheVJlcXVlc3RCYXNlIHsKICAgICBTdHJpbmcgYXBwbGljYXRpb25EYXRhOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHN1cHBvcnRlZENvdW50cmllczsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlSRVFV
RVNUQkFTRV9BRERJVElPTlMpCi1BUFBMRVBBWVJFUVVFU1RCQVNFX0FERElUSU9OUwotI3VuZGVm
IEFQUExFUEFZUkVRVUVTVEJBU0VfQURESVRJT05TCisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNU
QUxMTUVOVFMpCisgICAgT3B0aW9uYWw8QXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNSArNjUsMTcgQEAKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBs
ZVBheVNlc3Npb25BZGRpdGlvbnMuY3BwPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0
YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUGF5bWVudE1ldGhvZFVwZGF0ZSYsIEFwcGxlUGF5
UGF5bWVudE1ldGhvZFVwZGF0ZSYmKSB7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBheW1lbnRNZXRob2RVcGRhdGUmIGNv
bnZlcnRlZFVwZGF0ZSwgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlJiYgdXBkYXRlKQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGNvbnZlcnRlZFVwZGF0ZS5z
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcih1cGRhdGUuaW5zdGFsbG1lbnRHcm91cElkZW50
aWZpZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udmVydGVkVXBkYXRlKTsKKyAgICBV
TlVTRURfUEFSQU0odXBkYXRlKTsKKyNlbmRpZgorfQogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXBwbGVQYXlTZXNzaW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
NCArMjgsMTEgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiUGF5bWVudENv
bnRhY3QuaCIKKyNpbmNsdWRlICJQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
LSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3RB
ZGRpdGlvbnMuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CkBAIC0xNDEsOSArMTM4LDkgQEAgcHVibGljOgog
ICAgIFJlcXVlc3RlciByZXF1ZXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQog
ICAgIHZvaWQgc2V0UmVxdWVzdGVyKFJlcXVlc3RlciByZXF1ZXN0ZXIpIHsgbV9yZXF1ZXN0ZXIg
PSByZXF1ZXN0ZXI7IH0KIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNTSU9OUEFZTUVOVFJFUVVF
U1RfUFVCTElDX0FERElUSU9OUykKLUFQUExFUEFZU0VTU0lPTlBBWU1FTlRSRVFVRVNUX1BVQkxJ
Q19BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVNFU1NJT05QQVlNRU5UUkVRVUVTVF9QVUJMSUNf
QURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICBjb25zdCBQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uJiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2luc3RhbGxtZW50Q29uZmlndXJhdGlvbjsgfQorICAgIHZvaWQgc2V0
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24m
JiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pIHsgbV9pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24g
PSBXVEZNb3ZlKGluc3RhbGxtZW50Q29uZmlndXJhdGlvbik7IH0KICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtMTcyLDkgKzE2OSw4IEBAIHByaXZhdGU6CiAKICAgICBSZXF1ZXN0ZXIgbV9yZXF1ZXN0
ZXIgeyBSZXF1ZXN0ZXI6OkFwcGxlUGF5SlMgfTsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNT
SU9OUEFZTUVOVFJFUVVFU1RfUFJJVkFURV9BRERJVElPTlMpCi1BUFBMRVBBWVNFU1NJT05QQVlN
RU5UUkVRVUVTVF9QUklWQVRFX0FERElUSU9OUwotI3VuZGVmIEFQUExFUEFZU0VTU0lPTlBBWU1F
TlRSRVFVRVNUX1BSSVZBVEVfQURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5U
UykKKyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIG1faW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBcHBsZVBheVNldHVwLmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQor
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiUGF5bWVudFNlc3Npb24uaCIKKyNpbmNsdWRlICJQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgYm9vbCBzaG91bGREaXNjbG9zZUZlYXR1cmVzKERvY3VtZW50JiBkb2N1bWVudCkKK3sK
KyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpOworICAgIGlmICghcGFnZSB8fCBwYWdl
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gZG9jdW1lbnQuc2V0dGluZ3MoKS5hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxs
b3dlZCgpOworfQorCit2b2lkIEFwcGxlUGF5U2V0dXA6OmdldFNldHVwRmVhdHVyZXMoRG9jdW1l
bnQmIGRvY3VtZW50LCBTZXR1cEZlYXR1cmVzUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgYXV0
byBjYW5DYWxsID0gUGF5bWVudFNlc3Npb246OmNhbkNyZWF0ZVNlc3Npb24oZG9jdW1lbnQpOwor
ICAgIGlmIChjYW5DYWxsLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2Uuc2V0dGxl
KGNhbkNhbGwucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkgewor
ICAgICAgICBwcm9taXNlLnNldHRsZShFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJlc29sdmUgd2l0aCBhbiBlbXB0eSBz
ZXF1ZW5jZSBvZiBmZWF0dXJlcyBpZiBBcHBsZSBQYXkgY2FwYWJpbGl0eSBkaXNjbG9zdXJlIGlz
IG5vdCBhbGxvd2VkLgorICAgIGlmICghc2hvdWxkRGlzY2xvc2VGZWF0dXJlcyhkb2N1bWVudCkp
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX3NldHVwRmVhdHVyZXNQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKworICAg
IHBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLmNsaWVudCgpLmdldFNldHVwRmVhdHVyZXMobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShWZWN0b3I8UmVmPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4mJiBzZXR1cEZlYXR1cmVzKSB7CisgICAgICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3NldHVwRmVhdHVyZXNQcm9taXNlLCBXVEY6
Om51bGxvcHQpLT5zZXR0bGUoV1RGTW92ZShzZXR1cEZlYXR1cmVzKSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgQXBwbGVQYXlTZXR1cDo6YmVnaW4oRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0b3I8UmVm
UHRyPEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcywgQmVnaW5Qcm9taXNlJiYgcHJv
bWlzZSkKK3sKKyAgICBhdXRvIGNhbkNhbGwgPSBQYXltZW50U2Vzc2lvbjo6Y2FuQ3JlYXRlU2Vz
c2lvbihkb2N1bWVudCk7CisgICAgaWYgKGNhbkNhbGwuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoY2FuQ2FsbC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yLCAiTXVzdCBjYWxsIEFwcGxlUGF5U2V0dXAuYmVnaW4gZnJvbSBhIHVz
ZXIgZ2VzdHVyZSBoYW5kbGVyLiIgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIHBy
b21pc2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fYmVnaW5Qcm9taXNlKSB7CisgICAgICAgIHByb21p
c2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9iZWdpblByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAg
IG1fcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7CisKKyAgICBw
YWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5iZWdpbkFwcGxlUGF5U2V0dXAobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgV1RGTW92ZShmZWF0dXJlcyksIFt0aGlzXShi
b29sIHJlc3VsdCkgeworICAgICAgICBpZiAobV9iZWdpblByb21pc2UpCisgICAgICAgICAgICBz
dGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUocmVzdWx0
KTsKKyAgICB9KTsKK30KKworQXBwbGVQYXlTZXR1cDo6QXBwbGVQYXlTZXR1cChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQoreworICAgIHN1c3BlbmRJZk5lZWRlZCgpOworfQorCit2b2lk
IEFwcGxlUGF5U2V0dXA6OnN0b3AoKQoreworICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UsIFdURjo6bnVs
bG9wdCktPnNldHRsZShFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworCisgICAgaWYgKG1fYmVn
aW5Qcm9taXNlKQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51
bGxvcHQpLT5zZXR0bGUoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKKworICAgIGlmIChhdXRv
IHBhZ2UgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucGFn
ZSgpKQorICAgICAgICBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5lbmRBcHBs
ZVBheVNldHVwKCk7CisKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgQXBwbGVQYXlTZXR1cDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIHN0
b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQ
UExFX1BBWV9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXR1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTZXR1cC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VU
VVApCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2ZURPTU9iamVjdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSlNET01Qcm9taXNlRGVmZXJyZWQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEFwcGxlUGF5U2V0dXBGZWF0dXJlOworY2xhc3MgRGVmZXJyZWRQcm9taXNlOworY2xhc3MgRG9j
dW1lbnQ7CisKK2NsYXNzIEFwcGxlUGF5U2V0dXAgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBw
dWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwPiB7CitwdWJsaWM6CisgICAgc3RydWN0IENv
bmZpZ3VyYXRpb24geworICAgICAgICBTdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgICAg
ICBTdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgc2lnbmF0dXJlOwor
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBzaWduZWRGaWVsZHM7CisgICAgfTsKKworICAgIHN0YXRp
YyBSZWY8QXBwbGVQYXlTZXR1cD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXBwbGVQYXlTZXR1cChjb250ZXh0LCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKSk7CisgICAgfQorCisgICAgdXNpbmcgU2V0dXBGZWF0dXJlc1Byb21pc2UgPSBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4+OworICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhEb2N1bWVudCYsIFNldHVwRmVhdHVyZXNQ
cm9taXNlJiYpOworCisgICAgdXNpbmcgQmVnaW5Qcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4+OworICAgIHZvaWQgYmVnaW4oRG9jdW1lbnQmLCBWZWN0b3I8UmVmUHRyPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4mJiwgQmVnaW5Qcm9taXNlJiYpOworCitwcml2YXRlOgorICAg
IEFwcGxlUGF5U2V0dXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENvbmZpZ3VyYXRpb24mJik7
CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkFwcGxlUGF5U2V0dXAiOyB9CisgICAgdm9p
ZCBzdG9wKCkgZmluYWw7CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZp
bmFsOworCisgICAgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgT3B0aW9uYWw8
U2V0dXBGZWF0dXJlc1Byb21pc2U+IG1fc2V0dXBGZWF0dXJlc1Byb21pc2U7CisgICAgT3B0aW9u
YWw8QmVnaW5Qcm9taXNlPiBtX2JlZ2luUHJvbWlzZTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2
aXR5PEFwcGxlUGF5U2V0dXA+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGwJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNldHVwLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKK10gZGljdGlvbmFyeSBBcHBsZVBh
eVNldHVwQ29uZmlndXJhdGlvbiB7CisgICAgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsK
KyAgICBET01TdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgIERPTVN0cmluZyBzaWduYXR1
cmU7CisgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBzaWduZWRGaWVsZHM7Cit9OworCitbCisgICAg
QWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKKyAgICBD
b25zdHJ1Y3RvcihBcHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSwKKyAg
ICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgRW5hYmxl
ZEJ5U2V0dGluZz1BcHBsZVBheSwKKyAgICBTZWN1cmVDb250ZXh0LAorXSBpbnRlcmZhY2UgQXBw
bGVQYXlTZXR1cCB7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNlPHNlcXVlbmNlPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4gZ2V0U2V0dXBGZWF0dXJlcygpOworICAgIFtDYWxsV2l0aD1E
b2N1bWVudF0gUHJvbWlzZTxib29sZWFuPiBiZWdpbihzZXF1ZW5jZTxBcHBsZVBheVNldHVwRmVh
dHVyZT4gc2V0dXBGZWF0dXJlcyk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1Mg
UEtQYXltZW50U2V0dXBGZWF0dXJlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xh
c3MgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIDogdWludDhfdDsKKworY2xhc3MgQXBwbGVQYXlT
ZXR1cEZlYXR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwRmVhdHVyZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+IGNyZWF0ZShQS1Bh
eW1lbnRTZXR1cEZlYXR1cmUgKmZlYXR1cmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBcHBsZVBheVNldHVwRmVhdHVyZShmZWF0dXJlKSk7CisgICAgfQorCisgICAgQXBw
bGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGUoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgU3Rh
dGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5zdXBwb3J0ZWQsCisgICAgICAgIFN1cHBvcnRlZCwK
KyAgICAgICAgU3VwcGxlbWVudGFyeVN1cHBvcnRlZCwKKyAgICAgICAgQ29tcGxldGVkLAorICAg
IH07CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKKworICAgIFBLUGF5bWVudFNldHVwRmVhdHVy
ZSAqcGxhdGZvcm1GZWF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlLmdldCgpOyB9CisK
KyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBib29sIHN1cHBvcnRzSW5z
dGFsbG1lbnRzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBBcHBsZVBheVNldHVwRmVhdHVyZShQS1BheW1lbnRTZXR1cEZlYXR1cmUgKik7
CisKKyAgICBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBGZWF0dXJlPiBtX2ZlYXR1cmU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1NF
VFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFs
PUFQUExFX1BBWV9TRVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVN0YXRlIHsKKyAg
ICAidW5zdXBwb3J0ZWQiLAorICAgICJzdXBwb3J0ZWQiLAorICAgICJzdXBwbGVtZW50YXJ5U3Vw
cG9ydGVkIiwKKyAgICAiY29tcGxldGVkIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPUFQUExF
X1BBWV9TRVRVUCwKKyAgICBFbmFibGVkQnlTZXR0aW5nPUFwcGxlUGF5LAorICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCisgICAgU2VjdXJlQ29udGV4dCwKK10gaW50ZXJmYWNlIEFwcGxl
UGF5U2V0dXBGZWF0dXJlIHsKKyAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1
dGUgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGU7CisgICAgW0NhY2hlZEF0dHJpYnV0ZV0g
cmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5U2V0dXBGZWF0dXJlU3RhdGUgc3RhdGU7CisgICAg
W0NhY2hlZEF0dHJpYnV0ZSwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNJbnN0YWxsbWVudHM7Cit9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXBGZWF0dXJlLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBcHBs
ZVBheVNldHVwRmVhdHVyZS5oIgorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworI2lt
cG9ydCAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW1wb3J0ICJQYXNzS2l0U1BJQWRk
aXRpb25zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlIEFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0eXBlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKFtt
X2ZlYXR1cmUgdHlwZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVR5cGVBcHBs
ZVBheToKKyAgICAgICAgcmV0dXJuIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZTo6QXBwbGVQYXk7
CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQYXlfWDoKKyAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIHJldHVybiBBcHBsZVBheVNldHVwRmVhdHVy
ZVR5cGU6OkFwcGxlQ2FyZDsKKyAgICB9Cit9CisKK0FwcGxlUGF5U2V0dXBGZWF0dXJlOjpTdGF0
ZSBBcHBsZVBheVNldHVwRmVhdHVyZTo6c3RhdGUoKSBjb25zdAoreworICAgIHN3aXRjaCAoW21f
ZmVhdHVyZSBzdGF0ZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlVW5z
dXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6VW5zdXBwb3J0ZWQ7CisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBvcnRlZDoKKyAgICAgICAgcmV0dXJuIFN0YXRl
OjpTdXBwb3J0ZWQ7CisgICAgY2FzZSBQS1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBsZW1l
bnRhcnlTdXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6U3VwcGxlbWVudGFyeVN1cHBv
cnRlZDsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlQ29tcGxldGVkOgorICAg
ICAgICByZXR1cm4gU3RhdGU6OkNvbXBsZXRlZDsKKyAgICB9Cit9CisKKyNpZiBFTkFCTEUoQVBQ
TEVfUEFZX0lOU1RBTExNRU5UUykKK2Jvb2wgQXBwbGVQYXlTZXR1cEZlYXR1cmU6OnN1cHBvcnRz
SW5zdGFsbG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fZmVhdHVyZSBzdXBwb3J0ZWRP
cHRpb25zXSAmIFBLUGF5bWVudFNldHVwRmVhdHVyZVN1cHBvcnRlZE9wdGlvbnNJbnN0YWxsbWVu
dHM7Cit9CisjZW5kaWYKKworQXBwbGVQYXlTZXR1cEZlYXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlKFBLUGF5bWVudFNldHVwRmVhdHVyZSAqZmVhdHVyZSkKKyAgICA6IG1fZmVhdHVyZSB7IGZl
YXR1cmUgfQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoQVBQTEVfUEFZX1NFVFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1
cmVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitlbnVtIGNsYXNzIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZSA6IHVpbnQ4X3Qg
eworICAgIEFwcGxlUGF5LAorICAgIEFwcGxlQ2FyZCwKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZVR5cGUuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9T
RVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgeworICAgICJhcHBsZVBheSIs
CisgICAgImFwcGxlQ2FyZCIKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oIgorI2luY2x1ZGUgIkFwcGxlUGF5U2V0dXAuaCIKKyNpbmNsdWRlICJBcHBsZVBheVNldHVw
RmVhdHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BheW1lbnRDb29yZGlu
YXRvckNsaWVudEFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRG9jdW1lbnQ7CkBAIC03MSwxMyArNzAsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorICAgIHZpcnR1YWwgdm9pZCBnZXRTZXR1
cEZlYXR1cmVzKGNvbnN0IEFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBBcHBsZVBheVNldHVwOjpD
b25maWd1cmF0aW9uJiwgY29uc3QgVVJMJiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheVNldHVwRmVh
dHVyZT4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIGVuZEFw
cGxlUGF5U2V0dXAoKSB7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwotCi0jaWYgZGVmaW5lZChQQVlNRU5U
Q09PUkRJTkFUT1JDTElFTlRfQURESVRJT05TKQotUEFZTUVOVENPT1JESU5BVE9SQ0xJRU5UX0FE
RElUSU9OUwotI3VuZGVmIFBBWU1FTlRDT09SRElOQVRPUkNMSUVOVF9BRERJVElPTlMKLSNlbmRp
ZgogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBQS1BheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb247CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEFw
cGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBQYXltZW50SW5z
dGFsbG1lbnRDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OworICAgIFBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24oY29uc3QgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24mKTsK
KyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24+JiYpOworCisgICAgUEtQYXltZW50SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBSZXRhaW5QdHI8UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBtX2NvbmZp
Z3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RB
TExNRU5UUykKKworI2ltcG9ydCAiQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCIK
KyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0b0RlY2ltYWxOdW1iZXIoKSBpbiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLgorc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNp
bWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQoreworICAgIGlmICghYW1vdW50KQorICAg
ICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciB6ZXJvXTsKKyAgICByZXR1cm4gW05TRGVjaW1h
bE51bWJlciBkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzphbW91bnQgbG9jYWxlOkB7IE5TTG9jYWxl
RGVjaW1hbFNlcGFyYXRvciA6IEAiLiIgfV07Cit9CisKK3N0YXRpYyBQS1BheW1lbnRTZXR1cEZl
YXR1cmVUeXBlIHBsYXRmb3JtRmVhdHVyZVR5cGUoY29uc3QgQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlJiBmZWF0dXJlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVUeXBlKSB7CisgICAgY2Fz
ZSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlUGF5OgorICAgICAgICByZXR1cm4gUEtQ
YXltZW50U2V0dXBGZWF0dXJlVHlwZUFwcGxlUGF5OworICAgIGNhc2UgQXBwbGVQYXlTZXR1cEZl
YXR1cmVUeXBlOjpBcHBsZUNhcmQ6CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCisgICAgICAgIHJldHVybiBQS1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQ
YXlfWDsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgfQor
fQorCitzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4g
Y3JlYXRlUGxhdGZvcm1Db25maWd1cmF0aW9uKGNvbnN0IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uJiBjb3JlQ29uZmlndXJhdGlvbikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uSW5z
dGFuY2UoKSBpbml0XSk7CisKKyAgICBbY29uZmlndXJhdGlvbiBzZXRGZWF0dXJlOnBsYXRmb3Jt
RmVhdHVyZVR5cGUoY29yZUNvbmZpZ3VyYXRpb24uZmVhdHVyZVR5cGUpXTsKKworICAgIFtjb25m
aWd1cmF0aW9uIHNldEJpbmRpbmdUb3RhbEFtb3VudDp0b0RlY2ltYWxOdW1iZXIoY29yZUNvbmZp
Z3VyYXRpb24uYmluZGluZ1RvdGFsQW1vdW50KV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0Q3Vy
cmVuY3lDb2RlOmNvcmVDb25maWd1cmF0aW9uLmN1cnJlbmN5Q29kZV07CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0SW5TdG9yZVB1cmNoYXNlOmNvcmVDb25maWd1cmF0aW9uLmlzSW5TdG9yZVB1cmNo
YXNlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRPcGVuVG9CdXlUaHJlc2hvbGRBbW91bnQ6dG9E
ZWNpbWFsTnVtYmVyKGNvcmVDb25maWd1cmF0aW9uLm9wZW5Ub0J1eVRocmVzaG9sZEFtb3VudCld
OworCisgICAgYXV0byBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmNvcmVDb25maWd1cmF0aW9uLm1lcmNo
YW5kaXNpbmdJbWFnZURhdGEgb3B0aW9uczowXSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVy
Y2hhbmRpc2luZ0ltYWdlRGF0YTptZXJjaGFuZGlzaW5nSW1hZ2VEYXRhLmdldCgpXTsKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVF9JREVOVElGSUVSUykKKyNpZiBQTEFURk9STShNQUMp
CisgICAgaWYgKCFbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dEluc3RhbGxtZW50TWVyY2hhbnRJZGVudGlmaWVyOildIHx8ICFbY29uZmlndXJhdGlvbiByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFJlZmVycmVySWRlbnRpZmllcjopXSkKKyAgICAg
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisjZW5kaWYKKyAgICBbY29uZmlndXJhdGlvbiBzZXRJ
bnN0YWxsbWVudE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElk
ZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldFJlZmVycmVySWRlbnRpZmllcjpjb3Jl
Q29uZmlndXJhdGlvbi5yZWZlcnJlcklkZW50aWZpZXJdOworI2VuZGlmCisKKyAgICByZXR1cm4g
Y29uZmlndXJhdGlvbjsKK30KKworUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjo6UGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihjb25zdCBBcHBsZVBheUluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IGNyZWF0
ZVBsYXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSB9Cit7Cit9CisKK1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb246OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24o
UmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0
aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShjb25maWd1cmF0aW9uKSB9Cit7
Cit9CisKK1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiAqUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbjo6cGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgJ
KHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudE1ldGhvZFVwZGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsNiBAQAogI2lu
Y2x1ZGUgIkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvUGF5bWVudE1ldGhvZFVwZGF0ZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIE9C
SkNfQ0xBU1MgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTUwLDExICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVG90YWxB
bmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKCkgY29uc3Q7CiAgICAgUEtQYXltZW50UmVx
dWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnBsYXRmb3JtVXBkYXRlKCkgY29uc3Q7CiAKLSNpZiBk
ZWZpbmVkKFBBWU1FTlRNRVRIT0RVUERBVEVfUFVCTElDX0FERElUSU9OUykKLVBBWU1FTlRNRVRI
T0RVUERBVEVfUFVCTElDX0FERElUSU9OUwotI3VuZGVmIFBBWU1FTlRNRVRIT0RVUERBVEVfUFVC
TElDX0FERElUSU9OUworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisgICAgdm9pZCBz
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKICNlbmRpZgotICAg
IAorCiBwcml2YXRlOgogICAgIE9wdGlvbmFsPFRvdGFsQW5kTGluZUl0ZW1zPiBtX3RvdGFsQW5k
TGluZUl0ZW1zOwogICAgIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZT4gbV9wbGF0Zm9ybVVwZGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDE4IEBACiAjaW1wb3J0ICJQYXltZW50TWV0
aG9kLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudENvY29h
QWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyB2b2lkIGZp
bmlzaENvbnZlcnRpbmcoUEtQYXltZW50ICosIEFwcGxlUGF5UGF5bWVudCYpIHsgfQotfQotI2Vu
ZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmco
UEtQYXltZW50ICpwYXltZW50LCBBcHBsZVBheVBheW1lbnQmIHJlc3VsdCkKK3sKKyNpZiBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGlmIChOU1N0cmluZyAqaW5zdGFsbG1lbnRBdXRo
b3JpemF0aW9uVG9rZW4gPSBwYXltZW50Lmluc3RhbGxtZW50QXV0aG9yaXphdGlvblRva2VuKQor
ICAgICAgICByZXN1bHQuaW5zdGFsbG1lbnRBdXRob3JpemF0aW9uVG9rZW4gPSBpbnN0YWxsbWVu
dEF1dGhvcml6YXRpb25Ub2tlbjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBheW1lbnQpOwor
ICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOworI2VuZGlmCit9CiAKIHN0YXRpYyBBcHBsZVBheVBh
eW1lbnQ6OlRva2VuIGNvbnZlcnQoUEtQYXltZW50VG9rZW4gKnBheW1lbnRUb2tlbikKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1ldGhvZENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDE4IEBACiAjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRNZXRo
b2RUeXBlLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudE1l
dGhvZENvY29hQWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRp
YyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICosIEFwcGxlUGF5UGF5bWVu
dE1ldGhvZCYpIHsgfQotfQotI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2
b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICpwYXltZW50TWV0aG9kLCBBcHBs
ZVBheVBheW1lbnRNZXRob2QmIHJlc3VsdCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1F
TlRTKQorICAgIGlmIChOU1N0cmluZyAqYmluZFRva2VuID0gcGF5bWVudE1ldGhvZC5iaW5kVG9r
ZW4pCisgICAgICAgIHJlc3VsdC5iaW5kVG9rZW4gPSBiaW5kVG9rZW47CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShwYXltZW50TWV0aG9kKTsKKyAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKKyNl
bmRpZgorfQogCiBzdGF0aWMgQXBwbGVQYXlQYXltZW50UGFzczo6QWN0aXZhdGlvblN0YXRlIGNv
bnZlcnQoUEtQYXltZW50UGFzc0FjdGl2YXRpb25TdGF0ZSBwYXltZW50UGFzc0FjdGl2YXRpb25T
dGF0ZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRNZXRob2RVcGRhdGVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksMTMgQEAg
UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKlBheQogICAgIHJldHVybiBtX3Bs
YXRmb3JtVXBkYXRlLmdldCgpOwogfQogCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K3ZvaWQgUGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcikKK3sKKyAgICBbbV9wbGF0
Zm9ybVVwZGF0ZSBzZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcjppbnN0YWxsbWVudEdyb3Vw
SWRlbnRpZmllcl07Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNv
Y29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTUgKzMxLDI3IEBACiAjaW1wb3J0ICJBcHBsZVBheVNlc3Npb25FcnJvci5oIgogI2ltcG9y
dCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2FB
ZGRpdGlvbnMubW0+Ci0jZWxzZQogbmFtZXNwYWNlIFdlYkNvcmUgewotc3RhdGljIE9wdGlvbmFs
PEFwcGxlUGF5U2Vzc2lvbkVycm9yPiBhZGRpdGlvbmFsRXJyb3IoTlNFcnJvciAqKSB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CitzdGF0
aWMgT3B0aW9uYWw8QXBwbGVQYXlTZXNzaW9uRXJyb3I+IGFkZGl0aW9uYWxFcnJvcihOU0Vycm9y
ICplcnJvcikKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIC8vIEZJWE1F
OiBSZXBsYWNlIHdpdGggUEtQYXltZW50RXJyb3JCaW5kVG9rZW5Vc2VySW5mb0tleSBhbmQKKyAg
ICAvLyBQS1BheW1lbnRBdXRob3JpemF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3Igd2hlbiB0
aGV5J3JlIGF2YWlsYWJsZSBpbiBhbiBTREsuCisgICAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
YmluZFRva2VuS2V5ID0gQCJQS1BheW1lbnRFcnJvckJpbmRUb2tlbiI7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBOU0ludGVnZXIgcGtQYXltZW50QXV0aG9yaXphdGlvbkZlYXR1cmVBcHBsaWNhdGlv
bkVycm9yID0gLTIwMTY7CisKKyAgICBpZiAoZXJyb3IuY29kZSAhPSBwa1BheW1lbnRBdXRob3Jp
emF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3IpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBpZCBiaW5kVG9rZW5WYWx1ZSA9IGVycm9yLnVzZXJJbmZvW2JpbmRUb2tlbktl
eV07CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighYmluZFRv
a2VuVmFsdWUgfHwgW2JpbmRUb2tlblZhbHVlIGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3Nd
KTsKKyAgICByZXR1cm4gQXBwbGVQYXlTZXNzaW9uRXJyb3IgeyAiZmVhdHVyZUFwcGxpY2F0aW9u
RXJyb3IiX3MsIHsgeyAiYmluZFRva2VuIl9zLCAoTlNTdHJpbmcgKiliaW5kVG9rZW5WYWx1ZSB9
IH0gfTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworI2VuZGlmCit9CiAKIFBheW1lbnRTZXNzaW9uRXJyb3I6OlBheW1lbnRTZXNzaW9u
RXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+JiYgZXJyb3IpCiAgICAgOiBtX3BsYXRmb3JtRXJyb3Ig
eyBXVEZNb3ZlKGVycm9yKSB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVJlcXVlc3Qu
aWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDQgKzI4LDUgQEAKIF0gZGljdGlvbmFyeSBBcHBsZVBheVJlcXVlc3QgOiBBcHBsZVBheVJlcXVl
c3RCYXNlIHsKICAgICByZXF1aXJlZCB1bnNpZ25lZCBsb25nIHZlcnNpb247CiAgICAgcmVxdWly
ZWQgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVf
UEFZX0lOU1RBTExNRU5UU10gQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gaW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyB0YXNrRGVs
YXlJbnRlcnZhbCB7IDEwMF9tcyB9OwogCi0jdW5kZWYgTE9HSURFTlRJRklFUgotI2RlZmluZSBM
T0dJREVOVElGSUVSIF9fZnVuY19fCi0KLSN1bmRlZiBBTFdBWVNfTE9HCi0jZGVmaW5lIEFMV0FZ
U19MT0cgbG9nZ2VyKCkubG9nQWx3YXlzCisjZGVmaW5lIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUiBsb2dnZXIoKS5sb2dBbHdheXMKIAogc3RydWN0IENsaWVudFN0YXRlIHsKICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjEsMTkgKzE1NywxOSBAQCB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpCiAgICAgaWYgKG1fbW9ja1BpY2tl
ckVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18pOwogICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOwogfQogCiB2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3Rh
dGUpCiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwogICAgIG1vY2tQaWNrZXIoKS5zZXRTdGF0ZShu
YW1lLCBzdGF0ZSk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQogewotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19f
KTsKICAgICBtb2NrUGlja2VyKCkuZGlzbWlzc1BvcHVwKCk7CiB9CiAKQEAgLTIwOCw3ICsyMDQs
NyBAQCB1aW50NjRfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5CiAgICAgaWYgKGlu
ZGV4ICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgY29udGV4dElkKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18sIGNvbnRleHRJZCk7CiAgICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQobWFrZVVu
aXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKIAogICAgIGlmIChtX2V4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJnZXQpCkBAIC0yMjQsNyAr
MjIwLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YgogICAgIGlm
IChpbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CisgICAgQUxXQVlTX0xP
R19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQo
KSk7CiAKICAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpbmRleCk7CiAgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRz
Q29uZmlndXJhdGlvblRhc2spOwpAQCAtMjM3LDcgKzIzMyw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGwKIAogICAgIGZvciAoc2l6ZV90IGkgPSBtX2NsaWVudFN0
YXRlLnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICBpZiAoJm1fY2xpZW50U3RhdGVbaSAt
IDFdLT5jbGllbnQgPT0gJmNsaWVudCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBtX2NsaWVudFN0YXRlW2kgLSAxXS5nZXQoKSk7CisgICAgICAgICAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaSAtIDFdLmdl
dCgpKTsKICAgICAgICAgICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGkgLSAxKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTI1Nyw3ICsyNTMsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNob3dQbGF5YmFjCiAgICAgICAgIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2VyID0g
c3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1BpY2tlcjsKICAgICB9CiAKLSAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsKKyAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdl
dCgpKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlUm91dGUgPSBmbGFnc0FyZVNldChtX2NsaWVudFN0
YXRlW2luZGV4XS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZp
Y2UpOwogICAgIHRhcmdldFBpY2tlcigpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihGbG9hdFJl
Y3QocmVjdCksIGhhc0FjdGl2ZVJvdXRlLCB1c2VEYXJrQXBwZWFyYW5jZSk7CkBAIC0yNzUsNyAr
MjcxLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjbGllbnRTdGF0ZQogICAgIGlm
IChuZXdGbGFncyA9PSBvbGRGbGFncykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSwgIm5ldyBmbGFncyA9
ICIsIG5ld0ZsYWdzKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3IGZsYWdzID0gIiwgbmV3RmxhZ3Mp
OwogCiAgICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFncyA9IG5ld0ZsYWdzOwogCkBAIC0yOTks
MjUgKzI5NSwyNSBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoZmxhZ3NBcmVTZXQoc3RhdGUtPmZs
YWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSAmJiBmbGFnc0Fy
ZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgewotICAg
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiByZXR1cm5p
bmcgZWFybHkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBEbyBub3QgYmVnaW4gcGxheWluZyB0
byB0aGUgZGV2aWNlIHVubGVzcyBwbGF5YmFjayBoYXMganVzdCBzdGFydGVkLgogICAgIGlmICgh
ZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSB8fCBm
bGFnc0FyZVNldChvbGRGbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7Ci0g
ICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBlYXJseSwgcGxheWJh
Y2sgZGlkbid0IGp1c3Qgc3RhcnQiKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCAicmV0dXJuaW5nIGVhcmx5LCBwbGF5YmFjayBkaWRuJ3QganVzdCBz
dGFydCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBzdGF0ZSA6
IG1fY2xpZW50U3RhdGUpIHsKICAgICAgICAgaWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
ZmFsc2UpIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
Xywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChm
YWxzZSkiKTsKICAgICAgICAgc3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNT
SU9OTUFOQUdFUihfX2Z1bmNfXywgY2hhbmdlZENsaWVudFN0YXRlLmdldCgpLCAiIGNhbGxpbmcg
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICBjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAKICAgICBpZiAoaW5kZXggJiYgbV9jbGllbnRTdGF0
ZS5zaXplKCkgPiAxKQpAQCAtMzI2LDcgKzMyMiw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6Y2xpZW50U3RhdGUKIAogdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFz
QWN0aXZlUm91dGUoKSk7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVu
Y19fLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFzQWN0aXZlUm91dGUoKSk7CiAg
ICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsKICAgICBtX3RhcmdldENoYW5n
ZWQgPSB0cnVlOwogICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0NvbmZpZ3Vy
YXRpb25UYXNrKTsKQEAgLTMzNCw3ICszMzAsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNldFBsYXliYWNrCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCBhdmFpbGFibGUpOworICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgYXZhaWxhYmxlKTsKICAgICBtX2V4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlID0gYXZhaWxhYmxlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2Ns
aWVudFN0YXRlKQogICAgICAgICBzdGF0ZS0+Y2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKHN0YXRlLT5jb250ZXh0SWQsIGF2YWlsYWJsZSk7CkBAIC0zNDIsNyAr
MzM4LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpleHRlcm5hbE91dAogCiB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2Vk
KCkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIEFMV0FZU19MT0dfTUVE
SUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbV9wbGF5YmFja1RhcmdldFBpY2tlckRp
c21pc3NlZCA9IHRydWU7CiAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhUYXJnZXRDbGllbnRzQ29u
ZmlndXJhdGlvblRhc2spOwogfQpAQCAtMzc1LDcgKzM3MSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2xp
ZW50U3RhdGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0
YXRlW2ldOwogCi0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0KCks
ICIsIHJlcXVlc3RlZFBpY2tlciA9ICIsIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIpOworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAi
LCByZXF1ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKTsKIAogICAgICAg
ICBpZiAoKG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2Vk
KSAmJiBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKQogICAgICAgICAgICAgaW5kZXhPZkNsaWVudFRo
YXRSZXF1ZXN0ZWRQaWNrZXIgPSBpOwpAQCAtNDAxLDEyICszOTcsMTIgQEAgdm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5z
ZXRQbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCAqbV9wbGF5YmFja1RhcmdldC5jb3B5
UmVmKCkpOwogCiAgICAgICAgIGlmIChpICE9IGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0
IHx8ICFoYXZlQWN0aXZlUm91dGUpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dChmYWxzZSkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChmYWxzZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgZmFsc2UpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgJiYgbV9wbGF5YmFja1RhcmdldFBpY2tl
ckRpc21pc3NlZCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkIik7Cisg
ICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRl
LmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKICAg
ICAgICAgICAgIHN0YXRlLT5jbGllbnQucGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQo
c3RhdGUtPmNvbnRleHRJZCk7CiAgICAgICAgIH0KIApAQCAtNDE4LDcgKzQxNCw3IEBAIHZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBpZiAoaGF2ZUFjdGl2ZVJv
dXRlICYmIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ICE9IG5vdEZvdW5kKSB7CiAgICAg
ICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1Rh
cmdldF07CiAgICAgICAgIGlmICghZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkgewotICAgICAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0KHRydWUpIik7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lP
Tk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC00MzMsNyArNDI5LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
Ojpjb25maWd1cmVQbAogICAgIGJvb2wgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSBmYWxzZTsK
ICAgICBib29sIGhhdmVDbGllbnRXaXRoTWVkaWEgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIHN0
YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
IHN0YXRlLmdldCgpKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBzdGF0ZS5nZXQoKSk7CiAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVBy
b2R1Y2VyOjpSZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykgewogICAgICAgICAgICAg
bW9uaXRvcmluZ1JlcXVpcmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQ1LDEw
ICs0NDEsMTAgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAg
IH0KIAogICAgIGlmIChtb25pdG9yaW5nUmVxdWlyZWQgfHwgKGhhc0F2YWlsYWJpbGl0eUxpc3Rl
bmVyICYmIGhhdmVDbGllbnRXaXRoTWVkaWEpKSB7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInN0YXJ0aW5nIG1vbml0b3JpbmciKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOwogICAgICAg
ICB0YXJnZXRQaWNrZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyBt
b25pdG9yaW5nIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXywgInN0b3BwaW5nIG1vbml0b3JpbmciKTsKICAgICAgICAgdGFyZ2V0UGlja2VyKCkuc3Rv
cE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAgICB9CiB9CkBAIC00OTAsNyArNDg2LDcg
QEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogCiAgICAgaWYgKCFt
X3BsYXliYWNrVGFyZ2V0IHx8ICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpKSB7
CiAgICAgICAgIGlmIChtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic3RvcHBpbmcgdGltZXIiKTsKKyAgICAgICAgICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVy
Iik7CiAgICAgICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9OwogICAgICAg
ICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKICAgICAgICAgfQpAQCAtNTAyLDcgKzQ5OCw3
IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2EKICAgICBib29sIGRp
ZFBsYXlUb0VuZCA9IGZhbHNlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRl
KSB7CiAKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBw
bGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcGxheWVkVG9FbmQg
PSAiLCBzdGF0ZS0+cGxheWVkVG9FbmQpOwogCiAgICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZs
YWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKQog
ICAgICAgICAgICAgc3RvcFRpbWVyID0gdHJ1ZTsKQEAgLTUxMiw3ICs1MDgsNyBAQCB2b2lkIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhCiAgICAgfQogCiAgICAgaWYgKHN0b3BU
aW1lcikgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyB0aW1l
ciIpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJz
dG9wcGluZyB0aW1lciIpOwogICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9
OwogICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwogICAgIH0gZWxzZSB7CkBAIC01MjAs
NyArNTE2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogICAg
ICAgICBpZiAoaW50ZXJ2YWwgIT0gbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCB8fCAhbV93YXRj
aGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFy
dE9uZVNob3QoaW50ZXJ2YWwpOwogICAgICAgICB9Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNv
bmRzIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywg
InRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNvbmRzIik7CiAg
ICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgPSBpbnRlcnZhbDsKICAgICB9CiB9CkBA
IC01MzAsNyArNTI2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bQogICAgIGlmICghbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOwogICAgIHRhcmdldFBpY2tlcigpLmludmFsaWRhdGVQbGF5YmFja1Rhcmdl
dHMoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAxMDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDQtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBNb3ZlIEFwcGxlUGF5IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMgdG8g
V2ViQ29yZSBhbmQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTA1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisg
ICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsubW06CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg6CisKIDIwMjAtMDQtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZG9wdCBpbnRlcmZhY2UgQVZBdWRpb1JvdXRpbmdBcmJpdGVyIGZvciBNYWMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTggQEAgU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQS1BheW1lbgogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRNZXRob2QpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5
bWVudE1lcmNoYW50U2Vzc2lvbikKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50UmVxdWVzdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBL
UGF5bWVudFNldHVwRmVhdHVyZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50U2V0dXBSZXF1ZXN0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRTdW1tYXJ5SXRlbSkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
UEtTaGlwcGluZ01ldGhvZCkKIAorI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbikKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIpCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRM
aW5rLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L1Bhc3NLaXRTb2Z0TGluay5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDMyIEBACiAK
ICNpZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCi0jZWxzZQorCitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0
dXBDb250cm9sbGVyLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BU
SU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cEZlYXR1cmUsIFBB
TF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9S
VChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwUmVxdWVzdCwgUEFMX0VYUE9SVCkKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9P
UFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKKyNlbmRpZgorCisjZWxzZSAvLyBQTEFURk9STShNQUMp
CisKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NL
aXQsIFBBTF9FWFBPUlQpCisKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQor
U09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwRmVhdHVyZSwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50U2V0dXBSZXF1ZXN0LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cFZpZXdD
b250cm9sbGVyLCBQQUxfRVhQT1JUKQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQogI2VuZGlmCiAKKyNl
bmRpZiAvLyBQTEFURk9STShNQUMpCisKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0LCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bhc3NMaWJyYXJ5LCBQ
QUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQS1BheW1lbnQsIFBBTF9FWFBPUlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDExICs0NywyOCBAQCBXVEZfRVhURVJOX0NfRU5ECiAjaW1wb3J0IDxQYXNzS2l0L1BL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxQ
YXNzS2l0L1BLUGF5bWVudE1ldGhvZC5oPgogI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRSZXF1
ZXN0X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uX1dlYktpdC5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRTZXR1cENvbnRyb2xsZXIu
aD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxQ
YXNzS2l0Q29yZS9QS1BheW1lbnRSZXF1ZXN0U3RhdHVzX1ByaXZhdGUuaD4KICNpbXBvcnQgPFBh
c3NLaXRDb3JlL1BLUGF5bWVudFJlcXVlc3RfV2ViS2l0Lmg+CiAKKyNpZiBIQVZFKFBBU1NLSVRf
SU5TVEFMTE1FTlRTKQorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50X1ByaXZhdGUuaD4K
KyNpbXBvcnQgPFBhc3NLaXRDb3JlL1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5o
PgorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50TWV0aG9kX1ByaXZhdGUuaD4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50
QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyLmg+CisjZW5kaWYKKworI2lmIEhBVkUoUEFTU0tJVF9J
TlNUQUxMTUVOVF9JREVOVElGSUVSUykgJiYgUExBVEZPUk0oTUFDKQorQGludGVyZmFjZSBQS1Bh
eW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKFdlYktpdFNQSSkKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNTdHJpbmcgKmluc3RhbGxtZW50TWVyY2hhbnRJZGVu
dGlmaWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU1N0cmluZyAq
cmVmZXJyZXJJZGVudGlmaWVyOworQGVuZAogI2VuZGlmCiAKICNlbHNlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5MDAsNiArMTkwMCw5IEBACiAJCTVDMkIxQUVDMjIz
OTdFQkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY3OEQwQjFDMjU0MjJDMDAyNDU0NDYg
LyogUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tICovOyB9OwogCQk1QzQzMDRCMTE5MUFDOTA4MDAw
RTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRl
clRleHR1cmVMT0QuaCAqLzsgfTsKIAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhU
U2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM0MzA0QjQxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxP
RC5oICovOyB9OworCQk1QzUzRENFMTI0NDY1REZDMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
NTNEQ0NGMjQ0NjQ0OTkwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNTNEQ0U3MjQ0NjhB
RDIwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzUzRENDRTI0NDY0NDk5MDBB
OTMxMjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNTNEQ0VBMjQ0NjhGQjQwMEE5
MzEyNCAvKiBBcHBsZVBheVNldHVwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNUQy
Mzg1MjI3QTA2NTIwMDBCOUJEQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUQyMzgzMjI3QTA2M0EwMDBCOUJE
QSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
N0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDOUMyREI1MjI0MUE2N0IwMDk5
NkIwQiAvKiBDb250ZW50UnVsZUxpc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlDMkRCMzIyNDFBNjczMDA5OTZCMEIgLyogQ29udGVu
dFJ1bGVMaXN0UmVzdWx0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05MDkxLDYgKzkwOTQsMTggQEAKIAkJNUM1MzgxQjExRDg3RDQ1NzAwRTJF
QkU2IC8qIFVSTFNlYXJjaFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVUkxTZWFyY2hQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1Mzgx
QjMxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1MzgxQjQxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2Vh
cmNoUGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVVJMU2VhcmNo
UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0M2MjQ0NjQ0OTcw
MEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBs
ZVBheVNldHVwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQzkyNDQ2
NDQ5ODAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0NBMjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBh
eVNldHVwRmVhdHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDQjI0NDY0NDk4
MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcHBsZVBheVNldHVwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNE
Q0NDMjQ0NjQ0OTkwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RD
Q0UyNDQ2NDQ5OTAwQTkzMTI0IC8qIFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDRjI0NDY0NDk5
MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUM1M0RDRDAyNDQ2NDQ5QTAwQTkzMTI0IC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxlUGF5U2V0dXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlT
ZXR1cEZlYXR1cmVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUz
RENENTI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24u
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDRDYyNDQ2NDQ5QzAw
QTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM1RDIzODMyMjdBMDYzQTAwMEI5QkRBIC8qIEN1c3RvbUhlYWRlckZpZWxkcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21IZWFkZXJGaWVsZHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1RDIzODYyMjdBMDc3QzAwMEI5QkRBIC8q
IEN1c3RvbUhlYWRlckZpZWxkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDdXN0b21IZWFkZXJGaWVsZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjcxLDYgKzE3Mjg2LDgg
QEAKIAkJCQlBMUJCODU5QjIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaWRs
ICovLAogCQkJCUExQkI4NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFj
dEZpZWxkLmggKi8sCiAJCQkJQTFCQjg1QTIyMTU5QUY1NzAwNjdFMDdEIC8qIEFwcGxlUGF5RXJy
b3JDb250YWN0RmllbGQuaWRsICovLAorCQkJCTVDNTNEQ0QwMjQ0NjQ0OUEwMEE5MzEyNCAvKiBB
cHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0Q1MjQ0NjQ0
OUIwMEE5MzEyNCAvKiBBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwgKi8sCiAJ
CQkJN0M2NTc5RTIxRTAwODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAqLywKIAkJ
CQk3QzY1NzlFNDFFMDA4MkM4MDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5pZGwgKi8sCiAJ
CQkJQTFERjVBQTgxRjgwNzBENDAwNThBNDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5
LmNwcCAqLywKQEAgLTE3MzA4LDYgKzE3MzI1LDE0IEBACiAJCQkJQTE5NTZGMUYyMzMxQThDNzAw
NTdFOUQyIC8qIEFwcGxlUGF5U2Vzc2lvbkVycm9yLmlkbCAqLywKIAkJCQkxQTU4RTg2MzFEMTlE
NERGMDBDMEVBNzMgLyogQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwICovLAogCQkJ
CTFBNThFODY0MUQxOUQ0REYwMEMwRUE3MyAvKiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oICovLAorCQkJCTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNw
cCAqLywKKwkJCQk1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICov
LAorCQkJCTVDNTNEQ0M2MjQ0NjQ0OTcwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLywK
KwkJCQk1QzUzRENDRjI0NDY0NDk5MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAq
LywKKwkJCQk1QzUzRENDQTI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsICovLAorCQkJCTVDNTNEQ0M5MjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVh
dHVyZS5tbSAqLywKKwkJCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmggKi8sCisJCQkJNUM1M0RDRDYyNDQ2NDQ5QzAwQTkzMTI0IC8qIEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8sCiAJCQkJMUE4QTY0NDcxRDE5RkNGQjAwRDBFMDBG
IC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAgKi8sCiAJCQkJMUE4
QTY0NDgxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRF
dmVudC5oICovLAogCQkJCTFBOEE2NDQ5MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBw
aW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuaWRsICovLApAQCAtMTczMzEsNiArMTczNTYsOCBAQAog
CQkJCUExMDRFQzUzMjIwQTAxNzQwMENCRjY3QSAvKiBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQu
Y3BwICovLAogCQkJCTFBNThFODYyMUQxOUQzQkYwMEMwRUE3MyAvKiBQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQuaCAqLywKIAkJCQk3Q0Y5MzBFNjFFMDFGOUFEMDBCQUZGQkUgLyogUGF5bWVudEhl
YWRlcnMuaCAqLywKKwkJCQk1QzUzRENDRTI0NDY0NDk5MDBBOTMxMjQgLyogUGF5bWVudEluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0NDMjQ0NjQ0OTkwMEE5MzEyNCAv
KiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tICovLAogCQkJCTFBRTk2QTg3MUQx
QTBDRUIwMEI4Njc2OCAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uLmggKi8sCiAJCQkJMUE4QTY0
MzkxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1lbnRNZXRob2QuaCAqLywKIAkJCQlBMURGRDUyNDIz
MzQ1OTNBMDA0MkZDREIgLyogUGF5bWVudE1ldGhvZFVwZGF0ZS5oICovLApAQCAtMjkzOTcsNiAr
Mjk0MjQsOCBAQAogCQkJCTFBOEE2NDU5MUQxOUZDRkMwMEQwRTAwRiAvKiBBcHBsZVBheVNlc3Np
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUExOTU2RjIwMjMzMUE4QzcwMDU3RTlEMiAvKiBBcHBs
ZVBheVNlc3Npb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1OEU4NjUxRDE5RDRFQjAw
QzBFQTczIC8qIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk1QzUzRENFQTI0NDY4RkI0MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNUM1M0RDRTEyNDQ2NURGQzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0
dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThBNjQ1QzFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBw
bGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MTJDNTlGMjIwMzVGQ0Q2MDAxMjIzNkIgLyogQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDNjU3OUU4MUUwMDgzMTYwMEUzQTI3QSAvKiBBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTIyLDYgKzMyMTUxLDcgQEAK
IAkJCQlBMUY2MDA0OTFGNDc1OTRFMDA3N0U4M0YgLyogUGF5bWVudERldGFpbHNVcGRhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUExREY1QUE2MUY3RjY0QkIwMDU4QTQ3NyAvKiBQYXltZW50SGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NGOTMwRTcxRTAxRjlCNDAwQkFGRkJFIC8qIFBh
eW1lbnRIZWFkZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzUzRENFNzI0NDY4QUQyMDBBOTMx
MjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTFGNzZCMzExRjQ0QzU1QTAwMTRDMzE4IC8qIFBheW1lbnRJdGVtLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUU5NkE4OTFEMUEwQ0VCMDBCODY3NjggLyogUGF5bWVudE1lcmNoYW50U2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4QTY0M0MxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1l
bnRNZXRob2QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViQ29yZUFkZGl0aW9ucy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCwzIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYkNv
cmVBZGRpdGlvbnMubW0+Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAwODEpCisr
KyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDIwLTA0LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTW92ZSBBcHBsZVBheSBjb2RlIGZyb20gV2ViS2l0QWRkaXRpb25zIHRvIFdl
YkNvcmUgYW5kIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEwNTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVw
RmVhdHVyZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVz
OjpwbGF0Zm9ybUZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvQXBw
bGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBh
eW1lbnRTZXR1cEZlYXR1cmVzOjpQYXltZW50U2V0dXBGZWF0dXJlcyk6CisgICAgICAgIChXZWJL
aXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpQYXltZW50U2V0dXBGZWF0dXJlczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVu
dFNldHVwRmVhdHVyZXM6Om9wZXJhdG9yIFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1
cEZlYXR1cmU+PiBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICogU2hh
cmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW06IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0Ojp0b1BsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpmaW5pc2hDb25zdHJ1
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvY29j
b2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXRB
ZGRpdGlvbnM6OnRvUGxhdGZvcm1Db25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdEFkZGl0
aW9uczo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bik6CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmZpbmlz
aENyZWF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6YmVnaW5BcHBsZVBheVNldHVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OmVuZEFwcGxlUGF5U2V0dXApOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1FbmRB
cHBsZVBheVNldHVwKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OmZpbmlzaERlY29kaW5nKToKKyAgICAgICAgKElQ
Qzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
OjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50
Q29vcmRpbmF0b3I6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OmJlZ2luQXBwbGVQYXlTZXR1cCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBheW1lbnRDb29yZGluYXRvcjo6ZW5kQXBwbGVQYXlTZXR1cCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKwogMjAyMC0wNC0xNCAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmplY3RlZEJ1bmRs
ZSBwYXJhbWV0ZXJzIG9mdGVuIG5lZWQgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gY2FsbGVkIGJl
Zm9yZSB1bmFyY2hpdmluZwpJbmRleDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTAsOCArMjUwLDYgQEAgU0NSSVBUUyA9IFwKIEZSQU1FV09SS19GTEFHUyA9
ICQoc2hlbGwgZWNobyAkKEJVSUxUX1BST0RVQ1RTX0RJUikgJChGUkFNRVdPUktfU0VBUkNIX1BB
VEhTKSAkKFNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTKSB8IHBlcmwgLWUgJ3ByaW50ICIt
RiAiIC4gam9pbigiIC1GICIsIHNwbGl0KCIgIiwgPD4pKTsnKQogSEVBREVSX0ZMQUdTID0gJChz
aGVsbCBlY2hvICQoQlVJTFRfUFJPRFVDVFNfRElSKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpICQo
U1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFMpIHwgcGVybCAtZSAncHJpbnQgIi1JIiAuIGpvaW4o
IiAtSSIsIHNwbGl0KCIgIiwgPD4pKTsnKQogCi0taW5jbHVkZSBXZWJLaXREZXJpdmVkU291cmNl
c0FkZGl0aW9ucy5tYWtlCi0KIC5QSE9OWSA6IGFsbAogCiBhbGwgOiBcCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOCBAQCBTaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlCiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Lm1tCiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KIAorU2hhcmVk
L0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0KK1NoYXJlZC9BcHBsZVBh
eS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuY3BwCiBTaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5tbQogU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUlPUy5tbQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NDEsNiArNjQxLDcgQEAgZGVmIGhl
YWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRl
eHRJRCc6IFsnIkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5
ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlBh
eW1lbnRTZXR1cEZlYXR1cmVzJzogWyciQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oIidd
LAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9yJzogWyciR2VzdHVyZVR5
cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCc6IFsnIldlYkV2ZW50
LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQnOiBbJyJXZWJFdmVudC5o
IiddLApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50
U2V0dXBGZWF0dXJlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKK09CSkNfQ0xBU1MgUEtQYXlt
ZW50U2V0dXBGZWF0dXJlOworCisjaW5jbHVkZSA8V2ViQ29yZS9BcHBsZVBheVNldHVwRmVhdHVy
ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGF5bWVudFNldHVwRmVhdHVyZXMgeworcHVi
bGljOgorICAgIFBheW1lbnRTZXR1cEZlYXR1cmVzKFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBw
bGVQYXlTZXR1cEZlYXR1cmU+PiYmKTsKKyAgICBQYXltZW50U2V0dXBGZWF0dXJlcyhSZXRhaW5Q
dHI8TlNBcnJheT4mJiA9IG51bGxwdHIpOworCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7CisgICAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRTZXR1cEZlYXR1cmVzPiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJik7CisKKyAgICBOU0FycmF5ICpwbGF0Zm9ybUZlYXR1cmVzKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybUZlYXR1cmVzLmdldCgpOyB9CisgICAgb3BlcmF0b3IgVmVj
dG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fcGxhdGZvcm1GZWF0dXJlczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VU
VVApCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRT
ZXR1cEZlYXR1cmVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0JKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgiCisKKyNp
ZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKworI2ltcG9ydCAiQXJndW1lbnRDb2RlcnND
b2NvYS5oIgorI2ltcG9ydCAiRGVjb2Rlci5oIgorI2ltcG9ydCAiRW5jb2Rlci5oIgorI2ltcG9y
dCA8V2ViQ29yZS9BcHBsZVBheVNldHVwRmVhdHVyZS5oPgorCisjaW1wb3J0IDxwYWwvY29jb2Ev
UGFzc0tpdFNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgTlNBcnJh
eTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4gKnRvUGxhdGZvcm1GZWF0dXJlcyhWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcykKK3sKKyAgICBO
U011dGFibGVBcnJheSAqcGxhdGZvcm1GZWF0dXJlcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdp
dGhDYXBhY2l0eTpmZWF0dXJlcy5zaXplKCldOworICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IGZl
YXR1cmVzKSB7CisgICAgICAgIGlmIChmZWF0dXJlKQorICAgICAgICAgICAgW3BsYXRmb3JtRmVh
dHVyZXMgYWRkT2JqZWN0OmZlYXR1cmUtPnBsYXRmb3JtRmVhdHVyZSgpXTsKKyAgICB9CisgICAg
cmV0dXJuIHBsYXRmb3JtRmVhdHVyZXM7Cit9CisKK1BheW1lbnRTZXR1cEZlYXR1cmVzOjpQYXlt
ZW50U2V0dXBGZWF0dXJlcyhWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlPj4mJiBmZWF0dXJlcykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IHRvUGxhdGZvcm1G
ZWF0dXJlcyhXVEZNb3ZlKGZlYXR1cmVzKSkgfQoreworfQorCitQYXltZW50U2V0dXBGZWF0dXJl
czo6UGF5bWVudFNldHVwRmVhdHVyZXMoUmV0YWluUHRyPE5TQXJyYXk+JiYgcGxhdGZvcm1GZWF0
dXJlcykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IFdURk1vdmUocGxhdGZvcm1GZWF0dXJl
cykgfQoreworfQorCit2b2lkIFBheW1lbnRTZXR1cEZlYXR1cmVzOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9wbGF0Zm9ybUZlYXR1cmVz
OworfQorCitPcHRpb25hbDxQYXltZW50U2V0dXBGZWF0dXJlcz4gUGF5bWVudFNldHVwRmVhdHVy
ZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RhdGljIE5TQXJyYXkg
KmFsbG93ZWRDbGFzc2VzOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBhdXRvIGFsbG93ZWQgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Ml0pOworICAg
ICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6W05TQXJyYXkgY2xhc3NdXTsKKyAgICAgICAgaWYgKGF1
dG8gcGtQYXltZW50U2V0dXBGZWF0dXJlQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVudFNldHVwRmVh
dHVyZUNsYXNzKCkpCisgICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0
dXBGZWF0dXJlQ2xhc3NdOworICAgICAgICBhbGxvd2VkQ2xhc3NlcyA9IFthbGxvd2VkIGNvcHld
OworICAgIH0pOworCisgICAgYXV0byBwbGF0Zm9ybUZlYXR1cmVzID0gSVBDOjpkZWNvZGU8TlNB
cnJheTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4+KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsK
KyAgICBpZiAoIXBsYXRmb3JtRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gUGF5bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKCpwbGF0Zm9ybUZl
YXR1cmVzKSB9OworfQorCitQYXltZW50U2V0dXBGZWF0dXJlczo6b3BlcmF0b3IgVmVjdG9yPFJl
ZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4gZmVhdHVyZXM7CisgICAgZmVhdHVy
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbbV9wbGF0Zm9ybUZlYXR1cmVzIGNvdW50XSk7Cisg
ICAgZm9yIChQS1BheW1lbnRTZXR1cEZlYXR1cmUgKnBsYXRmb3JtRmVhdHVyZSBpbiBtX3BsYXRm
b3JtRmVhdHVyZXMuZ2V0KCkpCisgICAgICAgIGZlYXR1cmVzLnVuY2hlY2tlZEFwcGVuZChXZWJD
b3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKHBsYXRmb3JtRmVhdHVyZSkpOworICAg
IHJldHVybiBmZWF0dXJlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisj
aW5jbHVkZSAiQXBwbGVQYXlTZXR1cC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIFBLUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbjsKKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2Rl
cjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24geworcHVibGljOgorICAgIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oKSA9IGRlZmF1
bHQ7CisgICAgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNldHVwOjpDb25maWd1cmF0aW9uJiwgY29uc3QgVVJMJik7CisKKyAgICB2b2lkIGVuY29kZShJ
UEM6OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbj4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworCisgICAgUEtQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
bmZpZ3VyYXRpb24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+JiYp
OworCisgICAgUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gbV9jb25maWd1
cmF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBIQVZFKFBB
U1NLSVRfUEFZTUVOVF9TRVRVUCkKKwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24u
aCIKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW1wb3J0ICJBcmd1bWVu
dENvZGVyc0NvY29hLmgiCisjaW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVyLmgi
CisjaW1wb3J0IDx3dGYvVVJMLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExp
bmsuaD4KKworQGludGVyZmFjZSBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gKFdlYktpdCkK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpzaWduZWRG
aWVsZHM7CitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgUmV0YWluUHRyPFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29yZUNvbmZpZ3VyYXRpb24s
IGNvbnN0IFVSTCYgdXJsKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVBBTDo6Z2V0
UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyNlbmRpZgorCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkluc3RhbmNlKCkgaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIHNldE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElk
ZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldE9yaWdpbmF0aW5nVVJMOnVybF07Cisg
ICAgW2NvbmZpZ3VyYXRpb24gc2V0UmVmZXJyZXJJZGVudGlmaWVyOmNvcmVDb25maWd1cmF0aW9u
LnJlZmVycmVySWRlbnRpZmllcl07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lO
CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0U2lnbmF0dXJlOmNvcmVDb25maWd1cmF0aW9uLnNpZ25h
dHVyZV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorCisgICAgaWYgKFtjb25m
aWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0U2lnbmVkRmllbGRzOild
KSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5ICpzaWduZWRGaWVsZHMgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmVkRmllbGRzLnNpemUo
KV07CisgICAgICAgIGZvciAoYXV0byYgc2lnbmVkRmllbGQgOiBjb3JlQ29uZmlndXJhdGlvbi5z
aWduZWRGaWVsZHMpCisgICAgICAgICAgICBbc2lnbmVkRmllbGRzIGFkZE9iamVjdDpzaWduZWRG
aWVsZF07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25lZEZpZWxkczpzaWduZWRGaWVs
ZHNdOworICAgIH0KKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCitQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYg
dXJsKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbiwgdXJsKSB9Cit7Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShj
b25maWd1cmF0aW9uKSB9Cit7Cit9CisKK3ZvaWQgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1f
Y29uZmlndXJhdGlvbjsKK30KKworT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4g
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBzdGF0aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Cisg
ICAgICAgIGF1dG8gYWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eToxXSk7CisgICAgICAgIGlmIChhdXRvIHBrUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbkNsYXNzID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcygp
KQorICAgICAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbkNsYXNzXTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxsb3dlZCBjb3B5XTsKKyAg
ICB9KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAgIGlmICghY29u
ZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29uZmlndXJhdGlvbikgfTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0QWRkaXRpb25zCisKKyNlbmRpZiAvLyBIQVZFKFBBU1NL
SVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTUgKzUwLDYgQEAgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OldlYlBheW1lbnRDbwogICAgICwgbV9jYW5NYWtlUGF5bWVu
dHNRdWV1ZSB7IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNhbk1ha2VQYXlt
ZW50cyIpIH0KIHsKICAgICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVj
ZWl2ZXIoKnRoaXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7Ci0gICAgZmluaXNoQ29uc3RydWN0aW9uKCp0aGlzKTsK
LX0KLQotV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSgpCi17Ci0gICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OklkbGUpCi0gICAgICAgIGhpZGVQ
YXltZW50VUkoKTsKLQotICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmgJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDExICszNCwxMyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvV2Vha09iakNQdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0j
aW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5QWRkaXRp
b25zLmg+CisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCitPQkpDX0NMQVNTIFBLUGF5
bWVudFNldHVwVmlld0NvbnRyb2xsZXI7CitPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiAj
ZW5kaWYKIAogbmFtZXNwYWNlIElQQyB7CkBAIC02MCw4ICs2MiwxNCBAQCBPQkpDX0NMQVNTIFBL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29uCiBPQkpDX0NMQVNTIFBLUGF5bWVudFJlcXVlc3Q7
CiBPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiAKKyNpZiBQTEFURk9STShJT1MpCitPQkpD
X0NMQVNTIFBLUGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXI7CisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK2NsYXNzIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb247CitjbGFzcyBQYXlt
ZW50U2V0dXBGZWF0dXJlczsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkKQEAgLTEyNCw2ICsxMzIsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGFib3J0UGF5bWVudFNlc3Npb24oKTsKICAgICB2b2lkIGNhbmNlbFBheW1lbnRTZXNzaW9uKCk7
CiAKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKyAgICB2b2lkIGdldFNldHVwRmVh
dHVyZXMoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMmKT4mJik7CisgICAgdm9pZCBiZWdpbkFw
cGxlUGF5U2V0dXAoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYsIGNvbnN0IFBheW1l
bnRTZXR1cEZlYXR1cmVzJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAg
dm9pZCBlbmRBcHBsZVBheVNldHVwKCk7CisgICAgdm9pZCBwbGF0Zm9ybUJlZ2luQXBwbGVQYXlT
ZXR1cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiwgY29uc3QgUGF5bWVudFNldHVw
RmVhdHVyZXMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHBs
YXRmb3JtRW5kQXBwbGVQYXlTZXR1cCgpOworI2VuZGlmCisKICAgICBib29sIGNhbkJlZ2luKCkg
Y29uc3Q7CiAgICAgYm9vbCBjYW5DYW5jZWwoKSBjb25zdDsKICAgICBib29sIGNhbkNvbXBsZXRl
UGF5bWVudCgpIGNvbnN0OwpAQCAtMTkxLDEyICsyMDcsOCBAQCBwcml2YXRlOgogICAgIFJldGFp
blB0cjxOU1dpbmRvdz4gbV9zaGVldFdpbmRvdzsKICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1f
c2hlZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZlcjsKICNlbmRpZgotICAgIAotI2lmIGRlZmluZWQo
V0VCUEFZTUVOVENPT1JESU5BVE9SUFJPWFlfQURESVRJT05TKQotV0VCUEFZTUVOVENPT1JESU5B
VE9SUFJPWFlfQURESVRJT05TCi0jdW5kZWYgV0VCUEFZTUVOVENPT1JESU5BVE9SUFJPWFlfQURE
SVRJT05TCi0jZWxzZQotICAgIHZvaWQgZmluaXNoQ29uc3RydWN0aW9uKFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5JikgeyB9CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFdlYWtPYmpDUHRyPFBL
UGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXI+IG1fcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXI7
CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgTgog
ICAgIENvbXBsZXRlUGF5bWVudFNlc3Npb24oT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25SZXN1bHQ+IHJlc3VsdCkKICAgICBBYm9ydFBheW1lbnRTZXNzaW9uKCkKICAgICBD
YW5jZWxQYXltZW50U2Vzc2lvbigpCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisg
ICAgR2V0U2V0dXBGZWF0dXJlcyhXZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gY29u
ZmlndXJhdGlvbikgLT4gKFdlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMgZmVhdHVyZXMpIEFz
eW5jCisgICAgQmVnaW5BcHBsZVBheVNldHVwKFdlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uLCBXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzIGZlYXR1cmVz
KSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCisgICAgRW5kQXBwbGVQYXlTZXR1cCgpCisjZW5kaWYK
IH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9Q
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0JKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24uaCIKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW1wb3J0ICJBcmd1
bWVudENvZGVyc0NvY29hLmgiCisjaW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVy
LmgiCisjaW1wb3J0ICJQYXNzS2l0U29mdExpbmtBZGRpdGlvbnMuaCIKKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KKworQGludGVyZmFjZSBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gKFdlYktpdCkK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpzaWduZWRG
aWVsZHM7CitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXRBZGRpdGlvbnMgeworCitzdGF0aWMgUmV0
YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gdG9QbGF0Zm9ybUNvbmZpZ3VyYXRp
b24oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29yZUNvbmZp
Z3VyYXRpb24sIGNvbnN0IFVSTCYgdXJsKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAo
IVBBTDo6Z2V0UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyNlbmRpZgorCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbUEFM
OjphbGxvY1BLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkluc3RhbmNlKCkgaW5pdF0pOworICAg
IFtjb25maWd1cmF0aW9uIHNldE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5t
ZXJjaGFudElkZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldE9yaWdpbmF0aW5nVVJM
OnVybF07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UmVmZXJyZXJJZGVudGlmaWVyOmNvcmVDb25m
aWd1cmF0aW9uLnJlZmVycmVySWRlbnRpZmllcl07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VB
UkRTX0JFR0lOCisgICAgW2NvbmZpZ3VyYXRpb24gc2V0U2lnbmF0dXJlOmNvcmVDb25maWd1cmF0
aW9uLnNpZ25hdHVyZV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorCisgICAg
aWYgKFtjb25maWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0U2lnbmVk
RmllbGRzOildKSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5ICpzaWduZWRGaWVsZHMgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmVkRmll
bGRzLnNpemUoKV07CisgICAgICAgIGZvciAoYXV0byYgc2lnbmVkRmllbGQgOiBjb3JlQ29uZmln
dXJhdGlvbi5zaWduZWRGaWVsZHMpCisgICAgICAgICAgICBbc2lnbmVkRmllbGRzIGFkZE9iamVj
dDpzaWduZWRGaWVsZF07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25lZEZpZWxkczpz
aWduZWRGaWVsZHNdOworICAgIH0KKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCitQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNv
bnN0IFVSTCYgdXJsKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgdG9QbGF0Zm9ybUNvbmZpZ3Vy
YXRpb24oY29uZmlndXJhdGlvbiwgdXJsKSB9Cit7Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb246OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oUmV0YWluUHRyPFBLUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsg
V1RGTW92ZShjb25maWd1cmF0aW9uKSB9Cit7Cit9CisKK3ZvaWQgUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IG1fY29uZmlndXJhdGlvbjsKK30KKworT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbj4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBzdGF0aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7CisgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7CisgICAgICAgIGF1dG8gYWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhDYXBhY2l0eToxXSk7CisgICAgICAgIGlmIChhdXRvIHBrUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbkNsYXNzID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b25DbGFzcygpKQorICAgICAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbkNsYXNzXTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxsb3dlZCBj
b3B5XTsKKyAgICB9KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAg
IGlmICghY29uZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IHJldHVybiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29uZmlndXJhdGlv
bikgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0QWRkaXRpb25zCisKKyNlbmRpZiAvLyBI
QVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzcsMTYgKzM3LDE3IEBACiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAj
aW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAotI2ltcG9ydCA8cGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5oPgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQg
PFdlYktpdEFkZGl0aW9ucy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hQWRkaXRpb25z
Lm1tPgotI2Vsc2UKLW5hbWVzcGFjZSBXZWJLaXQgewotc3RhdGljIHZvaWQgZmluaXNoQ3JlYXRp
bmcoUEtQYXltZW50UmVxdWVzdCAqLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYpIHsgfQotfQorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorI2lt
cG9ydCAiQVBJVUlDbGllbnQuaCIKKyNpbXBvcnQgIkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVy
ZXMuaCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIldl
YlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdl
cy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjZW5kaWYKIAorI2ltcG9ydCA8cGFs
L2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgorCiAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCBh
bnkgcGxhdGZvcm1zIHdpdGhvdXQgLXNldFRodW1ibmFpbFVSTHM6LCBzbyB0aGlzIGNhbiBiZSBy
ZW1vdmVkLgogQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0ICgpCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgc3Ryb25nKSBOU1VSTCAqdGh1bWJuYWlsVVJMOwpAQCAtNjEsNiArNjIsMjcgQEAgQGlu
dGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0IChTdGFnaW5nKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorc3RhdGljIHZvaWQgZmluaXNoQ3JlYXRpbmcoUEtQYXltZW50UmVxdWVzdCAqcGxhdGZvcm1S
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVx
dWVzdCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGlmIChQS1BheW1l
bnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSByZXF1ZXN0Lmluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbigpLnBsYXRmb3JtQ29uZmlndXJhdGlvbigpKSB7CisgICAgICAg
IHBsYXRmb3JtUmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9u
OworICAgICAgICBwbGF0Zm9ybVJlcXVlc3QucmVxdWVzdFR5cGUgPSBQS1BheW1lbnRSZXF1ZXN0
VHlwZUluc3RhbGxtZW50OworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBsYXRmb3Jt
UmVxdWVzdCk7CisgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOworI2VuZGlmCit9CisKK1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Ojp+V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkoKQorewor
ICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpJZGxlKQorICAgICAgICBoaWRlUGF5bWVudFVJKCk7
CisKKyAgICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
KnRoaXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKTsKK30KKwogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMjc5LDYg
KzMwMSwxMDkgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcgogICAg
IG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
KHVwZGF0ZSk7CiB9CiAKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKwordm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Z2V0U2V0dXBGZWF0dXJlcyhjb25zdCBQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBNZXNzYWdlczo6V2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OkdldFNldHVwRmVhdHVyZXM6OkFzeW5jUmVwbHkmJiByZXBseSkKK3sK
KyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFQQUw6OmdldFBLUGF5bWVudFNldHVwQ29udHJv
bGxlckNsYXNzKCkpIHsKKyAgICAgICAgcmVwbHkoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorCisgICAgYXV0byBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKFtyZXBseSA9
IFdURk1vdmUocmVwbHkpXShOU0FycmF5PFBLUGF5bWVudFNldHVwRmVhdHVyZSAqPiAqZmVhdHVy
ZXMpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlcGx5ID0g
V1RGTW92ZShyZXBseSksIGZlYXR1cmVzID0gcmV0YWluUHRyKGZlYXR1cmVzKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIHJlcGx5KFBheW1lbnRTZXR1cEZlYXR1cmVzIHsgV1RGTW92ZShmZWF0
dXJlcykgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCitBTExPV19ORVdfQVBJX1dJVEhPVVRf
R1VBUkRTX0JFR0lOCisgICAgW1BBTDo6Z2V0UEtQYXltZW50U2V0dXBDb250cm9sbGVyQ2xhc3Mo
KSBwYXltZW50U2V0dXBGZWF0dXJlc0ZvckNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5wbGF0
Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb21wbGV0aW9uOmNvbXBsZXRpb24uZ2V0KCldOworQUxMT1df
TkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6YmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFBheW1lbnRTZXR1cEZlYXR1cmVzJiBmZWF0dXJlcywg
TWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpCZWdpbkFwcGxlUGF5U2V0dXA6
OkFzeW5jUmVwbHkmJiByZXBseSkKK3sKKyAgICBwbGF0Zm9ybUJlZ2luQXBwbGVQYXlTZXR1cChj
b25maWd1cmF0aW9uLCBmZWF0dXJlcywgV1RGTW92ZShyZXBseSkpOworfQorCit2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjplbmRBcHBsZVBheVNldHVwKCkKK3sKKyAgICBwbGF0Zm9y
bUVuZEFwcGxlUGF5U2V0dXAoKTsKK30KKworI2lmIFBMQVRGT1JNKE1BQykKKwordm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXAoY29uc3Qg
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgUGF5bWVudFNl
dHVwRmVhdHVyZXMmIGZlYXR1cmVzLCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OkJlZ2luQXBwbGVQYXlTZXR1cDo6QXN5bmNSZXBseSYmIHJlcGx5KQoreworICAgIGlmICgh
UEFMOjpnZXRQS1BheW1lbnRTZXR1cFJlcXVlc3RDbGFzcygpKSB7CisgICAgICAgIHJlcGx5KGZh
bHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRTZXR1cFJlcXVlc3RJbnN0YW5jZSgpIGluaXRdKTsKKyAg
ICBbcmVxdWVzdCBzZXRDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24ucGxhdGZvcm1Db25maWd1
cmF0aW9uKCldOworICAgIFtyZXF1ZXN0IHNldFBheW1lbnRTZXR1cEZlYXR1cmVzOmZlYXR1cmVz
LnBsYXRmb3JtRmVhdHVyZXMoKV07CisKKyAgICBhdXRvIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQ
dHIoW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKEJPT0wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgc3Vj
Y2Vzc10oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlcGx5KHN1Y2Nlc3MpOworICAgICAgICB9
KTsKKyAgICB9KTsKKworICAgIGF1dG8gcGF5bWVudFNldHVwQ29udHJvbGxlciA9IGFkb3B0TlMo
W1BBTDo6YWxsb2NQS1BheW1lbnRTZXR1cENvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdKTsKKwor
QUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgorICAgIFtwYXltZW50U2V0dXBDb250
cm9sbGVyIHByZXNlbnRQYXltZW50U2V0dXBSZXF1ZXN0OnJlcXVlc3QuZ2V0KCkgY29tcGxldGlv
bjpjb21wbGV0aW9uLmdldCgpXTsKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECit9
CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtRW5kQXBwbGVQYXlT
ZXR1cCgpCit7Cit9CisKKyNlbHNlIC8vIFBMQVRGT1JNKE1BQykKKwordm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgUGF5bWVudFNldHVwRmVh
dHVyZXMmIGZlYXR1cmVzLCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkJl
Z2luQXBwbGVQYXlTZXR1cDo6QXN5bmNSZXBseSYmIHJlcGx5KQoreworICAgIFVJVmlld0NvbnRy
b2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IG1fcGF5bWVudENvb3JkaW5hdG9yUHJv
eHkubV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKG1f
cGF5bWVudENvb3JkaW5hdG9yUHJveHkpOworICAgIGlmICghcHJlc2VudGluZ1ZpZXdDb250cm9s
bGVyKSB7CisgICAgICAgIHJlcGx5KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRTZXR1cFJlcXVl
c3RJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBbcmVxdWVzdCBzZXRDb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24ucGxhdGZvcm1Db25maWd1cmF0aW9uKCldOworICAgIFtyZXF1ZXN0IHNldFBheW1l
bnRTZXR1cEZlYXR1cmVzOmZlYXR1cmVzLnBsYXRmb3JtRmVhdHVyZXMoKV07CisKKyAgICBhdXRv
IHBheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVu
dFNldHVwVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFNldHVwUmVxdWVz
dDpyZXF1ZXN0LmdldCgpXSk7CisgICAgaWYgKCFwYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcikg
eworICAgICAgICByZXBseShmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKCkg
bXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVwbHkgPSBXVEZN
b3ZlKHJlcGx5KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlcGx5KHRydWUpOworICAgICAg
ICB9KTsKKyAgICB9KTsKKworICAgIGVuZEFwcGxlUGF5U2V0dXAoKTsKKyAgICBbcHJlc2VudGlu
Z1ZpZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjpwYXltZW50U2V0dXBWaWV3Q29u
dHJvbGxlci5nZXQoKSBhbmltYXRlZDpZRVMgY29tcGxldGlvbjpjb21wbGV0aW9uLmdldCgpXTsK
KyAgICBtX3BheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyID0gcGF5bWVudFNldHVwVmlld0NvbnRy
b2xsZXIuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtRW5kQXBwbGVQYXlTZXR1cCgpCit7CisgICAgW21fcGF5bWVudFNldHVwVmlld0NvbnRyb2xs
ZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKKyAg
ICBtX3BheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyID0gbmlsOworfQorCisjZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
NDEsMTkgKzQxLDU1IEBACiAjaW1wb3J0IDxVSUtpdC9VSUZvbnQuaD4KICNlbmRpZgogCi0jaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYUFkZGl0aW9ucy5tbT4KLSNlbGlmIEVOQUJMRShBUFBMRV9QQVkp
CiBuYW1lc3BhY2UgSVBDIHsKLXN0YXRpYyBib29sIGZpbmlzaERlY29kaW5nKERlY29kZXImLCBX
ZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIHsgcmV0dXJuIHRydWU7IH0K
LXN0YXRpYyB2b2lkIGZpbmlzaEVuY29kaW5nKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIHsgfQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCitzdGF0aWMgYm9vbCBmaW5pc2hEZWNvZGluZyhE
ZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYg
cmVxdWVzdCkKK3sKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBPcHRp
b25hbDxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBpbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb247CisgICAgZGVjb2RlciA+PiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb247
CisgICAgaWYgKCFpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJlcXVlc3Quc2V0SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFdURk1vdmUoKmlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbikpOworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOworICAgIHJl
dHVybiB0cnVlOworI2VuZGlmCiB9CisKK3N0YXRpYyB2b2lkIGZpbmlzaEVuY29kaW5nKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
JiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGVu
Y29kZXIgPDwgcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGVuY29kZXIpOworICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKICNlbmRp
ZgorfQogCi1uYW1lc3BhY2UgSVBDIHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworI2lmIEhB
VkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCiAKLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQordm9pZCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBlbmNvZGVyIDw8IGNvbmZpZ3Vy
YXRpb24ucGxhdGZvcm1Db25maWd1cmF0aW9uKCk7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OlBh
eW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbj4oZGVjb2RlciwgUEFMOjpnZXRQS1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb25DbGFzcygpKTsKKyAgICBpZiAoIWNvbmZpZ3VyYXRpb24pCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyBXVEZNb3ZlKCpjb25maWd1cmF0aW9u
KSB9OworfQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKIAogdm9pZCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgV2ViQ29yZTo6UGF5bWVudCYgcGF5bWVudCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjU5OTIyKQor
KysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNDAwMyw2ICs0MDAzLDEwIEBACiAJCTVDNDZDMEFEMjFCNzE5OEMwMEJDNTk5
MSAvKiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzQ2QzBBRTIxQjcxQUUyMDBCQzU5OTEgLyogX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNEI5RDhBMjEwQThDNDYwMDhGMTREMSAvKiBV
bmRvT3JSZWRvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9PclJlZG8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDREQyNDQ2NUJGOTAwQTkzMTI0
IC8qIEFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENERTI0NDY1QkY5MDBBOTMxMjQgLyogUGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDNTNEQ0RGMjQ0NjVCRjkwMEE5MzEyNCAvKiBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1
cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5UGF5bWVudFNl
dHVwRmVhdHVyZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDRTAyNDQ2
NUJGOTAwQTkzMTI0IC8qIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVDRUMzODIyMDk1ODMyMDBENkJCQjAg
LyogRGFlbW9uRW50cnlQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
YWVtb25FbnRyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNUNFQzM5
MjIwOTU4MzIwMEQ2QkJCMCAvKiBEYWVtb25FbnRyeVBvaW50Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGFlbW9uRW50cnlQb2ludC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUM1RDIzODcyMjdBMTg5MTAwMEI5QkRBIC8qIF9XS0N1c3RvbUhl
YWRlckZpZWxkc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S0N1c3RvbUhlYWRlckZpZWxkc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MjA5LDYgKzYyMTMsMTAgQEAKIAkJCQkxQUIxRjc3NzFEMUIzMEE5MDA3QzlCRDEgLyog
Y29jb2EgKi8sCiAJCQkJMUFCMUY3N0ExRDFCMzBBOTAwN0M5QkQxIC8qIGlvcyAqLywKIAkJCQkx
QUIxRjc3QzFEMUIzMEE5MDA3QzlCRDEgLyogbWFjICovLAorCQkJCTVDNTNEQ0RGMjQ0NjVCRjkw
MEE5MzEyNCAvKiBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmggKi8sCisJCQkJNUM1M0RD
REQyNDQ2NUJGOTAwQTkzMTI0IC8qIEFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0gKi8s
CisJCQkJNUM1M0RDREUyNDQ2NUJGOTAwQTkzMTI0IC8qIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24uaCAqLywKKwkJCQk1QzUzRENFMDI0NDY1QkY5MDBBOTMxMjQgLyogUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbi5tbSAqLywKIAkJCQkxQUIxRjc4ODFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuY3BwICovLAogCQkJCTFBQjFGNzg5MUQxQjMzNTUwMDdDOUJE
MSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oICovLAogCQkJCTFBQjFGNzhBMUQxQjMz
NTUwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiAqLywK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAor
I2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaCIKICNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNp
bmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oIgpAQCAtMjIwLDYgKzIyMiwy
NSBAQCBib29sIFdlYlBheW1lbnRDb29yZGluYXRvcjo6cmVtb3RlVUlFbmFiCiB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yOjpnZXRTZXR1cEZlYXR1cmVzKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6R2V0U2V0dXBGZWF0dXJlcyhQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uIHsgY29uZmlndXJhdGlvbiwgdXJsIH0pLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpiZWdp
bkFwcGxlUGF5U2V0dXAoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlv
biYgY29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmIGZlYXR1cmVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fd2ViUGFnZS5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpCZWdpbkFwcGxl
UGF5U2V0dXAoUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiB7IGNvbmZpZ3VyYXRpb24sIHVybCB9
LCBQYXltZW50U2V0dXBGZWF0dXJlcyB7IFdURk1vdmUoZmVhdHVyZXMpIH0pLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjplbmRB
cHBsZVBheVNldHVwKCkKK3sKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OkVuZEFwcGxlUGF5U2V0dXAoKSk7Cit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSwx
MiBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIHVzZXJBZ2VudFNjcmlwdHNCbG9ja2VkRXJyb3JN
ZXNzYWdlKCkgY29uc3QgZmluYWw7CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorICAg
IHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25m
aWd1cmF0aW9uJiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVm
PFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQg
YmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3Vy
YXRpb24mLCBjb25zdCBVUkwmLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBG
ZWF0dXJlPj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAg
dm9pZCBlbmRBcHBsZVBheVNldHVwKCkgZmluYWw7CisjZW5kaWYKKwogICAgIC8vIElQQzo6TWVz
c2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKQEAgLTExMiwxMCArMTE4LDYgQEAgcHJpdmF0
ZToKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CiAKICAgICBPcHRpb25hbDxBdmFpbGFibGVQYXlt
ZW50TmV0d29ya3NTZXQ+IG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzOwotCi0jaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQYXltZW50Q29v
cmRpbmF0b3JBZGRpdGlvbnMuaD4KLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396496</attachid>
            <date>2020-04-14 21:42:29 -0700</date>
            <delta_ts>2020-04-14 23:22:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210521-20200414214229.patch</filename>
            <type>text/plain</type>
            <size>126185</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAyMC0wNC0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgQXBw
bGVQYXkgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0byBXZWJDb3JlIGFuZCBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDUyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgT25seSA0IG1pbm9yIG1v
ZGlmaWNhdGlvbnMgd2VyZSBuZWNlc3NhcnksIGFzIGZvbGxvd3M6CisKKyAgICAgICAgMS4gUGF5
bWVudFNldHVwRmVhdHVyZXMncyBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1
cmUgKj4+IHdhcyBjaGFuZ2VkIHRvIFJldGFpblB0cjxOU0FycmF5PiB0byB3b3JrIHdpdGggQysr
LgorICAgICAgICAyLiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucyBtZXNzYWdl
cyB3ZXJlIG1vdmVkIHRvIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LCByZW1vdmluZyB0aGUg
bmVlZCBmb3IKKyAgICAgICAgICAgdGhlIGV4dHJhIG1lc3NhZ2UgcmVjZWl2ZXIsIHRoZSBPcHRp
b25hbDxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucz4sIGFuZCB0aGUgZmluaXNo
Q29uc3RydWN0aW9uLgorICAgICAgICAzLiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCdzIG1h
Y3JvcyB0aGF0IGNvbGxpZGVkIHdpdGggb3RoZXIgbWFjcm9zIHdlcmUgcmVuYW1lZC4gIFRoaXMg
d2FzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIGRpZmZlcmVudCBzb3VyY2UgdW5pZmljYXRpb24uCisg
ICAgICAgIDQuIFBheW1lbnRTZXR1cEZlYXR1cmVzLmggd2FzIHJlbmFtZWQgdG8gQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5oIHRvIGJlIGFibGUgdG8gYnVpbGQgd2l0aCBQYXltZW50U2V0
dXBGZWF0dXJlcy5oIGluIHRoZSBTREsuCisKKyAgICAgICAgVGhlIHJlc3QgaXMganVzdCBjb3B5
IGFuZCBwYXN0ZS4KKworICAgICAgICBUaGVyZSBpc24ndCBhIGdvb2Qgd2F5IHRvIGxhbmQgdGhp
cyB3aXRob3V0IGJyZWFraW5nIHRoZSBidWlsZCB3aXRob3V0IHJlbW92aW5nIHRoZSBmaWxlcyBm
cm9tIFdlYktpdEFkZGl0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBzbyBJJ2xsIGRv
IHRoZSB0d28gYXQgdGhlIHNhbWUgdGltZSBsYXRlIGF0IG5pZ2h0IHRvIG5vdCBjYXVzZSBkaXNy
dXB0aW9uLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJl
c1N1cHBvcnRlZE5ldHdvcmtzKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5pc2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6aW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpzZXRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkRGlzY2xvc2VGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVw
OjpnZXRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OmJl
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsZVBheVNldHVwOjpzdXNwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2V0dXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGw6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpwbGF0Zm9ybUZlYXR1cmUg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0
dXJlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpzdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6c3VwcG9y
dHNJbnN0YWxsbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZl
YXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGw6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpiZWdpbkFwcGxlUGF5U2V0dXAp
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjplbmRBcHBsZVBh
eVNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
RGVjaW1hbE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUZlYXR1cmVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOjpQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmg6CisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5p
c2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRN
ZXRob2RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaENvbnZlcnRpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRH
cm91cElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVu
dFNlc3Npb25FcnJvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEVycm9y
KToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVx
dWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpyZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
dFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlz
bWlzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0Q2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2F0Y2hkb2dUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bWVyRmlyZWQpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dl
YkNvcmVBZGRpdGlvbnMubW06CisKIDIwMjAtMDQtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQZXJzaXN0ZW50Q29kZXJzIHNob3VsZCB1
c2UgbW9kZXJuIGRlY29kaW5nIHN5bnRheApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgSlNfQklORElOR19JRExTID0g
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb2RlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlMaW5lSXRlbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnQuaWRsIFwKQEAgLTExOCw2ICsxMTksOSBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVz
dEJhc2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bkVycm9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXAuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kLmlkbCBcCkBA
IC0xMjU1LDggKzEyNTksNiBAQCB2cGF0aCAlLmluICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9T
RUFSCiBBRERJVElPTkFMX0VWRU5UX05BTUVTID0KIEFERElUSU9OQUxfRVZFTlRfVEFSR0VUX0ZB
Q1RPUlkgPQogCi0taW5jbHVkZSBXZWJDb3JlRGVyaXZlZFNvdXJjZXNBZGRpdGlvbnMubWFrZQot
CiBKU19CSU5ESU5HX0lETFMgKz0gJChBRERJVElPTkFMX0JJTkRJTkdfSURMUykKIAogYWxsIDog
JChBRERJVElPTkFMX0JJTkRJTkdfSURMUzolLmlkbD1KUyUuaCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTkzLDYgKzU5Myw4IEBAIFdITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlS
ZXF1ZXN0QmFzZS5jcHAKKyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCisg
ICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQogICAgIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwCkBAIC02MDAsNiArNjAyLDcgQEAgV0hM
U0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmNwcAorICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbi5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0
b3IubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcAogCkBAIC02MTgs
NiArNjIxLDcgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5RXJyb3IuY3BwCiAgICAgSlNBcHBsZVBheUVycm9yQ29kZS5jcHAKICAgICBKU0FwcGxl
UGF5RXJyb3JDb250YWN0RmllbGQuY3BwCisgICAgSlNBcHBsZVBheUluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5jcHAKICAgICBKU0FwcGxlUGF5TGluZUl0ZW0uY3BwCiAgICAgSlNBcHBsZVBheU1l
cmNoYW50Q2FwYWJpbGl0eS5jcHAKICAgICBKU0FwcGxlUGF5TW9kaWZpZXIuY3BwCkBAIC02MzUs
NiArNjM5LDkgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5UmVxdWVzdEJhc2UuY3BwCiAgICAgSlNBcHBsZVBheVNlc3Npb24uY3BwCiAgICAgSlNB
cHBsZVBheVNlc3Npb25FcnJvci5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXAuY3BwCisgICAgSlNB
cHBsZVBheVNldHVwRmVhdHVyZS5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5j
cHAKICAgICBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAKICAgICBK
U0FwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLmNwcAogICAgIEpTQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFM
TE1FTlRTKQorCisjaW5jbHVkZSAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVh
dHVyZVR5cGUgZmVhdHVyZVR5cGUgeyBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlQ2Fy
ZCB9OworICAgIFN0cmluZyBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhOworICAgIFN0cmluZyBvcGVu
VG9CdXlUaHJlc2hvbGRBbW91bnQ7CisgICAgU3RyaW5nIGJpbmRpbmdUb3RhbEFtb3VudDsKKyAg
ICBTdHJpbmcgY3VycmVuY3lDb2RlOworICAgIFN0cmluZyBtZXJjaGFudElkZW50aWZpZXI7Cisg
ICAgU3RyaW5nIHJlZmVycmVySWRlbnRpZmllcjsKKyAgICBib29sIGlzSW5TdG9yZVB1cmNoYXNl
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50
Q29uZmlndXJhdGlvbi5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1B
UFBMRV9QQVlfSU5TVEFMTE1FTlRTLAorXSBkaWN0aW9uYXJ5IEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgZmVhdHVyZVR5cGUg
PSAiYXBwbGVDYXJkIjsKKyAgICBET01TdHJpbmcgbWVyY2hhbmRpc2luZ0ltYWdlRGF0YTsKKyAg
ICBET01TdHJpbmcgb3BlblRvQnV5VGhyZXNob2xkQW1vdW50OworICAgIERPTVN0cmluZyBiaW5k
aW5nVG90YWxBbW91bnQ7CisgICAgRE9NU3RyaW5nIGN1cnJlbmN5Q29kZTsKKyAgICBET01TdHJp
bmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgIERPTVN0cmluZyByZWZlcnJlcklkZW50aWZpZXI7
CisgICAgYm9vbGVhbiBpc0luU3RvcmVQdXJjaGFzZTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmgJKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50Q29udGFjdC5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudE1ldGhvZC5oIgogCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBw
bGVQYXlQYXltZW50QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50IHsKQEAgLTQ2LDExICs0Miw3IEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnQgewogICAgIFRva2VuIHRva2VuOwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5
bWVudENvbnRhY3Q+IGJpbGxpbmdDb250YWN0OwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVu
dENvbnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsKLQotI2lmIGRlZmluZWQoQVBQTEVQQVlQQVlNRU5U
X0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBB
WU1FTlRfQURESVRJT05TCi0jZW5kaWYKKyAgICBTdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICByZXF1aXJlZCBBcHBsZVBheVBheW1lbnRUb2tl
biB0b2tlbjsKICAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IGJpbGxpbmdDb250YWN0OwogICAg
IEFwcGxlUGF5UGF5bWVudENvbnRhY3Qgc2hpcHBpbmdDb250YWN0OworICAgIFtDb25kaXRpb25h
bD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSBET01TdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiBbCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmgJKHJldmlzaW9uIDI1OTkyMikK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50UGFzcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50
TWV0aG9kQWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVt
IGNsYXNzIEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGU7CkBAIC00NiwxMSArNDIsNyBAQCBzdHJ1
Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kIHsgICAgCiAgICAgT3B0aW9uYWw8VHlwZT4gdHlwZTsK
ICAgICBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRQYXNzPiBwYXltZW50UGFzczsKICAgICBPcHRp
b25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKLQotI2lmIGRlZmlu
ZWQoQVBQTEVQQVlQQVlNRU5UTUVUSE9EX0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVE1FVEhP
RF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBBWU1FTlRNRVRIT0RfQURESVRJT05TCi0jZW5k
aWYKKyAgICBTdHJpbmcgYmluZFRva2VuOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlk
bAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRNZXRob2QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0ICszMyw1IEBA
CiAgICAgQXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZSB0eXBlOwogICAgIEFwcGxlUGF5UGF5bWVu
dFBhc3MgcGF5bWVudFBhc3M7CiAgICAgQXBwbGVQYXlQYXltZW50Q29udGFjdCBiaWxsaW5nQ29u
dGFjdDsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gRE9NU3RyaW5n
IGJpbmRUb2tlbjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSwxMiBAQAogCiAj
aW5jbHVkZSAiQXBwbGVQYXlMaW5lSXRlbS5oIgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRl
QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICBBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFs
OwogICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXM7Ci0KLSNpZiBkZWZp
bmVkKEFQUExFUEFZUEFZTUVOVE1FVEhPRFVQREFURV9BRERJVElPTlMpCi1BUFBMRVBBWVBBWU1F
TlRNRVRIT0RVUERBVEVfQURESVRJT05TCi0jdW5kZWYgQVBQTEVQQVlQQVlNRU5UTUVUSE9EVVBE
QVRFX0FERElUSU9OUwotI2VuZGlmCisgICAgU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlm
aWVyOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbAkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw0ICsyOCw1IEBACiBd
IGRpY3Rpb25hcnkgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICByZXF1aXJlZCBB
cHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsOwogICAgIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+
IG5ld0xpbmVJdGVtczsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10g
RE9NU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlmaWVyOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNl
LmNwcAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVJlcXVlc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI5
IEBACiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVJlcXVlc3RCYXNlQWRkaXRpb25z
LmNwcD4KLSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgdm9pZCBmaW5pc2hDb252
ZXJ0aW5nKEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQXBwbGVQYXlSZXF1ZXN0QmFz
ZSYpIHsgfQotc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1bnNpZ25lZCwg
Y29uc3QgQXBwbGVQYXlSZXF1ZXN0QmFzZSYpIHsgcmV0dXJuIHRydWU7IH0KLX0KKworc3RhdGlj
IHZvaWQgZmluaXNoQ29udmVydGluZyhBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVz
dWx0LCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9Q
QVlfSU5TVEFMTE1FTlRTKQorICAgIGlmIChyZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlv
bikKKyAgICAgICAgcmVzdWx0LnNldEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihXVEZNb3ZlKCpy
ZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAjZW5kaWYKK30KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1
bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIHJldHVybiB2ZXJzaW9uIDwg
OCB8fCAhcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTSh2ZXJzaW9uKTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CisgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKK30KIAogc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiBj
b252ZXJ0QW5kVmFsaWRhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCB2ZXJzaW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkTmV0d29ya3MsIGNvbnN0IFBheW1lbnRDb29y
ZGluYXRvciYgcGF5bWVudENvb3JkaW5hdG9yKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1
ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMTAgQEAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiQXBwbGVQYXlDb250YWN0RmllbGQuaCIKKyNpbmNsdWRl
ICJBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFwcGxlUGF5
TWVyY2hhbnRDYXBhYmlsaXR5LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50Q29udGFjdC5o
IgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlv
bnMvQXBwbGVQYXlSZXF1ZXN0QmFzZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC01NCw5ICs1MSw4IEBAIHN0cnVjdCBBcHBs
ZVBheVJlcXVlc3RCYXNlIHsKICAgICBTdHJpbmcgYXBwbGljYXRpb25EYXRhOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHN1cHBvcnRlZENvdW50cmllczsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlSRVFV
RVNUQkFTRV9BRERJVElPTlMpCi1BUFBMRVBBWVJFUVVFU1RCQVNFX0FERElUSU9OUwotI3VuZGVm
IEFQUExFUEFZUkVRVUVTVEJBU0VfQURESVRJT05TCisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNU
QUxMTUVOVFMpCisgICAgT3B0aW9uYWw8QXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNSArNjUsMTcgQEAKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBs
ZVBheVNlc3Npb25BZGRpdGlvbnMuY3BwPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0
YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUGF5bWVudE1ldGhvZFVwZGF0ZSYsIEFwcGxlUGF5
UGF5bWVudE1ldGhvZFVwZGF0ZSYmKSB7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBheW1lbnRNZXRob2RVcGRhdGUmIGNv
bnZlcnRlZFVwZGF0ZSwgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlJiYgdXBkYXRlKQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGNvbnZlcnRlZFVwZGF0ZS5z
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcih1cGRhdGUuaW5zdGFsbG1lbnRHcm91cElkZW50
aWZpZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udmVydGVkVXBkYXRlKTsKKyAgICBV
TlVTRURfUEFSQU0odXBkYXRlKTsKKyNlbmRpZgorfQogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXBwbGVQYXlTZXNzaW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
NCArMjgsMTEgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiUGF5bWVudENv
bnRhY3QuaCIKKyNpbmNsdWRlICJQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
LSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3RB
ZGRpdGlvbnMuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CkBAIC0xNDEsOSArMTM4LDkgQEAgcHVibGljOgog
ICAgIFJlcXVlc3RlciByZXF1ZXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQog
ICAgIHZvaWQgc2V0UmVxdWVzdGVyKFJlcXVlc3RlciByZXF1ZXN0ZXIpIHsgbV9yZXF1ZXN0ZXIg
PSByZXF1ZXN0ZXI7IH0KIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNTSU9OUEFZTUVOVFJFUVVF
U1RfUFVCTElDX0FERElUSU9OUykKLUFQUExFUEFZU0VTU0lPTlBBWU1FTlRSRVFVRVNUX1BVQkxJ
Q19BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVNFU1NJT05QQVlNRU5UUkVRVUVTVF9QVUJMSUNf
QURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICBjb25zdCBQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uJiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2luc3RhbGxtZW50Q29uZmlndXJhdGlvbjsgfQorICAgIHZvaWQgc2V0
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24m
JiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pIHsgbV9pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24g
PSBXVEZNb3ZlKGluc3RhbGxtZW50Q29uZmlndXJhdGlvbik7IH0KICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtMTcyLDkgKzE2OSw4IEBAIHByaXZhdGU6CiAKICAgICBSZXF1ZXN0ZXIgbV9yZXF1ZXN0
ZXIgeyBSZXF1ZXN0ZXI6OkFwcGxlUGF5SlMgfTsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNT
SU9OUEFZTUVOVFJFUVVFU1RfUFJJVkFURV9BRERJVElPTlMpCi1BUFBMRVBBWVNFU1NJT05QQVlN
RU5UUkVRVUVTVF9QUklWQVRFX0FERElUSU9OUwotI3VuZGVmIEFQUExFUEFZU0VTU0lPTlBBWU1F
TlRSRVFVRVNUX1BSSVZBVEVfQURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5U
UykKKyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIG1faW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBcHBsZVBheVNldHVwLmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQor
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiUGF5bWVudFNlc3Npb24uaCIKKyNpbmNsdWRlICJQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgYm9vbCBzaG91bGREaXNjbG9zZUZlYXR1cmVzKERvY3VtZW50JiBkb2N1bWVudCkKK3sK
KyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpOworICAgIGlmICghcGFnZSB8fCBwYWdl
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gZG9jdW1lbnQuc2V0dGluZ3MoKS5hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxs
b3dlZCgpOworfQorCit2b2lkIEFwcGxlUGF5U2V0dXA6OmdldFNldHVwRmVhdHVyZXMoRG9jdW1l
bnQmIGRvY3VtZW50LCBTZXR1cEZlYXR1cmVzUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgYXV0
byBjYW5DYWxsID0gUGF5bWVudFNlc3Npb246OmNhbkNyZWF0ZVNlc3Npb24oZG9jdW1lbnQpOwor
ICAgIGlmIChjYW5DYWxsLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2Uuc2V0dGxl
KGNhbkNhbGwucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkgewor
ICAgICAgICBwcm9taXNlLnNldHRsZShFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJlc29sdmUgd2l0aCBhbiBlbXB0eSBz
ZXF1ZW5jZSBvZiBmZWF0dXJlcyBpZiBBcHBsZSBQYXkgY2FwYWJpbGl0eSBkaXNjbG9zdXJlIGlz
IG5vdCBhbGxvd2VkLgorICAgIGlmICghc2hvdWxkRGlzY2xvc2VGZWF0dXJlcyhkb2N1bWVudCkp
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX3NldHVwRmVhdHVyZXNQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKworICAg
IHBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLmNsaWVudCgpLmdldFNldHVwRmVhdHVyZXMobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShWZWN0b3I8UmVmPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4mJiBzZXR1cEZlYXR1cmVzKSB7CisgICAgICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3NldHVwRmVhdHVyZXNQcm9taXNlLCBXVEY6
Om51bGxvcHQpLT5zZXR0bGUoV1RGTW92ZShzZXR1cEZlYXR1cmVzKSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgQXBwbGVQYXlTZXR1cDo6YmVnaW4oRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0b3I8UmVm
UHRyPEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcywgQmVnaW5Qcm9taXNlJiYgcHJv
bWlzZSkKK3sKKyAgICBhdXRvIGNhbkNhbGwgPSBQYXltZW50U2Vzc2lvbjo6Y2FuQ3JlYXRlU2Vz
c2lvbihkb2N1bWVudCk7CisgICAgaWYgKGNhbkNhbGwuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoY2FuQ2FsbC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yLCAiTXVzdCBjYWxsIEFwcGxlUGF5U2V0dXAuYmVnaW4gZnJvbSBhIHVz
ZXIgZ2VzdHVyZSBoYW5kbGVyLiIgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIHBy
b21pc2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fYmVnaW5Qcm9taXNlKSB7CisgICAgICAgIHByb21p
c2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9iZWdpblByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAg
IG1fcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7CisKKyAgICBw
YWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5iZWdpbkFwcGxlUGF5U2V0dXAobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgV1RGTW92ZShmZWF0dXJlcyksIFt0aGlzXShi
b29sIHJlc3VsdCkgeworICAgICAgICBpZiAobV9iZWdpblByb21pc2UpCisgICAgICAgICAgICBz
dGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUocmVzdWx0
KTsKKyAgICB9KTsKK30KKworQXBwbGVQYXlTZXR1cDo6QXBwbGVQYXlTZXR1cChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQoreworICAgIHN1c3BlbmRJZk5lZWRlZCgpOworfQorCit2b2lk
IEFwcGxlUGF5U2V0dXA6OnN0b3AoKQoreworICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UsIFdURjo6bnVs
bG9wdCktPnNldHRsZShFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworCisgICAgaWYgKG1fYmVn
aW5Qcm9taXNlKQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51
bGxvcHQpLT5zZXR0bGUoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKKworICAgIGlmIChhdXRv
IHBhZ2UgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucGFn
ZSgpKQorICAgICAgICBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5lbmRBcHBs
ZVBheVNldHVwKCk7CisKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgQXBwbGVQYXlTZXR1cDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIHN0
b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQ
UExFX1BBWV9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXR1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTZXR1cC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VU
VVApCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2ZURPTU9iamVjdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSlNET01Qcm9taXNlRGVmZXJyZWQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEFwcGxlUGF5U2V0dXBGZWF0dXJlOworY2xhc3MgRGVmZXJyZWRQcm9taXNlOworY2xhc3MgRG9j
dW1lbnQ7CisKK2NsYXNzIEFwcGxlUGF5U2V0dXAgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBw
dWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwPiB7CitwdWJsaWM6CisgICAgc3RydWN0IENv
bmZpZ3VyYXRpb24geworICAgICAgICBTdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgICAg
ICBTdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgc2lnbmF0dXJlOwor
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBzaWduZWRGaWVsZHM7CisgICAgfTsKKworICAgIHN0YXRp
YyBSZWY8QXBwbGVQYXlTZXR1cD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXBwbGVQYXlTZXR1cChjb250ZXh0LCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKSk7CisgICAgfQorCisgICAgdXNpbmcgU2V0dXBGZWF0dXJlc1Byb21pc2UgPSBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4+OworICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhEb2N1bWVudCYsIFNldHVwRmVhdHVyZXNQ
cm9taXNlJiYpOworCisgICAgdXNpbmcgQmVnaW5Qcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4+OworICAgIHZvaWQgYmVnaW4oRG9jdW1lbnQmLCBWZWN0b3I8UmVmUHRyPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4mJiwgQmVnaW5Qcm9taXNlJiYpOworCitwcml2YXRlOgorICAg
IEFwcGxlUGF5U2V0dXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENvbmZpZ3VyYXRpb24mJik7
CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkFwcGxlUGF5U2V0dXAiOyB9CisgICAgdm9p
ZCBzdG9wKCkgZmluYWw7CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZp
bmFsOworCisgICAgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgT3B0aW9uYWw8
U2V0dXBGZWF0dXJlc1Byb21pc2U+IG1fc2V0dXBGZWF0dXJlc1Byb21pc2U7CisgICAgT3B0aW9u
YWw8QmVnaW5Qcm9taXNlPiBtX2JlZ2luUHJvbWlzZTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2
aXR5PEFwcGxlUGF5U2V0dXA+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGwJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNldHVwLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKK10gZGljdGlvbmFyeSBBcHBsZVBh
eVNldHVwQ29uZmlndXJhdGlvbiB7CisgICAgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsK
KyAgICBET01TdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgIERPTVN0cmluZyBzaWduYXR1
cmU7CisgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBzaWduZWRGaWVsZHM7Cit9OworCitbCisgICAg
QWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKKyAgICBD
b25zdHJ1Y3RvcihBcHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSwKKyAg
ICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgRW5hYmxl
ZEJ5U2V0dGluZz1BcHBsZVBheSwKKyAgICBTZWN1cmVDb250ZXh0LAorXSBpbnRlcmZhY2UgQXBw
bGVQYXlTZXR1cCB7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNlPHNlcXVlbmNlPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4gZ2V0U2V0dXBGZWF0dXJlcygpOworICAgIFtDYWxsV2l0aD1E
b2N1bWVudF0gUHJvbWlzZTxib29sZWFuPiBiZWdpbihzZXF1ZW5jZTxBcHBsZVBheVNldHVwRmVh
dHVyZT4gc2V0dXBGZWF0dXJlcyk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1Mg
UEtQYXltZW50U2V0dXBGZWF0dXJlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xh
c3MgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIDogdWludDhfdDsKKworY2xhc3MgQXBwbGVQYXlT
ZXR1cEZlYXR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwRmVhdHVyZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+IGNyZWF0ZShQS1Bh
eW1lbnRTZXR1cEZlYXR1cmUgKmZlYXR1cmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBcHBsZVBheVNldHVwRmVhdHVyZShmZWF0dXJlKSk7CisgICAgfQorCisgICAgQXBw
bGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGUoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgU3Rh
dGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5zdXBwb3J0ZWQsCisgICAgICAgIFN1cHBvcnRlZCwK
KyAgICAgICAgU3VwcGxlbWVudGFyeVN1cHBvcnRlZCwKKyAgICAgICAgQ29tcGxldGVkLAorICAg
IH07CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKKworICAgIFBLUGF5bWVudFNldHVwRmVhdHVy
ZSAqcGxhdGZvcm1GZWF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlLmdldCgpOyB9CisK
KyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBib29sIHN1cHBvcnRzSW5z
dGFsbG1lbnRzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBBcHBsZVBheVNldHVwRmVhdHVyZShQS1BheW1lbnRTZXR1cEZlYXR1cmUgKik7
CisKKyAgICBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBGZWF0dXJlPiBtX2ZlYXR1cmU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1NF
VFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFs
PUFQUExFX1BBWV9TRVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVN0YXRlIHsKKyAg
ICAidW5zdXBwb3J0ZWQiLAorICAgICJzdXBwb3J0ZWQiLAorICAgICJzdXBwbGVtZW50YXJ5U3Vw
cG9ydGVkIiwKKyAgICAiY29tcGxldGVkIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPUFQUExF
X1BBWV9TRVRVUCwKKyAgICBFbmFibGVkQnlTZXR0aW5nPUFwcGxlUGF5LAorICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCisgICAgU2VjdXJlQ29udGV4dCwKK10gaW50ZXJmYWNlIEFwcGxl
UGF5U2V0dXBGZWF0dXJlIHsKKyAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1
dGUgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGU7CisgICAgW0NhY2hlZEF0dHJpYnV0ZV0g
cmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5U2V0dXBGZWF0dXJlU3RhdGUgc3RhdGU7CisgICAg
W0NhY2hlZEF0dHJpYnV0ZSwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNJbnN0YWxsbWVudHM7Cit9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXBGZWF0dXJlLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBcHBs
ZVBheVNldHVwRmVhdHVyZS5oIgorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworI2lt
cG9ydCAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW1wb3J0ICJQYXNzS2l0U1BJQWRk
aXRpb25zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlIEFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0eXBlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKFtt
X2ZlYXR1cmUgdHlwZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVR5cGVBcHBs
ZVBheToKKyAgICAgICAgcmV0dXJuIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZTo6QXBwbGVQYXk7
CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQYXlfWDoKKyAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIHJldHVybiBBcHBsZVBheVNldHVwRmVhdHVy
ZVR5cGU6OkFwcGxlQ2FyZDsKKyAgICB9Cit9CisKK0FwcGxlUGF5U2V0dXBGZWF0dXJlOjpTdGF0
ZSBBcHBsZVBheVNldHVwRmVhdHVyZTo6c3RhdGUoKSBjb25zdAoreworICAgIHN3aXRjaCAoW21f
ZmVhdHVyZSBzdGF0ZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlVW5z
dXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6VW5zdXBwb3J0ZWQ7CisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBvcnRlZDoKKyAgICAgICAgcmV0dXJuIFN0YXRl
OjpTdXBwb3J0ZWQ7CisgICAgY2FzZSBQS1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBsZW1l
bnRhcnlTdXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6U3VwcGxlbWVudGFyeVN1cHBv
cnRlZDsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlQ29tcGxldGVkOgorICAg
ICAgICByZXR1cm4gU3RhdGU6OkNvbXBsZXRlZDsKKyAgICB9Cit9CisKKyNpZiBFTkFCTEUoQVBQ
TEVfUEFZX0lOU1RBTExNRU5UUykKK2Jvb2wgQXBwbGVQYXlTZXR1cEZlYXR1cmU6OnN1cHBvcnRz
SW5zdGFsbG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fZmVhdHVyZSBzdXBwb3J0ZWRP
cHRpb25zXSAmIFBLUGF5bWVudFNldHVwRmVhdHVyZVN1cHBvcnRlZE9wdGlvbnNJbnN0YWxsbWVu
dHM7Cit9CisjZW5kaWYKKworQXBwbGVQYXlTZXR1cEZlYXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlKFBLUGF5bWVudFNldHVwRmVhdHVyZSAqZmVhdHVyZSkKKyAgICA6IG1fZmVhdHVyZSB7IGZl
YXR1cmUgfQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoQVBQTEVfUEFZX1NFVFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1
cmVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitlbnVtIGNsYXNzIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZSA6IHVpbnQ4X3Qg
eworICAgIEFwcGxlUGF5LAorICAgIEFwcGxlQ2FyZCwKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZVR5cGUuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9T
RVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgeworICAgICJhcHBsZVBheSIs
CisgICAgImFwcGxlQ2FyZCIKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oIgorI2luY2x1ZGUgIkFwcGxlUGF5U2V0dXAuaCIKKyNpbmNsdWRlICJBcHBsZVBheVNldHVw
RmVhdHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BheW1lbnRDb29yZGlu
YXRvckNsaWVudEFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRG9jdW1lbnQ7CkBAIC03MSwxMyArNzAsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorICAgIHZpcnR1YWwgdm9pZCBnZXRTZXR1
cEZlYXR1cmVzKGNvbnN0IEFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBBcHBsZVBheVNldHVwOjpD
b25maWd1cmF0aW9uJiwgY29uc3QgVVJMJiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheVNldHVwRmVh
dHVyZT4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIGVuZEFw
cGxlUGF5U2V0dXAoKSB7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwotCi0jaWYgZGVmaW5lZChQQVlNRU5U
Q09PUkRJTkFUT1JDTElFTlRfQURESVRJT05TKQotUEFZTUVOVENPT1JESU5BVE9SQ0xJRU5UX0FE
RElUSU9OUwotI3VuZGVmIFBBWU1FTlRDT09SRElOQVRPUkNMSUVOVF9BRERJVElPTlMKLSNlbmRp
ZgogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBQS1BheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb247CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEFw
cGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBQYXltZW50SW5z
dGFsbG1lbnRDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OworICAgIFBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24oY29uc3QgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24mKTsK
KyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24+JiYpOworCisgICAgUEtQYXltZW50SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBSZXRhaW5QdHI8UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBtX2NvbmZp
Z3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RB
TExNRU5UUykKKworI2ltcG9ydCAiQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCIK
KyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0b0RlY2ltYWxOdW1iZXIoKSBpbiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLgorc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNp
bWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQoreworICAgIGlmICghYW1vdW50KQorICAg
ICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciB6ZXJvXTsKKyAgICByZXR1cm4gW05TRGVjaW1h
bE51bWJlciBkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzphbW91bnQgbG9jYWxlOkB7IE5TTG9jYWxl
RGVjaW1hbFNlcGFyYXRvciA6IEAiLiIgfV07Cit9CisKK3N0YXRpYyBQS1BheW1lbnRTZXR1cEZl
YXR1cmVUeXBlIHBsYXRmb3JtRmVhdHVyZVR5cGUoY29uc3QgQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlJiBmZWF0dXJlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVUeXBlKSB7CisgICAgY2Fz
ZSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlUGF5OgorICAgICAgICByZXR1cm4gUEtQ
YXltZW50U2V0dXBGZWF0dXJlVHlwZUFwcGxlUGF5OworICAgIGNhc2UgQXBwbGVQYXlTZXR1cEZl
YXR1cmVUeXBlOjpBcHBsZUNhcmQ6CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCisgICAgICAgIHJldHVybiBQS1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQ
YXlfWDsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgfQor
fQorCitzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4g
Y3JlYXRlUGxhdGZvcm1Db25maWd1cmF0aW9uKGNvbnN0IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uJiBjb3JlQ29uZmlndXJhdGlvbikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uSW5z
dGFuY2UoKSBpbml0XSk7CisKKyAgICBbY29uZmlndXJhdGlvbiBzZXRGZWF0dXJlOnBsYXRmb3Jt
RmVhdHVyZVR5cGUoY29yZUNvbmZpZ3VyYXRpb24uZmVhdHVyZVR5cGUpXTsKKworICAgIFtjb25m
aWd1cmF0aW9uIHNldEJpbmRpbmdUb3RhbEFtb3VudDp0b0RlY2ltYWxOdW1iZXIoY29yZUNvbmZp
Z3VyYXRpb24uYmluZGluZ1RvdGFsQW1vdW50KV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0Q3Vy
cmVuY3lDb2RlOmNvcmVDb25maWd1cmF0aW9uLmN1cnJlbmN5Q29kZV07CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0SW5TdG9yZVB1cmNoYXNlOmNvcmVDb25maWd1cmF0aW9uLmlzSW5TdG9yZVB1cmNo
YXNlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRPcGVuVG9CdXlUaHJlc2hvbGRBbW91bnQ6dG9E
ZWNpbWFsTnVtYmVyKGNvcmVDb25maWd1cmF0aW9uLm9wZW5Ub0J1eVRocmVzaG9sZEFtb3VudCld
OworCisgICAgYXV0byBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmNvcmVDb25maWd1cmF0aW9uLm1lcmNo
YW5kaXNpbmdJbWFnZURhdGEgb3B0aW9uczowXSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVy
Y2hhbmRpc2luZ0ltYWdlRGF0YTptZXJjaGFuZGlzaW5nSW1hZ2VEYXRhLmdldCgpXTsKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVF9JREVOVElGSUVSUykKKyNpZiBQTEFURk9STShNQUMp
CisgICAgaWYgKCFbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dEluc3RhbGxtZW50TWVyY2hhbnRJZGVudGlmaWVyOildIHx8ICFbY29uZmlndXJhdGlvbiByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFJlZmVycmVySWRlbnRpZmllcjopXSkKKyAgICAg
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisjZW5kaWYKKyAgICBbY29uZmlndXJhdGlvbiBzZXRJ
bnN0YWxsbWVudE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElk
ZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldFJlZmVycmVySWRlbnRpZmllcjpjb3Jl
Q29uZmlndXJhdGlvbi5yZWZlcnJlcklkZW50aWZpZXJdOworI2VuZGlmCisKKyAgICByZXR1cm4g
Y29uZmlndXJhdGlvbjsKK30KKworUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjo6UGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihjb25zdCBBcHBsZVBheUluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IGNyZWF0
ZVBsYXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSB9Cit7Cit9CisKK1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb246OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24o
UmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0
aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShjb25maWd1cmF0aW9uKSB9Cit7
Cit9CisKK1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiAqUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbjo6cGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgJ
KHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudE1ldGhvZFVwZGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsNiBAQAogI2lu
Y2x1ZGUgIkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvUGF5bWVudE1ldGhvZFVwZGF0ZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIE9C
SkNfQ0xBU1MgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTUwLDExICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVG90YWxB
bmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKCkgY29uc3Q7CiAgICAgUEtQYXltZW50UmVx
dWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnBsYXRmb3JtVXBkYXRlKCkgY29uc3Q7CiAKLSNpZiBk
ZWZpbmVkKFBBWU1FTlRNRVRIT0RVUERBVEVfUFVCTElDX0FERElUSU9OUykKLVBBWU1FTlRNRVRI
T0RVUERBVEVfUFVCTElDX0FERElUSU9OUwotI3VuZGVmIFBBWU1FTlRNRVRIT0RVUERBVEVfUFVC
TElDX0FERElUSU9OUworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisgICAgdm9pZCBz
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKICNlbmRpZgotICAg
IAorCiBwcml2YXRlOgogICAgIE9wdGlvbmFsPFRvdGFsQW5kTGluZUl0ZW1zPiBtX3RvdGFsQW5k
TGluZUl0ZW1zOwogICAgIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZT4gbV9wbGF0Zm9ybVVwZGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDE4IEBACiAjaW1wb3J0ICJQYXltZW50TWV0
aG9kLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudENvY29h
QWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyB2b2lkIGZp
bmlzaENvbnZlcnRpbmcoUEtQYXltZW50ICosIEFwcGxlUGF5UGF5bWVudCYpIHsgfQotfQotI2Vu
ZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmco
UEtQYXltZW50ICpwYXltZW50LCBBcHBsZVBheVBheW1lbnQmIHJlc3VsdCkKK3sKKyNpZiBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGlmIChOU1N0cmluZyAqaW5zdGFsbG1lbnRBdXRo
b3JpemF0aW9uVG9rZW4gPSBwYXltZW50Lmluc3RhbGxtZW50QXV0aG9yaXphdGlvblRva2VuKQor
ICAgICAgICByZXN1bHQuaW5zdGFsbG1lbnRBdXRob3JpemF0aW9uVG9rZW4gPSBpbnN0YWxsbWVu
dEF1dGhvcml6YXRpb25Ub2tlbjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBheW1lbnQpOwor
ICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOworI2VuZGlmCit9CiAKIHN0YXRpYyBBcHBsZVBheVBh
eW1lbnQ6OlRva2VuIGNvbnZlcnQoUEtQYXltZW50VG9rZW4gKnBheW1lbnRUb2tlbikKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1ldGhvZENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDE4IEBACiAjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRNZXRo
b2RUeXBlLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudE1l
dGhvZENvY29hQWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRp
YyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICosIEFwcGxlUGF5UGF5bWVu
dE1ldGhvZCYpIHsgfQotfQotI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2
b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICpwYXltZW50TWV0aG9kLCBBcHBs
ZVBheVBheW1lbnRNZXRob2QmIHJlc3VsdCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1F
TlRTKQorICAgIGlmIChOU1N0cmluZyAqYmluZFRva2VuID0gcGF5bWVudE1ldGhvZC5iaW5kVG9r
ZW4pCisgICAgICAgIHJlc3VsdC5iaW5kVG9rZW4gPSBiaW5kVG9rZW47CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShwYXltZW50TWV0aG9kKTsKKyAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKKyNl
bmRpZgorfQogCiBzdGF0aWMgQXBwbGVQYXlQYXltZW50UGFzczo6QWN0aXZhdGlvblN0YXRlIGNv
bnZlcnQoUEtQYXltZW50UGFzc0FjdGl2YXRpb25TdGF0ZSBwYXltZW50UGFzc0FjdGl2YXRpb25T
dGF0ZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRNZXRob2RVcGRhdGVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksMTMgQEAg
UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKlBheQogICAgIHJldHVybiBtX3Bs
YXRmb3JtVXBkYXRlLmdldCgpOwogfQogCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K3ZvaWQgUGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcikKK3sKKyAgICBbbV9wbGF0
Zm9ybVVwZGF0ZSBzZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcjppbnN0YWxsbWVudEdyb3Vw
SWRlbnRpZmllcl07Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNv
Y29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTUgKzMxLDI3IEBACiAjaW1wb3J0ICJBcHBsZVBheVNlc3Npb25FcnJvci5oIgogI2ltcG9y
dCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2FB
ZGRpdGlvbnMubW0+Ci0jZWxzZQogbmFtZXNwYWNlIFdlYkNvcmUgewotc3RhdGljIE9wdGlvbmFs
PEFwcGxlUGF5U2Vzc2lvbkVycm9yPiBhZGRpdGlvbmFsRXJyb3IoTlNFcnJvciAqKSB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CitzdGF0
aWMgT3B0aW9uYWw8QXBwbGVQYXlTZXNzaW9uRXJyb3I+IGFkZGl0aW9uYWxFcnJvcihOU0Vycm9y
ICplcnJvcikKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIC8vIEZJWE1F
OiBSZXBsYWNlIHdpdGggUEtQYXltZW50RXJyb3JCaW5kVG9rZW5Vc2VySW5mb0tleSBhbmQKKyAg
ICAvLyBQS1BheW1lbnRBdXRob3JpemF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3Igd2hlbiB0
aGV5J3JlIGF2YWlsYWJsZSBpbiBhbiBTREsuCisgICAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
YmluZFRva2VuS2V5ID0gQCJQS1BheW1lbnRFcnJvckJpbmRUb2tlbiI7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBOU0ludGVnZXIgcGtQYXltZW50QXV0aG9yaXphdGlvbkZlYXR1cmVBcHBsaWNhdGlv
bkVycm9yID0gLTIwMTY7CisKKyAgICBpZiAoZXJyb3IuY29kZSAhPSBwa1BheW1lbnRBdXRob3Jp
emF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3IpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBpZCBiaW5kVG9rZW5WYWx1ZSA9IGVycm9yLnVzZXJJbmZvW2JpbmRUb2tlbktl
eV07CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighYmluZFRv
a2VuVmFsdWUgfHwgW2JpbmRUb2tlblZhbHVlIGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3Nd
KTsKKyAgICByZXR1cm4gQXBwbGVQYXlTZXNzaW9uRXJyb3IgeyAiZmVhdHVyZUFwcGxpY2F0aW9u
RXJyb3IiX3MsIHsgeyAiYmluZFRva2VuIl9zLCAoTlNTdHJpbmcgKiliaW5kVG9rZW5WYWx1ZSB9
IH0gfTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworI2VuZGlmCit9CiAKIFBheW1lbnRTZXNzaW9uRXJyb3I6OlBheW1lbnRTZXNzaW9u
RXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+JiYgZXJyb3IpCiAgICAgOiBtX3BsYXRmb3JtRXJyb3Ig
eyBXVEZNb3ZlKGVycm9yKSB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVJlcXVlc3Qu
aWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDQgKzI4LDUgQEAKIF0gZGljdGlvbmFyeSBBcHBsZVBheVJlcXVlc3QgOiBBcHBsZVBheVJlcXVl
c3RCYXNlIHsKICAgICByZXF1aXJlZCB1bnNpZ25lZCBsb25nIHZlcnNpb247CiAgICAgcmVxdWly
ZWQgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVf
UEFZX0lOU1RBTExNRU5UU10gQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gaW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyB0YXNrRGVs
YXlJbnRlcnZhbCB7IDEwMF9tcyB9OwogCi0jdW5kZWYgTE9HSURFTlRJRklFUgotI2RlZmluZSBM
T0dJREVOVElGSUVSIF9fZnVuY19fCi0KLSN1bmRlZiBBTFdBWVNfTE9HCi0jZGVmaW5lIEFMV0FZ
U19MT0cgbG9nZ2VyKCkubG9nQWx3YXlzCisjZGVmaW5lIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUiBsb2dnZXIoKS5sb2dBbHdheXMKIAogc3RydWN0IENsaWVudFN0YXRlIHsKICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjEsMTkgKzE1NywxOSBAQCB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpCiAgICAgaWYgKG1fbW9ja1BpY2tl
ckVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18pOwogICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOwogfQogCiB2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3Rh
dGUpCiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwogICAgIG1vY2tQaWNrZXIoKS5zZXRTdGF0ZShu
YW1lLCBzdGF0ZSk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQogewotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19f
KTsKICAgICBtb2NrUGlja2VyKCkuZGlzbWlzc1BvcHVwKCk7CiB9CiAKQEAgLTIwOCw3ICsyMDQs
NyBAQCB1aW50NjRfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5CiAgICAgaWYgKGlu
ZGV4ICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgY29udGV4dElkKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18sIGNvbnRleHRJZCk7CiAgICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQobWFrZVVu
aXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKIAogICAgIGlmIChtX2V4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJnZXQpCkBAIC0yMjQsNyAr
MjIwLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YgogICAgIGlm
IChpbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CisgICAgQUxXQVlTX0xP
R19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQo
KSk7CiAKICAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpbmRleCk7CiAgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRz
Q29uZmlndXJhdGlvblRhc2spOwpAQCAtMjM3LDcgKzIzMyw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGwKIAogICAgIGZvciAoc2l6ZV90IGkgPSBtX2NsaWVudFN0
YXRlLnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICBpZiAoJm1fY2xpZW50U3RhdGVbaSAt
IDFdLT5jbGllbnQgPT0gJmNsaWVudCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBtX2NsaWVudFN0YXRlW2kgLSAxXS5nZXQoKSk7CisgICAgICAgICAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaSAtIDFdLmdl
dCgpKTsKICAgICAgICAgICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGkgLSAxKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTI1Nyw3ICsyNTMsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNob3dQbGF5YmFjCiAgICAgICAgIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2VyID0g
c3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1BpY2tlcjsKICAgICB9CiAKLSAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsKKyAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdl
dCgpKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlUm91dGUgPSBmbGFnc0FyZVNldChtX2NsaWVudFN0
YXRlW2luZGV4XS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZp
Y2UpOwogICAgIHRhcmdldFBpY2tlcigpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihGbG9hdFJl
Y3QocmVjdCksIGhhc0FjdGl2ZVJvdXRlLCB1c2VEYXJrQXBwZWFyYW5jZSk7CkBAIC0yNzUsNyAr
MjcxLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjbGllbnRTdGF0ZQogICAgIGlm
IChuZXdGbGFncyA9PSBvbGRGbGFncykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSwgIm5ldyBmbGFncyA9
ICIsIG5ld0ZsYWdzKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3IGZsYWdzID0gIiwgbmV3RmxhZ3Mp
OwogCiAgICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFncyA9IG5ld0ZsYWdzOwogCkBAIC0yOTks
MjUgKzI5NSwyNSBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoZmxhZ3NBcmVTZXQoc3RhdGUtPmZs
YWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSAmJiBmbGFnc0Fy
ZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgewotICAg
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiByZXR1cm5p
bmcgZWFybHkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBEbyBub3QgYmVnaW4gcGxheWluZyB0
byB0aGUgZGV2aWNlIHVubGVzcyBwbGF5YmFjayBoYXMganVzdCBzdGFydGVkLgogICAgIGlmICgh
ZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSB8fCBm
bGFnc0FyZVNldChvbGRGbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7Ci0g
ICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBlYXJseSwgcGxheWJh
Y2sgZGlkbid0IGp1c3Qgc3RhcnQiKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCAicmV0dXJuaW5nIGVhcmx5LCBwbGF5YmFjayBkaWRuJ3QganVzdCBz
dGFydCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBzdGF0ZSA6
IG1fY2xpZW50U3RhdGUpIHsKICAgICAgICAgaWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
ZmFsc2UpIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
Xywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChm
YWxzZSkiKTsKICAgICAgICAgc3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNT
SU9OTUFOQUdFUihfX2Z1bmNfXywgY2hhbmdlZENsaWVudFN0YXRlLmdldCgpLCAiIGNhbGxpbmcg
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICBjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAKICAgICBpZiAoaW5kZXggJiYgbV9jbGllbnRTdGF0
ZS5zaXplKCkgPiAxKQpAQCAtMzI2LDcgKzMyMiw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6Y2xpZW50U3RhdGUKIAogdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFz
QWN0aXZlUm91dGUoKSk7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVu
Y19fLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFzQWN0aXZlUm91dGUoKSk7CiAg
ICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsKICAgICBtX3RhcmdldENoYW5n
ZWQgPSB0cnVlOwogICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0NvbmZpZ3Vy
YXRpb25UYXNrKTsKQEAgLTMzNCw3ICszMzAsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNldFBsYXliYWNrCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCBhdmFpbGFibGUpOworICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgYXZhaWxhYmxlKTsKICAgICBtX2V4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlID0gYXZhaWxhYmxlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2Ns
aWVudFN0YXRlKQogICAgICAgICBzdGF0ZS0+Y2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKHN0YXRlLT5jb250ZXh0SWQsIGF2YWlsYWJsZSk7CkBAIC0zNDIsNyAr
MzM4LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpleHRlcm5hbE91dAogCiB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2Vk
KCkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIEFMV0FZU19MT0dfTUVE
SUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbV9wbGF5YmFja1RhcmdldFBpY2tlckRp
c21pc3NlZCA9IHRydWU7CiAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhUYXJnZXRDbGllbnRzQ29u
ZmlndXJhdGlvblRhc2spOwogfQpAQCAtMzc1LDcgKzM3MSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2xp
ZW50U3RhdGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0
YXRlW2ldOwogCi0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0KCks
ICIsIHJlcXVlc3RlZFBpY2tlciA9ICIsIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIpOworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAi
LCByZXF1ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKTsKIAogICAgICAg
ICBpZiAoKG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2Vk
KSAmJiBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKQogICAgICAgICAgICAgaW5kZXhPZkNsaWVudFRo
YXRSZXF1ZXN0ZWRQaWNrZXIgPSBpOwpAQCAtNDAxLDEyICszOTcsMTIgQEAgdm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5z
ZXRQbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCAqbV9wbGF5YmFja1RhcmdldC5jb3B5
UmVmKCkpOwogCiAgICAgICAgIGlmIChpICE9IGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0
IHx8ICFoYXZlQWN0aXZlUm91dGUpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dChmYWxzZSkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChmYWxzZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgZmFsc2UpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgJiYgbV9wbGF5YmFja1RhcmdldFBpY2tl
ckRpc21pc3NlZCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkIik7Cisg
ICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRl
LmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKICAg
ICAgICAgICAgIHN0YXRlLT5jbGllbnQucGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQo
c3RhdGUtPmNvbnRleHRJZCk7CiAgICAgICAgIH0KIApAQCAtNDE4LDcgKzQxNCw3IEBAIHZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBpZiAoaGF2ZUFjdGl2ZVJv
dXRlICYmIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ICE9IG5vdEZvdW5kKSB7CiAgICAg
ICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1Rh
cmdldF07CiAgICAgICAgIGlmICghZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkgewotICAgICAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0KHRydWUpIik7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lP
Tk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC00MzMsNyArNDI5LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
Ojpjb25maWd1cmVQbAogICAgIGJvb2wgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSBmYWxzZTsK
ICAgICBib29sIGhhdmVDbGllbnRXaXRoTWVkaWEgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIHN0
YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
IHN0YXRlLmdldCgpKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBzdGF0ZS5nZXQoKSk7CiAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVBy
b2R1Y2VyOjpSZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykgewogICAgICAgICAgICAg
bW9uaXRvcmluZ1JlcXVpcmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQ1LDEw
ICs0NDEsMTAgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAg
IH0KIAogICAgIGlmIChtb25pdG9yaW5nUmVxdWlyZWQgfHwgKGhhc0F2YWlsYWJpbGl0eUxpc3Rl
bmVyICYmIGhhdmVDbGllbnRXaXRoTWVkaWEpKSB7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInN0YXJ0aW5nIG1vbml0b3JpbmciKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOwogICAgICAg
ICB0YXJnZXRQaWNrZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyBt
b25pdG9yaW5nIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXywgInN0b3BwaW5nIG1vbml0b3JpbmciKTsKICAgICAgICAgdGFyZ2V0UGlja2VyKCkuc3Rv
cE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAgICB9CiB9CkBAIC00OTAsNyArNDg2LDcg
QEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogCiAgICAgaWYgKCFt
X3BsYXliYWNrVGFyZ2V0IHx8ICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpKSB7
CiAgICAgICAgIGlmIChtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic3RvcHBpbmcgdGltZXIiKTsKKyAgICAgICAgICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVy
Iik7CiAgICAgICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9OwogICAgICAg
ICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKICAgICAgICAgfQpAQCAtNTAyLDcgKzQ5OCw3
IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2EKICAgICBib29sIGRp
ZFBsYXlUb0VuZCA9IGZhbHNlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRl
KSB7CiAKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBw
bGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcGxheWVkVG9FbmQg
PSAiLCBzdGF0ZS0+cGxheWVkVG9FbmQpOwogCiAgICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZs
YWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKQog
ICAgICAgICAgICAgc3RvcFRpbWVyID0gdHJ1ZTsKQEAgLTUxMiw3ICs1MDgsNyBAQCB2b2lkIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhCiAgICAgfQogCiAgICAgaWYgKHN0b3BU
aW1lcikgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyB0aW1l
ciIpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJz
dG9wcGluZyB0aW1lciIpOwogICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9
OwogICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwogICAgIH0gZWxzZSB7CkBAIC01MjAs
NyArNTE2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogICAg
ICAgICBpZiAoaW50ZXJ2YWwgIT0gbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCB8fCAhbV93YXRj
aGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFy
dE9uZVNob3QoaW50ZXJ2YWwpOwogICAgICAgICB9Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNv
bmRzIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywg
InRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNvbmRzIik7CiAg
ICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgPSBpbnRlcnZhbDsKICAgICB9CiB9CkBA
IC01MzAsNyArNTI2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bQogICAgIGlmICghbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOwogICAgIHRhcmdldFBpY2tlcigpLmludmFsaWRhdGVQbGF5YmFja1Rhcmdl
dHMoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAxMDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDQtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBNb3ZlIEFwcGxlUGF5IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMgdG8g
V2ViQ29yZSBhbmQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTA1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisg
ICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsubW06CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg6CisKIDIwMjAtMDQtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZG9wdCBpbnRlcmZhY2UgQVZBdWRpb1JvdXRpbmdBcmJpdGVyIGZvciBNYWMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTggQEAgU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQS1BheW1lbgogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRNZXRob2QpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5
bWVudE1lcmNoYW50U2Vzc2lvbikKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50UmVxdWVzdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBL
UGF5bWVudFNldHVwRmVhdHVyZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50U2V0dXBSZXF1ZXN0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRTdW1tYXJ5SXRlbSkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
UEtTaGlwcGluZ01ldGhvZCkKIAorI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbikKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIpCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRM
aW5rLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L1Bhc3NLaXRTb2Z0TGluay5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDMyIEBACiAK
ICNpZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCi0jZWxzZQorCitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0
dXBDb250cm9sbGVyLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BU
SU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cEZlYXR1cmUsIFBB
TF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9S
VChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwUmVxdWVzdCwgUEFMX0VYUE9SVCkKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9P
UFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKKyNlbmRpZgorCisjZWxzZSAvLyBQTEFURk9STShNQUMp
CisKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NL
aXQsIFBBTF9FWFBPUlQpCisKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQor
U09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwRmVhdHVyZSwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50U2V0dXBSZXF1ZXN0LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cFZpZXdD
b250cm9sbGVyLCBQQUxfRVhQT1JUKQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQogI2VuZGlmCiAKKyNl
bmRpZiAvLyBQTEFURk9STShNQUMpCisKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0LCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bhc3NMaWJyYXJ5LCBQ
QUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQS1BheW1lbnQsIFBBTF9FWFBPUlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDExICs0NywyOCBAQCBXVEZfRVhURVJOX0NfRU5ECiAjaW1wb3J0IDxQYXNzS2l0L1BL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxQ
YXNzS2l0L1BLUGF5bWVudE1ldGhvZC5oPgogI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRSZXF1
ZXN0X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uX1dlYktpdC5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRTZXR1cENvbnRyb2xsZXIu
aD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxQ
YXNzS2l0Q29yZS9QS1BheW1lbnRSZXF1ZXN0U3RhdHVzX1ByaXZhdGUuaD4KICNpbXBvcnQgPFBh
c3NLaXRDb3JlL1BLUGF5bWVudFJlcXVlc3RfV2ViS2l0Lmg+CiAKKyNpZiBIQVZFKFBBU1NLSVRf
SU5TVEFMTE1FTlRTKQorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50X1ByaXZhdGUuaD4K
KyNpbXBvcnQgPFBhc3NLaXRDb3JlL1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5o
PgorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50TWV0aG9kX1ByaXZhdGUuaD4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50
QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyLmg+CisjZW5kaWYKKworI2lmIEhBVkUoUEFTU0tJVF9J
TlNUQUxMTUVOVF9JREVOVElGSUVSUykgJiYgUExBVEZPUk0oTUFDKQorQGludGVyZmFjZSBQS1Bh
eW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKFdlYktpdFNQSSkKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNTdHJpbmcgKmluc3RhbGxtZW50TWVyY2hhbnRJZGVu
dGlmaWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU1N0cmluZyAq
cmVmZXJyZXJJZGVudGlmaWVyOworQGVuZAogI2VuZGlmCiAKICNlbHNlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5MDAsNiArMTkwMCw5IEBACiAJCTVDMkIxQUVDMjIz
OTdFQkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY3OEQwQjFDMjU0MjJDMDAyNDU0NDYg
LyogUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tICovOyB9OwogCQk1QzQzMDRCMTE5MUFDOTA4MDAw
RTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRl
clRleHR1cmVMT0QuaCAqLzsgfTsKIAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhU
U2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM0MzA0QjQxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxP
RC5oICovOyB9OworCQk1QzUzRENFMTI0NDY1REZDMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
NTNEQ0NGMjQ0NjQ0OTkwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNTNEQ0U3MjQ0NjhB
RDIwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzUzRENDRTI0NDY0NDk5MDBB
OTMxMjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNTNEQ0VBMjQ0NjhGQjQwMEE5
MzEyNCAvKiBBcHBsZVBheVNldHVwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNUQy
Mzg1MjI3QTA2NTIwMDBCOUJEQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUQyMzgzMjI3QTA2M0EwMDBCOUJE
QSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
N0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDOUMyREI1MjI0MUE2N0IwMDk5
NkIwQiAvKiBDb250ZW50UnVsZUxpc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlDMkRCMzIyNDFBNjczMDA5OTZCMEIgLyogQ29udGVu
dFJ1bGVMaXN0UmVzdWx0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05MDkxLDYgKzkwOTQsMTggQEAKIAkJNUM1MzgxQjExRDg3RDQ1NzAwRTJF
QkU2IC8qIFVSTFNlYXJjaFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVUkxTZWFyY2hQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1Mzgx
QjMxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1MzgxQjQxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2Vh
cmNoUGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVVJMU2VhcmNo
UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0M2MjQ0NjQ0OTcw
MEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBs
ZVBheVNldHVwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQzkyNDQ2
NDQ5ODAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0NBMjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBh
eVNldHVwRmVhdHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDQjI0NDY0NDk4
MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcHBsZVBheVNldHVwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNE
Q0NDMjQ0NjQ0OTkwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RD
Q0UyNDQ2NDQ5OTAwQTkzMTI0IC8qIFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDRjI0NDY0NDk5
MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUM1M0RDRDAyNDQ2NDQ5QTAwQTkzMTI0IC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxlUGF5U2V0dXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlT
ZXR1cEZlYXR1cmVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUz
RENENTI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24u
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDRDYyNDQ2NDQ5QzAw
QTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM1RDIzODMyMjdBMDYzQTAwMEI5QkRBIC8qIEN1c3RvbUhlYWRlckZpZWxkcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21IZWFkZXJGaWVsZHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1RDIzODYyMjdBMDc3QzAwMEI5QkRBIC8q
IEN1c3RvbUhlYWRlckZpZWxkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDdXN0b21IZWFkZXJGaWVsZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjcxLDYgKzE3Mjg2LDgg
QEAKIAkJCQlBMUJCODU5QjIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaWRs
ICovLAogCQkJCUExQkI4NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFj
dEZpZWxkLmggKi8sCiAJCQkJQTFCQjg1QTIyMTU5QUY1NzAwNjdFMDdEIC8qIEFwcGxlUGF5RXJy
b3JDb250YWN0RmllbGQuaWRsICovLAorCQkJCTVDNTNEQ0QwMjQ0NjQ0OUEwMEE5MzEyNCAvKiBB
cHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0Q1MjQ0NjQ0
OUIwMEE5MzEyNCAvKiBBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwgKi8sCiAJ
CQkJN0M2NTc5RTIxRTAwODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAqLywKIAkJ
CQk3QzY1NzlFNDFFMDA4MkM4MDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5pZGwgKi8sCiAJ
CQkJQTFERjVBQTgxRjgwNzBENDAwNThBNDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5
LmNwcCAqLywKQEAgLTE3MzA4LDYgKzE3MzI1LDE0IEBACiAJCQkJQTE5NTZGMUYyMzMxQThDNzAw
NTdFOUQyIC8qIEFwcGxlUGF5U2Vzc2lvbkVycm9yLmlkbCAqLywKIAkJCQkxQTU4RTg2MzFEMTlE
NERGMDBDMEVBNzMgLyogQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwICovLAogCQkJ
CTFBNThFODY0MUQxOUQ0REYwMEMwRUE3MyAvKiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oICovLAorCQkJCTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNw
cCAqLywKKwkJCQk1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICov
LAorCQkJCTVDNTNEQ0M2MjQ0NjQ0OTcwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLywK
KwkJCQk1QzUzRENDRjI0NDY0NDk5MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAq
LywKKwkJCQk1QzUzRENDQTI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsICovLAorCQkJCTVDNTNEQ0M5MjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVh
dHVyZS5tbSAqLywKKwkJCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmggKi8sCisJCQkJNUM1M0RDRDYyNDQ2NDQ5QzAwQTkzMTI0IC8qIEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8sCiAJCQkJMUE4QTY0NDcxRDE5RkNGQjAwRDBFMDBG
IC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAgKi8sCiAJCQkJMUE4
QTY0NDgxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRF
dmVudC5oICovLAogCQkJCTFBOEE2NDQ5MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBw
aW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuaWRsICovLApAQCAtMTczMzEsNiArMTczNTYsOCBAQAog
CQkJCUExMDRFQzUzMjIwQTAxNzQwMENCRjY3QSAvKiBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQu
Y3BwICovLAogCQkJCTFBNThFODYyMUQxOUQzQkYwMEMwRUE3MyAvKiBQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQuaCAqLywKIAkJCQk3Q0Y5MzBFNjFFMDFGOUFEMDBCQUZGQkUgLyogUGF5bWVudEhl
YWRlcnMuaCAqLywKKwkJCQk1QzUzRENDRTI0NDY0NDk5MDBBOTMxMjQgLyogUGF5bWVudEluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0NDMjQ0NjQ0OTkwMEE5MzEyNCAv
KiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tICovLAogCQkJCTFBRTk2QTg3MUQx
QTBDRUIwMEI4Njc2OCAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uLmggKi8sCiAJCQkJMUE4QTY0
MzkxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1lbnRNZXRob2QuaCAqLywKIAkJCQlBMURGRDUyNDIz
MzQ1OTNBMDA0MkZDREIgLyogUGF5bWVudE1ldGhvZFVwZGF0ZS5oICovLApAQCAtMjkzOTcsNiAr
Mjk0MjQsOCBAQAogCQkJCTFBOEE2NDU5MUQxOUZDRkMwMEQwRTAwRiAvKiBBcHBsZVBheVNlc3Np
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUExOTU2RjIwMjMzMUE4QzcwMDU3RTlEMiAvKiBBcHBs
ZVBheVNlc3Npb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1OEU4NjUxRDE5RDRFQjAw
QzBFQTczIC8qIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk1QzUzRENFQTI0NDY4RkI0MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNUM1M0RDRTEyNDQ2NURGQzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0
dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThBNjQ1QzFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBw
bGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MTJDNTlGMjIwMzVGQ0Q2MDAxMjIzNkIgLyogQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDNjU3OUU4MUUwMDgzMTYwMEUzQTI3QSAvKiBBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTIyLDYgKzMyMTUxLDcgQEAK
IAkJCQlBMUY2MDA0OTFGNDc1OTRFMDA3N0U4M0YgLyogUGF5bWVudERldGFpbHNVcGRhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUExREY1QUE2MUY3RjY0QkIwMDU4QTQ3NyAvKiBQYXltZW50SGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NGOTMwRTcxRTAxRjlCNDAwQkFGRkJFIC8qIFBh
eW1lbnRIZWFkZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzUzRENFNzI0NDY4QUQyMDBBOTMx
MjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTFGNzZCMzExRjQ0QzU1QTAwMTRDMzE4IC8qIFBheW1lbnRJdGVtLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUU5NkE4OTFEMUEwQ0VCMDBCODY3NjggLyogUGF5bWVudE1lcmNoYW50U2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4QTY0M0MxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1l
bnRNZXRob2QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViQ29yZUFkZGl0aW9ucy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCwzIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYkNv
cmVBZGRpdGlvbnMubW0+Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAwODEpCisr
KyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDIwLTA0LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTW92ZSBBcHBsZVBheSBjb2RlIGZyb20gV2ViS2l0QWRkaXRpb25zIHRvIFdl
YkNvcmUgYW5kIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEwNTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVw
RmVhdHVyZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVz
OjpwbGF0Zm9ybUZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvQXBw
bGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBh
eW1lbnRTZXR1cEZlYXR1cmVzOjpQYXltZW50U2V0dXBGZWF0dXJlcyk6CisgICAgICAgIChXZWJL
aXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpQYXltZW50U2V0dXBGZWF0dXJlczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVu
dFNldHVwRmVhdHVyZXM6Om9wZXJhdG9yIFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1
cEZlYXR1cmU+PiBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICogU2hh
cmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW06IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0Ojp0b1BsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpmaW5pc2hDb25zdHJ1
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvY29j
b2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXRB
ZGRpdGlvbnM6OnRvUGxhdGZvcm1Db25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdEFkZGl0
aW9uczo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bik6CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmZpbmlz
aENyZWF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6YmVnaW5BcHBsZVBheVNldHVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OmVuZEFwcGxlUGF5U2V0dXApOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1FbmRB
cHBsZVBheVNldHVwKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OmZpbmlzaERlY29kaW5nKToKKyAgICAgICAgKElQ
Qzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
OjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50
Q29vcmRpbmF0b3I6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OmJlZ2luQXBwbGVQYXlTZXR1cCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBheW1lbnRDb29yZGluYXRvcjo6ZW5kQXBwbGVQYXlTZXR1cCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKwogMjAyMC0wNC0xNCAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmplY3RlZEJ1bmRs
ZSBwYXJhbWV0ZXJzIG9mdGVuIG5lZWQgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gY2FsbGVkIGJl
Zm9yZSB1bmFyY2hpdmluZwpJbmRleDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTAsOCArMjUwLDYgQEAgU0NSSVBUUyA9IFwKIEZSQU1FV09SS19GTEFHUyA9
ICQoc2hlbGwgZWNobyAkKEJVSUxUX1BST0RVQ1RTX0RJUikgJChGUkFNRVdPUktfU0VBUkNIX1BB
VEhTKSAkKFNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTKSB8IHBlcmwgLWUgJ3ByaW50ICIt
RiAiIC4gam9pbigiIC1GICIsIHNwbGl0KCIgIiwgPD4pKTsnKQogSEVBREVSX0ZMQUdTID0gJChz
aGVsbCBlY2hvICQoQlVJTFRfUFJPRFVDVFNfRElSKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpICQo
U1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFMpIHwgcGVybCAtZSAncHJpbnQgIi1JIiAuIGpvaW4o
IiAtSSIsIHNwbGl0KCIgIiwgPD4pKTsnKQogCi0taW5jbHVkZSBXZWJLaXREZXJpdmVkU291cmNl
c0FkZGl0aW9ucy5tYWtlCi0KIC5QSE9OWSA6IGFsbAogCiBhbGwgOiBcCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOCBAQCBTaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlCiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Lm1tCiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KIAorU2hhcmVk
L0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0KK1NoYXJlZC9BcHBsZVBh
eS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuY3BwCiBTaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5tbQogU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUlPUy5tbQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NDEsNiArNjQxLDcgQEAgZGVmIGhl
YWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRl
eHRJRCc6IFsnIkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5
ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlBh
eW1lbnRTZXR1cEZlYXR1cmVzJzogWyciQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oIidd
LAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9yJzogWyciR2VzdHVyZVR5
cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCc6IFsnIldlYkV2ZW50
LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQnOiBbJyJXZWJFdmVudC5o
IiddLApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50
U2V0dXBGZWF0dXJlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKK09CSkNfQ0xBU1MgUEtQYXlt
ZW50U2V0dXBGZWF0dXJlOworCisjaW5jbHVkZSA8V2ViQ29yZS9BcHBsZVBheVNldHVwRmVhdHVy
ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGF5bWVudFNldHVwRmVhdHVyZXMgeworcHVi
bGljOgorICAgIFBheW1lbnRTZXR1cEZlYXR1cmVzKFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBw
bGVQYXlTZXR1cEZlYXR1cmU+PiYmKTsKKyAgICBQYXltZW50U2V0dXBGZWF0dXJlcyhSZXRhaW5Q
dHI8TlNBcnJheT4mJiA9IG51bGxwdHIpOworCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7CisgICAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRTZXR1cEZlYXR1cmVzPiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJik7CisKKyAgICBOU0FycmF5ICpwbGF0Zm9ybUZlYXR1cmVzKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybUZlYXR1cmVzLmdldCgpOyB9CisgICAgb3BlcmF0b3IgVmVj
dG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fcGxhdGZvcm1GZWF0dXJlczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VU
VVApCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRT
ZXR1cEZlYXR1cmVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0JKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgiCisKKyNp
ZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKworI2ltcG9ydCAiQXJndW1lbnRDb2RlcnND
b2NvYS5oIgorI2ltcG9ydCAiRGVjb2Rlci5oIgorI2ltcG9ydCAiRW5jb2Rlci5oIgorI2ltcG9y
dCA8V2ViQ29yZS9BcHBsZVBheVNldHVwRmVhdHVyZS5oPgorCisjaW1wb3J0IDxwYWwvY29jb2Ev
UGFzc0tpdFNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgTlNBcnJh
eTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4gKnRvUGxhdGZvcm1GZWF0dXJlcyhWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcykKK3sKKyAgICBO
U011dGFibGVBcnJheSAqcGxhdGZvcm1GZWF0dXJlcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdp
dGhDYXBhY2l0eTpmZWF0dXJlcy5zaXplKCldOworICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IGZl
YXR1cmVzKSB7CisgICAgICAgIGlmIChmZWF0dXJlKQorICAgICAgICAgICAgW3BsYXRmb3JtRmVh
dHVyZXMgYWRkT2JqZWN0OmZlYXR1cmUtPnBsYXRmb3JtRmVhdHVyZSgpXTsKKyAgICB9CisgICAg
cmV0dXJuIHBsYXRmb3JtRmVhdHVyZXM7Cit9CisKK1BheW1lbnRTZXR1cEZlYXR1cmVzOjpQYXlt
ZW50U2V0dXBGZWF0dXJlcyhWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlPj4mJiBmZWF0dXJlcykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IHRvUGxhdGZvcm1G
ZWF0dXJlcyhXVEZNb3ZlKGZlYXR1cmVzKSkgfQoreworfQorCitQYXltZW50U2V0dXBGZWF0dXJl
czo6UGF5bWVudFNldHVwRmVhdHVyZXMoUmV0YWluUHRyPE5TQXJyYXk+JiYgcGxhdGZvcm1GZWF0
dXJlcykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IFdURk1vdmUocGxhdGZvcm1GZWF0dXJl
cykgfQoreworfQorCit2b2lkIFBheW1lbnRTZXR1cEZlYXR1cmVzOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9wbGF0Zm9ybUZlYXR1cmVz
OworfQorCitPcHRpb25hbDxQYXltZW50U2V0dXBGZWF0dXJlcz4gUGF5bWVudFNldHVwRmVhdHVy
ZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RhdGljIE5TQXJyYXkg
KmFsbG93ZWRDbGFzc2VzOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBhdXRvIGFsbG93ZWQgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Ml0pOworICAg
ICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6W05TQXJyYXkgY2xhc3NdXTsKKyAgICAgICAgaWYgKGF1
dG8gcGtQYXltZW50U2V0dXBGZWF0dXJlQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVudFNldHVwRmVh
dHVyZUNsYXNzKCkpCisgICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0
dXBGZWF0dXJlQ2xhc3NdOworICAgICAgICBhbGxvd2VkQ2xhc3NlcyA9IFthbGxvd2VkIGNvcHld
OworICAgIH0pOworCisgICAgYXV0byBwbGF0Zm9ybUZlYXR1cmVzID0gSVBDOjpkZWNvZGU8TlNB
cnJheTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4+KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsK
KyAgICBpZiAoIXBsYXRmb3JtRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gUGF5bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKCpwbGF0Zm9ybUZl
YXR1cmVzKSB9OworfQorCitQYXltZW50U2V0dXBGZWF0dXJlczo6b3BlcmF0b3IgVmVjdG9yPFJl
ZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4gZmVhdHVyZXM7CisgICAgZmVhdHVy
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbbV9wbGF0Zm9ybUZlYXR1cmVzIGNvdW50XSk7Cisg
ICAgZm9yIChQS1BheW1lbnRTZXR1cEZlYXR1cmUgKnBsYXRmb3JtRmVhdHVyZSBpbiBtX3BsYXRm
b3JtRmVhdHVyZXMuZ2V0KCkpCisgICAgICAgIGZlYXR1cmVzLnVuY2hlY2tlZEFwcGVuZChXZWJD
b3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKHBsYXRmb3JtRmVhdHVyZSkpOworICAg
IHJldHVybiBmZWF0dXJlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisj
aW5jbHVkZSAiQXBwbGVQYXlTZXR1cC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIFBLUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbjsKKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2Rl
cjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24geworcHVibGljOgorICAgIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oKSA9IGRlZmF1
bHQ7CisgICAgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNldHVwOjpDb25maWd1cmF0aW9uJiwgY29uc3QgVVJMJik7CisKKyAgICB2b2lkIGVuY29kZShJ
UEM6OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbj4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworCisgICAgUEtQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
bmZpZ3VyYXRpb24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+JiYp
OworCisgICAgUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gbV9jb25maWd1
cmF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBIQVZFKFBB
U1NLSVRfUEFZTUVOVF9TRVRVUCkKKwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24u
aCIKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW1wb3J0ICJBcmd1bWVu
dENvZGVyc0NvY29hLmgiCisjaW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVyLmgi
CisjaW1wb3J0IDx3dGYvVVJMLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExp
bmsuaD4KKworQGludGVyZmFjZSBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gKFdlYktpdCkK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpzaWduZWRG
aWVsZHM7CitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgUmV0YWluUHRyPFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29yZUNvbmZpZ3VyYXRpb24s
IGNvbnN0IFVSTCYgdXJsKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVBBTDo6Z2V0
UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyNlbmRpZgorCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkluc3RhbmNlKCkgaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIHNldE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElk
ZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldE9yaWdpbmF0aW5nVVJMOnVybF07Cisg
ICAgW2NvbmZpZ3VyYXRpb24gc2V0UmVmZXJyZXJJZGVudGlmaWVyOmNvcmVDb25maWd1cmF0aW9u
LnJlZmVycmVySWRlbnRpZmllcl07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lO
CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0U2lnbmF0dXJlOmNvcmVDb25maWd1cmF0aW9uLnNpZ25h
dHVyZV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorCisgICAgaWYgKFtjb25m
aWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0U2lnbmVkRmllbGRzOild
KSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5ICpzaWduZWRGaWVsZHMgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmVkRmllbGRzLnNpemUo
KV07CisgICAgICAgIGZvciAoYXV0byYgc2lnbmVkRmllbGQgOiBjb3JlQ29uZmlndXJhdGlvbi5z
aWduZWRGaWVsZHMpCisgICAgICAgICAgICBbc2lnbmVkRmllbGRzIGFkZE9iamVjdDpzaWduZWRG
aWVsZF07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25lZEZpZWxkczpzaWduZWRGaWVs
ZHNdOworICAgIH0KKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCitQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYg
dXJsKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbiwgdXJsKSB9Cit7Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShj
b25maWd1cmF0aW9uKSB9Cit7Cit9CisKK3ZvaWQgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1f
Y29uZmlndXJhdGlvbjsKK30KKworT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4g
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBzdGF0aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Cisg
ICAgICAgIGF1dG8gYWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eToxXSk7CisgICAgICAgIGlmIChhdXRvIHBrUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbkNsYXNzID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcygp
KQorICAgICAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbkNsYXNzXTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxsb3dlZCBjb3B5XTsKKyAg
ICB9KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAgIGlmICghY29u
ZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29uZmlndXJhdGlvbikgfTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0QWRkaXRpb25zCisKKyNlbmRpZiAvLyBIQVZFKFBBU1NL
SVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTUgKzUwLDYgQEAgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OldlYlBheW1lbnRDbwogICAgICwgbV9jYW5NYWtlUGF5bWVu
dHNRdWV1ZSB7IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNhbk1ha2VQYXlt
ZW50cyIpIH0KIHsKICAgICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVj
ZWl2ZXIoKnRoaXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7Ci0gICAgZmluaXNoQ29uc3RydWN0aW9uKCp0aGlzKTsK
LX0KLQotV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSgpCi17Ci0gICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OklkbGUpCi0gICAgICAgIGhpZGVQ
YXltZW50VUkoKTsKLQotICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmgJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDExICszNCwxMyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvV2Vha09iakNQdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0j
aW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5QWRkaXRp
b25zLmg+CisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCitPQkpDX0NMQVNTIFBLUGF5
bWVudFNldHVwVmlld0NvbnRyb2xsZXI7CitPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiAj
ZW5kaWYKIAogbmFtZXNwYWNlIElQQyB7CkBAIC02MCw4ICs2MiwxNCBAQCBPQkpDX0NMQVNTIFBL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29uCiBPQkpDX0NMQVNTIFBLUGF5bWVudFJlcXVlc3Q7
CiBPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiAKKyNpZiBQTEFURk9STShJT1MpCitPQkpD
X0NMQVNTIFBLUGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXI7CisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK2NsYXNzIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb247CitjbGFzcyBQYXlt
ZW50U2V0dXBGZWF0dXJlczsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkKQEAgLTEyNCw2ICsxMzIsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGFib3J0UGF5bWVudFNlc3Npb24oKTsKICAgICB2b2lkIGNhbmNlbFBheW1lbnRTZXNzaW9uKCk7
CiAKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKyAgICB2b2lkIGdldFNldHVwRmVh
dHVyZXMoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMmKT4mJik7CisgICAgdm9pZCBiZWdpbkFw
cGxlUGF5U2V0dXAoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiYsIGNvbnN0IFBheW1l
bnRTZXR1cEZlYXR1cmVzJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAg
dm9pZCBlbmRBcHBsZVBheVNldHVwKCk7CisgICAgdm9pZCBwbGF0Zm9ybUJlZ2luQXBwbGVQYXlT
ZXR1cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiwgY29uc3QgUGF5bWVudFNldHVw
RmVhdHVyZXMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHBs
YXRmb3JtRW5kQXBwbGVQYXlTZXR1cCgpOworI2VuZGlmCisKICAgICBib29sIGNhbkJlZ2luKCkg
Y29uc3Q7CiAgICAgYm9vbCBjYW5DYW5jZWwoKSBjb25zdDsKICAgICBib29sIGNhbkNvbXBsZXRl
UGF5bWVudCgpIGNvbnN0OwpAQCAtMTkxLDEyICsyMDcsOCBAQCBwcml2YXRlOgogICAgIFJldGFp
blB0cjxOU1dpbmRvdz4gbV9zaGVldFdpbmRvdzsKICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1f
c2hlZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZlcjsKICNlbmRpZgotICAgIAotI2lmIGRlZmluZWQo
V0VCUEFZTUVOVENPT1JESU5BVE9SUFJPWFlfQURESVRJT05TKQotV0VCUEFZTUVOVENPT1JESU5B
VE9SUFJPWFlfQURESVRJT05TCi0jdW5kZWYgV0VCUEFZTUVOVENPT1JESU5BVE9SUFJPWFlfQURE
SVRJT05TCi0jZWxzZQotICAgIHZvaWQgZmluaXNoQ29uc3RydWN0aW9uKFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5JikgeyB9CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFdlYWtPYmpDUHRyPFBL
UGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXI+IG1fcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXI7
CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgTgog
ICAgIENvbXBsZXRlUGF5bWVudFNlc3Npb24oT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25SZXN1bHQ+IHJlc3VsdCkKICAgICBBYm9ydFBheW1lbnRTZXNzaW9uKCkKICAgICBD
YW5jZWxQYXltZW50U2Vzc2lvbigpCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisg
ICAgR2V0U2V0dXBGZWF0dXJlcyhXZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gY29u
ZmlndXJhdGlvbikgLT4gKFdlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMgZmVhdHVyZXMpIEFz
eW5jCisgICAgQmVnaW5BcHBsZVBheVNldHVwKFdlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uLCBXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzIGZlYXR1cmVz
KSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCisgICAgRW5kQXBwbGVQYXlTZXR1cCgpCisjZW5kaWYK
IH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9Q
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0JKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24uaCIKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW1wb3J0ICJBcmd1
bWVudENvZGVyc0NvY29hLmgiCisjaW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVy
LmgiCisjaW1wb3J0ICJQYXNzS2l0U29mdExpbmtBZGRpdGlvbnMuaCIKKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KKworQGludGVyZmFjZSBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gKFdlYktpdCkK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpzaWduZWRG
aWVsZHM7CitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXRBZGRpdGlvbnMgeworCitzdGF0aWMgUmV0
YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gdG9QbGF0Zm9ybUNvbmZpZ3VyYXRp
b24oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29yZUNvbmZp
Z3VyYXRpb24sIGNvbnN0IFVSTCYgdXJsKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAo
IVBBTDo6Z2V0UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyNlbmRpZgorCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbUEFM
OjphbGxvY1BLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkluc3RhbmNlKCkgaW5pdF0pOworICAg
IFtjb25maWd1cmF0aW9uIHNldE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5t
ZXJjaGFudElkZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldE9yaWdpbmF0aW5nVVJM
OnVybF07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UmVmZXJyZXJJZGVudGlmaWVyOmNvcmVDb25m
aWd1cmF0aW9uLnJlZmVycmVySWRlbnRpZmllcl07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VB
UkRTX0JFR0lOCisgICAgW2NvbmZpZ3VyYXRpb24gc2V0U2lnbmF0dXJlOmNvcmVDb25maWd1cmF0
aW9uLnNpZ25hdHVyZV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorCisgICAg
aWYgKFtjb25maWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0U2lnbmVk
RmllbGRzOildKSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5ICpzaWduZWRGaWVsZHMgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmVkRmll
bGRzLnNpemUoKV07CisgICAgICAgIGZvciAoYXV0byYgc2lnbmVkRmllbGQgOiBjb3JlQ29uZmln
dXJhdGlvbi5zaWduZWRGaWVsZHMpCisgICAgICAgICAgICBbc2lnbmVkRmllbGRzIGFkZE9iamVj
dDpzaWduZWRGaWVsZF07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25lZEZpZWxkczpz
aWduZWRGaWVsZHNdOworICAgIH0KKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCitQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNv
bnN0IFVSTCYgdXJsKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgdG9QbGF0Zm9ybUNvbmZpZ3Vy
YXRpb24oY29uZmlndXJhdGlvbiwgdXJsKSB9Cit7Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb246OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oUmV0YWluUHRyPFBLUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsg
V1RGTW92ZShjb25maWd1cmF0aW9uKSB9Cit7Cit9CisKK3ZvaWQgUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IG1fY29uZmlndXJhdGlvbjsKK30KKworT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbj4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBzdGF0aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7CisgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7CisgICAgICAgIGF1dG8gYWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhDYXBhY2l0eToxXSk7CisgICAgICAgIGlmIChhdXRvIHBrUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbkNsYXNzID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b25DbGFzcygpKQorICAgICAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbkNsYXNzXTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxsb3dlZCBj
b3B5XTsKKyAgICB9KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAg
IGlmICghY29uZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IHJldHVybiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29uZmlndXJhdGlv
bikgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0QWRkaXRpb25zCisKKyNlbmRpZiAvLyBI
QVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgiCisjaW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1BheW1lbnRIZWFkZXJzLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KQEAgLTM3LDE2
ICszOCwxNiBAQAogI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3Rv
ckNvY29hLmg+CiAKLSNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KLQotI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYUFkZGl0aW9ucy5tbT4KLSNlbHNlCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLXN0YXRpYyB2b2lkIGZpbmlzaENyZWF0aW5nKFBLUGF5bWVudFJlcXVlc3QgKiwg
Y29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKSB7IH0KLX0KKyNp
ZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKyNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCisj
aW1wb3J0ICJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgiCisjaW1wb3J0ICJQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQg
IldlYlByb2Nlc3NQcm94eS5oIgogI2VuZGlmCiAKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0
U29mdExpbmsuaD4KKwogLy8gRklYTUU6IFdlIGRvbid0IHN1cHBvcnQgYW55IHBsYXRmb3JtcyB3
aXRob3V0IC1zZXRUaHVtYm5haWxVUkxzOiwgc28gdGhpcyBjYW4gYmUgcmVtb3ZlZC4KIEBpbnRl
cmZhY2UgUEtQYXltZW50UmVxdWVzdCAoKQogQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykg
TlNVUkwgKnRodW1ibmFpbFVSTDsKQEAgLTYxLDYgKzYyLDI3IEBAIEBpbnRlcmZhY2UgUEtQYXlt
ZW50UmVxdWVzdCAoU3RhZ2luZykKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyB2b2lk
IGZpbmlzaENyZWF0aW5nKFBLUGF5bWVudFJlcXVlc3QgKnBsYXRmb3JtUmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QpCit7CisjaWYg
SEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICBpZiAoUEtQYXltZW50SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3Vy
YXRpb24oKS5wbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSkgeworICAgICAgICBwbGF0Zm9ybVJlcXVl
c3QuaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjsKKyAgICAgICAgcGxh
dGZvcm1SZXF1ZXN0LnJlcXVlc3RUeXBlID0gUEtQYXltZW50UmVxdWVzdFR5cGVJbnN0YWxsbWVu
dDsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwbGF0Zm9ybVJlcXVlc3QpOworICAg
IFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKKyNlbmRpZgorfQorCitXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6fldlYlBheW1lbnRDb29yZGluYXRvclByb3h5KCkKK3sKKyAgICBpZiAobV9zdGF0
ZSAhPSBTdGF0ZTo6SWRsZSkKKyAgICAgICAgaGlkZVBheW1lbnRVSSgpOworCisgICAgbV9jbGll
bnQucGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzLCBNZXNzYWdl
czo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Cit9
CisKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1l
bnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTI3OSw2ICszMDEsMTA5IEBAIHZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3IKICAgICBtX2F1dGhvcml6YXRp
b25QcmVzZW50ZXItPmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbih1cGRhdGUpOwogfQog
CisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKK3ZvaWQgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OmdldFNldHVwRmVhdHVyZXMoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbiwgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpHZXRTZXR1cEZlYXR1cmVzOjpBc3luY1JlcGx5JiYgcmVwbHkpCit7CisjaWYgUExBVEZPUk0o
TUFDKQorICAgIGlmICghUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbnRyb2xsZXJDbGFzcygpKSB7
CisgICAgICAgIHJlcGx5KHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwor
ICAgIGF1dG8gY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5
KV0oTlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4gKmZlYXR1cmVzKSBtdXRhYmxlIHsK
KyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZXBseSA9IFdURk1vdmUocmVwbHkp
LCBmZWF0dXJlcyA9IHJldGFpblB0cihmZWF0dXJlcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICByZXBseShQYXltZW50U2V0dXBGZWF0dXJlcyB7IFdURk1vdmUoZmVhdHVyZXMpIH0pOworICAg
ICAgICB9KTsKKyAgICB9KTsKKworQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgor
ICAgIFtQQUw6OmdldFBLUGF5bWVudFNldHVwQ29udHJvbGxlckNsYXNzKCkgcGF5bWVudFNldHVw
RmVhdHVyZXNGb3JDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24ucGxhdGZvcm1Db25maWd1cmF0
aW9uKCkgY29tcGxldGlvbjpjb21wbGV0aW9uLmdldCgpXTsKK0FMTE9XX05FV19BUElfV0lUSE9V
VF9HVUFSRFNfRU5ECit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmJlZ2lu
QXBwbGVQYXlTZXR1cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uLCBjb25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYgZmVhdHVyZXMsIE1lc3NhZ2VzOjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6QmVnaW5BcHBsZVBheVNldHVwOjpBc3luY1JlcGx5JiYg
cmVwbHkpCit7CisgICAgcGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXAoY29uZmlndXJhdGlvbiwg
ZmVhdHVyZXMsIFdURk1vdmUocmVwbHkpKTsKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6ZW5kQXBwbGVQYXlTZXR1cCgpCit7CisgICAgcGxhdGZvcm1FbmRBcHBsZVBheVNl
dHVwKCk7Cit9CisKKyNpZiBQTEFURk9STShNQUMpCisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtQmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFBheW1lbnRTZXR1cEZlYXR1cmVzJiBm
ZWF0dXJlcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpCZWdpbkFwcGxl
UGF5U2V0dXA6OkFzeW5jUmVwbHkmJiByZXBseSkKK3sKKyAgICBpZiAoIVBBTDo6Z2V0UEtQYXlt
ZW50U2V0dXBSZXF1ZXN0Q2xhc3MoKSkgeworICAgICAgICByZXBseShmYWxzZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtQQUw6OmFsbG9j
UEtQYXltZW50U2V0dXBSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CisgICAgW3JlcXVlc3Qgc2V0
Q29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLnBsYXRmb3JtQ29uZmlndXJhdGlvbigpXTsKKyAg
ICBbcmVxdWVzdCBzZXRQYXltZW50U2V0dXBGZWF0dXJlczpmZWF0dXJlcy5wbGF0Zm9ybUZlYXR1
cmVzKCldOworCisgICAgYXV0byBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKFtyZXBseSA9IFdU
Rk1vdmUocmVwbHkpXShCT09MIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3JlcGx5ID0gV1RGTW92ZShyZXBseSksIHN1Y2Nlc3NdKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICByZXBseShzdWNjZXNzKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisK
KyAgICBhdXRvIHBheW1lbnRTZXR1cENvbnRyb2xsZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQ
YXltZW50U2V0dXBDb250cm9sbGVySW5zdGFuY2UoKSBpbml0XSk7CisKK0FMTE9XX05FV19BUElf
V0lUSE9VVF9HVUFSRFNfQkVHSU4KKyAgICBbcGF5bWVudFNldHVwQ29udHJvbGxlciBwcmVzZW50
UGF5bWVudFNldHVwUmVxdWVzdDpyZXF1ZXN0LmdldCgpIGNvbXBsZXRpb246Y29tcGxldGlvbi5n
ZXQoKV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorfQorCit2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUVuZEFwcGxlUGF5U2V0dXAoKQoreworfQor
CisjZWxzZSAvLyBQTEFURk9STShNQUMpCisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OnBsYXRmb3JtQmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFBheW1lbnRTZXR1cEZlYXR1cmVzJiBmZWF0dXJl
cywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpCZWdpbkFwcGxlUGF5U2V0
dXA6OkFzeW5jUmVwbHkmJiByZXBseSkKK3sKKyAgICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50
aW5nVmlld0NvbnRyb2xsZXIgPSBtX3BheW1lbnRDb29yZGluYXRvclByb3h5Lm1fY2xpZW50LnBh
eW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihtX3BheW1lbnRDb29yZGlu
YXRvclByb3h5KTsKKyAgICBpZiAoIXByZXNlbnRpbmdWaWV3Q29udHJvbGxlcikgeworICAgICAg
ICByZXBseShmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlcXVl
c3QgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBSZXF1ZXN0SW5zdGFuY2UoKSBp
bml0XSk7CisgICAgW3JlcXVlc3Qgc2V0Q29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLnBsYXRm
b3JtQ29uZmlndXJhdGlvbigpXTsKKyAgICBbcmVxdWVzdCBzZXRQYXltZW50U2V0dXBGZWF0dXJl
czpmZWF0dXJlcy5wbGF0Zm9ybUZlYXR1cmVzKCldOworCisgICAgYXV0byBwYXltZW50U2V0dXBW
aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRTZXR1cFZpZXdDb250
cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTZXR1cFJlcXVlc3Q6cmVxdWVzdC5nZXQo
KV0pOworICAgIGlmICghcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIpIHsKKyAgICAgICAgcmVw
bHkoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjb21wbGV0aW9u
ID0gbWFrZUJsb2NrUHRyKFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSgpIG11dGFibGUgeworICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICByZXBseSh0cnVlKTsKKyAgICAgICAgfSk7CisgICAgfSk7
CisKKyAgICBlbmRBcHBsZVBheVNldHVwKCk7CisgICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxl
ciBwcmVzZW50Vmlld0NvbnRyb2xsZXI6cGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIuZ2V0KCkg
YW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246Y29tcGxldGlvbi5nZXQoKV07CisgICAgbV9wYXltZW50
U2V0dXBWaWV3Q29udHJvbGxlciA9IHBheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyLmdldCgpOwor
fQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUVuZEFwcGxlUGF5
U2V0dXAoKQoreworICAgIFttX3BheW1lbnRTZXR1cFZpZXdDb250cm9sbGVyIGRpc21pc3NWaWV3
Q29udHJvbGxlckFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07CisgICAgbV9wYXltZW50U2V0
dXBWaWV3Q29udHJvbGxlciA9IG5pbDsKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKwor
I2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bQkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDE5ICs0MSw1NSBA
QAogI2ltcG9ydCA8VUlLaXQvVUlGb250Lmg+CiAjZW5kaWYKIAotI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2FBZGRpdGlvbnMubW0+Ci0jZWxpZiBFTkFCTEUoQVBQTEVfUEFZKQogbmFtZXNwYWNlIElQ
QyB7Ci1zdGF0aWMgYm9vbCBmaW5pc2hEZWNvZGluZyhEZWNvZGVyJiwgV2ViQ29yZTo6QXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKSB7IHJldHVybiB0cnVlOyB9Ci1zdGF0aWMgdm9pZCBm
aW5pc2hFbmNvZGluZyhFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3QmKSB7IH0KK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisjaWYgRU5BQkxF
KEFQUExFX1BBWSkKKworc3RhdGljIGJvb2wgZmluaXNoRGVjb2RpbmcoRGVjb2RlciYgZGVjb2Rl
ciwgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QpCit7Cisj
aWYgRU5BQkxFKEFQUExFX1BBWV9JTlNUQUxMTUVOVFMpCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6
UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gaW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
OworICAgIGRlY29kZXIgPj4gaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworICAgIGlmICghaW5z
dGFsbG1lbnRDb25maWd1cmF0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXF1
ZXN0LnNldEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihXVEZNb3ZlKCppbnN0YWxsbWVudENvbmZp
Z3VyYXRpb24pKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRl
Y29kZXIpOworICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKKyAgICByZXR1cm4gdHJ1ZTsKKyNl
bmRpZgogfQorCitzdGF0aWMgdm9pZCBmaW5pc2hFbmNvZGluZyhFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCkKK3sK
KyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBlbmNvZGVyIDw8IHJlcXVl
c3QuaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShl
bmNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAjZW5kaWYKK30KIAotbmFtZXNw
YWNlIElQQyB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKyNpZiBIQVZFKFBBU1NLSVRfSU5T
VEFMTE1FTlRTKQogCi0jaWYgRU5BQkxFKEFQUExFX1BBWSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pCit7CisgICAgZW5jb2RlciA8PCBjb25maWd1cmF0aW9uLnBsYXRmb3Jt
Q29uZmlndXJhdGlvbigpOworfQorCitPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1l
bnRDb25maWd1cmF0aW9uPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBJUEM6OmRlY29kZTxQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b24+KGRlY29kZXIsIFBBTDo6Z2V0UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uQ2xh
c3MoKSk7CisgICAgaWYgKCFjb25maWd1cmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgcmV0dXJuIHsgV1RGTW92ZSgqY29uZmlndXJhdGlvbikgfTsKK30KKworI2Vu
ZGlmIC8vIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpQYXltZW50Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6
OlBheW1lbnQmIHBheW1lbnQpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQw
MDMsNiArNDAwMywxMCBAQAogCQk1QzQ2QzBBRDIxQjcxOThDMDBCQzU5OTEgLyogV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUM0NkMwQUUyMUI3MUFFMjAwQkM1OTkxIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzRCOUQ4QTIxMEE4QzQ2MDA4RjE0RDEgLyogVW5kb09yUmVkby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvT3JSZWRvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0REMjQ0NjVCRjkwMEE5MzEyNCAvKiBBcHBsZVBheVBh
eW1lbnRTZXR1cEZlYXR1cmVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUM1M0RDREUyNDQ2NUJGOTAwQTkzMTI0IC8qIFBheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENERjI0
NDY1QkY5MDBBOTMxMjQgLyogQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0UwMjQ0NjVCRjkwMEE5MzEyNCAv
KiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUM1Q0VDMzgyMjA5NTgzMjAwRDZCQkIwIC8qIERhZW1vbkVudHJ5
UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGFlbW9uRW50cnlQb2lu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVDRUMzOTIyMDk1ODMyMDBENkJC
QjAgLyogRGFlbW9uRW50cnlQb2ludC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERhZW1vbkVudHJ5UG9pbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDNUQyMzg3MjI3QTE4OTEwMDBCOUJEQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRl
cm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tDdXN0b21IZWFkZXJG
aWVsZHNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIwOSw2ICs2
MjEzLDEwIEBACiAJCQkJMUFCMUY3NzcxRDFCMzBBOTAwN0M5QkQxIC8qIGNvY29hICovLAogCQkJ
CTFBQjFGNzdBMUQxQjMwQTkwMDdDOUJEMSAvKiBpb3MgKi8sCiAJCQkJMUFCMUY3N0MxRDFCMzBB
OTAwN0M5QkQxIC8qIG1hYyAqLywKKwkJCQk1QzUzRENERjI0NDY1QkY5MDBBOTMxMjQgLyogQXBw
bGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oICovLAorCQkJCTVDNTNEQ0REMjQ0NjVCRjkwMEE5
MzEyNCAvKiBBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tICovLAorCQkJCTVDNTNEQ0RF
MjQ0NjVCRjkwMEE5MzEyNCAvKiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmggKi8sCisJCQkJ
NUM1M0RDRTAyNDQ2NUJGOTAwQTkzMTI0IC8qIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0g
Ki8sCiAJCQkJMUFCMUY3ODgxRDFCMzM1NTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LmNwcCAqLywKIAkJCQkxQUIxRjc4OTFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuaCAqLywKIAkJCQkxQUIxRjc4QTFEMUIzMzU1MDA3QzlCRDEgLyog
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gKi8sCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmNwcAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKKyNpbmNsdWRlICJBcHBs
ZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGF5
bWVudENvb3JkaW5hdG9yTWVzc2FnZXMuaCIKQEAgLTIyMCw2ICsyMjIsMjUgQEAgYm9vbCBXZWJQ
YXltZW50Q29vcmRpbmF0b3I6OnJlbW90ZVVJRW5hYgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
QVBQTEVfUEFZX1NFVFVQKQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6Z2V0U2V0dXBG
ZWF0dXJlcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OkdldFNldHVwRmVhdHVyZXMoUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbiB7IGNvbmZpZ3VyYXRpb24sIHVybCB9KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworfQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6YmVnaW5BcHBsZVBheVNldHVw
KGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24sIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBG
ZWF0dXJlPj4mJiBmZWF0dXJlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6QmVnaW5BcHBsZVBheVNldHVwKFBheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24geyBjb25maWd1cmF0aW9uLCB1cmwgfSwgUGF5bWVudFNldHVw
RmVhdHVyZXMgeyBXVEZNb3ZlKGZlYXR1cmVzKSB9KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworfQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6ZW5kQXBwbGVQYXlTZXR1cCgp
Cit7CisgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpFbmRBcHBsZVBheVNldHVwKCkpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BB
WV9TRVRVUCkKKwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsMTIgQEAgcHJpdmF0ZToK
IAogICAgIFN0cmluZyB1c2VyQWdlbnRTY3JpcHRzQmxvY2tlZEVycm9yTWVzc2FnZSgpIGNvbnN0
IGZpbmFsOwogCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKyAgICB2b2lkIGdldFNldHVw
RmVhdHVyZXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYsIGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZjxXZWJDb3JlOjpBcHBs
ZVBheVNldHVwRmVhdHVyZT4+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luQXBwbGVQYXlT
ZXR1cChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1cmF0aW9uJiwgY29uc3Qg
VVJMJiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgZW5kQXBwbGVQ
YXlTZXR1cCgpIGZpbmFsOworI2VuZGlmCisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4K
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwogCkBAIC0xMTIsMTAgKzExOCw2IEBAIHByaXZhdGU6CiAgICAgV2ViUGFn
ZSYgbV93ZWJQYWdlOwogCiAgICAgT3B0aW9uYWw8QXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzU2V0
PiBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3JrczsKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViUGF5bWVudENvb3JkaW5hdG9yQWRkaXRp
b25zLmg+Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396505</attachid>
            <date>2020-04-14 23:22:40 -0700</date>
            <delta_ts>2020-04-25 15:42:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210521-20200414232239.patch</filename>
            <type>text/plain</type>
            <size>126771</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAyMC0wNC0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgQXBw
bGVQYXkgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0byBXZWJDb3JlIGFuZCBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDUyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgT25seSA0IG1pbm9yIG1v
ZGlmaWNhdGlvbnMgd2VyZSBuZWNlc3NhcnksIGFzIGZvbGxvd3M6CisKKyAgICAgICAgMS4gUGF5
bWVudFNldHVwRmVhdHVyZXMncyBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1
cmUgKj4+IHdhcyBjaGFuZ2VkIHRvIFJldGFpblB0cjxOU0FycmF5PiB0byB3b3JrIHdpdGggQysr
LgorICAgICAgICAyLiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucyBtZXNzYWdl
cyB3ZXJlIG1vdmVkIHRvIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LCByZW1vdmluZyB0aGUg
bmVlZCBmb3IKKyAgICAgICAgICAgdGhlIGV4dHJhIG1lc3NhZ2UgcmVjZWl2ZXIsIHRoZSBPcHRp
b25hbDxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucz4sIGFuZCB0aGUgZmluaXNo
Q29uc3RydWN0aW9uLgorICAgICAgICAzLiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCdzIG1h
Y3JvcyB0aGF0IGNvbGxpZGVkIHdpdGggb3RoZXIgbWFjcm9zIHdlcmUgcmVuYW1lZC4gIFRoaXMg
d2FzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIGRpZmZlcmVudCBzb3VyY2UgdW5pZmljYXRpb24uCisg
ICAgICAgIDQuIFBheW1lbnRTZXR1cEZlYXR1cmVzLmggd2FzIHJlbmFtZWQgdG8gQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5oIHRvIGJlIGFibGUgdG8gYnVpbGQgd2l0aCBQYXltZW50U2V0
dXBGZWF0dXJlcy5oIGluIHRoZSBTREsuCisKKyAgICAgICAgVGhlIHJlc3QgaXMganVzdCBjb3B5
IGFuZCBwYXN0ZS4KKworICAgICAgICBUaGVyZSBpc24ndCBhIGdvb2Qgd2F5IHRvIGxhbmQgdGhp
cyB3aXRob3V0IGJyZWFraW5nIHRoZSBidWlsZCB3aXRob3V0IHJlbW92aW5nIHRoZSBmaWxlcyBm
cm9tIFdlYktpdEFkZGl0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBzbyBJJ2xsIGRv
IHRoZSB0d28gYXQgdGhlIHNhbWUgdGltZSBsYXRlIGF0IG5pZ2h0IHRvIG5vdCBjYXVzZSBkaXNy
dXB0aW9uLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJl
c1N1cHBvcnRlZE5ldHdvcmtzKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5pc2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6aW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpzZXRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkRGlzY2xvc2VGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVw
OjpnZXRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OmJl
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsZVBheVNldHVwOjpzdXNwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2V0dXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGw6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpwbGF0Zm9ybUZlYXR1cmUg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0
dXJlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpzdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6c3VwcG9y
dHNJbnN0YWxsbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZl
YXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGw6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpiZWdpbkFwcGxlUGF5U2V0dXAp
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjplbmRBcHBsZVBh
eVNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
RGVjaW1hbE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUZlYXR1cmVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOjpQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmg6CisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5p
c2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRN
ZXRob2RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaENvbnZlcnRpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRH
cm91cElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVu
dFNlc3Npb25FcnJvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEVycm9y
KToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVx
dWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpyZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
dFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlz
bWlzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0Q2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2F0Y2hkb2dUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bWVyRmlyZWQpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dl
YkNvcmVBZGRpdGlvbnMubW06CisKIDIwMjAtMDQtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQZXJzaXN0ZW50Q29kZXJzIHNob3VsZCB1
c2UgbW9kZXJuIGRlY29kaW5nIHN5bnRheApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgSlNfQklORElOR19JRExTID0g
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb2RlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlMaW5lSXRlbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnQuaWRsIFwKQEAgLTExOCw2ICsxMTksOSBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVz
dEJhc2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bkVycm9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXAuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kLmlkbCBcCkBA
IC0xMjU1LDggKzEyNTksNiBAQCB2cGF0aCAlLmluICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9T
RUFSCiBBRERJVElPTkFMX0VWRU5UX05BTUVTID0KIEFERElUSU9OQUxfRVZFTlRfVEFSR0VUX0ZB
Q1RPUlkgPQogCi0taW5jbHVkZSBXZWJDb3JlRGVyaXZlZFNvdXJjZXNBZGRpdGlvbnMubWFrZQot
CiBKU19CSU5ESU5HX0lETFMgKz0gJChBRERJVElPTkFMX0JJTkRJTkdfSURMUykKIAogYWxsIDog
JChBRERJVElPTkFMX0JJTkRJTkdfSURMUzolLmlkbD1KUyUuaCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTkzLDYgKzU5Myw4IEBAIFdITFNMU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlS
ZXF1ZXN0QmFzZS5jcHAKKyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCisg
ICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQogICAgIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwCkBAIC02MDAsNiArNjAyLDcgQEAgV0hM
U0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmNwcAorICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbi5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0
b3IubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcAogCkBAIC02MTgs
NiArNjIxLDcgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5RXJyb3IuY3BwCiAgICAgSlNBcHBsZVBheUVycm9yQ29kZS5jcHAKICAgICBKU0FwcGxl
UGF5RXJyb3JDb250YWN0RmllbGQuY3BwCisgICAgSlNBcHBsZVBheUluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5jcHAKICAgICBKU0FwcGxlUGF5TGluZUl0ZW0uY3BwCiAgICAgSlNBcHBsZVBheU1l
cmNoYW50Q2FwYWJpbGl0eS5jcHAKICAgICBKU0FwcGxlUGF5TW9kaWZpZXIuY3BwCkBAIC02MzUs
NiArNjM5LDkgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBKU0Fw
cGxlUGF5UmVxdWVzdEJhc2UuY3BwCiAgICAgSlNBcHBsZVBheVNlc3Npb24uY3BwCiAgICAgSlNB
cHBsZVBheVNlc3Npb25FcnJvci5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXAuY3BwCisgICAgSlNB
cHBsZVBheVNldHVwRmVhdHVyZS5jcHAKKyAgICBKU0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5j
cHAKICAgICBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAKICAgICBK
U0FwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLmNwcAogICAgIEpTQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFM
TE1FTlRTKQorCisjaW5jbHVkZSAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVh
dHVyZVR5cGUgZmVhdHVyZVR5cGUgeyBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlQ2Fy
ZCB9OworICAgIFN0cmluZyBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhOworICAgIFN0cmluZyBvcGVu
VG9CdXlUaHJlc2hvbGRBbW91bnQ7CisgICAgU3RyaW5nIGJpbmRpbmdUb3RhbEFtb3VudDsKKyAg
ICBTdHJpbmcgY3VycmVuY3lDb2RlOworICAgIFN0cmluZyBtZXJjaGFudElkZW50aWZpZXI7Cisg
ICAgU3RyaW5nIHJlZmVycmVySWRlbnRpZmllcjsKKyAgICBib29sIGlzSW5TdG9yZVB1cmNoYXNl
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50
Q29uZmlndXJhdGlvbi5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1B
UFBMRV9QQVlfSU5TVEFMTE1FTlRTLAorXSBkaWN0aW9uYXJ5IEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uIHsKKyAgICBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgZmVhdHVyZVR5cGUg
PSAiYXBwbGVDYXJkIjsKKyAgICBET01TdHJpbmcgbWVyY2hhbmRpc2luZ0ltYWdlRGF0YTsKKyAg
ICBET01TdHJpbmcgb3BlblRvQnV5VGhyZXNob2xkQW1vdW50OworICAgIERPTVN0cmluZyBiaW5k
aW5nVG90YWxBbW91bnQ7CisgICAgRE9NU3RyaW5nIGN1cnJlbmN5Q29kZTsKKyAgICBET01TdHJp
bmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgIERPTVN0cmluZyByZWZlcnJlcklkZW50aWZpZXI7
CisgICAgYm9vbGVhbiBpc0luU3RvcmVQdXJjaGFzZTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmgJKHJldmlzaW9uIDI1
OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50Q29udGFjdC5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudE1ldGhvZC5oIgogCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBw
bGVQYXlQYXltZW50QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50IHsKQEAgLTQ2LDExICs0Miw3IEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnQgewogICAgIFRva2VuIHRva2VuOwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5
bWVudENvbnRhY3Q+IGJpbGxpbmdDb250YWN0OwogICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVu
dENvbnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsKLQotI2lmIGRlZmluZWQoQVBQTEVQQVlQQVlNRU5U
X0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBB
WU1FTlRfQURESVRJT05TCi0jZW5kaWYKKyAgICBTdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICByZXF1aXJlZCBBcHBsZVBheVBheW1lbnRUb2tl
biB0b2tlbjsKICAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IGJpbGxpbmdDb250YWN0OwogICAg
IEFwcGxlUGF5UGF5bWVudENvbnRhY3Qgc2hpcHBpbmdDb250YWN0OworICAgIFtDb25kaXRpb25h
bD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSBET01TdHJpbmcgaW5zdGFsbG1lbnRBdXRob3JpemF0
aW9uVG9rZW47CiB9OwogCiBbCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmgJKHJldmlzaW9uIDI1OTkyMikK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50UGFzcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50
TWV0aG9kQWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVt
IGNsYXNzIEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGU7CkBAIC00NiwxMSArNDIsNyBAQCBzdHJ1
Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kIHsgICAgCiAgICAgT3B0aW9uYWw8VHlwZT4gdHlwZTsK
ICAgICBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRQYXNzPiBwYXltZW50UGFzczsKICAgICBPcHRp
b25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKLQotI2lmIGRlZmlu
ZWQoQVBQTEVQQVlQQVlNRU5UTUVUSE9EX0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVE1FVEhP
RF9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBBWU1FTlRNRVRIT0RfQURESVRJT05TCi0jZW5k
aWYKKyAgICBTdHJpbmcgYmluZFRva2VuOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlk
bAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRNZXRob2QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0ICszMyw1IEBA
CiAgICAgQXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZSB0eXBlOwogICAgIEFwcGxlUGF5UGF5bWVu
dFBhc3MgcGF5bWVudFBhc3M7CiAgICAgQXBwbGVQYXlQYXltZW50Q29udGFjdCBiaWxsaW5nQ29u
dGFjdDsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gRE9NU3RyaW5n
IGJpbmRUb2tlbjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSwxMiBAQAogCiAj
aW5jbHVkZSAiQXBwbGVQYXlMaW5lSXRlbS5oIgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRl
QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICBBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFs
OwogICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXM7Ci0KLSNpZiBkZWZp
bmVkKEFQUExFUEFZUEFZTUVOVE1FVEhPRFVQREFURV9BRERJVElPTlMpCi1BUFBMRVBBWVBBWU1F
TlRNRVRIT0RVUERBVEVfQURESVRJT05TCi0jdW5kZWYgQVBQTEVQQVlQQVlNRU5UTUVUSE9EVVBE
QVRFX0FERElUSU9OUwotI2VuZGlmCisgICAgU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlm
aWVyOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbAkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw0ICsyOCw1IEBACiBd
IGRpY3Rpb25hcnkgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICByZXF1aXJlZCBB
cHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsOwogICAgIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+
IG5ld0xpbmVJdGVtczsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10g
RE9NU3RyaW5nIGluc3RhbGxtZW50R3JvdXBJZGVudGlmaWVyOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNl
LmNwcAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVJlcXVlc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI5
IEBACiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVJlcXVlc3RCYXNlQWRkaXRpb25z
LmNwcD4KLSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgdm9pZCBmaW5pc2hDb252
ZXJ0aW5nKEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQXBwbGVQYXlSZXF1ZXN0QmFz
ZSYpIHsgfQotc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1bnNpZ25lZCwg
Y29uc3QgQXBwbGVQYXlSZXF1ZXN0QmFzZSYpIHsgcmV0dXJuIHRydWU7IH0KLX0KKworc3RhdGlj
IHZvaWQgZmluaXNoQ29udmVydGluZyhBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVz
dWx0LCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9Q
QVlfSU5TVEFMTE1FTlRTKQorICAgIGlmIChyZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlv
bikKKyAgICAgICAgcmVzdWx0LnNldEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihXVEZNb3ZlKCpy
ZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAjZW5kaWYKK30KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIGJvb2wgcmVxdWlyZXNTdXBwb3J0ZWROZXR3b3Jrcyh1
bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVJlcXVlc3RCYXNlJiByZXF1ZXN0KQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIHJldHVybiB2ZXJzaW9uIDwg
OCB8fCAhcmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTSh2ZXJzaW9uKTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CisgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKK30KIAogc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiBj
b252ZXJ0QW5kVmFsaWRhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCB2ZXJzaW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkTmV0d29ya3MsIGNvbnN0IFBheW1lbnRDb29y
ZGluYXRvciYgcGF5bWVudENvb3JkaW5hdG9yKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1
ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMTAgQEAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiQXBwbGVQYXlDb250YWN0RmllbGQuaCIKKyNpbmNsdWRl
ICJBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFwcGxlUGF5
TWVyY2hhbnRDYXBhYmlsaXR5LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50Q29udGFjdC5o
IgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlv
bnMvQXBwbGVQYXlSZXF1ZXN0QmFzZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC01NCw5ICs1MSw4IEBAIHN0cnVjdCBBcHBs
ZVBheVJlcXVlc3RCYXNlIHsKICAgICBTdHJpbmcgYXBwbGljYXRpb25EYXRhOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHN1cHBvcnRlZENvdW50cmllczsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlSRVFV
RVNUQkFTRV9BRERJVElPTlMpCi1BUFBMRVBBWVJFUVVFU1RCQVNFX0FERElUSU9OUwotI3VuZGVm
IEFQUExFUEFZUkVRVUVTVEJBU0VfQURESVRJT05TCisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNU
QUxMTUVOVFMpCisgICAgT3B0aW9uYWw8QXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNSArNjUsMTcgQEAKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBs
ZVBheVNlc3Npb25BZGRpdGlvbnMuY3BwPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0
YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUGF5bWVudE1ldGhvZFVwZGF0ZSYsIEFwcGxlUGF5
UGF5bWVudE1ldGhvZFVwZGF0ZSYmKSB7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBheW1lbnRNZXRob2RVcGRhdGUmIGNv
bnZlcnRlZFVwZGF0ZSwgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlJiYgdXBkYXRlKQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGNvbnZlcnRlZFVwZGF0ZS5z
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcih1cGRhdGUuaW5zdGFsbG1lbnRHcm91cElkZW50
aWZpZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udmVydGVkVXBkYXRlKTsKKyAgICBV
TlVTRURfUEFSQU0odXBkYXRlKTsKKyNlbmRpZgorfQogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXBwbGVQYXlTZXNzaW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
NCArMjgsMTEgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiUGF5bWVudENv
bnRhY3QuaCIKKyNpbmNsdWRlICJQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
LSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3RB
ZGRpdGlvbnMuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CkBAIC0xNDEsOSArMTM4LDkgQEAgcHVibGljOgog
ICAgIFJlcXVlc3RlciByZXF1ZXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQog
ICAgIHZvaWQgc2V0UmVxdWVzdGVyKFJlcXVlc3RlciByZXF1ZXN0ZXIpIHsgbV9yZXF1ZXN0ZXIg
PSByZXF1ZXN0ZXI7IH0KIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNTSU9OUEFZTUVOVFJFUVVF
U1RfUFVCTElDX0FERElUSU9OUykKLUFQUExFUEFZU0VTU0lPTlBBWU1FTlRSRVFVRVNUX1BVQkxJ
Q19BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVNFU1NJT05QQVlNRU5UUkVRVUVTVF9QVUJMSUNf
QURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICBjb25zdCBQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uJiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2luc3RhbGxtZW50Q29uZmlndXJhdGlvbjsgfQorICAgIHZvaWQgc2V0
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24m
JiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pIHsgbV9pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24g
PSBXVEZNb3ZlKGluc3RhbGxtZW50Q29uZmlndXJhdGlvbik7IH0KICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtMTcyLDkgKzE2OSw4IEBAIHByaXZhdGU6CiAKICAgICBSZXF1ZXN0ZXIgbV9yZXF1ZXN0
ZXIgeyBSZXF1ZXN0ZXI6OkFwcGxlUGF5SlMgfTsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlTRVNT
SU9OUEFZTUVOVFJFUVVFU1RfUFJJVkFURV9BRERJVElPTlMpCi1BUFBMRVBBWVNFU1NJT05QQVlN
RU5UUkVRVUVTVF9QUklWQVRFX0FERElUSU9OUwotI3VuZGVmIEFQUExFUEFZU0VTU0lPTlBBWU1F
TlRSRVFVRVNUX1BSSVZBVEVfQURESVRJT05TCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5U
UykKKyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIG1faW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBcHBsZVBheVNldHVwLmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQor
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiUGF5bWVudFNlc3Npb24uaCIKKyNpbmNsdWRlICJQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgYm9vbCBzaG91bGREaXNjbG9zZUZlYXR1cmVzKERvY3VtZW50JiBkb2N1bWVudCkKK3sK
KyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpOworICAgIGlmICghcGFnZSB8fCBwYWdl
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gZG9jdW1lbnQuc2V0dGluZ3MoKS5hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxs
b3dlZCgpOworfQorCit2b2lkIEFwcGxlUGF5U2V0dXA6OmdldFNldHVwRmVhdHVyZXMoRG9jdW1l
bnQmIGRvY3VtZW50LCBTZXR1cEZlYXR1cmVzUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgYXV0
byBjYW5DYWxsID0gUGF5bWVudFNlc3Npb246OmNhbkNyZWF0ZVNlc3Npb24oZG9jdW1lbnQpOwor
ICAgIGlmIChjYW5DYWxsLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2Uuc2V0dGxl
KGNhbkNhbGwucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkgewor
ICAgICAgICBwcm9taXNlLnNldHRsZShFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJlc29sdmUgd2l0aCBhbiBlbXB0eSBz
ZXF1ZW5jZSBvZiBmZWF0dXJlcyBpZiBBcHBsZSBQYXkgY2FwYWJpbGl0eSBkaXNjbG9zdXJlIGlz
IG5vdCBhbGxvd2VkLgorICAgIGlmICghc2hvdWxkRGlzY2xvc2VGZWF0dXJlcyhkb2N1bWVudCkp
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX3NldHVwRmVhdHVyZXNQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKworICAg
IHBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLmNsaWVudCgpLmdldFNldHVwRmVhdHVyZXMobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShWZWN0b3I8UmVmPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4mJiBzZXR1cEZlYXR1cmVzKSB7CisgICAgICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3NldHVwRmVhdHVyZXNQcm9taXNlLCBXVEY6
Om51bGxvcHQpLT5zZXR0bGUoV1RGTW92ZShzZXR1cEZlYXR1cmVzKSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgQXBwbGVQYXlTZXR1cDo6YmVnaW4oRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0b3I8UmVm
UHRyPEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcywgQmVnaW5Qcm9taXNlJiYgcHJv
bWlzZSkKK3sKKyAgICBhdXRvIGNhbkNhbGwgPSBQYXltZW50U2Vzc2lvbjo6Y2FuQ3JlYXRlU2Vz
c2lvbihkb2N1bWVudCk7CisgICAgaWYgKGNhbkNhbGwuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoY2FuQ2FsbC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yLCAiTXVzdCBjYWxsIEFwcGxlUGF5U2V0dXAuYmVnaW4gZnJvbSBhIHVz
ZXIgZ2VzdHVyZSBoYW5kbGVyLiIgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIHBy
b21pc2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fYmVnaW5Qcm9taXNlKSB7CisgICAgICAgIHByb21p
c2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9iZWdpblByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAg
IG1fcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7CisKKyAgICBw
YWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5iZWdpbkFwcGxlUGF5U2V0dXAobV9j
b25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgV1RGTW92ZShmZWF0dXJlcyksIFt0aGlzXShi
b29sIHJlc3VsdCkgeworICAgICAgICBpZiAobV9iZWdpblByb21pc2UpCisgICAgICAgICAgICBz
dGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUocmVzdWx0
KTsKKyAgICB9KTsKK30KKworQXBwbGVQYXlTZXR1cDo6QXBwbGVQYXlTZXR1cChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQoreworICAgIHN1c3BlbmRJZk5lZWRlZCgpOworfQorCit2b2lk
IEFwcGxlUGF5U2V0dXA6OnN0b3AoKQoreworICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNl
KQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UsIFdURjo6bnVs
bG9wdCktPnNldHRsZShFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworCisgICAgaWYgKG1fYmVn
aW5Qcm9taXNlKQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51
bGxvcHQpLT5zZXR0bGUoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKKworICAgIGlmIChhdXRv
IHBhZ2UgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucGFn
ZSgpKQorICAgICAgICBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKS5lbmRBcHBs
ZVBheVNldHVwKCk7CisKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgQXBwbGVQYXlTZXR1cDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIHN0
b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQ
UExFX1BBWV9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXR1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTZXR1cC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VU
VVApCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2ZURPTU9iamVjdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSlNET01Qcm9taXNlRGVmZXJyZWQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEFwcGxlUGF5U2V0dXBGZWF0dXJlOworY2xhc3MgRGVmZXJyZWRQcm9taXNlOworY2xhc3MgRG9j
dW1lbnQ7CisKK2NsYXNzIEFwcGxlUGF5U2V0dXAgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBw
dWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwPiB7CitwdWJsaWM6CisgICAgc3RydWN0IENv
bmZpZ3VyYXRpb24geworICAgICAgICBTdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyOworICAgICAg
ICBTdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgc2lnbmF0dXJlOwor
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBzaWduZWRGaWVsZHM7CisgICAgfTsKKworICAgIHN0YXRp
YyBSZWY8QXBwbGVQYXlTZXR1cD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXBwbGVQYXlTZXR1cChjb250ZXh0LCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKSk7CisgICAgfQorCisgICAgdXNpbmcgU2V0dXBGZWF0dXJlc1Byb21pc2UgPSBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4+OworICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhEb2N1bWVudCYsIFNldHVwRmVhdHVyZXNQ
cm9taXNlJiYpOworCisgICAgdXNpbmcgQmVnaW5Qcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4+OworICAgIHZvaWQgYmVnaW4oRG9jdW1lbnQmLCBWZWN0b3I8UmVmUHRyPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4mJiwgQmVnaW5Qcm9taXNlJiYpOworCitwcml2YXRlOgorICAg
IEFwcGxlUGF5U2V0dXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENvbmZpZ3VyYXRpb24mJik7
CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkFwcGxlUGF5U2V0dXAiOyB9CisgICAgdm9p
ZCBzdG9wKCkgZmluYWw7CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZp
bmFsOworCisgICAgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgT3B0aW9uYWw8
U2V0dXBGZWF0dXJlc1Byb21pc2U+IG1fc2V0dXBGZWF0dXJlc1Byb21pc2U7CisgICAgT3B0aW9u
YWw8QmVnaW5Qcm9taXNlPiBtX2JlZ2luUHJvbWlzZTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2
aXR5PEFwcGxlUGF5U2V0dXA+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGwJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNldHVwLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKK10gZGljdGlvbmFyeSBBcHBsZVBh
eVNldHVwQ29uZmlndXJhdGlvbiB7CisgICAgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsK
KyAgICBET01TdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgIERPTVN0cmluZyBzaWduYXR1
cmU7CisgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBzaWduZWRGaWVsZHM7Cit9OworCitbCisgICAg
QWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKKyAgICBD
b25zdHJ1Y3RvcihBcHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSwKKyAg
ICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgRW5hYmxl
ZEJ5U2V0dGluZz1BcHBsZVBheSwKKyAgICBTZWN1cmVDb250ZXh0LAorXSBpbnRlcmZhY2UgQXBw
bGVQYXlTZXR1cCB7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNlPHNlcXVlbmNlPEFw
cGxlUGF5U2V0dXBGZWF0dXJlPj4gZ2V0U2V0dXBGZWF0dXJlcygpOworICAgIFtDYWxsV2l0aD1E
b2N1bWVudF0gUHJvbWlzZTxib29sZWFuPiBiZWdpbihzZXF1ZW5jZTxBcHBsZVBheVNldHVwRmVh
dHVyZT4gc2V0dXBGZWF0dXJlcyk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1Mg
UEtQYXltZW50U2V0dXBGZWF0dXJlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xh
c3MgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIDogdWludDhfdDsKKworY2xhc3MgQXBwbGVQYXlT
ZXR1cEZlYXR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwRmVhdHVyZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+IGNyZWF0ZShQS1Bh
eW1lbnRTZXR1cEZlYXR1cmUgKmZlYXR1cmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBcHBsZVBheVNldHVwRmVhdHVyZShmZWF0dXJlKSk7CisgICAgfQorCisgICAgQXBw
bGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGUoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgU3Rh
dGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5zdXBwb3J0ZWQsCisgICAgICAgIFN1cHBvcnRlZCwK
KyAgICAgICAgU3VwcGxlbWVudGFyeVN1cHBvcnRlZCwKKyAgICAgICAgQ29tcGxldGVkLAorICAg
IH07CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKKworICAgIFBLUGF5bWVudFNldHVwRmVhdHVy
ZSAqcGxhdGZvcm1GZWF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlLmdldCgpOyB9CisK
KyNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKKyAgICBib29sIHN1cHBvcnRzSW5z
dGFsbG1lbnRzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBBcHBsZVBheVNldHVwRmVhdHVyZShQS1BheW1lbnRTZXR1cEZlYXR1cmUgKik7
CisKKyAgICBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBGZWF0dXJlPiBtX2ZlYXR1cmU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1NF
VFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFs
PUFQUExFX1BBWV9TRVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVN0YXRlIHsKKyAg
ICAidW5zdXBwb3J0ZWQiLAorICAgICJzdXBwb3J0ZWQiLAorICAgICJzdXBwbGVtZW50YXJ5U3Vw
cG9ydGVkIiwKKyAgICAiY29tcGxldGVkIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPUFQUExF
X1BBWV9TRVRVUCwKKyAgICBFbmFibGVkQnlTZXR0aW5nPUFwcGxlUGF5LAorICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCisgICAgU2VjdXJlQ29udGV4dCwKK10gaW50ZXJmYWNlIEFwcGxl
UGF5U2V0dXBGZWF0dXJlIHsKKyAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1
dGUgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGU7CisgICAgW0NhY2hlZEF0dHJpYnV0ZV0g
cmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5U2V0dXBGZWF0dXJlU3RhdGUgc3RhdGU7CisgICAg
W0NhY2hlZEF0dHJpYnV0ZSwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lOU1RBTExNRU5UU10gcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNJbnN0YWxsbWVudHM7Cit9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXBGZWF0dXJlLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBcHBs
ZVBheVNldHVwRmVhdHVyZS5oIgorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworI2lt
cG9ydCAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmgiCisjaW1wb3J0ICJQYXNzS2l0U1BJQWRk
aXRpb25zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlIEFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0eXBlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKFtt
X2ZlYXR1cmUgdHlwZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVR5cGVBcHBs
ZVBheToKKyAgICAgICAgcmV0dXJuIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZTo6QXBwbGVQYXk7
CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQYXlfWDoKKyAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIHJldHVybiBBcHBsZVBheVNldHVwRmVhdHVy
ZVR5cGU6OkFwcGxlQ2FyZDsKKyAgICB9Cit9CisKK0FwcGxlUGF5U2V0dXBGZWF0dXJlOjpTdGF0
ZSBBcHBsZVBheVNldHVwRmVhdHVyZTo6c3RhdGUoKSBjb25zdAoreworICAgIHN3aXRjaCAoW21f
ZmVhdHVyZSBzdGF0ZV0pIHsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlVW5z
dXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6VW5zdXBwb3J0ZWQ7CisgICAgY2FzZSBQ
S1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBvcnRlZDoKKyAgICAgICAgcmV0dXJuIFN0YXRl
OjpTdXBwb3J0ZWQ7CisgICAgY2FzZSBQS1BheW1lbnRTZXR1cEZlYXR1cmVTdGF0ZVN1cHBsZW1l
bnRhcnlTdXBwb3J0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6U3VwcGxlbWVudGFyeVN1cHBv
cnRlZDsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRlQ29tcGxldGVkOgorICAg
ICAgICByZXR1cm4gU3RhdGU6OkNvbXBsZXRlZDsKKyAgICB9Cit9CisKKyNpZiBFTkFCTEUoQVBQ
TEVfUEFZX0lOU1RBTExNRU5UUykKK2Jvb2wgQXBwbGVQYXlTZXR1cEZlYXR1cmU6OnN1cHBvcnRz
SW5zdGFsbG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fZmVhdHVyZSBzdXBwb3J0ZWRP
cHRpb25zXSAmIFBLUGF5bWVudFNldHVwRmVhdHVyZVN1cHBvcnRlZE9wdGlvbnNJbnN0YWxsbWVu
dHM7Cit9CisjZW5kaWYKKworQXBwbGVQYXlTZXR1cEZlYXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlKFBLUGF5bWVudFNldHVwRmVhdHVyZSAqZmVhdHVyZSkKKyAgICA6IG1fZmVhdHVyZSB7IGZl
YXR1cmUgfQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoQVBQTEVfUEFZX1NFVFVQKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1
cmVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitlbnVtIGNsYXNzIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZSA6IHVpbnQ4X3Qg
eworICAgIEFwcGxlUGF5LAorICAgIEFwcGxlQ2FyZCwKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVw
RmVhdHVyZVR5cGUuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9T
RVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgeworICAgICJhcHBsZVBheSIs
CisgICAgImFwcGxlQ2FyZCIKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oIgorI2luY2x1ZGUgIkFwcGxlUGF5U2V0dXAuaCIKKyNpbmNsdWRlICJBcHBsZVBheVNldHVw
RmVhdHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BheW1lbnRDb29yZGlu
YXRvckNsaWVudEFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRG9jdW1lbnQ7CkBAIC03MSwxMyArNzAsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFVFVQKQorICAgIHZpcnR1YWwgdm9pZCBnZXRTZXR1
cEZlYXR1cmVzKGNvbnN0IEFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBBcHBsZVBheVNldHVwOjpD
b25maWd1cmF0aW9uJiwgY29uc3QgVVJMJiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheVNldHVwRmVh
dHVyZT4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIGVuZEFw
cGxlUGF5U2V0dXAoKSB7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwotCi0jaWYgZGVmaW5lZChQQVlNRU5U
Q09PUkRJTkFUT1JDTElFTlRfQURESVRJT05TKQotUEFZTUVOVENPT1JESU5BVE9SQ0xJRU5UX0FE
RElUSU9OUwotI3VuZGVmIFBBWU1FTlRDT09SRElOQVRPUkNMSUVOVF9BRERJVElPTlMKLSNlbmRp
ZgogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBQS1BheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb247CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEFw
cGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBQYXltZW50SW5z
dGFsbG1lbnRDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OworICAgIFBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24oY29uc3QgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24mKTsK
KyAgICBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24+JiYpOworCisgICAgUEtQYXltZW50SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBSZXRhaW5QdHI8UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBtX2NvbmZp
Z3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RB
TExNRU5UUykKKworI2ltcG9ydCAiQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCIK
KyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0b0RlY2ltYWxOdW1iZXIoKSBpbiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLgorc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNp
bWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQoreworICAgIGlmICghYW1vdW50KQorICAg
ICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciB6ZXJvXTsKKyAgICByZXR1cm4gW05TRGVjaW1h
bE51bWJlciBkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzphbW91bnQgbG9jYWxlOkB7IE5TTG9jYWxl
RGVjaW1hbFNlcGFyYXRvciA6IEAiLiIgfV07Cit9CisKK3N0YXRpYyBQS1BheW1lbnRTZXR1cEZl
YXR1cmVUeXBlIHBsYXRmb3JtRmVhdHVyZVR5cGUoY29uc3QgQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlJiBmZWF0dXJlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVUeXBlKSB7CisgICAgY2Fz
ZSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGU6OkFwcGxlUGF5OgorICAgICAgICByZXR1cm4gUEtQ
YXltZW50U2V0dXBGZWF0dXJlVHlwZUFwcGxlUGF5OworICAgIGNhc2UgQXBwbGVQYXlTZXR1cEZl
YXR1cmVUeXBlOjpBcHBsZUNhcmQ6CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCisgICAgICAgIHJldHVybiBQS1BheW1lbnRTZXR1cEZlYXR1cmVUeXBlQXBwbGVQ
YXlfWDsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgfQor
fQorCitzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4g
Y3JlYXRlUGxhdGZvcm1Db25maWd1cmF0aW9uKGNvbnN0IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uJiBjb3JlQ29uZmlndXJhdGlvbikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uSW5z
dGFuY2UoKSBpbml0XSk7CisKKyAgICBbY29uZmlndXJhdGlvbiBzZXRGZWF0dXJlOnBsYXRmb3Jt
RmVhdHVyZVR5cGUoY29yZUNvbmZpZ3VyYXRpb24uZmVhdHVyZVR5cGUpXTsKKworICAgIFtjb25m
aWd1cmF0aW9uIHNldEJpbmRpbmdUb3RhbEFtb3VudDp0b0RlY2ltYWxOdW1iZXIoY29yZUNvbmZp
Z3VyYXRpb24uYmluZGluZ1RvdGFsQW1vdW50KV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0Q3Vy
cmVuY3lDb2RlOmNvcmVDb25maWd1cmF0aW9uLmN1cnJlbmN5Q29kZV07CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0SW5TdG9yZVB1cmNoYXNlOmNvcmVDb25maWd1cmF0aW9uLmlzSW5TdG9yZVB1cmNo
YXNlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRPcGVuVG9CdXlUaHJlc2hvbGRBbW91bnQ6dG9E
ZWNpbWFsTnVtYmVyKGNvcmVDb25maWd1cmF0aW9uLm9wZW5Ub0J1eVRocmVzaG9sZEFtb3VudCld
OworCisgICAgYXV0byBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmNvcmVDb25maWd1cmF0aW9uLm1lcmNo
YW5kaXNpbmdJbWFnZURhdGEgb3B0aW9uczowXSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVy
Y2hhbmRpc2luZ0ltYWdlRGF0YTptZXJjaGFuZGlzaW5nSW1hZ2VEYXRhLmdldCgpXTsKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVF9JREVOVElGSUVSUykKKyNpZiBQTEFURk9STShNQUMp
CisgICAgaWYgKCFbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dEluc3RhbGxtZW50TWVyY2hhbnRJZGVudGlmaWVyOildIHx8ICFbY29uZmlndXJhdGlvbiByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFJlZmVycmVySWRlbnRpZmllcjopXSkKKyAgICAg
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisjZW5kaWYKKyAgICBbY29uZmlndXJhdGlvbiBzZXRJ
bnN0YWxsbWVudE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElk
ZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldFJlZmVycmVySWRlbnRpZmllcjpjb3Jl
Q29uZmlndXJhdGlvbi5yZWZlcnJlcklkZW50aWZpZXJdOworI2VuZGlmCisKKyAgICByZXR1cm4g
Y29uZmlndXJhdGlvbjsKK30KKworUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjo6UGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihjb25zdCBBcHBsZVBheUluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IGNyZWF0
ZVBsYXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSB9Cit7Cit9CisKK1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb246OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24o
UmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0
aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShjb25maWd1cmF0aW9uKSB9Cit7
Cit9CisKK1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiAqUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbjo6cGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgJ
KHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudE1ldGhvZFVwZGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsNiBAQAogI2lu
Y2x1ZGUgIkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvUGF5bWVudE1ldGhvZFVwZGF0ZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIE9C
SkNfQ0xBU1MgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTUwLDExICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVG90YWxB
bmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKCkgY29uc3Q7CiAgICAgUEtQYXltZW50UmVx
dWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnBsYXRmb3JtVXBkYXRlKCkgY29uc3Q7CiAKLSNpZiBk
ZWZpbmVkKFBBWU1FTlRNRVRIT0RVUERBVEVfUFVCTElDX0FERElUSU9OUykKLVBBWU1FTlRNRVRI
T0RVUERBVEVfUFVCTElDX0FERElUSU9OUwotI3VuZGVmIFBBWU1FTlRNRVRIT0RVUERBVEVfUFVC
TElDX0FERElUSU9OUworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisgICAgdm9pZCBz
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKICNlbmRpZgotICAg
IAorCiBwcml2YXRlOgogICAgIE9wdGlvbmFsPFRvdGFsQW5kTGluZUl0ZW1zPiBtX3RvdGFsQW5k
TGluZUl0ZW1zOwogICAgIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZT4gbV9wbGF0Zm9ybVVwZGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDE4IEBACiAjaW1wb3J0ICJQYXltZW50TWV0
aG9kLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudENvY29h
QWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyB2b2lkIGZp
bmlzaENvbnZlcnRpbmcoUEtQYXltZW50ICosIEFwcGxlUGF5UGF5bWVudCYpIHsgfQotfQotI2Vu
ZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmco
UEtQYXltZW50ICpwYXltZW50LCBBcHBsZVBheVBheW1lbnQmIHJlc3VsdCkKK3sKKyNpZiBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGlmIChOU1N0cmluZyAqaW5zdGFsbG1lbnRBdXRo
b3JpemF0aW9uVG9rZW4gPSBwYXltZW50Lmluc3RhbGxtZW50QXV0aG9yaXphdGlvblRva2VuKQor
ICAgICAgICByZXN1bHQuaW5zdGFsbG1lbnRBdXRob3JpemF0aW9uVG9rZW4gPSBpbnN0YWxsbWVu
dEF1dGhvcml6YXRpb25Ub2tlbjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBheW1lbnQpOwor
ICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOworI2VuZGlmCit9CiAKIHN0YXRpYyBBcHBsZVBheVBh
eW1lbnQ6OlRva2VuIGNvbnZlcnQoUEtQYXltZW50VG9rZW4gKnBheW1lbnRUb2tlbikKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1ldGhvZENvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDE4IEBACiAjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRNZXRo
b2RUeXBlLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KIAotI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudE1l
dGhvZENvY29hQWRkaXRpb25zLm1tPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRp
YyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICosIEFwcGxlUGF5UGF5bWVu
dE1ldGhvZCYpIHsgfQotfQotI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyB2
b2lkIGZpbmlzaENvbnZlcnRpbmcoUEtQYXltZW50TWV0aG9kICpwYXltZW50TWV0aG9kLCBBcHBs
ZVBheVBheW1lbnRNZXRob2QmIHJlc3VsdCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1F
TlRTKQorICAgIGlmIChOU1N0cmluZyAqYmluZFRva2VuID0gcGF5bWVudE1ldGhvZC5iaW5kVG9r
ZW4pCisgICAgICAgIHJlc3VsdC5iaW5kVG9rZW4gPSBiaW5kVG9rZW47CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShwYXltZW50TWV0aG9kKTsKKyAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKKyNl
bmRpZgorfQogCiBzdGF0aWMgQXBwbGVQYXlQYXltZW50UGFzczo6QWN0aXZhdGlvblN0YXRlIGNv
bnZlcnQoUEtQYXltZW50UGFzc0FjdGl2YXRpb25TdGF0ZSBwYXltZW50UGFzc0FjdGl2YXRpb25T
dGF0ZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRNZXRob2RVcGRhdGVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksMTMgQEAg
UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKlBheQogICAgIHJldHVybiBtX3Bs
YXRmb3JtVXBkYXRlLmdldCgpOwogfQogCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K3ZvaWQgUGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcikKK3sKKyAgICBbbV9wbGF0
Zm9ybVVwZGF0ZSBzZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcjppbnN0YWxsbWVudEdyb3Vw
SWRlbnRpZmllcl07Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNv
Y29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTUgKzMxLDI3IEBACiAjaW1wb3J0ICJBcHBsZVBheVNlc3Npb25FcnJvci5oIgogI2ltcG9y
dCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2FB
ZGRpdGlvbnMubW0+Ci0jZWxzZQogbmFtZXNwYWNlIFdlYkNvcmUgewotc3RhdGljIE9wdGlvbmFs
PEFwcGxlUGF5U2Vzc2lvbkVycm9yPiBhZGRpdGlvbmFsRXJyb3IoTlNFcnJvciAqKSB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CitzdGF0
aWMgT3B0aW9uYWw8QXBwbGVQYXlTZXNzaW9uRXJyb3I+IGFkZGl0aW9uYWxFcnJvcihOU0Vycm9y
ICplcnJvcikKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIC8vIEZJWE1F
OiBSZXBsYWNlIHdpdGggUEtQYXltZW50RXJyb3JCaW5kVG9rZW5Vc2VySW5mb0tleSBhbmQKKyAg
ICAvLyBQS1BheW1lbnRBdXRob3JpemF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3Igd2hlbiB0
aGV5J3JlIGF2YWlsYWJsZSBpbiBhbiBTREsuCisgICAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
YmluZFRva2VuS2V5ID0gQCJQS1BheW1lbnRFcnJvckJpbmRUb2tlbiI7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBOU0ludGVnZXIgcGtQYXltZW50QXV0aG9yaXphdGlvbkZlYXR1cmVBcHBsaWNhdGlv
bkVycm9yID0gLTIwMTY7CisKKyAgICBpZiAoZXJyb3IuY29kZSAhPSBwa1BheW1lbnRBdXRob3Jp
emF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3IpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBpZCBiaW5kVG9rZW5WYWx1ZSA9IGVycm9yLnVzZXJJbmZvW2JpbmRUb2tlbktl
eV07CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighYmluZFRv
a2VuVmFsdWUgfHwgW2JpbmRUb2tlblZhbHVlIGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3Nd
KTsKKyAgICByZXR1cm4gQXBwbGVQYXlTZXNzaW9uRXJyb3IgeyAiZmVhdHVyZUFwcGxpY2F0aW9u
RXJyb3IiX3MsIHsgeyAiYmluZFRva2VuIl9zLCAoTlNTdHJpbmcgKiliaW5kVG9rZW5WYWx1ZSB9
IH0gfTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworI2VuZGlmCit9CiAKIFBheW1lbnRTZXNzaW9uRXJyb3I6OlBheW1lbnRTZXNzaW9u
RXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+JiYgZXJyb3IpCiAgICAgOiBtX3BsYXRmb3JtRXJyb3Ig
eyBXVEZNb3ZlKGVycm9yKSB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVJlcXVlc3Qu
aWRsCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVxdWVzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDQgKzI4LDUgQEAKIF0gZGljdGlvbmFyeSBBcHBsZVBheVJlcXVlc3QgOiBBcHBsZVBheVJlcXVl
c3RCYXNlIHsKICAgICByZXF1aXJlZCB1bnNpZ25lZCBsb25nIHZlcnNpb247CiAgICAgcmVxdWly
ZWQgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVf
UEFZX0lOU1RBTExNRU5UU10gQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gaW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyB0YXNrRGVs
YXlJbnRlcnZhbCB7IDEwMF9tcyB9OwogCi0jdW5kZWYgTE9HSURFTlRJRklFUgotI2RlZmluZSBM
T0dJREVOVElGSUVSIF9fZnVuY19fCi0KLSN1bmRlZiBBTFdBWVNfTE9HCi0jZGVmaW5lIEFMV0FZ
U19MT0cgbG9nZ2VyKCkubG9nQWx3YXlzCisjZGVmaW5lIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUiBsb2dnZXIoKS5sb2dBbHdheXMKIAogc3RydWN0IENsaWVudFN0YXRlIHsKICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjEsMTkgKzE1NywxOSBAQCB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpCiAgICAgaWYgKG1fbW9ja1BpY2tl
ckVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18pOwogICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOwogfQogCiB2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3Rh
dGUpCiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwogICAgIG1vY2tQaWNrZXIoKS5zZXRTdGF0ZShu
YW1lLCBzdGF0ZSk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQogewotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19f
KTsKICAgICBtb2NrUGlja2VyKCkuZGlzbWlzc1BvcHVwKCk7CiB9CiAKQEAgLTIwOCw3ICsyMDQs
NyBAQCB1aW50NjRfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5CiAgICAgaWYgKGlu
ZGV4ICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgY29udGV4dElkKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18sIGNvbnRleHRJZCk7CiAgICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQobWFrZVVu
aXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKIAogICAgIGlmIChtX2V4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJnZXQpCkBAIC0yMjQsNyAr
MjIwLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YgogICAgIGlm
IChpbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CisgICAgQUxXQVlTX0xP
R19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQo
KSk7CiAKICAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpbmRleCk7CiAgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRz
Q29uZmlndXJhdGlvblRhc2spOwpAQCAtMjM3LDcgKzIzMyw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGwKIAogICAgIGZvciAoc2l6ZV90IGkgPSBtX2NsaWVudFN0
YXRlLnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICBpZiAoJm1fY2xpZW50U3RhdGVbaSAt
IDFdLT5jbGllbnQgPT0gJmNsaWVudCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBtX2NsaWVudFN0YXRlW2kgLSAxXS5nZXQoKSk7CisgICAgICAgICAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaSAtIDFdLmdl
dCgpKTsKICAgICAgICAgICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGkgLSAxKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTI1Nyw3ICsyNTMsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNob3dQbGF5YmFjCiAgICAgICAgIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2VyID0g
c3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1BpY2tlcjsKICAgICB9CiAKLSAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsKKyAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdl
dCgpKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlUm91dGUgPSBmbGFnc0FyZVNldChtX2NsaWVudFN0
YXRlW2luZGV4XS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZp
Y2UpOwogICAgIHRhcmdldFBpY2tlcigpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihGbG9hdFJl
Y3QocmVjdCksIGhhc0FjdGl2ZVJvdXRlLCB1c2VEYXJrQXBwZWFyYW5jZSk7CkBAIC0yNzUsNyAr
MjcxLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjbGllbnRTdGF0ZQogICAgIGlm
IChuZXdGbGFncyA9PSBvbGRGbGFncykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSwgIm5ldyBmbGFncyA9
ICIsIG5ld0ZsYWdzKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3IGZsYWdzID0gIiwgbmV3RmxhZ3Mp
OwogCiAgICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFncyA9IG5ld0ZsYWdzOwogCkBAIC0yOTks
MjUgKzI5NSwyNSBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoZmxhZ3NBcmVTZXQoc3RhdGUtPmZs
YWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSAmJiBmbGFnc0Fy
ZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgewotICAg
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiByZXR1cm5p
bmcgZWFybHkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBEbyBub3QgYmVnaW4gcGxheWluZyB0
byB0aGUgZGV2aWNlIHVubGVzcyBwbGF5YmFjayBoYXMganVzdCBzdGFydGVkLgogICAgIGlmICgh
ZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSB8fCBm
bGFnc0FyZVNldChvbGRGbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7Ci0g
ICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBlYXJseSwgcGxheWJh
Y2sgZGlkbid0IGp1c3Qgc3RhcnQiKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCAicmV0dXJuaW5nIGVhcmx5LCBwbGF5YmFjayBkaWRuJ3QganVzdCBz
dGFydCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBzdGF0ZSA6
IG1fY2xpZW50U3RhdGUpIHsKICAgICAgICAgaWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
ZmFsc2UpIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
Xywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChm
YWxzZSkiKTsKICAgICAgICAgc3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNT
SU9OTUFOQUdFUihfX2Z1bmNfXywgY2hhbmdlZENsaWVudFN0YXRlLmdldCgpLCAiIGNhbGxpbmcg
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICBjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChjaGFuZ2VkQ2xpZW50
U3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAKICAgICBpZiAoaW5kZXggJiYgbV9jbGllbnRTdGF0
ZS5zaXplKCkgPiAxKQpAQCAtMzI2LDcgKzMyMiw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6Y2xpZW50U3RhdGUKIAogdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFz
QWN0aXZlUm91dGUoKSk7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVu
Y19fLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFzQWN0aXZlUm91dGUoKSk7CiAg
ICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsKICAgICBtX3RhcmdldENoYW5n
ZWQgPSB0cnVlOwogICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0NvbmZpZ3Vy
YXRpb25UYXNrKTsKQEAgLTMzNCw3ICszMzAsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNldFBsYXliYWNrCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCBhdmFpbGFibGUpOworICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgYXZhaWxhYmxlKTsKICAgICBtX2V4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlID0gYXZhaWxhYmxlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2Ns
aWVudFN0YXRlKQogICAgICAgICBzdGF0ZS0+Y2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKHN0YXRlLT5jb250ZXh0SWQsIGF2YWlsYWJsZSk7CkBAIC0zNDIsNyAr
MzM4LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpleHRlcm5hbE91dAogCiB2b2lk
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2Vk
KCkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIEFMV0FZU19MT0dfTUVE
SUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbV9wbGF5YmFja1RhcmdldFBpY2tlckRp
c21pc3NlZCA9IHRydWU7CiAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhUYXJnZXRDbGllbnRzQ29u
ZmlndXJhdGlvblRhc2spOwogfQpAQCAtMzc1LDcgKzM3MSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2xp
ZW50U3RhdGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0
YXRlW2ldOwogCi0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0KCks
ICIsIHJlcXVlc3RlZFBpY2tlciA9ICIsIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIpOworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAi
LCByZXF1ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKTsKIAogICAgICAg
ICBpZiAoKG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2Vk
KSAmJiBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKQogICAgICAgICAgICAgaW5kZXhPZkNsaWVudFRo
YXRSZXF1ZXN0ZWRQaWNrZXIgPSBpOwpAQCAtNDAxLDEyICszOTcsMTIgQEAgdm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5z
ZXRQbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCAqbV9wbGF5YmFja1RhcmdldC5jb3B5
UmVmKCkpOwogCiAgICAgICAgIGlmIChpICE9IGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0
IHx8ICFoYXZlQWN0aXZlUm91dGUpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dChmYWxzZSkiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChmYWxzZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgZmFsc2UpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgJiYgbV9wbGF5YmFja1RhcmdldFBpY2tl
ckRpc21pc3NlZCkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkIik7Cisg
ICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRl
LmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKICAg
ICAgICAgICAgIHN0YXRlLT5jbGllbnQucGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQo
c3RhdGUtPmNvbnRleHRJZCk7CiAgICAgICAgIH0KIApAQCAtNDE4LDcgKzQxNCw3IEBAIHZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICBpZiAoaGF2ZUFjdGl2ZVJv
dXRlICYmIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ICE9IG5vdEZvdW5kKSB7CiAgICAg
ICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1Rh
cmdldF07CiAgICAgICAgIGlmICghZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkgewotICAgICAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0KHRydWUpIik7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lP
Tk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC00MzMsNyArNDI5LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
Ojpjb25maWd1cmVQbAogICAgIGJvb2wgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSBmYWxzZTsK
ICAgICBib29sIGhhdmVDbGllbnRXaXRoTWVkaWEgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIHN0
YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
IHN0YXRlLmdldCgpKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBzdGF0ZS5nZXQoKSk7CiAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVBy
b2R1Y2VyOjpSZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykgewogICAgICAgICAgICAg
bW9uaXRvcmluZ1JlcXVpcmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQ1LDEw
ICs0NDEsMTAgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbAogICAg
IH0KIAogICAgIGlmIChtb25pdG9yaW5nUmVxdWlyZWQgfHwgKGhhc0F2YWlsYWJpbGl0eUxpc3Rl
bmVyICYmIGhhdmVDbGllbnRXaXRoTWVkaWEpKSB7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInN0YXJ0aW5nIG1vbml0b3JpbmciKTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOwogICAgICAg
ICB0YXJnZXRQaWNrZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyBt
b25pdG9yaW5nIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXywgInN0b3BwaW5nIG1vbml0b3JpbmciKTsKICAgICAgICAgdGFyZ2V0UGlja2VyKCkuc3Rv
cE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKICAgICB9CiB9CkBAIC00OTAsNyArNDg2LDcg
QEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogCiAgICAgaWYgKCFt
X3BsYXliYWNrVGFyZ2V0IHx8ICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpKSB7
CiAgICAgICAgIGlmIChtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic3RvcHBpbmcgdGltZXIiKTsKKyAgICAgICAgICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVy
Iik7CiAgICAgICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9OwogICAgICAg
ICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKICAgICAgICAgfQpAQCAtNTAyLDcgKzQ5OCw3
IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2EKICAgICBib29sIGRp
ZFBsYXlUb0VuZCA9IGZhbHNlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRl
KSB7CiAKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSwgIiBw
bGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcGxheWVkVG9FbmQg
PSAiLCBzdGF0ZS0+cGxheWVkVG9FbmQpOwogCiAgICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZs
YWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKQog
ICAgICAgICAgICAgc3RvcFRpbWVyID0gdHJ1ZTsKQEAgLTUxMiw3ICs1MDgsNyBAQCB2b2lkIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhCiAgICAgfQogCiAgICAgaWYgKHN0b3BU
aW1lcikgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdG9wcGluZyB0aW1l
ciIpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJz
dG9wcGluZyB0aW1lciIpOwogICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9
OwogICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwogICAgIH0gZWxzZSB7CkBAIC01MjAs
NyArNTE2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYQogICAg
ICAgICBpZiAoaW50ZXJ2YWwgIT0gbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCB8fCAhbV93YXRj
aGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFy
dE9uZVNob3QoaW50ZXJ2YWwpOwogICAgICAgICB9Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNv
bmRzIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywg
InRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNvbmRzIik7CiAg
ICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgPSBpbnRlcnZhbDsKICAgICB9CiB9CkBA
IC01MzAsNyArNTI2LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bQogICAgIGlmICghbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOwogICAgIHRhcmdldFBpY2tlcigpLmludmFsaWRhdGVQbGF5YmFja1Rhcmdl
dHMoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAxMDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDQtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBNb3ZlIEFwcGxlUGF5IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMgdG8g
V2ViQ29yZSBhbmQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTA1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisg
ICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsubW06CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg6CisKIDIwMjAtMDQtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZG9wdCBpbnRlcmZhY2UgQVZBdWRpb1JvdXRpbmdBcmJpdGVyIGZvciBNYWMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaAkocmV2
aXNpb24gMjU5OTIyKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTggQEAgU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQS1BheW1lbgogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRNZXRob2QpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5
bWVudE1lcmNoYW50U2Vzc2lvbikKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50UmVxdWVzdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBL
UGF5bWVudFNldHVwRmVhdHVyZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQ
YXltZW50U2V0dXBSZXF1ZXN0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQS1BheW1lbnRTdW1tYXJ5SXRlbSkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
UEtTaGlwcGluZ01ldGhvZCkKIAorI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbikKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIpCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRM
aW5rLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L1Bhc3NLaXRTb2Z0TGluay5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDMyIEBACiAK
ICNpZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCi0jZWxzZQorCitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0
dXBDb250cm9sbGVyLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BU
SU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cEZlYXR1cmUsIFBB
TF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9S
VChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwUmVxdWVzdCwgUEFMX0VYUE9SVCkKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9P
UFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKKyNlbmRpZgorCisjZWxzZSAvLyBQTEFURk9STShNQUMp
CisKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NL
aXQsIFBBTF9FWFBPUlQpCisKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQor
U09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bh
eW1lbnRTZXR1cENvbnRyb2xsZXIsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwRmVhdHVyZSwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50U2V0dXBSZXF1ZXN0LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cFZpZXdD
b250cm9sbGVyLCBQQUxfRVhQT1JUKQorCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLCBQQUxfRVhQT1JUKQogI2VuZGlmCiAKKyNl
bmRpZiAvLyBQTEFURk9STShNQUMpCisKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0LCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bhc3NMaWJyYXJ5LCBQ
QUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQS1BheW1lbnQsIFBBTF9FWFBPUlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDExICs0NywyOCBAQCBXVEZfRVhURVJOX0NfRU5ECiAjaW1wb3J0IDxQYXNzS2l0L1BL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxQ
YXNzS2l0L1BLUGF5bWVudE1ldGhvZC5oPgogI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRSZXF1
ZXN0X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uX1dlYktpdC5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRTZXR1cENvbnRyb2xsZXIu
aD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxQ
YXNzS2l0Q29yZS9QS1BheW1lbnRSZXF1ZXN0U3RhdHVzX1ByaXZhdGUuaD4KICNpbXBvcnQgPFBh
c3NLaXRDb3JlL1BLUGF5bWVudFJlcXVlc3RfV2ViS2l0Lmg+CiAKKyNpZiBIQVZFKFBBU1NLSVRf
SU5TVEFMTE1FTlRTKQorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50X1ByaXZhdGUuaD4K
KyNpbXBvcnQgPFBhc3NLaXRDb3JlL1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5o
PgorI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50TWV0aG9kX1ByaXZhdGUuaD4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50
QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UGFzc0tpdC9QS1Bh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyLmg+CisjZW5kaWYKKworI2lmIEhBVkUoUEFTU0tJVF9J
TlNUQUxMTUVOVF9JREVOVElGSUVSUykgJiYgUExBVEZPUk0oTUFDKQorQGludGVyZmFjZSBQS1Bh
eW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKFdlYktpdFNQSSkKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNTdHJpbmcgKmluc3RhbGxtZW50TWVyY2hhbnRJZGVu
dGlmaWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU1N0cmluZyAq
cmVmZXJyZXJJZGVudGlmaWVyOworQGVuZAogI2VuZGlmCiAKICNlbHNlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyNTk5MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5MDAsNiArMTkwMCw5IEBACiAJCTVDMkIxQUVDMjIz
OTdFQkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY3OEQwQjFDMjU0MjJDMDAyNDU0NDYg
LyogUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tICovOyB9OwogCQk1QzQzMDRCMTE5MUFDOTA4MDAw
RTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRl
clRleHR1cmVMT0QuaCAqLzsgfTsKIAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhU
U2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM0MzA0QjQxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxP
RC5oICovOyB9OworCQk1QzUzRENFMTI0NDY1REZDMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
NTNEQ0NGMjQ0NjQ0OTkwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNTNEQ0U3MjQ0NjhB
RDIwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzUzRENDRTI0NDY0NDk5MDBB
OTMxMjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNTNEQ0VBMjQ0NjhGQjQwMEE5
MzEyNCAvKiBBcHBsZVBheVNldHVwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNUQy
Mzg1MjI3QTA2NTIwMDBCOUJEQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUQyMzgzMjI3QTA2M0EwMDBCOUJE
QSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
N0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDOUMyREI1MjI0MUE2N0IwMDk5
NkIwQiAvKiBDb250ZW50UnVsZUxpc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlDMkRCMzIyNDFBNjczMDA5OTZCMEIgLyogQ29udGVu
dFJ1bGVMaXN0UmVzdWx0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05MDkxLDYgKzkwOTQsMTggQEAKIAkJNUM1MzgxQjExRDg3RDQ1NzAwRTJF
QkU2IC8qIFVSTFNlYXJjaFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVUkxTZWFyY2hQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1Mzgx
QjMxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1MzgxQjQxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2Vh
cmNoUGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVVJMU2VhcmNo
UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0M2MjQ0NjQ0OTcw
MEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBs
ZVBheVNldHVwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQzkyNDQ2
NDQ5ODAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0NBMjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBh
eVNldHVwRmVhdHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlTZXR1cEZl
YXR1cmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDQjI0NDY0NDk4
MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcHBsZVBheVNldHVwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNE
Q0NDMjQ0NjQ0OTkwMEE5MzEyNCAvKiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RD
Q0UyNDQ2NDQ5OTAwQTkzMTI0IC8qIFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDRjI0NDY0NDk5
MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUM1M0RDRDAyNDQ2NDQ5QTAwQTkzMTI0IC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxlUGF5U2V0dXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlT
ZXR1cEZlYXR1cmVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUz
RENENTI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24u
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDRDYyNDQ2NDQ5QzAw
QTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM1RDIzODMyMjdBMDYzQTAwMEI5QkRBIC8qIEN1c3RvbUhlYWRlckZpZWxkcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21IZWFkZXJGaWVsZHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1RDIzODYyMjdBMDc3QzAwMEI5QkRBIC8q
IEN1c3RvbUhlYWRlckZpZWxkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDdXN0b21IZWFkZXJGaWVsZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjcxLDYgKzE3Mjg2LDgg
QEAKIAkJCQlBMUJCODU5QjIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaWRs
ICovLAogCQkJCUExQkI4NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFj
dEZpZWxkLmggKi8sCiAJCQkJQTFCQjg1QTIyMTU5QUY1NzAwNjdFMDdEIC8qIEFwcGxlUGF5RXJy
b3JDb250YWN0RmllbGQuaWRsICovLAorCQkJCTVDNTNEQ0QwMjQ0NjQ0OUEwMEE5MzEyNCAvKiBB
cHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0Q1MjQ0NjQ0
OUIwMEE5MzEyNCAvKiBBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwgKi8sCiAJ
CQkJN0M2NTc5RTIxRTAwODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAqLywKIAkJ
CQk3QzY1NzlFNDFFMDA4MkM4MDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5pZGwgKi8sCiAJ
CQkJQTFERjVBQTgxRjgwNzBENDAwNThBNDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5
LmNwcCAqLywKQEAgLTE3MzA4LDYgKzE3MzI1LDE0IEBACiAJCQkJQTE5NTZGMUYyMzMxQThDNzAw
NTdFOUQyIC8qIEFwcGxlUGF5U2Vzc2lvbkVycm9yLmlkbCAqLywKIAkJCQkxQTU4RTg2MzFEMTlE
NERGMDBDMEVBNzMgLyogQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwICovLAogCQkJ
CTFBNThFODY0MUQxOUQ0REYwMEMwRUE3MyAvKiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oICovLAorCQkJCTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNw
cCAqLywKKwkJCQk1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oICov
LAorCQkJCTVDNTNEQ0M2MjQ0NjQ0OTcwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmlkbCAqLywK
KwkJCQk1QzUzRENDRjI0NDY0NDk5MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaCAq
LywKKwkJCQk1QzUzRENDQTI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsICovLAorCQkJCTVDNTNEQ0M5MjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVh
dHVyZS5tbSAqLywKKwkJCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1
cEZlYXR1cmVUeXBlLmggKi8sCisJCQkJNUM1M0RDRDYyNDQ2NDQ5QzAwQTkzMTI0IC8qIEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8sCiAJCQkJMUE4QTY0NDcxRDE5RkNGQjAwRDBFMDBG
IC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAgKi8sCiAJCQkJMUE4
QTY0NDgxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRF
dmVudC5oICovLAogCQkJCTFBOEE2NDQ5MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBw
aW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuaWRsICovLApAQCAtMTczMzEsNiArMTczNTYsOCBAQAog
CQkJCUExMDRFQzUzMjIwQTAxNzQwMENCRjY3QSAvKiBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQu
Y3BwICovLAogCQkJCTFBNThFODYyMUQxOUQzQkYwMEMwRUE3MyAvKiBQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQuaCAqLywKIAkJCQk3Q0Y5MzBFNjFFMDFGOUFEMDBCQUZGQkUgLyogUGF5bWVudEhl
YWRlcnMuaCAqLywKKwkJCQk1QzUzRENDRTI0NDY0NDk5MDBBOTMxMjQgLyogUGF5bWVudEluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTVDNTNEQ0NDMjQ0NjQ0OTkwMEE5MzEyNCAv
KiBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tICovLAogCQkJCTFBRTk2QTg3MUQx
QTBDRUIwMEI4Njc2OCAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uLmggKi8sCiAJCQkJMUE4QTY0
MzkxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1lbnRNZXRob2QuaCAqLywKIAkJCQlBMURGRDUyNDIz
MzQ1OTNBMDA0MkZDREIgLyogUGF5bWVudE1ldGhvZFVwZGF0ZS5oICovLApAQCAtMjkzOTcsNiAr
Mjk0MjQsOCBAQAogCQkJCTFBOEE2NDU5MUQxOUZDRkMwMEQwRTAwRiAvKiBBcHBsZVBheVNlc3Np
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUExOTU2RjIwMjMzMUE4QzcwMDU3RTlEMiAvKiBBcHBs
ZVBheVNlc3Npb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1OEU4NjUxRDE5RDRFQjAw
QzBFQTczIC8qIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk1QzUzRENFQTI0NDY4RkI0MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNUM1M0RDRTEyNDQ2NURGQzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0
dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThBNjQ1QzFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBw
bGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MTJDNTlGMjIwMzVGQ0Q2MDAxMjIzNkIgLyogQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDNjU3OUU4MUUwMDgzMTYwMEUzQTI3QSAvKiBBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTIyLDYgKzMyMTUxLDcgQEAK
IAkJCQlBMUY2MDA0OTFGNDc1OTRFMDA3N0U4M0YgLyogUGF5bWVudERldGFpbHNVcGRhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUExREY1QUE2MUY3RjY0QkIwMDU4QTQ3NyAvKiBQYXltZW50SGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NGOTMwRTcxRTAxRjlCNDAwQkFGRkJFIC8qIFBh
eW1lbnRIZWFkZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzUzRENFNzI0NDY4QUQyMDBBOTMx
MjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTFGNzZCMzExRjQ0QzU1QTAwMTRDMzE4IC8qIFBheW1lbnRJdGVtLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUU5NkE4OTFEMUEwQ0VCMDBCODY3NjggLyogUGF5bWVudE1lcmNoYW50U2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4QTY0M0MxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1l
bnRNZXRob2QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViQ29yZUFkZGl0aW9ucy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCwzIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYkNv
cmVBZGRpdGlvbnMubW0+Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAwODEpCisr
KyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDIwLTA0LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTW92ZSBBcHBsZVBheSBjb2RlIGZyb20gV2ViS2l0QWRkaXRpb25zIHRvIFdl
YkNvcmUgYW5kIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEwNTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVw
RmVhdHVyZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVz
OjpwbGF0Zm9ybUZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvQXBw
bGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBh
eW1lbnRTZXR1cEZlYXR1cmVzOjpQYXltZW50U2V0dXBGZWF0dXJlcyk6CisgICAgICAgIChXZWJL
aXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpQYXltZW50U2V0dXBGZWF0dXJlczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVu
dFNldHVwRmVhdHVyZXM6Om9wZXJhdG9yIFZlY3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1
cEZlYXR1cmU+PiBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICogU2hh
cmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW06IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0Ojp0b1BsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpmaW5pc2hDb25zdHJ1
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvY29j
b2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXRB
ZGRpdGlvbnM6OnRvUGxhdGZvcm1Db25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdEFkZGl0
aW9uczo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bik6CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmZpbmlz
aENyZWF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6YmVnaW5BcHBsZVBheVNldHVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OmVuZEFwcGxlUGF5U2V0dXApOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1CZWdpbkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1FbmRB
cHBsZVBheVNldHVwKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OmZpbmlzaERlY29kaW5nKToKKyAgICAgICAgKElQ
Qzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
OjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50
Q29vcmRpbmF0b3I6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OmJlZ2luQXBwbGVQYXlTZXR1cCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBheW1lbnRDb29yZGluYXRvcjo6ZW5kQXBwbGVQYXlTZXR1cCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKwogMjAyMC0wNC0xNCAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmplY3RlZEJ1bmRs
ZSBwYXJhbWV0ZXJzIG9mdGVuIG5lZWQgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gY2FsbGVkIGJl
Zm9yZSB1bmFyY2hpdmluZwpJbmRleDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNp
b24gMjU5OTIyKQorKysgU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTAsOCArMjUwLDYgQEAgU0NSSVBUUyA9IFwKIEZSQU1FV09SS19GTEFHUyA9
ICQoc2hlbGwgZWNobyAkKEJVSUxUX1BST0RVQ1RTX0RJUikgJChGUkFNRVdPUktfU0VBUkNIX1BB
VEhTKSAkKFNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTKSB8IHBlcmwgLWUgJ3ByaW50ICIt
RiAiIC4gam9pbigiIC1GICIsIHNwbGl0KCIgIiwgPD4pKTsnKQogSEVBREVSX0ZMQUdTID0gJChz
aGVsbCBlY2hvICQoQlVJTFRfUFJPRFVDVFNfRElSKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpICQo
U1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFMpIHwgcGVybCAtZSAncHJpbnQgIi1JIiAuIGpvaW4o
IiAtSSIsIHNwbGl0KCIgIiwgPD4pKTsnKQogCi0taW5jbHVkZSBXZWJLaXREZXJpdmVkU291cmNl
c0FkZGl0aW9ucy5tYWtlCi0KIC5QSE9OWSA6IGFsbAogCiBhbGwgOiBcCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOCBAQCBTaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlCiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Lm1tCiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KIAorU2hhcmVk
L0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0KK1NoYXJlZC9BcHBsZVBh
eS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuY3BwCiBTaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5tbQogU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUlPUy5tbQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NDEsNiArNjQxLDcgQEAgZGVmIGhl
YWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRl
eHRJRCc6IFsnIkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5
ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlBh
eW1lbnRTZXR1cEZlYXR1cmVzJzogWyciQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oIidd
LAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9yJzogWyciR2VzdHVyZVR5
cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCc6IFsnIldlYkV2ZW50
LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQnOiBbJyJXZWJFdmVudC5o
IiddLApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50
U2V0dXBGZWF0dXJlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisKK09CSkNfQ0xBU1MgUEtQYXlt
ZW50U2V0dXBGZWF0dXJlOworCisjaW5jbHVkZSA8V2ViQ29yZS9BcHBsZVBheVNldHVwRmVhdHVy
ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGF5bWVudFNldHVwRmVhdHVyZXMgeworcHVi
bGljOgorICAgIFBheW1lbnRTZXR1cEZlYXR1cmVzKFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBw
bGVQYXlTZXR1cEZlYXR1cmU+PiYmKTsKKyAgICBQYXltZW50U2V0dXBGZWF0dXJlcyhSZXRhaW5Q
dHI8TlNBcnJheT4mJiA9IG51bGxwdHIpOworCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7CisgICAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRTZXR1cEZlYXR1cmVzPiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJik7CisKKyAgICBOU0FycmF5ICpwbGF0Zm9ybUZlYXR1cmVzKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybUZlYXR1cmVzLmdldCgpOyB9CisgICAgb3BlcmF0b3IgVmVj
dG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fcGxhdGZvcm1GZWF0dXJlczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VU
VVApCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRT
ZXR1cEZlYXR1cmVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0JKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLmgiCisKKyNp
ZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKworI2ltcG9ydCAiQXJndW1lbnRDb2RlcnND
b2NvYS5oIgorI2ltcG9ydCAiRGVjb2Rlci5oIgorI2ltcG9ydCAiRW5jb2Rlci5oIgorI2ltcG9y
dCA8V2ViQ29yZS9BcHBsZVBheVNldHVwRmVhdHVyZS5oPgorCisjaW1wb3J0IDxwYWwvY29jb2Ev
UGFzc0tpdFNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgTlNBcnJh
eTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4gKnRvUGxhdGZvcm1GZWF0dXJlcyhWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcykKK3sKKyAgICBO
U011dGFibGVBcnJheSAqcGxhdGZvcm1GZWF0dXJlcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdp
dGhDYXBhY2l0eTpmZWF0dXJlcy5zaXplKCldOworICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IGZl
YXR1cmVzKSB7CisgICAgICAgIGlmIChmZWF0dXJlKQorICAgICAgICAgICAgW3BsYXRmb3JtRmVh
dHVyZXMgYWRkT2JqZWN0OmZlYXR1cmUtPnBsYXRmb3JtRmVhdHVyZSgpXTsKKyAgICB9CisgICAg
cmV0dXJuIHBsYXRmb3JtRmVhdHVyZXM7Cit9CisKK1BheW1lbnRTZXR1cEZlYXR1cmVzOjpQYXlt
ZW50U2V0dXBGZWF0dXJlcyhWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0
dXJlPj4mJiBmZWF0dXJlcykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IHRvUGxhdGZvcm1G
ZWF0dXJlcyhXVEZNb3ZlKGZlYXR1cmVzKSkgfQoreworfQorCitQYXltZW50U2V0dXBGZWF0dXJl
czo6UGF5bWVudFNldHVwRmVhdHVyZXMoUmV0YWluUHRyPE5TQXJyYXk+JiYgcGxhdGZvcm1GZWF0
dXJlcykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IFdURk1vdmUocGxhdGZvcm1GZWF0dXJl
cykgfQoreworfQorCit2b2lkIFBheW1lbnRTZXR1cEZlYXR1cmVzOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9wbGF0Zm9ybUZlYXR1cmVz
OworfQorCitPcHRpb25hbDxQYXltZW50U2V0dXBGZWF0dXJlcz4gUGF5bWVudFNldHVwRmVhdHVy
ZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RhdGljIE5TQXJyYXkg
KmFsbG93ZWRDbGFzc2VzOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBhdXRvIGFsbG93ZWQgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Ml0pOworICAg
ICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6W05TQXJyYXkgY2xhc3NdXTsKKyAgICAgICAgaWYgKGF1
dG8gcGtQYXltZW50U2V0dXBGZWF0dXJlQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVudFNldHVwRmVh
dHVyZUNsYXNzKCkpCisgICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0
dXBGZWF0dXJlQ2xhc3NdOworICAgICAgICBhbGxvd2VkQ2xhc3NlcyA9IFthbGxvd2VkIGNvcHld
OworICAgIH0pOworCisgICAgYXV0byBwbGF0Zm9ybUZlYXR1cmVzID0gSVBDOjpkZWNvZGU8TlNB
cnJheTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4+KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsK
KyAgICBpZiAoIXBsYXRmb3JtRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gUGF5bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKCpwbGF0Zm9ybUZl
YXR1cmVzKSB9OworfQorCitQYXltZW50U2V0dXBGZWF0dXJlczo6b3BlcmF0b3IgVmVjdG9yPFJl
ZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4gZmVhdHVyZXM7CisgICAgZmVhdHVy
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbbV9wbGF0Zm9ybUZlYXR1cmVzIGNvdW50XSk7Cisg
ICAgZm9yIChQS1BheW1lbnRTZXR1cEZlYXR1cmUgKnBsYXRmb3JtRmVhdHVyZSBpbiBtX3BsYXRm
b3JtRmVhdHVyZXMuZ2V0KCkpCisgICAgICAgIGZlYXR1cmVzLnVuY2hlY2tlZEFwcGVuZChXZWJD
b3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKHBsYXRmb3JtRmVhdHVyZSkpOworICAg
IHJldHVybiBmZWF0dXJlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisj
aW5jbHVkZSAiQXBwbGVQYXlTZXR1cC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIFBLUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbjsKKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2Rl
cjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24geworcHVibGljOgorICAgIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oKSA9IGRlZmF1
bHQ7CisgICAgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNldHVwOjpDb25maWd1cmF0aW9uJiwgY29uc3QgVVJMJik7CisKKyAgICB2b2lkIGVuY29kZShJ
UEM6OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbj4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworCisgICAgUEtQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
bmZpZ3VyYXRpb24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+JiYp
OworCisgICAgUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gbV9jb25maWd1
cmF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBIQVZFKFBB
U1NLSVRfUEFZTUVOVF9TRVRVUCkKKwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24u
aCIKKworI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW1wb3J0ICJBcmd1bWVu
dENvZGVyc0NvY29hLmgiCisjaW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVyLmgi
CisjaW1wb3J0IDx3dGYvVVJMLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExp
bmsuaD4KKworQGludGVyZmFjZSBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24gKFdlYktpdCkK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpzaWduZWRG
aWVsZHM7CitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgUmV0YWluUHRyPFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29yZUNvbmZpZ3VyYXRpb24s
IGNvbnN0IFVSTCYgdXJsKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVBBTDo6Z2V0
UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyNlbmRpZgorCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkluc3RhbmNlKCkgaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIHNldE1lcmNoYW50SWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5tZXJjaGFudElk
ZW50aWZpZXJdOworICAgIFtjb25maWd1cmF0aW9uIHNldE9yaWdpbmF0aW5nVVJMOnVybF07Cisg
ICAgW2NvbmZpZ3VyYXRpb24gc2V0UmVmZXJyZXJJZGVudGlmaWVyOmNvcmVDb25maWd1cmF0aW9u
LnJlZmVycmVySWRlbnRpZmllcl07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lO
CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0U2lnbmF0dXJlOmNvcmVDb25maWd1cmF0aW9uLnNpZ25h
dHVyZV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorCisgICAgaWYgKFtjb25m
aWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0U2lnbmVkRmllbGRzOild
KSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5ICpzaWduZWRGaWVsZHMgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmVkRmllbGRzLnNpemUo
KV07CisgICAgICAgIGZvciAoYXV0byYgc2lnbmVkRmllbGQgOiBjb3JlQ29uZmlndXJhdGlvbi5z
aWduZWRGaWVsZHMpCisgICAgICAgICAgICBbc2lnbmVkRmllbGRzIGFkZE9iamVjdDpzaWduZWRG
aWVsZF07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFNpZ25lZEZpZWxkczpzaWduZWRGaWVs
ZHNdOworICAgIH0KKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCitQYXltZW50U2V0
dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2V0dXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFVSTCYg
dXJsKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgdG9QbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbiwgdXJsKSB9Cit7Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oUmV0YWluUHRyPFBLUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9jb25maWd1cmF0aW9uIHsgV1RGTW92ZShj
b25maWd1cmF0aW9uKSB9Cit7Cit9CisKK3ZvaWQgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1f
Y29uZmlndXJhdGlvbjsKK30KKworT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4g
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBzdGF0aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Cisg
ICAgICAgIGF1dG8gYWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eToxXSk7CisgICAgICAgIGlmIChhdXRvIHBrUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbkNsYXNzID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcygp
KQorICAgICAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbkNsYXNzXTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxsb3dlZCBjb3B5XTsKKyAg
ICB9KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAgIGlmICghY29u
ZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29uZmlndXJhdGlvbikgfTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0QWRkaXRpb25zCisKKyNlbmRpZiAvLyBIQVZFKFBBU1NL
SVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAJKHJldmlzaW9u
IDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMjIgKzQ1LDYgQEAgc3RhdGlj
IFdlYWtQdHI8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveAogICAgIHJldHVybiBhY3RpdmVQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS5nZXQoKTsKIH0KIAotV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5KFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpDbGllbnQmIGNsaWVudCkKLSAgICA6IG1fY2xpZW50IHsgY2xpZW50IH0KLSAgICAsIG1fY2Fu
TWFrZVBheW1lbnRzUXVldWUgeyBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5D
YW5NYWtlUGF5bWVudHMiKSB9Ci17Ci0gICAgbV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9yQWRk
TWVzc2FnZVJlY2VpdmVyKCp0aGlzLCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwotICAgIGZpbmlzaENvbnN0cnVjdGlv
bigqdGhpcyk7Ci19Ci0KLVdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp+V2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkoKQotewotICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpJZGxlKQotICAg
ICAgICBoaWRlUGF5bWVudFVJKCk7Ci0KLSAgICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JS
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLX0KLQogSVBDOjpDb25uZWN0aW9uKiBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dAogewogICAgIHJldHVybiBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JDb25uZWN0aW9uKCp0
aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAkocmV2aXNpb24gMjU5OTIyKQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDEzIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYXlt
ZW50SGVhZGVycy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCi0jaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlBZGRpdGlvbnMuaD4KKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKK09C
SkNfQ0xBU1MgUEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcjsKK09CSkNfQ0xBU1MgVUlWaWV3
Q29udHJvbGxlcjsKICNlbmRpZgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTYwLDggKzYyLDE0IEBA
IE9CSkNfQ0xBU1MgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb24KIE9CSkNfQ0xBU1MgUEtQ
YXltZW50UmVxdWVzdDsKIE9CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKIAorI2lmIFBMQVRG
T1JNKElPUykKK09CSkNfQ0xBU1MgUEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcjsKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bjsKK2NsYXNzIFBheW1lbnRTZXR1cEZlYXR1cmVzOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBj
bGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQpAQCAtMTI0LDYgKzEzMiwxNCBAQCBwcml2
YXRlOgogICAgIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigpOwogICAgIHZvaWQgY2FuY2VsUGF5
bWVudFNlc3Npb24oKTsKIAorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorICAgIHZv
aWQgZ2V0U2V0dXBGZWF0dXJlcyhjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYpPiYmKTsKKyAg
ICB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
JiwgY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIGVuZEFwcGxlUGF5U2V0dXAoKTsKKyAgICB2b2lkIHBsYXRmb3Jt
QmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mLCBjb25z
dCBQYXltZW50U2V0dXBGZWF0dXJlcyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworICAgIHZvaWQgcGxhdGZvcm1FbmRBcHBsZVBheVNldHVwKCk7CisjZW5kaWYKKwogICAgIGJv
b2wgY2FuQmVnaW4oKSBjb25zdDsKICAgICBib29sIGNhbkNhbmNlbCgpIGNvbnN0OwogICAgIGJv
b2wgY2FuQ29tcGxldGVQYXltZW50KCkgY29uc3Q7CkBAIC0xOTEsMTIgKzIwNyw4IEBAIHByaXZh
dGU6CiAgICAgUmV0YWluUHRyPE5TV2luZG93PiBtX3NoZWV0V2luZG93OwogICAgIFJldGFpblB0
cjxOU09iamVjdD4gbV9zaGVldFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyOwogI2VuZGlmCi0gICAg
Ci0jaWYgZGVmaW5lZChXRUJQQVlNRU5UQ09PUkRJTkFUT1JQUk9YWV9BRERJVElPTlMpCi1XRUJQ
QVlNRU5UQ09PUkRJTkFUT1JQUk9YWV9BRERJVElPTlMKLSN1bmRlZiBXRUJQQVlNRU5UQ09PUkRJ
TkFUT1JQUk9YWV9BRERJVElPTlMKLSNlbHNlCi0gICAgdm9pZCBmaW5pc2hDb25zdHJ1Y3Rpb24o
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSB7IH0KKyNpZiBQTEFURk9STShJT1MpCisgICAg
V2Vha09iakNQdHI8UEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcj4gbV9wYXltZW50U2V0dXBW
aWV3Q29udHJvbGxlcjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSBOCiAgICAgQ29tcGxldGVQYXltZW50U2Vzc2lvbihPcHRpb25hbDxXZWJDb3Jl
OjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gcmVzdWx0KQogICAgIEFib3J0UGF5bWVudFNl
c3Npb24oKQogICAgIENhbmNlbFBheW1lbnRTZXNzaW9uKCkKKyNpZiBIQVZFKFBBU1NLSVRfUEFZ
TUVOVF9TRVRVUCkKKyAgICBHZXRTZXR1cEZlYXR1cmVzKFdlYktpdDo6UGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSAtPiAoV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJl
cyBmZWF0dXJlcykgQXN5bmMKKyAgICBCZWdpbkFwcGxlUGF5U2V0dXAoV2ViS2l0OjpQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFdlYktpdDo6UGF5bWVudFNldHVwRmVh
dHVyZXMgZmVhdHVyZXMpIC0+IChib29sIHJlc3VsdCkgQXN5bmMKKyAgICBFbmRBcHBsZVBheVNl
dHVwKCkKKyNlbmRpZgogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9j
b2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCisK
KyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKKyNpbXBvcnQgIkRlY29kZXIuaCIKKyNp
bXBvcnQgIkVuY29kZXIuaCIKKyNpbXBvcnQgIlBhc3NLaXRTb2Z0TGlua0FkZGl0aW9ucy5oIgor
I2ltcG9ydCA8d3RmL1VSTC5oPgorCitAaW50ZXJmYWNlIFBLUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbiAoV2ViS2l0KQorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKnNpZ25lZEZpZWxkczsKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdEFkZGl0aW9ucyB7
CisKK3N0YXRpYyBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiB0b1BsYXRm
b3JtQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1cmF0
aW9uJiBjb3JlQ29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwpCit7CisjaWYgUExBVEZPUk0o
TUFDKQorICAgIGlmICghUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcygp
KQorICAgICAgICByZXR1cm4gbmlsOworI2VuZGlmCisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uSW5zdGFuY2Uo
KSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVyY2hhbnRJZGVudGlmaWVyOmNvcmVD
b25maWd1cmF0aW9uLm1lcmNoYW50SWRlbnRpZmllcl07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0
T3JpZ2luYXRpbmdVUkw6dXJsXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRSZWZlcnJlcklkZW50
aWZpZXI6Y29yZUNvbmZpZ3VyYXRpb24ucmVmZXJyZXJJZGVudGlmaWVyXTsKK0FMTE9XX05FV19B
UElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KKyAgICBbY29uZmlndXJhdGlvbiBzZXRTaWduYXR1cmU6
Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmF0dXJlXTsKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFS
RFNfRU5ECisKKyAgICBpZiAoW2NvbmZpZ3VyYXRpb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihzZXRTaWduZWRGaWVsZHM6KV0pIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkgKnNpZ25l
ZEZpZWxkcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjb3JlQ29uZmlndXJh
dGlvbi5zaWduZWRGaWVsZHMuc2l6ZSgpXTsKKyAgICAgICAgZm9yIChhdXRvJiBzaWduZWRGaWVs
ZCA6IGNvcmVDb25maWd1cmF0aW9uLnNpZ25lZEZpZWxkcykKKyAgICAgICAgICAgIFtzaWduZWRG
aWVsZHMgYWRkT2JqZWN0OnNpZ25lZEZpZWxkXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0
U2lnbmVkRmllbGRzOnNpZ25lZEZpZWxkc107CisgICAgfQorCisgICAgcmV0dXJuIGNvbmZpZ3Vy
YXRpb247Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwpCisgICAgOiBtX2NvbmZpZ3VyYXRpb24geyB0b1Bs
YXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCB1cmwpIH0KK3sKK30KKworUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihSZXRhaW5QdHI8
UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2Nv
bmZpZ3VyYXRpb24geyBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pIH0KK3sKK30KKwordm9pZCBQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgbV9jb25maWd1cmF0aW9uOworfQorCitPcHRpb25hbDxQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uPiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0YXRpYyBOU0FycmF5ICphbGxvd2VkQ2xh
c3NlczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgYXV0byBhbGxvd2VkID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjFdKTsKKyAgICAgICAgaWYgKGF1
dG8gcGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbkNsYXNzKCkpCisgICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6
cGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3NdOworICAgICAgICBhbGxvd2VkQ2xhc3Nl
cyA9IFthbGxvd2VkIGNvcHldOworICAgIH0pOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0g
SVBDOjpkZWNvZGU8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPihkZWNvZGVyLCBhbGxvd2Vk
Q2xhc3Nlcyk7CisgICAgaWYgKCFjb25maWd1cmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgcmV0dXJuIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24geyBXVEZNb3Zl
KCpjb25maWd1cmF0aW9uKSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXRBZGRpdGlvbnMK
KworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQpJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyNTk5MjIpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQg
IldLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuaCIKKyNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVz
c2FnZXMuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0
ci5oPgpAQCAtMzcsMTYgKzM4LDE2IEBACiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3
dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAotI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0
TGluay5oPgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFk
ZGl0aW9ucy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hQWRkaXRpb25zLm1tPgotI2Vs
c2UKLW5hbWVzcGFjZSBXZWJLaXQgewotc3RhdGljIHZvaWQgZmluaXNoQ3JlYXRpbmcoUEtQYXlt
ZW50UmVxdWVzdCAqLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dCYpIHsgfQotfQorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorI2ltcG9ydCAiQVBJ
VUlDbGllbnQuaCIKKyNpbXBvcnQgIkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaCIKKyNp
bXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94
eS5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjZW5kaWYKIAorI2ltcG9ydCA8cGFs
L2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgorCiAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCBh
bnkgcGxhdGZvcm1zIHdpdGhvdXQgLXNldFRodW1ibmFpbFVSTHM6LCBzbyB0aGlzIGNhbiBiZSBy
ZW1vdmVkLgogQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0ICgpCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgc3Ryb25nKSBOU1VSTCAqdGh1bWJuYWlsVVJMOwpAQCAtNjEsNiArNjIsMzQgQEAgQGlu
dGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0IChTdGFnaW5nKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorc3RhdGljIHZvaWQgZmluaXNoQ3JlYXRpbmcoUEtQYXltZW50UmVxdWVzdCAqcGxhdGZvcm1S
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVx
dWVzdCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIGlmIChQS1BheW1l
bnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSByZXF1ZXN0Lmluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbigpLnBsYXRmb3JtQ29uZmlndXJhdGlvbigpKSB7CisgICAgICAg
IHBsYXRmb3JtUmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9u
OworICAgICAgICBwbGF0Zm9ybVJlcXVlc3QucmVxdWVzdFR5cGUgPSBQS1BheW1lbnRSZXF1ZXN0
VHlwZUluc3RhbGxtZW50OworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBsYXRmb3Jt
UmVxdWVzdCk7CisgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOworI2VuZGlmCit9CisKK1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eShXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50JiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGll
bnQpCisgICAgLCBtX2Nhbk1ha2VQYXltZW50c1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20u
YXBwbGUuV2ViS2l0LkNhbk1ha2VQYXltZW50cyIpKQoreworICAgIG1fY2xpZW50LnBheW1lbnRD
b29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKK30KKworV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpCit7
CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OklkbGUpCisgICAgICAgIGhpZGVQYXltZW50VUko
KTsKKworICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZl
cigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpOworfQorCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0
Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBQTEFURk9STShNQUMpCkBAIC0yNzks
NiArMzA4LDEwOSBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9yCiAg
ICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rp
b24odXBkYXRlKTsKIH0KIAorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorCit2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpnZXRTZXR1cEZlYXR1cmVzKGNvbnN0IFBheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIE1lc3NhZ2VzOjpXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6R2V0U2V0dXBGZWF0dXJlczo6QXN5bmNSZXBseSYmIHJlcGx5KQor
eworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVBBTDo6Z2V0UEtQYXltZW50U2V0dXBDb250
cm9sbGVyQ2xhc3MoKSkgeworICAgICAgICByZXBseSh7IH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisKKyAgICBhdXRvIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoW3JlcGx5
ID0gV1RGTW92ZShyZXBseSldKE5TQXJyYXk8UEtQYXltZW50U2V0dXBGZWF0dXJlICo+ICpmZWF0
dXJlcykgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVwbHkg
PSBXVEZNb3ZlKHJlcGx5KSwgZmVhdHVyZXMgPSByZXRhaW5QdHIoZmVhdHVyZXMpXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgcmVwbHkoUGF5bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKGZl
YXR1cmVzKSB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKK0FMTE9XX05FV19BUElfV0lUSE9V
VF9HVUFSRFNfQkVHSU4KKyAgICBbUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbnRyb2xsZXJDbGFz
cygpIHBheW1lbnRTZXR1cEZlYXR1cmVzRm9yQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLnBs
YXRmb3JtQ29uZmlndXJhdGlvbigpIGNvbXBsZXRpb246Y29tcGxldGlvbi5nZXQoKV07CitBTExP
V19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorfQorCit2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpiZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMmIGZlYXR1cmVz
LCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkJlZ2luQXBwbGVQYXlTZXR1
cDo6QXN5bmNSZXBseSYmIHJlcGx5KQoreworICAgIHBsYXRmb3JtQmVnaW5BcHBsZVBheVNldHVw
KGNvbmZpZ3VyYXRpb24sIGZlYXR1cmVzLCBXVEZNb3ZlKHJlcGx5KSk7Cit9CisKK3ZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmVuZEFwcGxlUGF5U2V0dXAoKQoreworICAgIHBsYXRm
b3JtRW5kQXBwbGVQYXlTZXR1cCgpOworfQorCisjaWYgUExBVEZPUk0oTUFDKQorCit2b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUJlZ2luQXBwbGVQYXlTZXR1cChjb25z
dCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBQYXltZW50
U2V0dXBGZWF0dXJlcyYgZmVhdHVyZXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6QmVnaW5BcHBsZVBheVNldHVwOjpBc3luY1JlcGx5JiYgcmVwbHkpCit7CisgICAgaWYg
KCFQQUw6OmdldFBLUGF5bWVudFNldHVwUmVxdWVzdENsYXNzKCkpIHsKKyAgICAgICAgcmVwbHko
ZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXF1ZXN0ID0gYWRv
cHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFNldHVwUmVxdWVzdEluc3RhbmNlKCkgaW5pdF0pOwor
ICAgIFtyZXF1ZXN0IHNldENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5wbGF0Zm9ybUNvbmZp
Z3VyYXRpb24oKV07CisgICAgW3JlcXVlc3Qgc2V0UGF5bWVudFNldHVwRmVhdHVyZXM6ZmVhdHVy
ZXMucGxhdGZvcm1GZWF0dXJlcygpXTsKKworICAgIGF1dG8gY29tcGxldGlvbiA9IG1ha2VCbG9j
a1B0cihbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oQk9PTCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZXBseSA9IFdURk1vdmUocmVwbHkpLCBz
dWNjZXNzXSgpIG11dGFibGUgeworICAgICAgICAgICAgcmVwbHkoc3VjY2Vzcyk7CisgICAgICAg
IH0pOworICAgIH0pOworCisgICAgYXV0byBwYXltZW50U2V0dXBDb250cm9sbGVyID0gYWRvcHRO
UyhbUEFMOjphbGxvY1BLUGF5bWVudFNldHVwQ29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0pOwor
CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCisgICAgW3BheW1lbnRTZXR1cENv
bnRyb2xsZXIgcHJlc2VudFBheW1lbnRTZXR1cFJlcXVlc3Q6cmVxdWVzdC5nZXQoKSBjb21wbGV0
aW9uOmNvbXBsZXRpb24uZ2V0KCldOworQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQK
K30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1FbmRBcHBsZVBh
eVNldHVwKCkKK3sKK30KKworI2Vsc2UgLy8gUExBVEZPUk0oTUFDKQorCit2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBQYXltZW50U2V0dXBG
ZWF0dXJlcyYgZmVhdHVyZXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
QmVnaW5BcHBsZVBheVNldHVwOjpBc3luY1JlcGx5JiYgcmVwbHkpCit7CisgICAgVUlWaWV3Q29u
dHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyID0gbV9wYXltZW50Q29vcmRpbmF0b3JQ
cm94eS5tX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIo
bV9wYXltZW50Q29vcmRpbmF0b3JQcm94eSk7CisgICAgaWYgKCFwcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIpIHsKKyAgICAgICAgcmVwbHkoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYXV0byByZXF1ZXN0ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFNldHVwUmVx
dWVzdEluc3RhbmNlKCkgaW5pdF0pOworICAgIFtyZXF1ZXN0IHNldENvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5wbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKV07CisgICAgW3JlcXVlc3Qgc2V0UGF5
bWVudFNldHVwRmVhdHVyZXM6ZmVhdHVyZXMucGxhdGZvcm1GZWF0dXJlcygpXTsKKworICAgIGF1
dG8gcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXlt
ZW50U2V0dXBWaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U2V0dXBSZXF1
ZXN0OnJlcXVlc3QuZ2V0KCldKTsKKyAgICBpZiAoIXBheW1lbnRTZXR1cFZpZXdDb250cm9sbGVy
KSB7CisgICAgICAgIHJlcGx5KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZXBseSA9IFdU
Rk1vdmUocmVwbHkpXSgpIG11dGFibGUgeworICAgICAgICAgICAgcmVwbHkodHJ1ZSk7CisgICAg
ICAgIH0pOworICAgIH0pOworCisgICAgZW5kQXBwbGVQYXlTZXR1cCgpOworICAgIFtwcmVzZW50
aW5nVmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9sbGVyOnBheW1lbnRTZXR1cFZpZXdD
b250cm9sbGVyLmdldCgpIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOmNvbXBsZXRpb24uZ2V0KCld
OworICAgIG1fcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIgPSBwYXltZW50U2V0dXBWaWV3Q29u
dHJvbGxlci5nZXQoKTsKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1FbmRBcHBsZVBheVNldHVwKCkKK3sKKyAgICBbbV9wYXltZW50U2V0dXBWaWV3Q29udHJv
bGxlciBkaXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOwor
ICAgIG1fcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIgPSBuaWw7Cit9CisKKyNlbmRpZiAvLyBQ
TEFURk9STShNQUMpCisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW0JKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00MSwxOSArNDEsNTUgQEAKICNpbXBvcnQgPFVJS2l0L1VJRm9udC5oPgogI2VuZGlmCiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hQWRkaXRpb25zLm1tPgotI2VsaWYgRU5BQkxFKEFQUExFX1BB
WSkKIG5hbWVzcGFjZSBJUEMgewotc3RhdGljIGJvb2wgZmluaXNoRGVjb2RpbmcoRGVjb2RlciYs
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikgeyByZXR1cm4gdHJ1ZTsg
fQotc3RhdGljIHZvaWQgZmluaXNoRW5jb2RpbmcoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikgeyB9Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKK3N0YXRpYyBib29sIGZpbmlzaERlY29kaW5n
KERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
JiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIE9w
dGlvbmFsPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+IGluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbjsKKyAgICBkZWNvZGVyID4+IGluc3RhbGxtZW50Q29uZmlndXJhdGlv
bjsKKyAgICBpZiAoIWluc3RhbGxtZW50Q29uZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmVxdWVzdC5zZXRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oV1RGTW92ZSgq
aW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKSk7CisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CisgICAg
cmV0dXJuIHRydWU7CisjZW5kaWYKIH0KKworc3RhdGljIHZvaWQgZmluaXNoRW5jb2RpbmcoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QmIHJlcXVlc3QpCit7CisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNUQUxMTUVOVFMpCisgICAg
ZW5jb2RlciA8PCByZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbigpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oZW5jb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwogI2Vu
ZGlmCit9CiAKLW5hbWVzcGFjZSBJUEMgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisjaWYg
SEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKIAotI2lmIEVOQUJMRShBUFBMRV9QQVkpCit2b2lk
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1l
bnRDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQoreworICAgIGVuY29kZXIgPDwgY29uZmln
dXJhdGlvbi5wbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKTsKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6
UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gSVBDOjpkZWNvZGU8UEtQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uPihkZWNvZGVyLCBQQUw6OmdldFBLUGF5bWVudEluc3RhbGxtZW50
Q29uZmlndXJhdGlvbkNsYXNzKCkpOworICAgIGlmICghY29uZmlndXJhdGlvbikKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IFdURk1vdmUoKmNvbmZpZ3VyYXRp
b24pIH07Cit9CisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQogCiB2b2lk
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQogewpJbmRleDogU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTk5MjIp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MDAzLDYgKzQwMDMsMTAgQEAKIAkJNUM0NkMwQUQyMUI3MTk4QzAwQkM1
OTkxIC8qIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNDZDMEFFMjFCNzFBRTIwMEJDNTk5MSAvKiBfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QjlEOEEyMTBBOEM0NjAwOEYxNEQxIC8q
IFVuZG9PclJlZG8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5kb09yUmVk
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENERDI0NDY1QkY5MDBBOTMx
MjQgLyogQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0RFMjQ0NjVCRjkwMEE5MzEyNCAvKiBQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUM1M0RDREYyNDQ2NUJGOTAwQTkzMTI0IC8qIEFwcGxlUGF5UGF5bWVudFNldHVwRmVh
dHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwbGVQYXlQYXltZW50
U2V0dXBGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENFMDI0
NDY1QkY5MDBBOTMxMjQgLyogUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNUNFQzM4MjIwOTU4MzIwMEQ2QkJC
MCAvKiBEYWVtb25FbnRyeVBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERhZW1vbkVudHJ5UG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1Q0VD
MzkyMjA5NTgzMjAwRDZCQkIwIC8qIERhZW1vbkVudHJ5UG9pbnQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYWVtb25FbnRyeVBvaW50Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzVEMjM4NzIyN0ExODkxMDAwQjlCREEgLyogX1dLQ3VzdG9t
SGVhZGVyRmllbGRzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTYyMDksNiArNjIxMywxMCBAQAogCQkJCTFBQjFGNzc3MUQxQjMwQTkwMDdDOUJEMSAv
KiBjb2NvYSAqLywKIAkJCQkxQUIxRjc3QTFEMUIzMEE5MDA3QzlCRDEgLyogaW9zICovLAogCQkJ
CTFBQjFGNzdDMUQxQjMwQTkwMDdDOUJEMSAvKiBtYWMgKi8sCisJCQkJNUM1M0RDREYyNDQ2NUJG
OTAwQTkzMTI0IC8qIEFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMuaCAqLywKKwkJCQk1QzUz
RENERDI0NDY1QkY5MDBBOTMxMjQgLyogQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbSAq
LywKKwkJCQk1QzUzRENERTI0NDY1QkY5MDBBOTMxMjQgLyogUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbi5oICovLAorCQkJCTVDNTNEQ0UwMjQ0NjVCRjkwMEE5MzEyNCAvKiBQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uLm1tICovLAogCQkJCTFBQjFGNzg4MUQxQjMzNTUwMDdDOUJEMSAvKiBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAgKi8sCiAJCQkJMUFCMUY3ODkxRDFCMzM1NTAwN0M5
QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggKi8sCiAJCQkJMUFCMUY3OEExRDFC
MzM1NTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluICov
LApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAJKHJldmlzaW9uIDI1OTkyMikKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQog
CisjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oIgogI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgog
I2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VzLmgiCkBAIC0yMjAsNiArMjIy
LDI1IEBAIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpyZW1vdGVVSUVuYWIKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKwordm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3I6OmdldFNldHVwRmVhdHVyZXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fd2ViUGFnZS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpHZXRTZXR1cEZlYXR1cmVzKFBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb24geyBjb25maWd1cmF0aW9uLCB1cmwgfSksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmJl
Z2luQXBwbGVQYXlTZXR1cChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1cmF0
aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYgZmVhdHVyZXMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV93ZWJQYWdlLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkJlZ2luQXBw
bGVQYXlTZXR1cChQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgY29uZmlndXJhdGlvbiwgdXJs
IH0sIFBheW1lbnRTZXR1cEZlYXR1cmVzIHsgV1RGTW92ZShmZWF0dXJlcykgfSksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmVu
ZEFwcGxlUGF5U2V0dXAoKQoreworICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6RW5kQXBwbGVQYXlTZXR1cCgpKTsKK30KKworI2VuZGlmIC8v
IEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCisKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvci5oCShyZXZpc2lvbiAyNTk5MjIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1
LDEyIEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgdXNlckFnZW50U2NyaXB0c0Jsb2NrZWRFcnJv
ck1lc3NhZ2UoKSBjb25zdCBmaW5hbDsKIAorI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCisg
ICAgdm9pZCBnZXRTZXR1cEZlYXR1cmVzKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkNv
bmZpZ3VyYXRpb24mLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxS
ZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmKT4mJikgZmluYWw7CisgICAgdm9p
ZCBiZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmln
dXJhdGlvbiYsIGNvbnN0IFVSTCYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBwbGVQYXlTZXR1
cEZlYXR1cmU+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIGVuZEFwcGxlUGF5U2V0dXAoKSBmaW5hbDsKKyNlbmRpZgorCiAgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIApAQCAtMTEyLDEwICsxMTgsNiBAQCBwcml2
YXRlOgogICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKIAogICAgIE9wdGlvbmFsPEF2YWlsYWJsZVBh
eW1lbnROZXR3b3Jrc1NldD4gbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3M7Ci0KLSNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBheW1lbnRD
b29yZGluYXRvckFkZGl0aW9ucy5oPgotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397593</attachid>
            <date>2020-04-25 15:42:13 -0700</date>
            <delta_ts>2020-04-25 15:42:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210521-20200425154212.patch</filename>
            <type>text/plain</type>
            <size>131565</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDcwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAyMC0wNC0yNSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgQXBw
bGVQYXkgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0byBXZWJDb3JlIGFuZCBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDUyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgT25seSA0IG1pbm9yIG1v
ZGlmaWNhdGlvbnMgd2VyZSBuZWNlc3NhcnksIGFzIGZvbGxvd3M6CisKKyAgICAgICAgMS4gUGF5
bWVudFNldHVwRmVhdHVyZXMncyBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1
cmUgKj4+IHdhcyBjaGFuZ2VkIHRvIFJldGFpblB0cjxOU0FycmF5PiB0byB3b3JrIHdpdGggQysr
LgorICAgICAgICAyLiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucyBtZXNzYWdl
cyB3ZXJlIG1vdmVkIHRvIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LCByZW1vdmluZyB0aGUg
bmVlZCBmb3IKKyAgICAgICAgICAgdGhlIGV4dHJhIG1lc3NhZ2UgcmVjZWl2ZXIsIHRoZSBPcHRp
b25hbDxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9ucz4sIGFuZCB0aGUgZmluaXNo
Q29uc3RydWN0aW9uLgorICAgICAgICAzLiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCdzIG1h
Y3JvcyB0aGF0IGNvbGxpZGVkIHdpdGggb3RoZXIgbWFjcm9zIHdlcmUgcmVuYW1lZC4gIFRoaXMg
d2FzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIGRpZmZlcmVudCBzb3VyY2UgdW5pZmljYXRpb24uCisg
ICAgICAgIDQuIFBheW1lbnRTZXR1cEZlYXR1cmVzLmggd2FzIHJlbmFtZWQgdG8gQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5oIHRvIGJlIGFibGUgdG8gYnVpbGQgd2l0aCBQYXltZW50U2V0
dXBGZWF0dXJlcy5oIGluIHRoZSBTREsuCisKKyAgICAgICAgVGhlIHJlc3QgaXMganVzdCBjb3B5
IGFuZCBwYXN0ZS4KKworICAgICAgICBUaGVyZSBpc24ndCBhIGdvb2Qgd2F5IHRvIGxhbmQgdGhp
cyB3aXRob3V0IGJyZWFraW5nIHRoZSBidWlsZCB3aXRob3V0IHJlbW92aW5nIHRoZSBmaWxlcyBm
cm9tIFdlYktpdEFkZGl0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBzbyBJJ2xsIGRv
IHRoZSB0d28gYXQgdGhlIHNhbWUgdGltZSBsYXRlIGF0IG5pZ2h0IHRvIG5vdCBjYXVzZSBkaXNy
dXB0aW9uLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJl
c1N1cHBvcnRlZE5ldHdvcmtzKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5pc2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6aW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpzZXRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkRGlzY2xvc2VGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVw
OjpnZXRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OmJl
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6OkFwcGxlUGF5U2V0dXApOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsZVBheVNldHVwOjpzdXNwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2V0dXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGw6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpwbGF0Zm9ybUZlYXR1cmUg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0
dXJlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjp0
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlOjpzdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZTo6c3VwcG9y
dHNJbnN0YWxsbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZl
YXR1cmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGw6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmdldFNldHVwRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpiZWdpbkFwcGxlUGF5U2V0dXAp
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjplbmRBcHBsZVBh
eVNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
RGVjaW1hbE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUZlYXR1cmVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOjpQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmg6CisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5p
c2hDb252ZXJ0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRN
ZXRob2RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaENvbnZlcnRpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6c2V0SW5zdGFsbG1lbnRH
cm91cElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVu
dFNlc3Npb25FcnJvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEVycm9y
KToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UmVx
dWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpyZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
dFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlz
bWlzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0Q2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2F0Y2hkb2dUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1Rp
bWVyRmlyZWQpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dl
YkNvcmVBZGRpdGlvbnMubW06CisKIDIwMjAtMDQtMjUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIEFkZCB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxp
bmUgc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjA3MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBA
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXkKICQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlFcnJvci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlFcnJvckNvZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQuaWRsCiskKFBST0pFQ1RfRElSKS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmlkbAogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbApAQCAt
MzksNiArNDAsOSBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5CiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5pZGwKICQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uRXJyb3IuaWRsCiskKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuaWRsCiskKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlLmlkbAorJChQUk9KRUNU
X0RJUikvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZVR5cGUuaWRsCiAkKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0
ZWRFdmVudC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlw
cGluZ0NvbnRhY3RVcGRhdGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2hpcHBpbmdNZXRob2QuaWRsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjYwNzA4KQorKysgU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkK
QEAgLTc3LDYgKzc3LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBh
eUVycm9yQ29kZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBheUluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbi5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBheUxpbmVJdGVt
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBs
ZVBheUxpbmVJdGVtLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3BwCkBAIC0xMTUsNiArMTE3LDggQEAg
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBheVNldHVwLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXBwbGVQYXlTZXR1cEZlYXR1
cmUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fw
cGxlUGF5U2V0dXBGZWF0dXJlLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRF
dmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fw
cGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCShyZXZpc2lvbiAyNjA3MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgSlNfQklORElOR19J
RExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb2RlLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3JDb250YWN0
RmllbGQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlMaW5lSXRlbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsIFwKQEAgLTExOCw2ICsxMTksOSBAQCBKU19C
SU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UmVxdWVzdEJhc2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
U2Vzc2lvbkVycm9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2V0dXAuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlT
ZXR1cEZlYXR1cmUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXR1cEZlYXR1cmVUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kLmlk
bCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI2MDcwOCkKKysrIFNv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTU5NSw2ICs1
OTUsOCBAQCBXSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcAogICAgIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50LmNwcAogICAgIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAKICAgICBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwCisgICAgTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwLmNwcAorICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZl
YXR1cmUubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKICAgICBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmNwcAogICAgIE1v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmNwcApA
QCAtNjAyLDYgKzYwNCw3IEBAIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAg
ICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5jcHAKICAg
ICBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKICAgICBNb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5jcHAKKyAgICBNb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLm1tCiAgICAgTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
U2Vzc2lvbi5jcHAKIApAQCAtNjIwLDYgKzYyMyw3IEBAIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVu
Y3Rpb25NYXAuY3BwCiAgICAgSlNBcHBsZVBheUVycm9yLmNwcAogICAgIEpTQXBwbGVQYXlFcnJv
ckNvZGUuY3BwCiAgICAgSlNBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmNwcAorICAgIEpTQXBw
bGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uY3BwCiAgICAgSlNBcHBsZVBheUxpbmVJdGVt
LmNwcAogICAgIEpTQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3BwCiAgICAgSlNBcHBsZVBh
eU1vZGlmaWVyLmNwcApAQCAtNjM3LDYgKzY0MSw5IEBAIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVu
Y3Rpb25NYXAuY3BwCiAgICAgSlNBcHBsZVBheVJlcXVlc3RCYXNlLmNwcAogICAgIEpTQXBwbGVQ
YXlTZXNzaW9uLmNwcAogICAgIEpTQXBwbGVQYXlTZXNzaW9uRXJyb3IuY3BwCisgICAgSlNBcHBs
ZVBheVNldHVwLmNwcAorICAgIEpTQXBwbGVQYXlTZXR1cEZlYXR1cmUuY3BwCisgICAgSlNBcHBs
ZVBheVNldHVwRmVhdHVyZVR5cGUuY3BwCiAgICAgSlNBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNl
bGVjdGVkRXZlbnQuY3BwCiAgICAgSlNBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5jcHAK
ICAgICBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlv
bmFsPUFQUExFX1BBWV9JTlNUQUxMTUVOVFMsCitdIGRpY3Rpb25hcnkgQXBwbGVQYXlJbnN0YWxs
bWVudENvbmZpZ3VyYXRpb24geworICAgIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZSBmZWF0dXJl
VHlwZSA9ICJhcHBsZUNhcmQiOworICAgIERPTVN0cmluZyBtZXJjaGFuZGlzaW5nSW1hZ2VEYXRh
OworICAgIERPTVN0cmluZyBvcGVuVG9CdXlUaHJlc2hvbGRBbW91bnQ7CisgICAgRE9NU3RyaW5n
IGJpbmRpbmdUb3RhbEFtb3VudDsKKyAgICBET01TdHJpbmcgY3VycmVuY3lDb2RlOworICAgIERP
TVN0cmluZyBtZXJjaGFudElkZW50aWZpZXI7CisgICAgRE9NU3RyaW5nIHJlZmVycmVySWRlbnRp
ZmllcjsKKyAgICBib29sZWFuIGlzSW5TdG9yZVB1cmNoYXNlOworfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb25X
ZWJDb3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbldlYkNvcmUuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uV2ViQ29yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRT
KQorCisjaW5jbHVkZSAiQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlV2ViQ29yZS5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVj
dCBBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbiB7CisgICAgQXBwbGVQYXlTZXR1cEZl
YXR1cmVUeXBlIGZlYXR1cmVUeXBlIHsgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlOjpBcHBsZUNh
cmQgfTsKKyAgICBTdHJpbmcgbWVyY2hhbmRpc2luZ0ltYWdlRGF0YTsKKyAgICBTdHJpbmcgb3Bl
blRvQnV5VGhyZXNob2xkQW1vdW50OworICAgIFN0cmluZyBiaW5kaW5nVG90YWxBbW91bnQ7Cisg
ICAgU3RyaW5nIGN1cnJlbmN5Q29kZTsKKyAgICBTdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyOwor
ICAgIFN0cmluZyByZWZlcnJlcklkZW50aWZpZXI7CisgICAgYm9vbCBpc0luU3RvcmVQdXJjaGFz
ZSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaAkocmV2aXNpb24gMjYwNzA4KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlICJBcHBsZVBheVBheW1lbnRD
b250YWN0LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50TWV0aG9kLmgiCiAKLSNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVBh
eW1lbnRBZGRpdGlvbnMuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBBcHBsZVBheVBheW1lbnQgewpAQCAtNDYsMTEgKzQyLDcgQEAgc3RydWN0IEFwcGxlUGF5UGF5
bWVudCB7CiAgICAgVG9rZW4gdG9rZW47CiAgICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50Q29u
dGFjdD4gYmlsbGluZ0NvbnRhY3Q7CiAgICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50Q29udGFj
dD4gc2hpcHBpbmdDb250YWN0OwotCi0jaWYgZGVmaW5lZChBUFBMRVBBWVBBWU1FTlRfQURESVRJ
T05TKQotQVBQTEVQQVlQQVlNRU5UX0FERElUSU9OUwotI3VuZGVmIEFQUExFUEFZUEFZTUVOVF9B
RERJVElPTlMKLSNlbmRpZgorICAgIFN0cmluZyBpbnN0YWxsbWVudEF1dGhvcml6YXRpb25Ub2tl
bjsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlQYXltZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5UGF5bWVudC5pZGwJKHJldmlzaW9uIDI2MDcwOCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogICAgIHJlcXVpcmVkIEFwcGxlUGF5UGF5bWVudFRva2VuIHRva2Vu
OwogICAgIEFwcGxlUGF5UGF5bWVudENvbnRhY3QgYmlsbGluZ0NvbnRhY3Q7CiAgICAgQXBwbGVQ
YXlQYXltZW50Q29udGFjdCBzaGlwcGluZ0NvbnRhY3Q7CisgICAgW0NvbmRpdGlvbmFsPUFQUExF
X1BBWV9JTlNUQUxMTUVOVFNdIERPTVN0cmluZyBpbnN0YWxsbWVudEF1dGhvcml6YXRpb25Ub2tl
bjsKIH07CiAKIFsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlQYXltZW50TWV0aG9kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaAkocmV2aXNpb24gMjYwNzA4KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlICJBcHBsZVBheVBheW1lbnRQ
YXNzLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVBheW1lbnRNZXRob2RB
ZGRpdGlvbnMuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
QXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZTsKQEAgLTQ2LDExICs0Miw3IEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnRNZXRob2QgeyAgICAKICAgICBPcHRpb25hbDxUeXBlPiB0eXBlOwogICAgIE9w
dGlvbmFsPEFwcGxlUGF5UGF5bWVudFBhc3M+IHBheW1lbnRQYXNzOwogICAgIE9wdGlvbmFsPEFw
cGxlUGF5UGF5bWVudENvbnRhY3Q+IGJpbGxpbmdDb250YWN0OwotCi0jaWYgZGVmaW5lZChBUFBM
RVBBWVBBWU1FTlRNRVRIT0RfQURESVRJT05TKQotQVBQTEVQQVlQQVlNRU5UTUVUSE9EX0FERElU
SU9OUwotI3VuZGVmIEFQUExFUEFZUEFZTUVOVE1FVEhPRF9BRERJVElPTlMKLSNlbmRpZgorICAg
IFN0cmluZyBiaW5kVG9rZW47CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaWRsCShyZXZp
c2lvbiAyNjA3MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UGF5bWVudE1ldGhvZC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDQgKzMzLDUgQEAKICAgICBB
cHBsZVBheVBheW1lbnRNZXRob2RUeXBlIHR5cGU7CiAgICAgQXBwbGVQYXlQYXltZW50UGFzcyBw
YXltZW50UGFzczsKICAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IGJpbGxpbmdDb250YWN0Owor
ICAgIFtDb25kaXRpb25hbD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSBET01TdHJpbmcgYmluZFRv
a2VuOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQ
YXltZW50TWV0aG9kVXBkYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaAkocmV2aXNpb24gMjYwNzA4
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRo
b2RVcGRhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjAgKzI5LDEyIEBACiAKICNpbmNsdWRl
ICJBcHBsZVBheUxpbmVJdGVtLmgiCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2lu
Y2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGVBZGRpdGlv
bnMuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBBcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGUgewogICAgIEFwcGxlUGF5TGluZUl0ZW0gbmV3VG90YWw7CiAgICAg
VmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+IG5ld0xpbmVJdGVtczsKLQotI2lmIGRlZmluZWQoQVBQ
TEVQQVlQQVlNRU5UTUVUSE9EVVBEQVRFX0FERElUSU9OUykKLUFQUExFUEFZUEFZTUVOVE1FVEhP
RFVQREFURV9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVBBWU1FTlRNRVRIT0RVUERBVEVfQURE
SVRJT05TCi0jZW5kaWYKKyAgICBTdHJpbmcgaW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXI7CiB9
OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5
bWVudE1ldGhvZFVwZGF0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaWRsCShyZXZpc2lvbiAyNjA3
MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1l
dGhvZFVwZGF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDQgKzI4LDUgQEAKIF0gZGljdGlv
bmFyeSBBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUgewogICAgIHJlcXVpcmVkIEFwcGxlUGF5
TGluZUl0ZW0gbmV3VG90YWw7CiAgICAgc2VxdWVuY2U8QXBwbGVQYXlMaW5lSXRlbT4gbmV3TGlu
ZUl0ZW1zOworICAgIFtDb25kaXRpb25hbD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSBET01TdHJp
bmcgaW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXI7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwCShy
ZXZpc2lvbiAyNjA3MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5UmVxdWVzdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNiArMzEsMjkgQEAKICNp
bmNsdWRlICJQYXltZW50Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZU51bWJlcnMuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW5j
bHVkZSA8V2ViS2l0QWRkaXRpb25zL0FwcGxlUGF5UmVxdWVzdEJhc2VBZGRpdGlvbnMuY3BwPgot
I2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmco
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmLCBBcHBsZVBheVJlcXVlc3RCYXNlJikgeyB9
Ci1zdGF0aWMgYm9vbCByZXF1aXJlc1N1cHBvcnRlZE5ldHdvcmtzKHVuc2lnbmVkLCBjb25zdCBB
cHBsZVBheVJlcXVlc3RCYXNlJikgeyByZXR1cm4gdHJ1ZTsgfQotfQorCitzdGF0aWMgdm9pZCBm
aW5pc2hDb252ZXJ0aW5nKEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXN1bHQsIEFw
cGxlUGF5UmVxdWVzdEJhc2UmIHJlcXVlc3QpCit7CisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNU
QUxMTUVOVFMpCisgICAgaWYgKHJlcXVlc3QuaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKQorICAg
ICAgICByZXN1bHQuc2V0SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKFdURk1vdmUoKnJlcXVlc3Qu
aW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZXN1
bHQpOworICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKICNlbmRpZgorfQogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7CitzdGF0aWMgYm9vbCByZXF1aXJlc1N1cHBvcnRlZE5ldHdvcmtzKHVuc2lnbmVk
IHZlcnNpb24sIGNvbnN0IEFwcGxlUGF5UmVxdWVzdEJhc2UmIHJlcXVlc3QpCit7CisjaWYgRU5B
QkxFKEFQUExFX1BBWV9JTlNUQUxMTUVOVFMpCisgICAgcmV0dXJuIHZlcnNpb24gPCA4IHx8ICFy
ZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KHZlcnNpb24pOworICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKKyAgICByZXR1cm4gdHJ1ZTsK
KyNlbmRpZgorfQogCiBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPFN0cmluZz4+IGNvbnZlcnRB
bmRWYWxpZGF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIHZlcnNpb24sIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzdXBwb3J0ZWROZXR3b3JrcywgY29uc3QgUGF5bWVudENvb3JkaW5hdG9y
JiBwYXltZW50Q29vcmRpbmF0b3IpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuaAkocmV2aXNpb24gMjYwNzA4
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RCYXNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMCBAQAogI2lmIEVOQUJMRShBUFBMRV9Q
QVkpCiAKICNpbmNsdWRlICJBcHBsZVBheUNvbnRhY3RGaWVsZC5oIgorI2luY2x1ZGUgIkFwcGxl
UGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uV2ViQ29yZS5oIgogI2luY2x1ZGUgIkFwcGxlUGF5
TWVyY2hhbnRDYXBhYmlsaXR5LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50Q29udGFjdC5o
IgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlv
bnMvQXBwbGVQYXlSZXF1ZXN0QmFzZUFkZGl0aW9ucy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC01NCw5ICs1MSw4IEBAIHN0cnVjdCBBcHBs
ZVBheVJlcXVlc3RCYXNlIHsKICAgICBTdHJpbmcgYXBwbGljYXRpb25EYXRhOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHN1cHBvcnRlZENvdW50cmllczsKIAotI2lmIGRlZmluZWQoQVBQTEVQQVlSRVFV
RVNUQkFTRV9BRERJVElPTlMpCi1BUFBMRVBBWVJFUVVFU1RCQVNFX0FERElUSU9OUwotI3VuZGVm
IEFQUExFUEFZUkVRVUVTVEJBU0VfQURESVRJT05TCisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNU
QUxMTUVOVFMpCisgICAgT3B0aW9uYWw8QXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAkocmV2
aXNpb24gMjYwNzA4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNSArNjUsMTcgQEAKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBs
ZVBheVNlc3Npb25BZGRpdGlvbnMuY3BwPgotI2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0
YXRpYyB2b2lkIGZpbmlzaENvbnZlcnRpbmcoUGF5bWVudE1ldGhvZFVwZGF0ZSYsIEFwcGxlUGF5
UGF5bWVudE1ldGhvZFVwZGF0ZSYmKSB7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBheW1lbnRNZXRob2RVcGRhdGUmIGNv
bnZlcnRlZFVwZGF0ZSwgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlJiYgdXBkYXRlKQorewor
I2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorICAgIGNvbnZlcnRlZFVwZGF0ZS5z
ZXRJbnN0YWxsbWVudEdyb3VwSWRlbnRpZmllcih1cGRhdGUuaW5zdGFsbG1lbnRHcm91cElkZW50
aWZpZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udmVydGVkVXBkYXRlKTsKKyAgICBV
TlVTRURfUEFSQU0odXBkYXRlKTsKKyNlbmRpZgorfQogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXBwbGVQYXlTZXNzaW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QuaAkocmV2aXNpb24gMjYwNzA4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
NCArMjgsMTEgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiUGF5bWVudENv
bnRhY3QuaCIKKyNpbmNsdWRlICJQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uV2ViQ29y
ZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCi0jaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0FwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVt
IGNsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOwpAQCAtMTQxLDkgKzEzOCw5IEBAIHB1
YmxpYzoKICAgICBSZXF1ZXN0ZXIgcmVxdWVzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0
ZXI7IH0KICAgICB2b2lkIHNldFJlcXVlc3RlcihSZXF1ZXN0ZXIgcmVxdWVzdGVyKSB7IG1fcmVx
dWVzdGVyID0gcmVxdWVzdGVyOyB9CiAKLSNpZiBkZWZpbmVkKEFQUExFUEFZU0VTU0lPTlBBWU1F
TlRSRVFVRVNUX1BVQkxJQ19BRERJVElPTlMpCi1BUFBMRVBBWVNFU1NJT05QQVlNRU5UUkVRVUVT
VF9QVUJMSUNfQURESVRJT05TCi0jdW5kZWYgQVBQTEVQQVlTRVNTSU9OUEFZTUVOVFJFUVVFU1Rf
UFVCTElDX0FERElUSU9OUworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCisgICAgY29u
c3QgUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiYgaW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YWxsbWVudENvbmZpZ3VyYXRpb247IH0KKyAgICB2
b2lkIHNldEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihQYXltZW50SW5zdGFsbG1lbnRDb25maWd1
cmF0aW9uJiYgaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKSB7IG1faW5zdGFsbG1lbnRDb25maWd1
cmF0aW9uID0gV1RGTW92ZShpbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pOyB9CiAjZW5kaWYKIAog
cHJpdmF0ZToKQEAgLTE3Miw5ICsxNjksOCBAQCBwcml2YXRlOgogCiAgICAgUmVxdWVzdGVyIG1f
cmVxdWVzdGVyIHsgUmVxdWVzdGVyOjpBcHBsZVBheUpTIH07CiAKLSNpZiBkZWZpbmVkKEFQUExF
UEFZU0VTU0lPTlBBWU1FTlRSRVFVRVNUX1BSSVZBVEVfQURESVRJT05TKQotQVBQTEVQQVlTRVNT
SU9OUEFZTUVOVFJFUVVFU1RfUFJJVkFURV9BRERJVElPTlMKLSN1bmRlZiBBUFBMRVBBWVNFU1NJ
T05QQVlNRU5UUkVRVUVTVF9QUklWQVRFX0FERElUSU9OUworI2lmIEhBVkUoUEFTU0tJVF9JTlNU
QUxMTUVOVFMpCisgICAgUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiBtX2luc3RhbGxt
ZW50Q29uZmlndXJhdGlvbjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQXBwbGVQYXlTZXR1cFdlYkNvcmUuaCIKKworI2lmIEVOQUJMRShBUFBM
RV9QQVlfU0VUVVApCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkpTQXBwbGVQ
YXlTZXR1cEZlYXR1cmUuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2lu
Y2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYXltZW50Q29vcmRpbmF0b3IuaCIKKyNpbmNsdWRl
ICJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJQYXltZW50U2Vzc2lvbi5o
IgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgc2hvdWxkRGlzY2xvc2VG
ZWF0dXJlcyhEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgYXV0byogcGFnZSA9IGRvY3VtZW50
LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UgfHwgcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGRvY3VtZW50LnNldHRpbmdzKCku
YXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQoKTsKK30KKwordm9pZCBBcHBsZVBh
eVNldHVwOjpnZXRTZXR1cEZlYXR1cmVzKERvY3VtZW50JiBkb2N1bWVudCwgU2V0dXBGZWF0dXJl
c1Byb21pc2UmJiBwcm9taXNlKQoreworICAgIGF1dG8gY2FuQ2FsbCA9IFBheW1lbnRTZXNzaW9u
OjpjYW5DcmVhdGVTZXNzaW9uKGRvY3VtZW50KTsKKyAgICBpZiAoY2FuQ2FsbC5oYXNFeGNlcHRp
b24oKSkgeworICAgICAgICBwcm9taXNlLnNldHRsZShjYW5DYWxsLnJlbGVhc2VFeGNlcHRpb24o
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC5w
YWdlKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIHByb21pc2Uuc2V0dGxlKEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBSZXNvbHZlIHdpdGggYW4gZW1wdHkgc2VxdWVuY2Ugb2YgZmVhdHVyZXMgaWYgQXBw
bGUgUGF5IGNhcGFiaWxpdHkgZGlzY2xvc3VyZSBpcyBub3QgYWxsb3dlZC4KKyAgICBpZiAoIXNo
b3VsZERpc2Nsb3NlRmVhdHVyZXMoZG9jdW1lbnQpKSB7CisgICAgICAgIHByb21pc2UucmVzb2x2
ZSh7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zZXR1cEZlYXR1cmVzUHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CisKKyAgICBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3Io
KS5jbGllbnQoKS5nZXRTZXR1cEZlYXR1cmVzKG1fY29uZmlndXJhdGlvbiwgZG9jdW1lbnQudXJs
KCksIFt0aGlzLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0o
VmVjdG9yPFJlZjxBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYgc2V0dXBGZWF0dXJlcykgeworICAg
ICAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkKKyAgICAgICAgICAgIHN0ZDo6ZXhjaGFu
Z2UobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSwgV1RGOjpudWxsb3B0KS0+c2V0dGxlKFdURk1vdmUo
c2V0dXBGZWF0dXJlcykpOworICAgIH0pOworfQorCit2b2lkIEFwcGxlUGF5U2V0dXA6OmJlZ2lu
KERvY3VtZW50JiBkb2N1bWVudCwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheVNldHVwRmVhdHVyZT4+
JiYgZmVhdHVyZXMsIEJlZ2luUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgYXV0byBjYW5DYWxs
ID0gUGF5bWVudFNlc3Npb246OmNhbkNyZWF0ZVNlc3Npb24oZG9jdW1lbnQpOworICAgIGlmIChj
YW5DYWxsLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2Uuc2V0dGxlKGNhbkNhbGwu
cmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgh
VXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CisgICAgICAg
IHByb21pc2Uuc2V0dGxlKEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwgIk11c3QgY2Fs
bCBBcHBsZVBheVNldHVwLmJlZ2luIGZyb20gYSB1c2VyIGdlc3R1cmUgaGFuZGxlci4iIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBwYWdlID0gZG9jdW1lbnQucGFnZSgp
OworICAgIGlmICghcGFnZSkgeworICAgICAgICBwcm9taXNlLnNldHRsZShFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICht
X2JlZ2luUHJvbWlzZSkgeworICAgICAgICBwcm9taXNlLnNldHRsZShFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fYmVnaW5Q
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG1ha2VQ
ZW5kaW5nQWN0aXZpdHkoKnRoaXMpOworCisgICAgcGFnZS0+cGF5bWVudENvb3JkaW5hdG9yKCku
Y2xpZW50KCkuYmVnaW5BcHBsZVBheVNldHVwKG1fY29uZmlndXJhdGlvbiwgZG9jdW1lbnQudXJs
KCksIFdURk1vdmUoZmVhdHVyZXMpLCBbdGhpc10oYm9vbCByZXN1bHQpIHsKKyAgICAgICAgaWYg
KG1fYmVnaW5Qcm9taXNlKQorICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX2JlZ2luUHJvbWlz
ZSwgV1RGOjpudWxsb3B0KS0+c2V0dGxlKHJlc3VsdCk7CisgICAgfSk7Cit9CisKK0FwcGxlUGF5
U2V0dXA6OkFwcGxlUGF5U2V0dXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgQ29u
ZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRl
eHQpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKKyAg
ICBzdXNwZW5kSWZOZWVkZWQoKTsKK30KKwordm9pZCBBcHBsZVBheVNldHVwOjpzdG9wKCkKK3sK
KyAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkKKyAgICAgICAgc3RkOjpleGNoYW5nZSht
X3NldHVwRmVhdHVyZXNQcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUoRXhjZXB0aW9uIHsg
QWJvcnRFcnJvciB9KTsKKworICAgIGlmIChtX2JlZ2luUHJvbWlzZSkKKyAgICAgICAgc3RkOjpl
eGNoYW5nZShtX2JlZ2luUHJvbWlzZSwgV1RGOjpudWxsb3B0KS0+c2V0dGxlKEV4Y2VwdGlvbiB7
IEFib3J0RXJyb3IgfSk7CisKKyAgICBpZiAoYXV0byBwYWdlID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+cGF5bWVu
dENvb3JkaW5hdG9yKCkuY2xpZW50KCkuZW5kQXBwbGVQYXlTZXR1cCgpOworCisgICAgbV9wZW5k
aW5nQWN0aXZpdHkgPSBudWxscHRyOworfQorCit2b2lkIEFwcGxlUGF5U2V0dXA6OnN1c3BlbmQo
UmVhc29uRm9yU3VzcGVuc2lvbikKK3sKKyAgICBzdG9wKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5pZGwJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNl
dHVwLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWwor
ICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKK10gZGljdGlvbmFyeSBBcHBsZVBheVNl
dHVwQ29uZmlndXJhdGlvbiB7CisgICAgRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcjsKKyAg
ICBET01TdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAgIERPTVN0cmluZyBzaWduYXR1cmU7
CisgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBzaWduZWRGaWVsZHM7Cit9OworCitbCisgICAgQWN0
aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKKyAgICBDb25z
dHJ1Y3RvcihBcHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSwKKyAgICBD
b25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgRW5hYmxlZEJ5
U2V0dGluZz1BcHBsZVBheSwKKyAgICBTZWN1cmVDb250ZXh0LAorXSBpbnRlcmZhY2UgQXBwbGVQ
YXlTZXR1cCB7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNlPHNlcXVlbmNlPEFwcGxl
UGF5U2V0dXBGZWF0dXJlPj4gZ2V0U2V0dXBGZWF0dXJlcygpOworICAgIFtDYWxsV2l0aD1Eb2N1
bWVudF0gUHJvbWlzZTxib29sZWFuPiBiZWdpbihzZXF1ZW5jZTxBcHBsZVBheVNldHVwRmVhdHVy
ZT4gc2V0dXBGZWF0dXJlcyk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZS5pZGwJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVy
ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVw
RmVhdHVyZVN0YXRlIHsKKyAgICAidW5zdXBwb3J0ZWQiLAorICAgICJzdXBwb3J0ZWQiLAorICAg
ICJzdXBwbGVtZW50YXJ5U3VwcG9ydGVkIiwKKyAgICAiY29tcGxldGVkIgorfTsKKworWworICAg
IENvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVRVUCwKKyAgICBFbmFibGVkQnlTZXR0aW5nPUFwcGxl
UGF5LAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCisgICAgU2VjdXJlQ29udGV4dCwK
K10gaW50ZXJmYWNlIEFwcGxlUGF5U2V0dXBGZWF0dXJlIHsKKyAgICBbQ2FjaGVkQXR0cmlidXRl
XSByZWFkb25seSBhdHRyaWJ1dGUgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlIHR5cGU7CisgICAg
W0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5U2V0dXBGZWF0dXJl
U3RhdGUgc3RhdGU7CisgICAgW0NhY2hlZEF0dHJpYnV0ZSwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZ
X0lOU1RBTExNRU5UU10gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNJbnN0YWxs
bWVudHM7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNldHVwRmVhdHVyZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmUubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJBcHBsZVBheVNldHVwRmVhdHVyZVdlYkNvcmUuaCIKKworI2lmIEVOQUJM
RShBUFBMRV9QQVlfU0VUVVApCisKKyNpbXBvcnQgIkFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZVdl
YkNvcmUuaCIKKyNpbXBvcnQgIlBhc3NLaXRTUElBZGRpdGlvbnMuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgQXBwbGVQYXlTZXR1cEZlYXR1cmU6
OnR5cGUoKSBjb25zdAoreworICAgIHN3aXRjaCAoW21fZmVhdHVyZSB0eXBlXSkgeworICAgIGNh
c2UgUEtQYXltZW50U2V0dXBGZWF0dXJlVHlwZUFwcGxlUGF5OgorICAgICAgICByZXR1cm4gQXBw
bGVQYXlTZXR1cEZlYXR1cmVUeXBlOjpBcHBsZVBheTsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVR5cGVB
cHBsZVBheV9YOgorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAg
ICAgICAgcmV0dXJuIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZTo6QXBwbGVDYXJkOworICAgIH0K
K30KKworQXBwbGVQYXlTZXR1cEZlYXR1cmU6OlN0YXRlIEFwcGxlUGF5U2V0dXBGZWF0dXJlOjpz
dGF0ZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChbbV9mZWF0dXJlIHN0YXRlXSkgeworICAgIGNh
c2UgUEtQYXltZW50U2V0dXBGZWF0dXJlU3RhdGVVbnN1cHBvcnRlZDoKKyAgICAgICAgcmV0dXJu
IFN0YXRlOjpVbnN1cHBvcnRlZDsKKyAgICBjYXNlIFBLUGF5bWVudFNldHVwRmVhdHVyZVN0YXRl
U3VwcG9ydGVkOgorICAgICAgICByZXR1cm4gU3RhdGU6OlN1cHBvcnRlZDsKKyAgICBjYXNlIFBL
UGF5bWVudFNldHVwRmVhdHVyZVN0YXRlU3VwcGxlbWVudGFyeVN1cHBvcnRlZDoKKyAgICAgICAg
cmV0dXJuIFN0YXRlOjpTdXBwbGVtZW50YXJ5U3VwcG9ydGVkOworICAgIGNhc2UgUEtQYXltZW50
U2V0dXBGZWF0dXJlU3RhdGVDb21wbGV0ZWQ6CisgICAgICAgIHJldHVybiBTdGF0ZTo6Q29tcGxl
dGVkOworICAgIH0KK30KKworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQorYm9v
bCBBcHBsZVBheVNldHVwRmVhdHVyZTo6c3VwcG9ydHNJbnN0YWxsbWVudHMoKSBjb25zdAorewor
ICAgIHJldHVybiBbbV9mZWF0dXJlIHN1cHBvcnRlZE9wdGlvbnNdICYgUEtQYXltZW50U2V0dXBG
ZWF0dXJlU3VwcG9ydGVkT3B0aW9uc0luc3RhbGxtZW50czsKK30KKyNlbmRpZgorCitBcHBsZVBh
eVNldHVwRmVhdHVyZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmUoUEtQYXltZW50U2V0dXBGZWF0dXJl
ICpmZWF0dXJlKQorICAgIDogbV9mZWF0dXJlIHsgZmVhdHVyZSB9Cit7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlw
ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNldHVwRmVhdHVyZVR5cGUuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPUFQ
UExFX1BBWV9TRVRVUCwKK10gZW51bSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUgeworICAgICJh
cHBsZVBheSIsCisgICAgImFwcGxlQ2FyZCIKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZVdlYkNvcmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJl
VHlwZVdlYkNvcmUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZVdlYkNvcmUuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
QVBQTEVfUEFZX1NFVFVQKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgQXBw
bGVQYXlTZXR1cEZlYXR1cmVUeXBlIDogdWludDhfdCB7CisgICAgQXBwbGVQYXksCisgICAgQXBw
bGVDYXJkLAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEFQUExFX1BBWV9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTZXR1cEZlYXR1cmVXZWJDb3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwRmVhdHVyZVdlYkNvcmUuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBG
ZWF0dXJlV2ViQ29yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKwor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
CitPQkpDX0NMQVNTIFBLUGF5bWVudFNldHVwRmVhdHVyZTsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitlbnVtIGNsYXNzIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZSA6IHVpbnQ4X3Q7CisKK2Ns
YXNzIEFwcGxlUGF5U2V0dXBGZWF0dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGVQYXlTZXR1
cEZlYXR1cmU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFwcGxlUGF5U2V0dXBGZWF0dXJl
PiBjcmVhdGUoUEtQYXltZW50U2V0dXBGZWF0dXJlICpmZWF0dXJlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXBwbGVQYXlTZXR1cEZlYXR1cmUoZmVhdHVyZSkpOworICAg
IH0KKworICAgIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZSB0eXBlKCkgY29uc3Q7CisKKyAgICBl
bnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIFVuc3VwcG9ydGVkLAorICAgICAg
ICBTdXBwb3J0ZWQsCisgICAgICAgIFN1cHBsZW1lbnRhcnlTdXBwb3J0ZWQsCisgICAgICAgIENv
bXBsZXRlZCwKKyAgICB9OworICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7CisKKyAgICBQS1BheW1l
bnRTZXR1cEZlYXR1cmUgKnBsYXRmb3JtRmVhdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVy
ZS5nZXQoKTsgfQorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNUQUxMTUVOVFMpCisgICAgYm9v
bCBzdXBwb3J0c0luc3RhbGxtZW50cygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQXBwbGVQYXlTZXR1cEZlYXR1cmUoUEtQYXltZW50U2V0
dXBGZWF0dXJlICopOworCisgICAgUmV0YWluUHRyPFBLUGF5bWVudFNldHVwRmVhdHVyZT4gbV9m
ZWF0dXJlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEFQUExFX1BBWV9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTZXR1cFdlYkNvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBXZWJDb3JlLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwV2ViQ29yZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2ZURP
TU9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01Qcm9taXNlRGVmZXJyZWQuaD4KKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFwcGxlUGF5U2V0dXBGZWF0dXJlOworY2xhc3MgRGVm
ZXJyZWRQcm9taXNlOworY2xhc3MgRG9jdW1lbnQ7CisKK2NsYXNzIEFwcGxlUGF5U2V0dXAgOiBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheVNldHVwPiB7
CitwdWJsaWM6CisgICAgc3RydWN0IENvbmZpZ3VyYXRpb24geworICAgICAgICBTdHJpbmcgbWVy
Y2hhbnRJZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgcmVmZXJyZXJJZGVudGlmaWVyOworICAg
ICAgICBTdHJpbmcgc2lnbmF0dXJlOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBzaWduZWRGaWVs
ZHM7CisgICAgfTsKKworICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlTZXR1cD4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIENvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9u
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXBwbGVQYXlTZXR1cChjb250
ZXh0LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CisgICAgfQorCisgICAgdXNpbmcgU2V0dXBG
ZWF0dXJlc1Byb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJm
YWNlPEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4+OworICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhE
b2N1bWVudCYsIFNldHVwRmVhdHVyZXNQcm9taXNlJiYpOworCisgICAgdXNpbmcgQmVnaW5Qcm9t
aXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+OworICAgIHZvaWQgYmVnaW4oRG9j
dW1lbnQmLCBWZWN0b3I8UmVmUHRyPEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiwgQmVnaW5Qcm9t
aXNlJiYpOworCitwcml2YXRlOgorICAgIEFwcGxlUGF5U2V0dXAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIENvbmZpZ3VyYXRpb24mJik7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBj
b25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkFw
cGxlUGF5U2V0dXAiOyB9CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisgICAgdm9pZCBzdXNwZW5k
KFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOworCisgICAgQ29uZmlndXJhdGlvbiBtX2NvbmZp
Z3VyYXRpb247CisgICAgT3B0aW9uYWw8U2V0dXBGZWF0dXJlc1Byb21pc2U+IG1fc2V0dXBGZWF0
dXJlc1Byb21pc2U7CisgICAgT3B0aW9uYWw8QmVnaW5Qcm9taXNlPiBtX2JlZ2luUHJvbWlzZTsK
KyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PEFwcGxlUGF5U2V0dXA+PiBtX3BlbmRpbmdBY3Rp
dml0eTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShB
UFBMRV9QQVlfU0VUVVApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRDb29yZGluYXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgJKHJldmlzaW9uIDI2MDcw
OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAogI2lmIEVOQUJMRShB
UFBMRV9QQVkpCiAKICNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oIgor
I2luY2x1ZGUgIkFwcGxlUGF5U2V0dXBGZWF0dXJlV2ViQ29yZS5oIgorI2luY2x1ZGUgIkFwcGxl
UGF5U2V0dXBXZWJDb3JlLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAotI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVu
dENvb3JkaW5hdG9yQ2xpZW50QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBEb2N1bWVudDsKQEAgLTcxLDEzICs3MCwxNCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAorI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCisgICAgdmlydHVhbCB2b2lk
IGdldFNldHVwRmVhdHVyZXMoY29uc3QgQXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYsIGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZjxBcHBsZVBheVNldHVw
RmVhdHVyZT4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IEFwcGxlUGF5
U2V0dXA6OkNvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwmLCBWZWN0b3I8UmVmUHRyPEFwcGxlUGF5
U2V0dXBGZWF0dXJlPj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZW5kQXBwbGVQYXlTZXR1cCgpIHsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIH5QYXltZW50Q29vcmRpbmF0b3JDbGllbnQoKSA9IGRlZmF1bHQ7Ci0KLSNpZiBkZWZpbmVk
KFBBWU1FTlRDT09SRElOQVRPUkNMSUVOVF9BRERJVElPTlMpCi1QQVlNRU5UQ09PUkRJTkFUT1JD
TElFTlRfQURESVRJT05TCi0jdW5kZWYgUEFZTUVOVENPT1JESU5BVE9SQ0xJRU5UX0FERElUSU9O
UwotI2VuZGlmCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
Lm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uV2ViQ29yZS5oIgorCisjaWYgSEFWRShQQVNTS0lUX0lO
U1RBTExNRU5UUykKKworI2ltcG9ydCAiQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb25X
ZWJDb3JlLmgiCisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworLy8gRklYTUU6IE1lcmdlIHdpdGggdG9EZWNpbWFsTnVtYmVyKCkg
aW4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS4KK3N0YXRpYyBOU0RlY2ltYWxOdW1i
ZXIgKnRvRGVjaW1hbE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCkKK3sKKyAgICBpZiAoIWFt
b3VudCkKKyAgICAgICAgcmV0dXJuIFtOU0RlY2ltYWxOdW1iZXIgemVyb107CisgICAgcmV0dXJu
IFtOU0RlY2ltYWxOdW1iZXIgZGVjaW1hbE51bWJlcldpdGhTdHJpbmc6YW1vdW50IGxvY2FsZTpA
eyBOU0xvY2FsZURlY2ltYWxTZXBhcmF0b3IgOiBAIi4iIH1dOworfQorCitzdGF0aWMgUEtQYXlt
ZW50U2V0dXBGZWF0dXJlVHlwZSBwbGF0Zm9ybUZlYXR1cmVUeXBlKGNvbnN0IEFwcGxlUGF5U2V0
dXBGZWF0dXJlVHlwZSYgZmVhdHVyZVR5cGUpCit7CisgICAgc3dpdGNoIChmZWF0dXJlVHlwZSkg
eworICAgIGNhc2UgQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlOjpBcHBsZVBheToKKyAgICAgICAg
cmV0dXJuIFBLUGF5bWVudFNldHVwRmVhdHVyZVR5cGVBcHBsZVBheTsKKyAgICBjYXNlIEFwcGxl
UGF5U2V0dXBGZWF0dXJlVHlwZTo6QXBwbGVDYXJkOgorICAgICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICByZXR1cm4gUEtQYXltZW50U2V0dXBGZWF0dXJl
VHlwZUFwcGxlUGF5X1g7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAorICAgIH0KK30KKworc3RhdGljIFJldGFpblB0cjxQS1BheW1lbnRJbnN0YWxsbWVudENvbmZp
Z3VyYXRpb24+IGNyZWF0ZVBsYXRmb3JtQ29uZmlndXJhdGlvbihjb25zdCBBcHBsZVBheUluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbiYgY29yZUNvbmZpZ3VyYXRpb24pCit7CisgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbkluc3RhbmNlKCkgaW5pdF0pOworCisgICAgW2NvbmZpZ3VyYXRpb24gc2V0RmVhdHVy
ZTpwbGF0Zm9ybUZlYXR1cmVUeXBlKGNvcmVDb25maWd1cmF0aW9uLmZlYXR1cmVUeXBlKV07CisK
KyAgICBbY29uZmlndXJhdGlvbiBzZXRCaW5kaW5nVG90YWxBbW91bnQ6dG9EZWNpbWFsTnVtYmVy
KGNvcmVDb25maWd1cmF0aW9uLmJpbmRpbmdUb3RhbEFtb3VudCldOworICAgIFtjb25maWd1cmF0
aW9uIHNldEN1cnJlbmN5Q29kZTpjb3JlQ29uZmlndXJhdGlvbi5jdXJyZW5jeUNvZGVdOworICAg
IFtjb25maWd1cmF0aW9uIHNldEluU3RvcmVQdXJjaGFzZTpjb3JlQ29uZmlndXJhdGlvbi5pc0lu
U3RvcmVQdXJjaGFzZV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0T3BlblRvQnV5VGhyZXNob2xk
QW1vdW50OnRvRGVjaW1hbE51bWJlcihjb3JlQ29uZmlndXJhdGlvbi5vcGVuVG9CdXlUaHJlc2hv
bGRBbW91bnQpXTsKKworICAgIGF1dG8gbWVyY2hhbmRpc2luZ0ltYWdlRGF0YSA9IGFkb3B0TlMo
W1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzpjb3JlQ29uZmlndXJh
dGlvbi5tZXJjaGFuZGlzaW5nSW1hZ2VEYXRhIG9wdGlvbnM6MF0pOworICAgIFtjb25maWd1cmF0
aW9uIHNldE1lcmNoYW5kaXNpbmdJbWFnZURhdGE6bWVyY2hhbmRpc2luZ0ltYWdlRGF0YS5nZXQo
KV07CisKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRfSURFTlRJRklFUlMpCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIGlmICghW2NvbmZpZ3VyYXRpb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihzZXRJbnN0YWxsbWVudE1lcmNoYW50SWRlbnRpZmllcjopXSB8fCAhW2NvbmZpZ3Vy
YXRpb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRSZWZlcnJlcklkZW50aWZpZXI6
KV0pCisgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uOworI2VuZGlmCisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0SW5zdGFsbG1lbnRNZXJjaGFudElkZW50aWZpZXI6Y29yZUNvbmZpZ3VyYXRpb24u
bWVyY2hhbnRJZGVudGlmaWVyXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRSZWZlcnJlcklkZW50
aWZpZXI6Y29yZUNvbmZpZ3VyYXRpb24ucmVmZXJyZXJJZGVudGlmaWVyXTsKKyNlbmRpZgorCisg
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Cit9CisKK1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3Vy
YXRpb246OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24oY29uc3QgQXBwbGVQYXlJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2NvbmZpZ3VyYXRp
b24geyBjcmVhdGVQbGF0Zm9ybUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikgfQoreworfQor
CitQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOjpQYXltZW50SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uKFJldGFpblB0cjxQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+JiYg
Y29uZmlndXJhdGlvbikKKyAgICA6IG1fY29uZmlndXJhdGlvbiB7IFdURk1vdmUoY29uZmlndXJh
dGlvbikgfQoreworfQorCitQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKlBheW1l
bnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb246OnBsYXRmb3JtQ29uZmlndXJhdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbldlYkNvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb25XZWJDb3JlLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1l
bnRDb25maWd1cmF0aW9uV2ViQ29yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVO
VFMpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgUEtQYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVj
dCBBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKKworY2xhc3MgV0VCQ09SRV9FWFBP
UlQgUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiB7CitwdWJsaWM6CisgICAgUGF5bWVu
dEluc3RhbGxtZW50Q29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsKKyAgICBQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uKGNvbnN0IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
Jik7CisgICAgUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbihSZXRhaW5QdHI8UEtQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiYmKTsKKworICAgIFBLUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbiAqcGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmV0YWluUHRyPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gbV9j
b25maWd1cmF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
SEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5oCShyZXZpc2lvbiAyNjA3
MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXRob2RVcGRh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlICJBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAot
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1Bh
eW1lbnRNZXRob2RVcGRhdGVBZGRpdGlvbnMuaD4KLSNlbmRpZgotCiBPQkpDX0NMQVNTIFBLUGF5
bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01MCwxMSArNDYsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFRvdGFsQW5kTGluZUl0ZW1zJiB0
b3RhbEFuZExpbmVJdGVtcygpIGNvbnN0OwogICAgIFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0
aG9kVXBkYXRlICpwbGF0Zm9ybVVwZGF0ZSgpIGNvbnN0OwogCi0jaWYgZGVmaW5lZChQQVlNRU5U
TUVUSE9EVVBEQVRFX1BVQkxJQ19BRERJVElPTlMpCi1QQVlNRU5UTUVUSE9EVVBEQVRFX1BVQkxJ
Q19BRERJVElPTlMKLSN1bmRlZiBQQVlNRU5UTUVUSE9EVVBEQVRFX1BVQkxJQ19BRERJVElPTlMK
KyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorICAgIHZvaWQgc2V0SW5zdGFsbG1lbnRH
cm91cElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKLSAgICAKKwogcHJpdmF0ZToK
ICAgICBPcHRpb25hbDxUb3RhbEFuZExpbmVJdGVtcz4gbV90b3RhbEFuZExpbmVJdGVtczsKICAg
ICBSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGU+IG1fcGxhdGZv
cm1VcGRhdGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRDb2NvYS5tbQkocmV2aXNpb24gMjYwNzA4KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDE1ICszMywxOCBAQAogI2ltcG9ydCAiUGF5bWVudE1ldGhvZC5oIgogI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BheW1lbnRDb2NvYUFkZGl0aW9ucy5tbT4K
LSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5n
KFBLUGF5bWVudCAqLCBBcHBsZVBheVBheW1lbnQmKSB7IH0KLX0KLSNlbmRpZgogCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7CitzdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBLUGF5bWVudCAqcGF5
bWVudCwgQXBwbGVQYXlQYXltZW50JiByZXN1bHQpCit7CisjaWYgSEFWRShQQVNTS0lUX0lOU1RB
TExNRU5UUykKKyAgICBpZiAoTlNTdHJpbmcgKmluc3RhbGxtZW50QXV0aG9yaXphdGlvblRva2Vu
ID0gcGF5bWVudC5pbnN0YWxsbWVudEF1dGhvcml6YXRpb25Ub2tlbikKKyAgICAgICAgcmVzdWx0
Lmluc3RhbGxtZW50QXV0aG9yaXphdGlvblRva2VuID0gaW5zdGFsbG1lbnRBdXRob3JpemF0aW9u
VG9rZW47CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwYXltZW50KTsKKyAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKKyNlbmRpZgorfQogCiBzdGF0aWMgQXBwbGVQYXlQYXltZW50OjpUb2tlbiBj
b252ZXJ0KFBLUGF5bWVudFRva2VuICpwYXltZW50VG9rZW4pCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRo
b2RDb2NvYS5tbQkocmV2aXNpb24gMjYwNzA4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMy
LDE1ICszMiwxOCBAQAogI2ltcG9ydCAiQXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZS5oIgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BheW1lbnRNZXRob2RDb2NvYUFkZGl0
aW9ucy5tbT4KLSNlbHNlCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgdm9pZCBmaW5pc2hD
b252ZXJ0aW5nKFBLUGF5bWVudE1ldGhvZCAqLCBBcHBsZVBheVBheW1lbnRNZXRob2QmKSB7IH0K
LX0KLSNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CitzdGF0aWMgdm9pZCBmaW5pc2hDb252
ZXJ0aW5nKFBLUGF5bWVudE1ldGhvZCAqcGF5bWVudE1ldGhvZCwgQXBwbGVQYXlQYXltZW50TWV0
aG9kJiByZXN1bHQpCit7CisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICBpZiAo
TlNTdHJpbmcgKmJpbmRUb2tlbiA9IHBheW1lbnRNZXRob2QuYmluZFRva2VuKQorICAgICAgICBy
ZXN1bHQuYmluZFRva2VuID0gYmluZFRva2VuOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGF5
bWVudE1ldGhvZCk7CisgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7CisjZW5kaWYKK30KIAogc3Rh
dGljIEFwcGxlUGF5UGF5bWVudFBhc3M6OkFjdGl2YXRpb25TdGF0ZSBjb252ZXJ0KFBLUGF5bWVu
dFBhc3NBY3RpdmF0aW9uU3RhdGUgcGF5bWVudFBhc3NBY3RpdmF0aW9uU3RhdGUpCiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RVcGRh
dGVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L2NvY29hL1BheW1lbnRNZXRob2RVcGRhdGVDb2NvYS5tbQkocmV2aXNpb24gMjYwNzA4KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRl
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDEzIEBAIFBLUGF5bWVudFJlcXVl
c3RQYXltZW50TWV0aG9kVXBkYXRlICpQYXkKICAgICByZXR1cm4gbV9wbGF0Zm9ybVVwZGF0ZS5n
ZXQoKTsKIH0KIAorI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCit2b2lkIFBheW1lbnRN
ZXRob2RVcGRhdGU6OnNldEluc3RhbGxtZW50R3JvdXBJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
aW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXIpCit7CisgICAgW21fcGxhdGZvcm1VcGRhdGUgc2V0
SW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXI6aW5zdGFsbG1lbnRHcm91cElkZW50aWZpZXJdOwor
fQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShB
UFBMRV9QQVkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQkocmV2aXNp
b24gMjYwNzA4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXlt
ZW50U2Vzc2lvbkVycm9yQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDE1ICszMSwyNyBA
QAogI2ltcG9ydCAiQXBwbGVQYXlTZXNzaW9uRXJyb3IuaCIKICNpbXBvcnQgPHBhbC9jb2NvYS9Q
YXNzS2l0U29mdExpbmsuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0
IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudFNlc3Npb25FcnJvckNvY29hQWRkaXRpb25zLm1tPgot
I2Vsc2UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyBPcHRpb25hbDxBcHBsZVBheVNlc3Np
b25FcnJvcj4gYWRkaXRpb25hbEVycm9yKE5TRXJyb3IgKikgeyByZXR1cm4gV1RGOjpudWxsb3B0
OyB9Ci19Ci0jZW5kaWYKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIE9wdGlvbmFsPEFw
cGxlUGF5U2Vzc2lvbkVycm9yPiBhZGRpdGlvbmFsRXJyb3IoTlNFcnJvciAqZXJyb3IpCit7Cisj
aWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRo
IFBLUGF5bWVudEVycm9yQmluZFRva2VuVXNlckluZm9LZXkgYW5kCisgICAgLy8gUEtQYXltZW50
QXV0aG9yaXphdGlvbkZlYXR1cmVBcHBsaWNhdGlvbkVycm9yIHdoZW4gdGhleSdyZSBhdmFpbGFi
bGUgaW4gYW4gU0RLLgorICAgIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGJpbmRUb2tlbktleSA9
IEAiUEtQYXltZW50RXJyb3JCaW5kVG9rZW4iOworICAgIHN0YXRpYyBjb25zdGV4cHIgTlNJbnRl
Z2VyIHBrUGF5bWVudEF1dGhvcml6YXRpb25GZWF0dXJlQXBwbGljYXRpb25FcnJvciA9IC0yMDE2
OworCisgICAgaWYgKGVycm9yLmNvZGUgIT0gcGtQYXltZW50QXV0aG9yaXphdGlvbkZlYXR1cmVB
cHBsaWNhdGlvbkVycm9yKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWQg
YmluZFRva2VuVmFsdWUgPSBlcnJvci51c2VySW5mb1tiaW5kVG9rZW5LZXldOworICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWJpbmRUb2tlblZhbHVlIHx8IFti
aW5kVG9rZW5WYWx1ZSBpc0tpbmRPZkNsYXNzOk5TU3RyaW5nLmNsYXNzXSk7CisgICAgcmV0dXJu
IEFwcGxlUGF5U2Vzc2lvbkVycm9yIHsgImZlYXR1cmVBcHBsaWNhdGlvbkVycm9yIl9zLCB7IHsg
ImJpbmRUb2tlbiJfcywgKE5TU3RyaW5nICopYmluZFRva2VuVmFsdWUgfSB9IH07CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRp
ZgorfQogCiBQYXltZW50U2Vzc2lvbkVycm9yOjpQYXltZW50U2Vzc2lvbkVycm9yKFJldGFpblB0
cjxOU0Vycm9yPiYmIGVycm9yKQogICAgIDogbV9wbGF0Zm9ybUVycm9yIHsgV1RGTW92ZShlcnJv
cikgfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVz
dC9BcHBsZVBheVJlcXVlc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlSZXF1ZXN0LmlkbAkocmV2aXNpb24g
MjYwNzA4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVz
dC9BcHBsZVBheVJlcXVlc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw0ICsyOCw1IEBACiBd
IGRpY3Rpb25hcnkgQXBwbGVQYXlSZXF1ZXN0IDogQXBwbGVQYXlSZXF1ZXN0QmFzZSB7CiAgICAg
cmVxdWlyZWQgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOwogICAgIHJlcXVpcmVkIERPTVN0cmluZyBt
ZXJjaGFudElkZW50aWZpZXI7CisgICAgW0NvbmRpdGlvbmFsPUFQUExFX1BBWV9JTlNUQUxMTUVO
VFNdIEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIGluc3RhbGxtZW50Q29uZmlndXJh
dGlvbjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMjYw
NzA4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDExICs0MCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IFNlY29uZHMgdGFza0RlbGF5SW50ZXJ2YWwgeyAx
MDBfbXMgfTsKIAotI3VuZGVmIExPR0lERU5USUZJRVIKLSNkZWZpbmUgTE9HSURFTlRJRklFUiBf
X2Z1bmNfXwotCi0jdW5kZWYgQUxXQVlTX0xPRwotI2RlZmluZSBBTFdBWVNfTE9HIGxvZ2dlcigp
LmxvZ0Fsd2F5cworI2RlZmluZSBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIgbG9nZ2Vy
KCkubG9nQWx3YXlzCiAKIHN0cnVjdCBDbGllbnRTdGF0ZSB7CiAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYxLDE5ICsxNTcsMTkgQEAgdm9pZCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzZXRNb2NrTWVkaQogICAgIGlmIChtX21vY2tQaWNrZXJFbmFibGVkID09IGVu
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7
CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKICAgICBtX21v
Y2tQaWNrZXJFbmFibGVkID0gZW5hYmxlZDsKIH0KIAogdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYg
bmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQogewotICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5B
R0VSKF9fZnVuY19fKTsKICAgICBtb2NrUGlja2VyKCkuc2V0U3RhdGUobmFtZSwgc3RhdGUpOwog
fQogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyRGlzbWlzc1BvcHVwKCkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwor
ICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbW9ja1Bp
Y2tlcigpLmRpc21pc3NQb3B1cCgpOwogfQogCkBAIC0yMDgsNyArMjA0LDcgQEAgdWludDY0X3Qg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxheQogICAgIGlmIChpbmRleCAhPSBub3RGb3Vu
ZCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGNv
bnRleHRJZCk7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBj
b250ZXh0SWQpOwogICAgIG1fY2xpZW50U3RhdGUuYXBwZW5kKG1ha2VVbmlxdWU8Q2xpZW50U3Rh
dGU+KGNsaWVudCwgY29udGV4dElkKSk7CiAKICAgICBpZiAobV9leHRlcm5hbE91dHB1dERldmlj
ZUF2YWlsYWJsZSB8fCBtX3BsYXliYWNrVGFyZ2V0KQpAQCAtMjI0LDcgKzIyMCw3IEBAIHZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlUGxheWIKICAgICBpZiAoaW5kZXggPT0gbm90
Rm91bmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
bV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCkpOworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCkpOwogCiAgICAgbV9j
bGllbnRTdGF0ZS5yZW1vdmUoaW5kZXgpOwogICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0
TW9uaXRvcmluZ0NvbmZpZ3VyYXRpb25UYXNrIHwgVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25U
YXNrKTsKQEAgLTIzNyw3ICsyMzMsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJl
bW92ZUFsbFBsCiAKICAgICBmb3IgKHNpemVfdCBpID0gbV9jbGllbnRTdGF0ZS5zaXplKCk7IGkg
PiAwOyAtLWkpIHsKICAgICAgICAgaWYgKCZtX2NsaWVudFN0YXRlW2kgLSAxXS0+Y2xpZW50ID09
ICZjbGllbnQpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbV9jbGll
bnRTdGF0ZVtpIC0gMV0uZ2V0KCkpOworICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJ
T05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2kgLSAxXS5nZXQoKSk7CiAgICAgICAg
ICAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpIC0gMSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0y
NTcsNyArMjUzLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaG93UGxheWJhYwog
ICAgICAgICBzdGF0ZS0+cHJldmlvdXNseVJlcXVlc3RlZFBpY2tlciA9IHN0YXRlID09IGNsaWVu
dFJlcXVlc3RpbmdQaWNrZXI7CiAgICAgfQogCi0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJ
T05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CiAKICAgICBi
b29sIGhhc0FjdGl2ZVJvdXRlID0gZmxhZ3NBcmVTZXQobV9jbGllbnRTdGF0ZVtpbmRleF0tPmZs
YWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKTsKICAgICB0YXJn
ZXRQaWNrZXIoKS5zaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoRmxvYXRSZWN0KHJlY3QpLCBoYXNB
Y3RpdmVSb3V0ZSwgdXNlRGFya0FwcGVhcmFuY2UpOwpAQCAtMjc1LDcgKzI3MSw3IEBAIHZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y2xpZW50U3RhdGUKICAgICBpZiAobmV3RmxhZ3MgPT0g
b2xkRmxhZ3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
UiwgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCksICJuZXcgZmxhZ3MgPSAiLCBuZXdGbGFncyk7
CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0
YXRlW2luZGV4XS5nZXQoKSwgIm5ldyBmbGFncyA9ICIsIG5ld0ZsYWdzKTsKIAogICAgIGNoYW5n
ZWRDbGllbnRTdGF0ZS0+ZmxhZ3MgPSBuZXdGbGFnczsKIApAQCAtMjk5LDI1ICsyOTUsMjUgQEAg
dm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjbGllbnRTdGF0ZQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9k
dWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVTZXQoc3RhdGUtPmZs
YWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpIHsKLSAgICAgICAgICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7Cisg
ICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRl
LmdldCgpLCAiIHJldHVybmluZyBlYXJseSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQogCiAgICAgLy8gRG8gbm90IGJlZ2luIHBsYXlpbmcgdG8gdGhlIGRldmljZSB1
bmxlc3MgcGxheWJhY2sgaGFzIGp1c3Qgc3RhcnRlZC4KICAgICBpZiAoIWZsYWdzQXJlU2V0KG5l
d0ZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgfHwgZmxhZ3NBcmVTZXQob2xk
RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgewotICAgICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgZWFybHksIHBsYXliYWNrIGRpZG4ndCBqdXN0
IHN0YXJ0Iik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
XywgInJldHVybmluZyBlYXJseSwgcGxheWJhY2sgZGlkbid0IGp1c3Qgc3RhcnQiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRl
KSB7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBjaGFuZ2VkQ2xpZW50U3RhdGUpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQo
KSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOworICAg
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgp
LCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoZmFsc2UpIik7CiAgICAg
ICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUtPmNv
bnRleHRJZCwgZmFsc2UpOwogICAgIH0KIAotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
Y2hhbmdlZENsaWVudFN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJh
Y2tUYXJnZXQodHJ1ZSkiKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19m
dW5jX18sIGNoYW5nZWRDbGllbnRTdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlU
b1BsYXliYWNrVGFyZ2V0KHRydWUpIik7CiAgICAgY2hhbmdlZENsaWVudFN0YXRlLT5jbGllbnQu
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoY2hhbmdlZENsaWVudFN0YXRlLT5jb250ZXh0
SWQsIHRydWUpOwogCiAgICAgaWYgKGluZGV4ICYmIG1fY2xpZW50U3RhdGUuc2l6ZSgpID4gMSkK
QEAgLTMyNiw3ICszMjIsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0
YXRlCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0UGxheWJhY2tUYXJnZXQoUmVm
PE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQogewotICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgImhhcyBhY3RpdmUgcm91dGUgPSAiLCB0YXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkp
OworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgImhhcyBhY3Rp
dmUgcm91dGUgPSAiLCB0YXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkpOwogICAgIG1fcGxheWJhY2tU
YXJnZXQgPSBXVEZNb3ZlKHRhcmdldCk7CiAgICAgbV90YXJnZXRDaGFuZ2VkID0gdHJ1ZTsKICAg
ICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7CkBA
IC0zMzQsNyArMzMwLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5YmFj
awogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKGJvb2wgYXZhaWxhYmxlKQogewotICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgYXZhaWxhYmxlKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIo
X19mdW5jX18sIGF2YWlsYWJsZSk7CiAgICAgbV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZSA9IGF2YWlsYWJsZTsKICAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkKICAg
ICAgICAgc3RhdGUtPmNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5n
ZShzdGF0ZS0+Y29udGV4dElkLCBhdmFpbGFibGUpOwpAQCAtMzQyLDcgKzMzOCw3IEBAIHZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxPdXQKIAogdm9pZCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCgpCiB7Ci0gICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOwogICAgIG1fcGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzZWQgPSB0cnVl
OwogICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNr
KTsKIH0KQEAgLTM3NSw3ICszNzEsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNv
bmZpZ3VyZVBsCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NsaWVudFN0YXRlLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpXTsKIAotICAg
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIHN0YXRlLmdldCgpLCAiLCByZXF1ZXN0ZWRQ
aWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKTsKKyAgICAgICAgQUxXQVlTX0xPR19N
RURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiwgcmVxdWVzdGVkUGlj
a2VyID0gIiwgc3RhdGUtPnJlcXVlc3RlZFBpY2tlcik7CiAKICAgICAgICAgaWYgKChtX3Rhcmdl
dENoYW5nZWQgfHwgbV9wbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NlZCkgJiYgc3RhdGUtPnJl
cXVlc3RlZFBpY2tlcikKICAgICAgICAgICAgIGluZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVkUGlj
a2VyID0gaTsKQEAgLTQwMSwxMiArMzk3LDEyIEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6Y29uZmlndXJlUGwKICAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0UGxheWJhY2tUYXJn
ZXQoc3RhdGUtPmNvbnRleHRJZCwgKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigpKTsKIAogICAg
ICAgICBpZiAoaSAhPSBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCB8fCAhaGF2ZUFjdGl2
ZVJvdXRlKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIHN0YXRlLmdl
dCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoZmFsc2UpIik7Cisg
ICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRl
LmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoZmFsc2UpIik7
CiAgICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0
KHN0YXRlLT5jb250ZXh0SWQsIGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdGF0
ZS0+cmVxdWVzdGVkUGlja2VyICYmIG1fcGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzZWQpIHsK
LSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0KCksICIgY2Fs
bGluZyBwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCIpOworICAgICAgICAgICAgQUxX
QVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxs
aW5nIHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkIik7CiAgICAgICAgICAgICBzdGF0
ZS0+Y2xpZW50LnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkKHN0YXRlLT5jb250ZXh0
SWQpOwogICAgICAgICB9CiAKQEAgLTQxOCw3ICs0MTQsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmNvbmZpZ3VyZVBsCiAgICAgaWYgKGhhdmVBY3RpdmVSb3V0ZSAmJiBpbmRleE9m
Q2xpZW50V2lsbFBsYXlUb1RhcmdldCAhPSBub3RGb3VuZCkgewogICAgICAgICBhdXRvJiBzdGF0
ZSA9IG1fY2xpZW50U3RhdGVbaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXRdOwogICAgICAg
ICBpZiAoIWZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5n
VG9FeHRlcm5hbERldmljZSkpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uiwgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0
cnVlKSIpOworICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVu
Y19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0
KHRydWUpIik7CiAgICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIHRydWUpOwogICAgICAgICB9CiAgICAgfQpAQCAt
NDMzLDcgKzQyOSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGwK
ICAgICBib29sIGhhc0F2YWlsYWJpbGl0eUxpc3RlbmVyID0gZmFsc2U7CiAgICAgYm9vbCBoYXZl
Q2xpZW50V2l0aE1lZGlhID0gZmFsc2U7CiAgICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50
U3RhdGUpIHsKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZS5nZXQoKSk7
CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUu
Z2V0KCkpOwogICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgTWVkaWFQcm9kdWNlcjo6UmVxdWly
ZXNQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpIHsKICAgICAgICAgICAgIG1vbml0b3JpbmdSZXF1
aXJlZCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ0NSwxMCArNDQxLDEwIEBAIHZv
aWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGwKICAgICB9CiAKICAgICBpZiAo
bW9uaXRvcmluZ1JlcXVpcmVkIHx8IChoYXNBdmFpbGFiaWxpdHlMaXN0ZW5lciAmJiBoYXZlQ2xp
ZW50V2l0aE1lZGlhKSkgewotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdGFy
dGluZyBtb25pdG9yaW5nIik7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdF
UihfX2Z1bmNfXywgInN0YXJ0aW5nIG1vbml0b3JpbmciKTsKICAgICAgICAgdGFyZ2V0UGlja2Vy
KCkuc3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic3RvcHBpbmcgbW9uaXRvcmluZyIpOwor
ICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGlu
ZyBtb25pdG9yaW5nIik7CiAgICAgICAgIHRhcmdldFBpY2tlcigpLnN0b3BNb25pdG9yaW5nUGxh
eWJhY2tUYXJnZXRzKCk7CiAgICAgfQogfQpAQCAtNDkwLDcgKzQ4Niw3IEBAIHZvaWQgV2ViTWVk
aWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2EKIAogICAgIGlmICghbV9wbGF5YmFja1Rhcmdl
dCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSkgewogICAgICAgICBpZiAo
bV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgInN0b3BwaW5nIHRpbWVyIik7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGluZyB0aW1lciIpOwogICAgICAgICAg
ICAgbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCA9IHsgfTsKICAgICAgICAgICAgIG1fd2F0Y2hk
b2dUaW1lci5zdG9wKCk7CiAgICAgICAgIH0KQEAgLTUwMiw3ICs0OTgsNyBAQCB2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhCiAgICAgYm9vbCBkaWRQbGF5VG9FbmQgPSBm
YWxzZTsKICAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgewogCi0gICAgICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUuZ2V0KCksICIgcGxheWVkVG9FbmQgPSAi
LCBzdGF0ZS0+cGxheWVkVG9FbmQpOworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIHBsYXllZFRvRW5kID0gIiwgc3RhdGUtPnBs
YXllZFRvRW5kKTsKIAogICAgICAgICBpZiAoZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRp
YVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSAmJiBmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkKICAgICAgICAgICAgIHN0
b3BUaW1lciA9IHRydWU7CkBAIC01MTIsNyArNTA4LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpjb25maWd1cmVXYQogICAgIH0KIAogICAgIGlmIChzdG9wVGltZXIpIHsKLSAgICAg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic3RvcHBpbmcgdGltZXIiKTsKKyAgICAgICAg
QUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAic3RvcHBpbmcgdGltZXIi
KTsKICAgICAgICAgbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCA9IHsgfTsKICAgICAgICAgbV93
YXRjaGRvZ1RpbWVyLnN0b3AoKTsKICAgICB9IGVsc2UgewpAQCAtNTIwLDcgKzUxNiw3IEBAIHZv
aWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlV2EKICAgICAgICAgaWYgKGludGVy
dmFsICE9IG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgfHwgIW1fd2F0Y2hkb2dUaW1lci5pc0Fj
dGl2ZSgpKSB7CiAgICAgICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVy
dmFsKTsKICAgICAgICAgfQotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ0aW1l
ciBzY2hlZHVsZWQgZm9yICIsIGludGVydmFsLnZhbHVlKCksICIgc2Vjb25kcyIpOworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJ0aW1lciBzY2hlZHVs
ZWQgZm9yICIsIGludGVydmFsLnZhbHVlKCksICIgc2Vjb25kcyIpOwogICAgICAgICBtX2N1cnJl
bnRXYXRjaGRvZ0ludGVydmFsID0gaW50ZXJ2YWw7CiAgICAgfQogfQpAQCAtNTMwLDcgKzUyNiw3
IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6d2F0Y2hkb2dUaW0KICAgICBpZiAoIW1f
cGxheWJhY2tUYXJnZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsK
ICAgICB0YXJnZXRQaWNrZXIoKS5pbnZhbGlkYXRlUGxheWJhY2tUYXJnZXRzKCk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjYwNzA4KQorKysgU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
TW92ZSBBcHBsZVBheSBjb2RlIGZyb20gV2ViS2l0QWRkaXRpb25zIHRvIFdlYkNvcmUgYW5kIFdl
YktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
NTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICAqIHBhbC9j
b2NvYS9QYXNzS2l0U29mdExpbmsuaDoKKyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRM
aW5rLm1tOgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oOgorCiAyMDIwLTA0
LTIxICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IE1BQ0NB
VEFMWVNUIGJ1aWxkIGZhaWx1cmVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L1Bhc3NLaXRTb2Z0TGluay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y29jb2EvUGFzc0tpdFNvZnRMaW5rLmgJKHJldmlzaW9uIDI2MDcwOCkKKysrIFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDkgKzM5LDE4IEBAIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW4KIFNP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50TWV0aG9kKQogU09GVF9MSU5L
X0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24pCiBTT0ZUX0xJ
TktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudFJlcXVlc3QpCitTT0ZUX0xJTktfQ0xB
U1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbikKK1NPRlRfTElO
S19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50U2V0dXBDb250cm9sbGVyKQorU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQS1BheW1lbnRTZXR1cEZlYXR1cmUpCitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudFNldHVwUmVxdWVzdCkKK1NPRlRfTElO
S19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcikKIFNP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50U3VtbWFyeUl0ZW0pCiBTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLU2hpcHBpbmdNZXRob2QpCiAKKyNpZiBIQVZF
KFBBU1NLSVRfSU5TVEFMTE1FTlRTKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQ
S1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24pCisjZW5kaWYKKwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudEF1
dGhvcml6YXRpb25Db250cm9sbGVyKQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQkocmV2aXNpb24gMjYwNzA4KQorKysg
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDEwICszMiwzMiBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogU09GVF9MSU5L
X1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQ
QUxfRVhQT1JUKQotI2Vsc2UKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUxf
V0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24sIFBB
TF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9S
VChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwQ29udHJvbGxlciwgUEFMX0VYUE9SVCkKK1NP
RlRfTElOS19DTEFTU19GT1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tp
dCwgUEtQYXltZW50U2V0dXBGZWF0dXJlLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfT1BUSU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTZXR1
cFJlcXVlc3QsIFBBTF9FWFBPUlQpCisKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQor
U09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBQYXNz
S2l0LCBQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24sIFBBTF9FWFBPUlQpCisjZW5k
aWYKKworI2Vsc2UgLy8gUExBVEZPUk0oTUFDKQorCiBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQQUxfRVhQT1JUKQorCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U2V0dXBDb250cm9sbGVyLCBQQUxfRVhQ
T1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0
LCBQS1BheW1lbnRTZXR1cEZlYXR1cmUsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFNldHVwUmVxdWVzdCwg
UEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
UGFzc0tpdCwgUEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlciwgUEFMX0VYUE9SVCkKKworI2lm
IEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlv
biwgUEFMX0VYUE9SVCkKICNlbmRpZgogCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCiBTT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFj
dCwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgUGFzc0tpdCwgUEtQYXNzTGlicmFyeSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50LCBQQUxfRVhQT1JU
KQpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEku
aAkocmV2aXNpb24gMjYwNzA4KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
UGFzc0tpdFNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSArNDUsMjggQEAgV1RGX0VYVEVS
Tl9DX0VORAogI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXJfUHJpdmF0ZS5oPgogI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRNZXRob2QuaD4KICNp
bXBvcnQgPFBhc3NLaXQvUEtQYXltZW50UmVxdWVzdF9Qcml2YXRlLmg+CisjaW1wb3J0IDxQYXNz
S2l0L1BLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbl9XZWJLaXQuaD4KKyNpbXBvcnQgPFBhc3NL
aXQvUEtQYXltZW50U2V0dXBDb250cm9sbGVyLmg+CisjaW1wb3J0IDxQYXNzS2l0L1BLUGF5bWVu
dFNldHVwUmVxdWVzdC5oPgogI2ltcG9ydCA8UGFzc0tpdENvcmUvUEtQYXltZW50UmVxdWVzdFN0
YXR1c19Qcml2YXRlLmg+CiAjaW1wb3J0IDxQYXNzS2l0Q29yZS9QS1BheW1lbnRSZXF1ZXN0X1dl
YktpdC5oPgogCisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKKyNpbXBvcnQgPFBhc3NL
aXRDb3JlL1BLUGF5bWVudF9Qcml2YXRlLmg+CisjaW1wb3J0IDxQYXNzS2l0Q29yZS9QS1BheW1l
bnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPFBhc3NLaXRDb3JlL1BLUGF5
bWVudE1ldGhvZF9Qcml2YXRlLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW1wb3J0IDxQYXNzS2l0L1BLUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyX1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlci5oPgor
I2VuZGlmCisKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRfSURFTlRJRklFUlMpICYmIFBM
QVRGT1JNKE1BQykKK0BpbnRlcmZhY2UgUEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
IChXZWJLaXRTUEkpCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgbnVsbGFibGUpIE5TU3Ry
aW5nICppbnN0YWxsbWVudE1lcmNoYW50SWRlbnRpZmllcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5LCBudWxsYWJsZSkgTlNTdHJpbmcgKnJlZmVycmVySWRlbnRpZmllcjsKK0BlbmQKICNl
bmRpZgogCiAjZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYwNzA4KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAw
LDYgKzE5MDAsOSBAQAogCQk1QzJCMUFFQzIyMzk3RUJDMDBCOTFDRjcgLyogUmVzb3VyY2VSZXNw
b25zZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFGNzhEMEIxQzI1NDIyQzAwMjQ1NDQ2IC8qIFJlc291cmNlUmVzcG9uc2VDb2NvYS5tbSAq
LzsgfTsKIAkJNUM0MzA0QjExOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDMwNEFF
MTkxQUM5MDgwMDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggKi87IH07CiAJCTVDNDMw
NEI2MTkxQUVGNDYwMDBFMkJDMCAvKiBKU0VYVFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDMwNEI0MTkxQUVGNDYwMDBF
MkJDMCAvKiBKU0VYVFNoYWRlclRleHR1cmVMT0QuaCAqLzsgfTsKKwkJNUM1M0RDRTEyNDQ2NURG
QzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlV2ViQ29yZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM1M0RDQ0YyNDQ2NDQ5OTAwQTkzMTI0
IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlV2ViQ29yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNTNEQ0U3MjQ0NjhBRDIwMEE5MzEyNCAvKiBQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uV2ViQ29yZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM1M0RDQ0UyNDQ2NDQ5OTAwQTkzMTI0IC8q
IFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb25XZWJDb3JlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNUM1M0RDRUEyNDQ2OEZCNDAwQTkz
MTI0IC8qIEFwcGxlUGF5U2V0dXBXZWJDb3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzUzRENDQjI0NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlT
ZXR1cFdlYkNvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1QzVEMjM4NTIyN0EwNjUyMDAwQjlCREEgLyogQ3VzdG9tSGVhZGVyRmllbGRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzVEMjM4MzIy
N0EwNjNBMDAwQjlCREEgLyogQ3VzdG9tSGVhZGVyRmllbGRzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUM3Qzg4RDgxRDBGMUY0QTAwOUQyRjZE
IC8qIFNvY2tldFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzdDODhENzFEMEYxRjJCMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzlDMkRC
NTIyNDFBNjdCMDA5OTZCMEIgLyogQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5QzJEQjMyMjQxQTY3MzAwOTk2
QjBCIC8qIENvbnRlbnRSdWxlTGlzdFJlc3VsdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTA5MSw2ICs5MDk0LDE4IEBACiAJCTVDNTM4MUIx
MUQ4N0Q0NTcwMEUyRUJFNiAvKiBVUkxTZWFyY2hQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVJMU2VhcmNoUGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDNTM4MUIzMUQ4N0UwODEwMEUyRUJFNiAvKiBKU1VSTFNlYXJjaFBhcmFtcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VSTFNlYXJjaFBhcmFtcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNTM4MUI0MUQ4N0UwODEwMEUyRUJF
NiAvKiBKU1VSTFNlYXJjaFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1VSTFNlYXJjaFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUz
RENDNjI0NDY0NDk3MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gQXBwbGVQYXlTZXR1cC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDNTNEQ0M5MjQ0NjQ0OTgwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwRmVhdHVyZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcGxlUGF5U2V0dXBGZWF0dXJl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENDQTI0NDY0NDk4MDBBOTMx
MjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFw
cGxlUGF5U2V0dXBGZWF0dXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1
M0RDQ0IyNDQ2NDQ5ODAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBXZWJDb3JlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5U2V0dXBXZWJDb3JlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0NDMjQ0NjQ0OTkwMEE5MzEyNCAvKiBQYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDQ0UyNDQ2NDQ5OTAwQTkzMTI0IC8qIFBheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb25XZWJDb3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb25XZWJDb3JlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0NGMjQ0NjQ0OTkwMEE5MzEyNCAvKiBBcHBs
ZVBheVNldHVwRmVhdHVyZVdlYkNvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXBwbGVQYXlTZXR1cEZlYXR1cmVXZWJDb3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDNTNEQ0QwMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheUluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbldlYkNvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBw
bGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb25XZWJDb3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTVDNTNEQ0QyMjQ0NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxlUGF5U2V0dXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENENDI0NDY0NDlCMDBBOTMxMjQg
LyogQXBwbGVQYXlTZXR1cEZlYXR1cmVUeXBlV2ViQ29yZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGVXZWJDb3JlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0Q1MjQ0NjQ0OUIwMEE5MzEyNCAvKiBBcHBsZVBh
eUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBw
bGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QzUzRENENjI0NDY0NDlDMDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmVU
eXBlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBsZVBheVNldHVwRmVhdHVyZVR5cGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVEMjM4MzIyN0EwNjNBMDAwQjlC
REEgLyogQ3VzdG9tSGVhZGVyRmllbGRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEN1c3RvbUhlYWRlckZpZWxkcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzVEMjM4NjIyN0EwNzdDMDAwQjlCREEgLyogQ3VzdG9tSGVhZGVyRmllbGRzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbUhlYWRlckZpZWxkcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjY4RTY0MUU3QzZDMzUwMEQzMkIzQiAvKiBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTczMTEsNiArMTczMjYsOCBAQAogCQkJCUExQkI4NTlCMjE1OUFFQTEwMDY3RTA3
RCAvKiBBcHBsZVBheUVycm9yQ29kZS5pZGwgKi8sCiAJCQkJQTFCQjg1QTAyMTU5QUY1NzAwNjdF
MDdEIC8qIEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQuaCAqLywKIAkJCQlBMUJCODVBMjIxNTlB
RjU3MDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5pZGwgKi8sCisJCQkJNUM1
M0RDRDUyNDQ2NDQ5QjAwQTkzMTI0IC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
LmlkbCAqLywKKwkJCQk1QzUzRENEMDI0NDY0NDlBMDBBOTMxMjQgLyogQXBwbGVQYXlJbnN0YWxs
bWVudENvbmZpZ3VyYXRpb25XZWJDb3JlLmggKi8sCiAJCQkJN0M2NTc5RTIxRTAwODI3MDAwRTNB
MjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAqLywKIAkJCQk3QzY1NzlFNDFFMDA4MkM4MDBFM0Ey
N0EgLyogQXBwbGVQYXlMaW5lSXRlbS5pZGwgKi8sCiAJCQkJQTFERjVBQTgxRjgwNzBENDAwNThB
NDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmNwcCAqLywKQEAgLTE3MzQ4LDYgKzE3
MzY1LDE0IEBACiAJCQkJQTE5NTZGMUYyMzMxQThDNzAwNTdFOUQyIC8qIEFwcGxlUGF5U2Vzc2lv
bkVycm9yLmlkbCAqLywKIAkJCQkxQTU4RTg2MzFEMTlENERGMDBDMEVBNzMgLyogQXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwICovLAogCQkJCTFBNThFODY0MUQxOUQ0REYwMEMwRUE3
MyAvKiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oICovLAorCQkJCTVDNTNEQ0QyMjQ0
NjQ0OUEwMEE5MzEyNCAvKiBBcHBsZVBheVNldHVwLmNwcCAqLywKKwkJCQk1QzUzRENDNjI0NDY0
NDk3MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cC5pZGwgKi8sCisJCQkJNUM1M0RDQ0EyNDQ2NDQ5
ODAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlLmlkbCAqLywKKwkJCQk1QzUzRENDOTI0
NDY0NDk4MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1cEZlYXR1cmUubW0gKi8sCisJCQkJNUM1M0RD
RDYyNDQ2NDQ5QzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZS5pZGwgKi8sCisJ
CQkJNUM1M0RDRDQyNDQ2NDQ5QjAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJlVHlwZVdl
YkNvcmUuaCAqLywKKwkJCQk1QzUzRENDRjI0NDY0NDk5MDBBOTMxMjQgLyogQXBwbGVQYXlTZXR1
cEZlYXR1cmVXZWJDb3JlLmggKi8sCisJCQkJNUM1M0RDQ0IyNDQ2NDQ5ODAwQTkzMTI0IC8qIEFw
cGxlUGF5U2V0dXBXZWJDb3JlLmggKi8sCiAJCQkJMUE4QTY0NDcxRDE5RkNGQjAwRDBFMDBGIC8q
IEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAgKi8sCiAJCQkJMUE4QTY0
NDgxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVu
dC5oICovLAogCQkJCTFBOEE2NDQ5MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5n
Q29udGFjdFNlbGVjdGVkRXZlbnQuaWRsICovLApAQCAtMTczNzEsNiArMTczOTYsOCBAQAogCQkJ
CUExMDRFQzUzMjIwQTAxNzQwMENCRjY3QSAvKiBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuY3Bw
ICovLAogCQkJCTFBNThFODYyMUQxOUQzQkYwMEMwRUE3MyAvKiBQYXltZW50Q29vcmRpbmF0b3JD
bGllbnQuaCAqLywKIAkJCQk3Q0Y5MzBFNjFFMDFGOUFEMDBCQUZGQkUgLyogUGF5bWVudEhlYWRl
cnMuaCAqLywKKwkJCQk1QzUzRENDQzI0NDY0NDk5MDBBOTMxMjQgLyogUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbi5tbSAqLywKKwkJCQk1QzUzRENDRTI0NDY0NDk5MDBBOTMxMjQgLyog
UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbldlYkNvcmUuaCAqLywKIAkJCQkxQUU5NkE4
NzFEMUEwQ0VCMDBCODY3NjggLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oICovLAogCQkJCTFB
OEE2NDM5MUQxOUZDNTMwMEQwRTAwRiAvKiBQYXltZW50TWV0aG9kLmggKi8sCiAJCQkJQTFERkQ1
MjQyMzM0NTkzQTAwNDJGQ0RCIC8qIFBheW1lbnRNZXRob2RVcGRhdGUuaCAqLywKQEAgLTI5NDg3
LDYgKzI5NTE0LDggQEAKIAkJCQkxQThBNjQ1OTFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlT
ZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTk1NkYyMDIzMzFBOEM3MDA1N0U5RDIgLyog
QXBwbGVQYXlTZXNzaW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNThFODY1MUQxOUQ0
RUIwMEMwRUE3MyAvKiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNUM1M0RDRTEyNDQ2NURGQzAwQTkzMTI0IC8qIEFwcGxlUGF5U2V0dXBGZWF0dXJl
V2ViQ29yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUM1M0RDRUEyNDQ2OEZCNDAwQTkzMTI0IC8q
IEFwcGxlUGF5U2V0dXBXZWJDb3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThBNjQ1QzFEMTlG
Q0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMTJDNTlGMjIwMzVGQ0Q2MDAxMjIzNkIgLyogQXBwbGVQYXlTaGlw
cGluZ0NvbnRhY3RVcGRhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNjU3OUU4MUUwMDgzMTYw
MEUzQTI3QSAvKiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kLmggaW4gSGVhZGVycyAqLywKQEAgLTMy
MjEyLDYgKzMyMjQxLDcgQEAKIAkJCQlBMUY2MDA0OTFGNDc1OTRFMDA3N0U4M0YgLyogUGF5bWVu
dERldGFpbHNVcGRhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExREY1QUE2MUY3RjY0QkIwMDU4
QTQ3NyAvKiBQYXltZW50SGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NGOTMwRTcxRTAx
RjlCNDAwQkFGRkJFIC8qIFBheW1lbnRIZWFkZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzUz
RENFNzI0NDY4QUQyMDBBOTMxMjQgLyogUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbldl
YkNvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRjc2QjMxMUY0NEM1NUEwMDE0QzMxOCAvKiBQ
YXltZW50SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFOTZBODkxRDFBMENFQjAwQjg2NzY4
IC8qIFBheW1lbnRNZXJjaGFudFNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEE2NDND
MUQxOUZDNTMwMEQwRTAwRiAvKiBQYXltZW50TWV0aG9kLmggaW4gSGVhZGVycyAqLywKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCShyZXZpc2lvbiAyNjA3MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNzE4NSw2ICs3MTg1LDI4IEBA
IHN1YiBHZW5lcmF0ZUhhc2hUYWJsZQogICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGNv
bnN0IEhhc2hUYWJsZSAkbmFtZSA9IHsgJHBhY2tlZFNpemUsICRjb21wYWN0U2l6ZU1hc2ssICRo
YXNTZXR0ZXIsICR7Y2xhc3NOYW1lfTo6aW5mbygpLCAkbmFtZUVudHJpZXMsICRuYW1lSW5kZXgg
fTtcbiIpOwogfQogCitzdWIgU3Vic3RpdHV0ZUhlYWRlcgoreworICAgICMgSW50ZXJuYWwgbWFj
T1MgU0RLcyB1cCB0byAxMC4xNSBoYXZlIG5vbi1zdWZmaXhlZCBoZWFkZXJzIGluIHRoZWlyIFdl
YktpdEFkZGl0aW9ucywgcmVxdWlyaW5nIHRoZSBhZGRpdGlvbiBvZiB0aGUgc3VmZml4IHRvIGJ1
aWxkIHN1Y2Nlc3NmdWxseS4KKyAgICBteSAkaW5jbHVkZSA9IHNoaWZ0OworICAgIGlmICgkaW5j
bHVkZSBlcSAiXCJBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5oXCIiKSB7CisgICAg
ICAgIHJldHVybiAiXCJBcHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbldlYkNvcmUuaFwi
IjsKKyAgICB9CisgICAgaWYgKCRpbmNsdWRlIGVxICJcIkFwcGxlUGF5U2V0dXBGZWF0dXJlVHlw
ZS5oXCIiKSB7CisgICAgICAgIHJldHVybiAiXCJBcHBsZVBheVNldHVwRmVhdHVyZVR5cGVXZWJD
b3JlLmhcIiI7CisgICAgfQorICAgIGlmICgkaW5jbHVkZSBlcSAiXCJBcHBsZVBheVNldHVwRmVh
dHVyZS5oXCIiKSB7CisgICAgICAgIHJldHVybiAiXCJBcHBsZVBheVNldHVwRmVhdHVyZVdlYkNv
cmUuaFwiIjsKKyAgICB9CisgICAgaWYgKCRpbmNsdWRlIGVxICJcIkFwcGxlUGF5U2V0dXAuaFwi
IikgeworICAgICAgICByZXR1cm4gIlwiQXBwbGVQYXlTZXR1cFdlYkNvcmUuaFwiIjsKKyAgICB9
CisgICAgaWYgKCRpbmNsdWRlIGVxICJcIlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24u
aFwiIikgeworICAgICAgICByZXR1cm4gIlwiUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlv
bldlYkNvcmUuaFwiIjsKKyAgICB9CisgICAgcmV0dXJuICRpbmNsdWRlOworfQorCiBzdWIgV3Jp
dGVEYXRhCiB7CiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwpAQCAtNzI0Myw2ICs3MjY1LDcgQEAg
c3ViIFdyaXRlRGF0YQogICAgIEBpbmNsdWRlcyA9ICgpOwogICAgIGZvcmVhY2ggbXkgJGluY2x1
ZGUgKGtleXMgJWhlYWRlckluY2x1ZGVzKSB7CiAgICAgICAgICRpbmNsdWRlID0gIlwiJGluY2x1
ZGVcIiIgdW5sZXNzICRpbmNsdWRlID1+IC9eWyI8XS87ICMgIgorICAgICAgICAkaW5jbHVkZSA9
IFN1YnN0aXR1dGVIZWFkZXIoJGluY2x1ZGUpOwogICAgICAgICBwdXNoIEBpbmNsdWRlcywgJGlu
Y2x1ZGU7CiAgICAgfQogICAgIGZvcmVhY2ggbXkgJGluY2x1ZGUgKHNvcnQgQGluY2x1ZGVzKSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYkNvcmVBZGRp
dGlvbnMubW0JKHJldmlzaW9uIDI2MDcwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1dlYkNvcmVBZGRpdGlvbnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDMgQEAK
ICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
Ci0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFkZGl0aW9ucy5tbT4KLSNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDcwOCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDQtMjUgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIEFwcGxlUGF5
IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMgdG8gV2ViQ29yZSBhbmQgV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA1MjEKKworICAgICAg
ICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFy
ZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXM6OnBsYXRmb3JtRmVhdHVyZXMgY29uc3Qp
OgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVz
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXM6OlBheW1l
bnRTZXR1cEZlYXR1cmVzKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXM6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzOjpk
ZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJlczo6b3BlcmF0b3Ig
VmVjdG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+IGNvbnN0KToKKyAgICAg
ICAgKiBTaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6cGxhdGZvcm1Db25m
aWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnRvUGxhdGZvcm1Db25m
aWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OmZpbmlzaENvbnN0cnVjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9jb2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0
aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdEFkZGl0aW9uczo6dG9QbGF0Zm9ybUNvbmZp
Z3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0QWRkaXRpb25zOjpQYXltZW50U2V0dXBDb25maWd1
cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdEFkZGl0
aW9uczo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdEFkZGl0aW9uczo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6ZmluaXNoQ3JlYXRpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Z2V0U2V0dXBGZWF0dXJlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpiZWdpbkFwcGxlUGF5U2V0
dXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZW5kQXBw
bGVQYXlTZXR1cCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybUJlZ2luQXBwbGVQYXlTZXR1cCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUVuZEFwcGxlUGF5U2V0dXApOgorICAgICAgICAq
IFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQ
Qzo6ZmluaXNoRGVjb2RpbmcpOgorICAgICAgICAoSVBDOjpmaW5pc2hFbmNvZGluZyk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj46OmRlY29kZSk6CisgICAgICAgICogU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvcjo6Z2V0U2V0dXBGZWF0
dXJlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvcjo6YmVnaW5BcHBs
ZVBheVNldHVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjplbmRB
cHBsZVBheVNldHVwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvci5oOgorCiAyMDIwLTA0LTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBz
dWJzdHJpbmdzIG9mIHRoZSBVUkwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJl
dmlzaW9uIDI2MDcwOCkKKysrIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkod29y
a2luZyBjb3B5KQpAQCAtMjUzLDggKzI1Myw2IEBAIFNDUklQVFMgPSBcCiBGUkFNRVdPUktfRkxB
R1MgPSAkKHNoZWxsIGVjaG8gJChCVUlMVF9QUk9EVUNUU19ESVIpICQoRlJBTUVXT1JLX1NFQVJD
SF9QQVRIUykgJChTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUykgfCBwZXJsIC1lICdwcmlu
dCAiLUYgIiAuIGpvaW4oIiAtRiAiLCBzcGxpdCgiICIsIDw+KSk7JykKIEhFQURFUl9GTEFHUyA9
ICQoc2hlbGwgZWNobyAkKEJVSUxUX1BST0RVQ1RTX0RJUikgJChIRUFERVJfU0VBUkNIX1BBVEhT
KSAkKFNZU1RFTV9IRUFERVJfU0VBUkNIX1BBVEhTKSB8IHBlcmwgLWUgJ3ByaW50ICItSSIgLiBq
b2luKCIgLUkiLCBzcGxpdCgiICIsIDw+KSk7JykKIAotLWluY2x1ZGUgV2ViS2l0RGVyaXZlZFNv
dXJjZXNBZGRpdGlvbnMubWFrZQotCiAuUEhPTlkgOiBhbGwKIAogYWxsIDogXApJbmRleDogU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjYwNzA4KQorKysgU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDggQEAgU2hhcmVkL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZQogU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90
ZU9iamVjdC5tbQogU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCiAKK1No
YXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tCitTaGFyZWQvQXBw
bGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQogU2hhcmVkL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LmNwcAogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KIFNoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlJT1MubW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQkocmV2aXNpb24gMjYwNzA4KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQkod29ya2luZyBjb3B5KQpAQCAtNjQ0LDYgKzY0NCw4IEBAIGRl
ZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdD
b250ZXh0SUQnOiBbJyJMYXllckhvc3RpbmdDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6
OkxheWVySG9zdGluZ01vZGUnOiBbJyJMYXllclRyZWVDb250ZXh0LmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6OlBhZ2VTdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5oIiddLAorICAgICAgICAnV2ViS2l0
OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJzogWyciUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bldlYktpdC5oIiddLAorICAgICAgICAnV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJlcyc6IFsn
IkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXNXZWJLaXQuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6UmVzcGVjdFNlbGVjdGlvbkFuY2hvcic6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAogICAgICAg
ICAnV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAn
V2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXlt
ZW50U2V0dXBGZWF0dXJlcy5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXNXZWJLaXQuaCIKKworI2lmIEhBVkUoUEFT
U0tJVF9QQVlNRU5UX1NFVFVQKQorCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCisj
aW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVyLmgiCisjaW1wb3J0IDxXZWJDb3Jl
L0FwcGxlUGF5U2V0dXBGZWF0dXJlV2ViQ29yZS5oPgorCisjaW1wb3J0IDxwYWwvY29jb2EvUGFz
c0tpdFNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgTlNBcnJheTxQ
S1BheW1lbnRTZXR1cEZlYXR1cmUgKj4gKnRvUGxhdGZvcm1GZWF0dXJlcyhWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBmZWF0dXJlcykKK3sKKyAgICBOU011
dGFibGVBcnJheSAqcGxhdGZvcm1GZWF0dXJlcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhD
YXBhY2l0eTpmZWF0dXJlcy5zaXplKCldOworICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IGZlYXR1
cmVzKSB7CisgICAgICAgIGlmIChmZWF0dXJlKQorICAgICAgICAgICAgW3BsYXRmb3JtRmVhdHVy
ZXMgYWRkT2JqZWN0OmZlYXR1cmUtPnBsYXRmb3JtRmVhdHVyZSgpXTsKKyAgICB9CisgICAgcmV0
dXJuIHBsYXRmb3JtRmVhdHVyZXM7Cit9CisKK1BheW1lbnRTZXR1cEZlYXR1cmVzOjpQYXltZW50
U2V0dXBGZWF0dXJlcyhWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4mJiBmZWF0dXJlcykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IHRvUGxhdGZvcm1GZWF0
dXJlcyhXVEZNb3ZlKGZlYXR1cmVzKSkgfQoreworfQorCitQYXltZW50U2V0dXBGZWF0dXJlczo6
UGF5bWVudFNldHVwRmVhdHVyZXMoUmV0YWluUHRyPE5TQXJyYXk+JiYgcGxhdGZvcm1GZWF0dXJl
cykKKyAgICA6IG1fcGxhdGZvcm1GZWF0dXJlcyB7IFdURk1vdmUocGxhdGZvcm1GZWF0dXJlcykg
fQoreworfQorCit2b2lkIFBheW1lbnRTZXR1cEZlYXR1cmVzOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9wbGF0Zm9ybUZlYXR1cmVzOwor
fQorCitPcHRpb25hbDxQYXltZW50U2V0dXBGZWF0dXJlcz4gUGF5bWVudFNldHVwRmVhdHVyZXM6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RhdGljIE5TQXJyYXkgKmFs
bG93ZWRDbGFzc2VzOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBhdXRvIGFsbG93ZWQgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Ml0pOworICAgICAg
ICBbYWxsb3dlZCBhZGRPYmplY3Q6W05TQXJyYXkgY2xhc3NdXTsKKyAgICAgICAgaWYgKGF1dG8g
cGtQYXltZW50U2V0dXBGZWF0dXJlQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVudFNldHVwRmVhdHVy
ZUNsYXNzKCkpCisgICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0dXBG
ZWF0dXJlQ2xhc3NdOworICAgICAgICBhbGxvd2VkQ2xhc3NlcyA9IFthbGxvd2VkIGNvcHldOwor
ICAgIH0pOworCisgICAgYXV0byBwbGF0Zm9ybUZlYXR1cmVzID0gSVBDOjpkZWNvZGU8TlNBcnJh
eTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4+KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsKKyAg
ICBpZiAoIXBsYXRmb3JtRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4gUGF5bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKCpwbGF0Zm9ybUZlYXR1
cmVzKSB9OworfQorCitQYXltZW50U2V0dXBGZWF0dXJlczo6b3BlcmF0b3IgVmVjdG9yPFJlZjxX
ZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8UmVm
PFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4gZmVhdHVyZXM7CisgICAgZmVhdHVyZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbbV9wbGF0Zm9ybUZlYXR1cmVzIGNvdW50XSk7CisgICAg
Zm9yIChQS1BheW1lbnRTZXR1cEZlYXR1cmUgKnBsYXRmb3JtRmVhdHVyZSBpbiBtX3BsYXRmb3Jt
RmVhdHVyZXMuZ2V0KCkpCisgICAgICAgIGZlYXR1cmVzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3Jl
OjpBcHBsZVBheVNldHVwRmVhdHVyZTo6Y3JlYXRlKHBsYXRmb3JtRmVhdHVyZSkpOworICAgIHJl
dHVybiBmZWF0dXJlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBI
QVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXNXZWJLaXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1
cmVzV2ViS2l0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlc1dlYktpdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEhBVkUoUEFT
U0tJVF9QQVlNRU5UX1NFVFVQKQorCitPQkpDX0NMQVNTIFBLUGF5bWVudFNldHVwRmVhdHVyZTsK
KworI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGVQYXlTZXR1cEZlYXR1cmVXZWJDb3JlLmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVz
cGFjZSBJUEMgeworY2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVuY29kZXI7Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBQYXltZW50U2V0dXBGZWF0dXJlcyB7CitwdWJsaWM6CisgICAg
UGF5bWVudFNldHVwRmVhdHVyZXMoVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpBcHBsZVBheVNldHVw
RmVhdHVyZT4+JiYpOworICAgIFBheW1lbnRTZXR1cEZlYXR1cmVzKFJldGFpblB0cjxOU0FycmF5
PiYmID0gbnVsbHB0cik7CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsK
KyAgICBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFNldHVwRmVhdHVyZXM+IGRlY29kZShJUEM6OkRl
Y29kZXImKTsKKworICAgIE5TQXJyYXkgKnBsYXRmb3JtRmVhdHVyZXMoKSBjb25zdCB7IHJldHVy
biBtX3BsYXRmb3JtRmVhdHVyZXMuZ2V0KCk7IH0KKyAgICBvcGVyYXRvciBWZWN0b3I8UmVmPFdl
YkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4oKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBS
ZXRhaW5QdHI8TlNBcnJheT4gbV9wbGF0Zm9ybUZlYXR1cmVzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24u
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uV2ViS2l0LmgiCisKKyNpZiBIQVZFKFBBU1NLSVRf
UEFZTUVOVF9TRVRVUCkKKworI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDb2NvYS5oIgorI2ltcG9y
dCAiRGVjb2Rlci5oIgorI2ltcG9ydCAiRW5jb2Rlci5oIgorI2ltcG9ydCA8d3RmL1VSTC5oPgor
CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CisKK0BpbnRlcmZhY2UgUEtQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uIChXZWJLaXQpCitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqc2lnbmVkRmllbGRzOworQGVuZAorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworc3RhdGljIFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24+IHRvUGxhdGZvcm1Db25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0dXA6
OkNvbmZpZ3VyYXRpb24mIGNvcmVDb25maWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCkKK3sKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFQQUw6OmdldFBLUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbkNsYXNzKCkpCisgICAgICAgIHJldHVybiBuaWw7CisjZW5kaWYKKworICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b25JbnN0YW5jZSgpIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRNZXJjaGFudElkZW50
aWZpZXI6Y29yZUNvbmZpZ3VyYXRpb24ubWVyY2hhbnRJZGVudGlmaWVyXTsKKyAgICBbY29uZmln
dXJhdGlvbiBzZXRPcmlnaW5hdGluZ1VSTDp1cmxdOworICAgIFtjb25maWd1cmF0aW9uIHNldFJl
ZmVycmVySWRlbnRpZmllcjpjb3JlQ29uZmlndXJhdGlvbi5yZWZlcnJlcklkZW50aWZpZXJdOwor
QUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgorICAgIFtjb25maWd1cmF0aW9uIHNl
dFNpZ25hdHVyZTpjb3JlQ29uZmlndXJhdGlvbi5zaWduYXR1cmVdOworQUxMT1dfTkVXX0FQSV9X
SVRIT1VUX0dVQVJEU19FTkQKKworICAgIGlmIChbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHNldFNpZ25lZEZpZWxkczopXSkgeworICAgICAgICBOU011dGFibGVB
cnJheSAqc2lnbmVkRmllbGRzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNv
cmVDb25maWd1cmF0aW9uLnNpZ25lZEZpZWxkcy5zaXplKCldOworICAgICAgICBmb3IgKGF1dG8m
IHNpZ25lZEZpZWxkIDogY29yZUNvbmZpZ3VyYXRpb24uc2lnbmVkRmllbGRzKQorICAgICAgICAg
ICAgW3NpZ25lZEZpZWxkcyBhZGRPYmplY3Q6c2lnbmVkRmllbGRdOworICAgICAgICBbY29uZmln
dXJhdGlvbiBzZXRTaWduZWRGaWVsZHM6c2lnbmVkRmllbGRzXTsKKyAgICB9CisKKyAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKK30KKworUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCkKKyAgICA6IG1fY29uZmlndXJh
dGlvbiB7IHRvUGxhdGZvcm1Db25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIHVybCkgfQorewor
fQorCitQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
KFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikK
KyAgICA6IG1fY29uZmlndXJhdGlvbiB7IFdURk1vdmUoY29uZmlndXJhdGlvbikgfQoreworfQor
Cit2b2lkIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2NvbmZpZ3VyYXRpb247Cit9CisKK09w
dGlvbmFsPFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RhdGljIE5TQXJyYXkg
KmFsbG93ZWRDbGFzc2VzOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBhdXRvIGFsbG93ZWQgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6MV0pOworICAg
ICAgICBpZiAoYXV0byBwa1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcyA9IFBBTDo6Z2V0
UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgICAgIFthbGxvd2Vk
IGFkZE9iamVjdDpwa1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzc107CisgICAgICAgIGFs
bG93ZWRDbGFzc2VzID0gW2FsbG93ZWQgY29weV07CisgICAgfSk7CisKKyAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBJUEM6OmRlY29kZTxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+KGRlY29k
ZXIsIGFsbG93ZWRDbGFzc2VzKTsKKyAgICBpZiAoIWNvbmZpZ3VyYXRpb24pCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
biB7IFdURk1vdmUoKmNvbmZpZ3VyYXRpb24pIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dEFkZGl0aW9ucworCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVApCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9u
V2ViS2l0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbldlYktpdC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25XZWJLaXQuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkKKworI2luY2x1ZGUgPFdlYkNvcmUv
QXBwbGVQYXlTZXR1cFdlYkNvcmUuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBQS1BheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb247CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVuY29kZXI7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uIHsKK3B1YmxpYzoKKyAgICBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0
OworICAgIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlT
ZXR1cDo6Q29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYpOworCisgICAgdm9pZCBlbmNvZGUoSVBD
OjpFbmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKworICAgIFBLUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbiAqcGxhdGZvcm1Db25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25m
aWd1cmF0aW9uLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbihSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiYmKTsK
KworICAgIFJldGFpblB0cjxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJh
dGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShQQVNT
S0lUX1BBWU1FTlRfU0VUVVApCisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAJKHJldmlz
aW9uIDI2MDcwOCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMjIgKzQ1LDYgQEAgc3Rh
dGljIFdlYWtQdHI8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveAogICAgIHJldHVybiBhY3RpdmVQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5nZXQoKTsKIH0KIAotV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5KFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpDbGllbnQmIGNsaWVudCkKLSAgICA6IG1fY2xpZW50IHsgY2xpZW50IH0KLSAgICAsIG1f
Y2FuTWFrZVBheW1lbnRzUXVldWUgeyBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktp
dC5DYW5NYWtlUGF5bWVudHMiKSB9Ci17Ci0gICAgbV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9y
QWRkTWVzc2FnZVJlY2VpdmVyKCp0aGlzLCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwotICAgIGZpbmlzaENvbnN0cnVj
dGlvbigqdGhpcyk7Ci19Ci0KLVdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp+V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkoKQotewotICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpJZGxlKQot
ICAgICAgICBoaWRlUGF5bWVudFVJKCk7Ci0KLSAgICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0
b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLX0KLQogSVBDOjpDb25uZWN0aW9u
KiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBj
b25zdAogewogICAgIHJldHVybiBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JDb25uZWN0aW9u
KCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAkocmV2aXNpb24gMjYwNzA4KQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDEzIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YXltZW50SGVhZGVycy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlBZGRpdGlvbnMuaD4KKyNpZiBIQVZFKFBBU1NLSVRfUEFZTUVOVF9TRVRVUCkK
K09CSkNfQ0xBU1MgUEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcjsKK09CSkNfQ0xBU1MgVUlW
aWV3Q29udHJvbGxlcjsKICNlbmRpZgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTYwLDggKzYyLDE0
IEBAIE9CSkNfQ0xBU1MgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb24KIE9CSkNfQ0xBU1Mg
UEtQYXltZW50UmVxdWVzdDsKIE9CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKIAorI2lmIFBM
QVRGT1JNKElPUykKK09CSkNfQ0xBU1MgUEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcjsKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbjsKK2NsYXNzIFBheW1lbnRTZXR1cEZlYXR1cmVzOwogY2xhc3MgV2ViUGFnZVByb3h5Owog
CiBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQpAQCAtMTI0LDYgKzEzMiwxNCBAQCBw
cml2YXRlOgogICAgIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigpOwogICAgIHZvaWQgY2FuY2Vs
UGF5bWVudFNlc3Npb24oKTsKIAorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorICAg
IHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYpPiYmKTsK
KyAgICB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uJiwgY29uc3QgUGF5bWVudFNldHVwRmVhdHVyZXMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyAgICB2b2lkIGVuZEFwcGxlUGF5U2V0dXAoKTsKKyAgICB2b2lkIHBsYXRm
b3JtQmVnaW5BcHBsZVBheVNldHVwKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mLCBj
b25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworICAgIHZvaWQgcGxhdGZvcm1FbmRBcHBsZVBheVNldHVwKCk7CisjZW5kaWYKKwogICAg
IGJvb2wgY2FuQmVnaW4oKSBjb25zdDsKICAgICBib29sIGNhbkNhbmNlbCgpIGNvbnN0OwogICAg
IGJvb2wgY2FuQ29tcGxldGVQYXltZW50KCkgY29uc3Q7CkBAIC0xOTEsMTIgKzIwNyw4IEBAIHBy
aXZhdGU6CiAgICAgUmV0YWluUHRyPE5TV2luZG93PiBtX3NoZWV0V2luZG93OwogICAgIFJldGFp
blB0cjxOU09iamVjdD4gbV9zaGVldFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyOwogI2VuZGlmCi0g
ICAgCi0jaWYgZGVmaW5lZChXRUJQQVlNRU5UQ09PUkRJTkFUT1JQUk9YWV9BRERJVElPTlMpCi1X
RUJQQVlNRU5UQ09PUkRJTkFUT1JQUk9YWV9BRERJVElPTlMKLSN1bmRlZiBXRUJQQVlNRU5UQ09P
UkRJTkFUT1JQUk9YWV9BRERJVElPTlMKLSNlbHNlCi0gICAgdm9pZCBmaW5pc2hDb25zdHJ1Y3Rp
b24oV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSB7IH0KKyNpZiBQTEFURk9STShJT1MpCisg
ICAgV2Vha09iakNQdHI8UEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlcj4gbV9wYXltZW50U2V0
dXBWaWV3Q29udHJvbGxlcjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MDcwOCkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSBOCiAgICAgQ29tcGxldGVQYXltZW50U2Vzc2lvbihPcHRpb25hbDxXZWJD
b3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gcmVzdWx0KQogICAgIEFib3J0UGF5bWVu
dFNlc3Npb24oKQogICAgIENhbmNlbFBheW1lbnRTZXNzaW9uKCkKKyNpZiBIQVZFKFBBU1NLSVRf
UEFZTUVOVF9TRVRVUCkKKyAgICBHZXRTZXR1cEZlYXR1cmVzKFdlYktpdDo6UGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSAtPiAoV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0
dXJlcyBmZWF0dXJlcykgQXN5bmMKKyAgICBCZWdpbkFwcGxlUGF5U2V0dXAoV2ViS2l0OjpQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFdlYktpdDo6UGF5bWVudFNldHVw
RmVhdHVyZXMgZmVhdHVyZXMpIC0+IChib29sIHJlc3VsdCkgQXN5bmMKKyAgICBFbmRBcHBsZVBh
eVNldHVwKCkKKyNlbmRpZgogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9jb2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbi5oIgorCisjaWYgSEFWRShQQVNTS0lUX1BBWU1FTlRfU0VUVVAp
CisKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKKyNpbXBvcnQgIkRlY29kZXIuaCIK
KyNpbXBvcnQgIkVuY29kZXIuaCIKKyNpbXBvcnQgIlBhc3NLaXRTb2Z0TGlua0FkZGl0aW9ucy5o
IgorI2ltcG9ydCA8d3RmL1VSTC5oPgorCitAaW50ZXJmYWNlIFBLUGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbiAoV2ViS2l0KQorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8TlNT
dHJpbmcgKj4gKnNpZ25lZEZpZWxkczsKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdEFkZGl0aW9u
cyB7CisKK3N0YXRpYyBSZXRhaW5QdHI8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiB0b1Bs
YXRmb3JtQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25maWd1
cmF0aW9uJiBjb3JlQ29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwpCit7CisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIGlmICghUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFz
cygpKQorICAgICAgICByZXR1cm4gbmlsOworI2VuZGlmCisKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uSW5zdGFu
Y2UoKSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVyY2hhbnRJZGVudGlmaWVyOmNv
cmVDb25maWd1cmF0aW9uLm1lcmNoYW50SWRlbnRpZmllcl07CisgICAgW2NvbmZpZ3VyYXRpb24g
c2V0T3JpZ2luYXRpbmdVUkw6dXJsXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRSZWZlcnJlcklk
ZW50aWZpZXI6Y29yZUNvbmZpZ3VyYXRpb24ucmVmZXJyZXJJZGVudGlmaWVyXTsKK0FMTE9XX05F
V19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KKyAgICBbY29uZmlndXJhdGlvbiBzZXRTaWduYXR1
cmU6Y29yZUNvbmZpZ3VyYXRpb24uc2lnbmF0dXJlXTsKK0FMTE9XX05FV19BUElfV0lUSE9VVF9H
VUFSRFNfRU5ECisKKyAgICBpZiAoW2NvbmZpZ3VyYXRpb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihzZXRTaWduZWRGaWVsZHM6KV0pIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkgKnNp
Z25lZEZpZWxkcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjb3JlQ29uZmln
dXJhdGlvbi5zaWduZWRGaWVsZHMuc2l6ZSgpXTsKKyAgICAgICAgZm9yIChhdXRvJiBzaWduZWRG
aWVsZCA6IGNvcmVDb25maWd1cmF0aW9uLnNpZ25lZEZpZWxkcykKKyAgICAgICAgICAgIFtzaWdu
ZWRGaWVsZHMgYWRkT2JqZWN0OnNpZ25lZEZpZWxkXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24g
c2V0U2lnbmVkRmllbGRzOnNpZ25lZEZpZWxkc107CisgICAgfQorCisgICAgcmV0dXJuIGNvbmZp
Z3VyYXRpb247Cit9CisKK1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6Q29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwpCisgICAgOiBtX2NvbmZpZ3VyYXRpb24geyB0
b1BsYXRmb3JtQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCB1cmwpIH0KK3sKK30KKworUGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbjo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbihSZXRhaW5Q
dHI8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBt
X2NvbmZpZ3VyYXRpb24geyBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pIH0KK3sKK30KKwordm9pZCBQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgbV9jb25maWd1cmF0aW9uOworfQorCitPcHRpb25hbDxQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uPiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0YXRpYyBOU0FycmF5ICphbGxvd2Vk
Q2xhc3NlczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgYXV0byBhbGxvd2VkID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjFdKTsKKyAgICAgICAgaWYg
KGF1dG8gcGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbkNsYXNzKCkpCisgICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmpl
Y3Q6cGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3NdOworICAgICAgICBhbGxvd2VkQ2xh
c3NlcyA9IFthbGxvd2VkIGNvcHldOworICAgIH0pOworCisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gSVBDOjpkZWNvZGU8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPihkZWNvZGVyLCBhbGxv
d2VkQ2xhc3Nlcyk7CisgICAgaWYgKCFjb25maWd1cmF0aW9uKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgcmV0dXJuIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24geyBXVEZN
b3ZlKCpjb25maWd1cmF0aW9uKSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXRBZGRpdGlv
bnMKKworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyNjA3MDgpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBv
cnQgIldLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuaCIKKyNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
TWVzc2FnZXMuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9j
a1B0ci5oPgpAQCAtMzcsMTYgKzM4LDE2IEBACiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0
IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAotI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRT
b2Z0TGluay5oPgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktp
dEFkZGl0aW9ucy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hQWRkaXRpb25zLm1tPgot
I2Vsc2UKLW5hbWVzcGFjZSBXZWJLaXQgewotc3RhdGljIHZvaWQgZmluaXNoQ3JlYXRpbmcoUEtQ
YXltZW50UmVxdWVzdCAqLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdCYpIHsgfQotfQorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5UX1NFVFVQKQorI2ltcG9ydCAi
QVBJVUlDbGllbnQuaCIKKyNpbXBvcnQgIkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXNXZWJL
aXQuaCIKKyNpbXBvcnQgIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25XZWJLaXQuaCIKKyNpbXBv
cnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjZW5kaWYK
IAorI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgorCiAvLyBGSVhNRTogV2Ug
ZG9uJ3Qgc3VwcG9ydCBhbnkgcGxhdGZvcm1zIHdpdGhvdXQgLXNldFRodW1ibmFpbFVSTHM6LCBz
byB0aGlzIGNhbiBiZSByZW1vdmVkLgogQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0ICgpCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1VSTCAqdGh1bWJuYWlsVVJMOwpAQCAtNjEs
NiArNjIsMzQgQEAgQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0IChTdGFnaW5nKQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIHZvaWQgZmluaXNoQ3JlYXRpbmcoUEtQYXltZW50UmVx
dWVzdCAqcGxhdGZvcm1SZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYgcmVxdWVzdCkKK3sKKyNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQor
ICAgIGlmIChQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24g
PSByZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlvbigpLnBsYXRmb3JtQ29uZmlndXJhdGlv
bigpKSB7CisgICAgICAgIHBsYXRmb3JtUmVxdWVzdC5pbnN0YWxsbWVudENvbmZpZ3VyYXRpb24g
PSBjb25maWd1cmF0aW9uOworICAgICAgICBwbGF0Zm9ybVJlcXVlc3QucmVxdWVzdFR5cGUgPSBQ
S1BheW1lbnRSZXF1ZXN0VHlwZUluc3RhbGxtZW50OworICAgIH0KKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHBsYXRmb3JtUmVxdWVzdCk7CisgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOworI2Vu
ZGlmCit9CisKK1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eShXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50JiBjbGllbnQpCisgICAg
OiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX2Nhbk1ha2VQYXltZW50c1F1ZXVlKFdvcmtRdWV1
ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNhbk1ha2VQYXltZW50cyIpKQoreworICAgIG1f
Y2xpZW50LnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcigqdGhpcywgTWVzc2Fn
ZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0
aGlzKTsKK30KKworV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSgpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OklkbGUpCisgICAgICAg
IGhpZGVQYXltZW50VUkoKTsKKworICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclJlbW92
ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworfQorCiB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6
RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBQTEFURk9S
TShNQUMpCkBAIC0yNzAsNiArMjk5LDEwOSBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwbGF0Zm9yCiAgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5jb21wbGV0ZVBheW1l
bnRNZXRob2RTZWxlY3Rpb24odXBkYXRlKTsKIH0KIAorI2lmIEhBVkUoUEFTU0tJVF9QQVlNRU5U
X1NFVFVQKQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpnZXRTZXR1cEZlYXR1
cmVzKGNvbnN0IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIE1lc3Nh
Z2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6R2V0U2V0dXBGZWF0dXJlczo6QXN5bmNS
ZXBseSYmIHJlcGx5KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVBBTDo6Z2V0UEtQ
YXltZW50U2V0dXBDb250cm9sbGVyQ2xhc3MoKSkgeworICAgICAgICByZXBseSh7IH0pOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBhdXRvIGNvbXBsZXRpb24gPSBtYWtl
QmxvY2tQdHIoW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKE5TQXJyYXk8UEtQYXltZW50U2V0dXBG
ZWF0dXJlICo+ICpmZWF0dXJlcykgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgZmVhdHVyZXMgPSByZXRhaW5QdHIoZmVh
dHVyZXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgcmVwbHkoUGF5bWVudFNldHVwRmVhdHVy
ZXMgeyBXVEZNb3ZlKGZlYXR1cmVzKSB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKK0FMTE9X
X05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KKyAgICBbUEFMOjpnZXRQS1BheW1lbnRTZXR1
cENvbnRyb2xsZXJDbGFzcygpIHBheW1lbnRTZXR1cEZlYXR1cmVzRm9yQ29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLnBsYXRmb3JtQ29uZmlndXJhdGlvbigpIGNvbXBsZXRpb246Y29tcGxldGlv
bi5nZXQoKV07CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorfQorCit2b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpiZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgUGF5bWVudFNldHVwRmVh
dHVyZXMmIGZlYXR1cmVzLCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkJl
Z2luQXBwbGVQYXlTZXR1cDo6QXN5bmNSZXBseSYmIHJlcGx5KQoreworICAgIHBsYXRmb3JtQmVn
aW5BcHBsZVBheVNldHVwKGNvbmZpZ3VyYXRpb24sIGZlYXR1cmVzLCBXVEZNb3ZlKHJlcGx5KSk7
Cit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmVuZEFwcGxlUGF5U2V0dXAo
KQoreworICAgIHBsYXRmb3JtRW5kQXBwbGVQYXlTZXR1cCgpOworfQorCisjaWYgUExBVEZPUk0o
TUFDKQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUJlZ2luQXBw
bGVQYXlTZXR1cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
LCBjb25zdCBQYXltZW50U2V0dXBGZWF0dXJlcyYgZmVhdHVyZXMsIE1lc3NhZ2VzOjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6QmVnaW5BcHBsZVBheVNldHVwOjpBc3luY1JlcGx5JiYgcmVw
bHkpCit7CisgICAgaWYgKCFQQUw6OmdldFBLUGF5bWVudFNldHVwUmVxdWVzdENsYXNzKCkpIHsK
KyAgICAgICAgcmVwbHkoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byByZXF1ZXN0ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFNldHVwUmVxdWVzdEluc3Rh
bmNlKCkgaW5pdF0pOworICAgIFtyZXF1ZXN0IHNldENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5wbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKV07CisgICAgW3JlcXVlc3Qgc2V0UGF5bWVudFNldHVw
RmVhdHVyZXM6ZmVhdHVyZXMucGxhdGZvcm1GZWF0dXJlcygpXTsKKworICAgIGF1dG8gY29tcGxl
dGlvbiA9IG1ha2VCbG9ja1B0cihbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oQk9PTCBzdWNjZXNz
KSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZXBseSA9IFdU
Rk1vdmUocmVwbHkpLCBzdWNjZXNzXSgpIG11dGFibGUgeworICAgICAgICAgICAgcmVwbHkoc3Vj
Y2Vzcyk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgYXV0byBwYXltZW50U2V0dXBDb250
cm9sbGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFNldHVwQ29udHJvbGxlckluc3Rh
bmNlKCkgaW5pdF0pOworCitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCisgICAg
W3BheW1lbnRTZXR1cENvbnRyb2xsZXIgcHJlc2VudFBheW1lbnRTZXR1cFJlcXVlc3Q6cmVxdWVz
dC5nZXQoKSBjb21wbGV0aW9uOmNvbXBsZXRpb24uZ2V0KCldOworQUxMT1dfTkVXX0FQSV9XSVRI
T1VUX0dVQVJEU19FTkQKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1FbmRBcHBsZVBheVNldHVwKCkKK3sKK30KKworI2Vsc2UgLy8gUExBVEZPUk0oTUFDKQor
Cit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUJlZ2luQXBwbGVQYXlT
ZXR1cChjb25zdCBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25z
dCBQYXltZW50U2V0dXBGZWF0dXJlcyYgZmVhdHVyZXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6QmVnaW5BcHBsZVBheVNldHVwOjpBc3luY1JlcGx5JiYgcmVwbHkpCit7
CisgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyID0gbV9wYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS5tX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5n
Vmlld0NvbnRyb2xsZXIobV9wYXltZW50Q29vcmRpbmF0b3JQcm94eSk7CisgICAgaWYgKCFwcmVz
ZW50aW5nVmlld0NvbnRyb2xsZXIpIHsKKyAgICAgICAgcmVwbHkoZmFsc2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXF1ZXN0ID0gYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudFNldHVwUmVxdWVzdEluc3RhbmNlKCkgaW5pdF0pOworICAgIFtyZXF1ZXN0IHNldENv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5wbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKV07CisgICAg
W3JlcXVlc3Qgc2V0UGF5bWVudFNldHVwRmVhdHVyZXM6ZmVhdHVyZXMucGxhdGZvcm1GZWF0dXJl
cygpXTsKKworICAgIGF1dG8gcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jUEtQYXltZW50U2V0dXBWaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhQ
YXltZW50U2V0dXBSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldKTsKKyAgICBpZiAoIXBheW1lbnRTZXR1
cFZpZXdDb250cm9sbGVyKSB7CisgICAgICAgIHJlcGx5KGZhbHNlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihbcmVwbHkgPSBX
VEZNb3ZlKHJlcGx5KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSgpIG11dGFibGUgeworICAgICAgICAgICAgcmVw
bHkodHJ1ZSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZW5kQXBwbGVQYXlTZXR1cCgp
OworICAgIFtwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9sbGVyOnBh
eW1lbnRTZXR1cFZpZXdDb250cm9sbGVyLmdldCgpIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOmNv
bXBsZXRpb24uZ2V0KCldOworICAgIG1fcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIgPSBwYXlt
ZW50U2V0dXBWaWV3Q29udHJvbGxlci5nZXQoKTsKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1FbmRBcHBsZVBheVNldHVwKCkKK3sKKyAgICBbbV9wYXltZW50
U2V0dXBWaWV3Q29udHJvbGxlciBkaXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29t
cGxldGlvbjpuaWxdOworICAgIG1fcGF5bWVudFNldHVwVmlld0NvbnRyb2xsZXIgPSBuaWw7Cit9
CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfUEFZ
TUVOVF9TRVRVUCkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
QVBQTEVfUEFZKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0JKHJldmlzaW9uIDI2MDcwOCkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00MSwxOSArNDEsNTUgQEAKICNpbXBvcnQgPFVJS2l0L1VJRm9udC5o
PgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0
QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hQWRkaXRpb25zLm1tPgotI2VsaWYg
RU5BQkxFKEFQUExFX1BBWSkKIG5hbWVzcGFjZSBJUEMgewotc3RhdGljIGJvb2wgZmluaXNoRGVj
b2RpbmcoRGVjb2RlciYsIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jikg
eyByZXR1cm4gdHJ1ZTsgfQotc3RhdGljIHZvaWQgZmluaXNoRW5jb2RpbmcoRW5jb2RlciYsIGNv
bnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikgeyB9Cit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKK3N0YXRpYyBib29s
IGZpbmlzaERlY29kaW5nKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFM
TE1FTlRTKQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3Vy
YXRpb24+IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKKyAgICBkZWNvZGVyID4+IGluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbjsKKyAgICBpZiAoIWluc3RhbGxtZW50Q29uZmlndXJhdGlvbikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVxdWVzdC5zZXRJbnN0YWxsbWVudENvbmZpZ3Vy
YXRpb24oV1RGTW92ZSgqaW5zdGFsbG1lbnRDb25maWd1cmF0aW9uKSk7CisgICAgcmV0dXJuIHRy
dWU7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0o
cmVxdWVzdCk7CisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIH0KKworc3RhdGljIHZvaWQgZmlu
aXNoRW5jb2RpbmcoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QpCit7CisjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNU
QUxMTUVOVFMpCisgICAgZW5jb2RlciA8PCByZXF1ZXN0Lmluc3RhbGxtZW50Q29uZmlndXJhdGlv
bigpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZW5jb2Rlcik7CisgICAgVU5VU0VEX1BBUkFN
KHJlcXVlc3QpOwogI2VuZGlmCit9CiAKLW5hbWVzcGFjZSBJUEMgewotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKIAotI2lmIEVOQUJMRShB
UFBMRV9QQVkpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50
Q29uZmlndXJhdGlvbj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQoreworICAgIGVu
Y29kZXIgPDwgY29uZmlndXJhdGlvbi5wbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKTsKK30KKworT3B0
aW9uYWw8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gSVBDOjpkZWNvZGU8
UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPihkZWNvZGVyLCBQQUw6OmdldFBLUGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbkNsYXNzKCkpOworICAgIGlmICghY29uZmlndXJh
dGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IFdURk1v
dmUoKmNvbmZpZ3VyYXRpb24pIH07Cit9CisKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfSU5TVEFM
TE1FTlRTKQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQogewpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyNjA3MDgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDI3LDYgKzQwMjcsMTAgQEAKIAkJNUM0NkMw
QUQyMUI3MTk4QzAwQkM1OTkxIC8qIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNDZDMEFFMjFCNzFBRTIwMEJD
NTk5MSAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QjlEOEEyMTBB
OEM0NjAwOEYxNEQxIC8qIFVuZG9PclJlZG8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVW5kb09yUmVkby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENE
RDI0NDY1QkY5MDBBOTMxMjQgLyogQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcGxlUGF5UGF5bWVudFNldHVw
RmVhdHVyZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNTNEQ0RFMjQ0NjVC
RjkwMEE5MzEyNCAvKiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uV2ViS2l0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25XZWJLaXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1M0RDREYyNDQ2NUJGOTAwQTkzMTI0
IC8qIEFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXNXZWJLaXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlc1dlYktpdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzUzRENFMDI0NDY1QkY5MDBBOTMxMjQgLyog
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDNUNFQzM4MjIwOTU4MzIwMEQ2QkJCMCAvKiBEYWVtb25FbnRyeVBv
aW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhZW1vbkVudHJ5UG9pbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1Q0VDMzkyMjA5NTgzMjAwRDZCQkIw
IC8qIERhZW1vbkVudHJ5UG9pbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBEYWVtb25FbnRyeVBvaW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzVEMjM4NzIyN0ExODkxMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJu
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQ3VzdG9tSGVhZGVyRmll
bGRzSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyNjQsNiArNjI2
OCwxMCBAQAogCQkJCTFBQjFGNzc3MUQxQjMwQTkwMDdDOUJEMSAvKiBjb2NvYSAqLywKIAkJCQkx
QUIxRjc3QTFEMUIzMEE5MDA3QzlCRDEgLyogaW9zICovLAogCQkJCTFBQjFGNzdDMUQxQjMwQTkw
MDdDOUJEMSAvKiBtYWMgKi8sCisJCQkJNUM1M0RDREQyNDQ2NUJGOTAwQTkzMTI0IC8qIEFwcGxl
UGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0gKi8sCisJCQkJNUM1M0RDREYyNDQ2NUJGOTAwQTkz
MTI0IC8qIEFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXNXZWJLaXQuaCAqLywKKwkJCQk1QzUz
RENFMDI0NDY1QkY5MDBBOTMxMjQgLyogUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbSAqLywK
KwkJCQk1QzUzRENERTI0NDY1QkY5MDBBOTMxMjQgLyogUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bldlYktpdC5oICovLAogCQkJCTFBQjFGNzg4MUQxQjMzNTUwMDdDOUJEMSAvKiBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5jcHAgKi8sCiAJCQkJMUFCMUY3ODkxRDFCMzM1NTAwN0M5QkQxIC8q
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggKi8sCiAJCQkJMUFCMUY3OEExRDFCMzM1NTAw
N0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluICovLApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvci5jcHAJKHJldmlzaW9uIDI2MDcwOCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCisjaW5j
bHVkZSAiQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlc1dlYktpdC5oIgogI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uV2ViS2l0
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZS5oIgogI2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VzLmgiCkBAIC0yMjAs
NiArMjIyLDI1IEBAIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpyZW1vdGVVSUVuYWIKIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVRVUCkKKwordm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3I6OmdldFNldHVwRmVhdHVyZXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1
cDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fd2ViUGFnZS5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpHZXRTZXR1cEZlYXR1
cmVzKFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24geyBjb25maWd1cmF0aW9uLCB1cmwgfSksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3I6OmJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNldHVwOjpDb25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYgZmVhdHVyZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV93ZWJQYWdlLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkJl
Z2luQXBwbGVQYXlTZXR1cChQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgY29uZmlndXJhdGlv
biwgdXJsIH0sIFBheW1lbnRTZXR1cEZlYXR1cmVzIHsgV1RGTW92ZShmZWF0dXJlcykgfSksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3I6OmVuZEFwcGxlUGF5U2V0dXAoKQoreworICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6RW5kQXBwbGVQYXlTZXR1cCgpKTsKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfU0VUVVApCisKIH0KIAogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvci5oCShyZXZpc2lvbiAyNjA3MDgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1
LDYgKzg1LDEyIEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgdXNlckFnZW50U2NyaXB0c0Jsb2Nr
ZWRFcnJvck1lc3NhZ2UoKSBjb25zdCBmaW5hbDsKIAorI2lmIEVOQUJMRShBUFBMRV9QQVlfU0VU
VVApCisgICAgdm9pZCBnZXRTZXR1cEZlYXR1cmVzKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2V0
dXA6OkNvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxSZWY8V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmKT4mJikgZmluYWw7Cisg
ICAgdm9pZCBiZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cDo6
Q29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBwbGVQ
YXlTZXR1cEZlYXR1cmU+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGVuZEFwcGxlUGF5U2V0dXAoKSBmaW5hbDsKKyNlbmRpZgorCiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIApAQCAtMTEyLDEwICsxMTgsNiBA
QCBwcml2YXRlOgogICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKIAogICAgIE9wdGlvbmFsPEF2YWls
YWJsZVBheW1lbnROZXR3b3Jrc1NldD4gbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3M7Ci0KLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBh
eW1lbnRDb29yZGluYXRvckFkZGl0aW9ucy5oPgotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>